diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-06-17 21:18:09 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-06-17 21:18:09 +0100 |
| commit | 65371fd16808d9c8f34d0e0cd2ba030bcc6a7128 (patch) | |
| tree | c4cb1e0a9a4a7f57f6e7fe2e51da8272211aba85 /src/main/java/org/zwobble/couscous/frontends | |
| parent | 242350031b18514247d77801509d65ca4e6e769c (diff) | |
Read Java instanceof expressions
Diffstat (limited to 'src/main/java/org/zwobble/couscous/frontends')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java index e6b3822..370719e 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java @@ -19,6 +19,7 @@ import static org.zwobble.couscous.ast.InstanceReceiver.instanceReceiver; import static org.zwobble.couscous.ast.LiteralNode.literal; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; import static org.zwobble.couscous.ast.OperationNode.operation; +import static org.zwobble.couscous.ast.Operations.instanceOf; import static org.zwobble.couscous.ast.Operations.not; import static org.zwobble.couscous.ast.StaticReceiver.staticReceiver; import static org.zwobble.couscous.ast.ThisReferenceNode.thisReference; @@ -109,6 +110,9 @@ public class JavaExpressionReader { case ASTNode.INFIX_EXPRESSION: return readInfixExpression((InfixExpression)expression); + case ASTNode.INSTANCEOF_EXPRESSION: + return readInstanceofExpression((InstanceofExpression)expression); + case ASTNode.PREFIX_EXPRESSION: return readPrefixExpression((PrefixExpression)expression); @@ -376,6 +380,12 @@ public class JavaExpressionReader { return type.equals(Types.BOOLEAN) || type.equals(Types.INT); } + private ExpressionNode readInstanceofExpression(InstanceofExpression expression) { + return instanceOf( + readExpressionWithoutBoxing(expression.getLeftOperand()), + (ScalarType)typeOf(expression.getRightOperand())); + } + private ExpressionNode readPrefixExpression(PrefixExpression expression) { if (expression.getOperator() == PrefixExpression.Operator.NOT) { return not(readExpression(Types.BOOLEAN, expression.getOperand())); |
