aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-10 14:41:14 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-10 14:41:14 +0100
commit9f72ebdf07d4b704c48807a6b4577f980e6c5588 (patch)
tree5edff18cb4259b1857f13ecb75d1143b85cfb0d6 /src/main/java
parenteadefe2a6b7c06905f90cb6598d877e15a10b7de (diff)
Support Java ternary conditionals
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java11
1 files changed, 11 insertions, 0 deletions
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();