From 9f72ebdf07d4b704c48807a6b4577f980e6c5588 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 10 Oct 2015 14:41:14 +0100 Subject: Support Java ternary conditionals --- .../java/org/zwobble/couscous/frontends/java/JavaReader.java | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/main') diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java index 77002d9..1ab6dfb 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -6,6 +6,7 @@ import java.util.List; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.BooleanLiteral; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.ConditionalExpression; import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.MethodInvocation; import org.eclipse.jdt.core.dom.NumberLiteral; @@ -21,6 +22,7 @@ import org.zwobble.couscous.ast.MethodCallNode; import org.zwobble.couscous.ast.ReturnNode; import org.zwobble.couscous.ast.StatementNode; import org.zwobble.couscous.ast.StaticMethodCallNode; +import org.zwobble.couscous.ast.TernaryConditionalNode; import org.zwobble.couscous.ast.TypeName; import com.google.common.collect.Lists; @@ -83,6 +85,8 @@ public class JavaReader { return readStringLiteral((StringLiteral)expression); case ASTNode.METHOD_INVOCATION: return readMethodInvocation((MethodInvocation)expression); + case ASTNode.CONDITIONAL_EXPRESSION: + return readConditionalExpression((ConditionalExpression)expression); default: throw new RuntimeException("Unsupported expression: " + expression.getClass()); } @@ -118,6 +122,13 @@ public class JavaReader { } } + private static ExpressionNode readConditionalExpression(ConditionalExpression expression) { + return new TernaryConditionalNode( + readExpression(expression.getExpression()), + readExpression(expression.getThenExpression()), + readExpression(expression.getElseExpression())); + } + private static String generateClassName(CompilationUnit ast) { val type = (TypeDeclaration)ast.types().get(0); return ast.getPackage().getName().getFullyQualifiedName() + "." + type.getName().getFullyQualifiedName(); -- cgit v1.2.3