diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-12 20:25:52 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-12 20:25:52 +0100 |
| commit | 07d4507eca4c950c65fac53fafa3f81d703167d1 (patch) | |
| tree | 9d13e4eccf100acd79c3513d479306ea6345d633 /src/main/java/org/zwobble | |
| parent | cb97484d4694c94946a109fd6d09252767fa1652 (diff) | |
Support reading Java this expressions
Diffstat (limited to 'src/main/java/org/zwobble')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 11 |
1 files changed, 10 insertions, 1 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 3306dbf..10d6e10 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -14,6 +14,7 @@ import org.eclipse.jdt.core.dom.NumberLiteral; import org.eclipse.jdt.core.dom.ReturnStatement; import org.eclipse.jdt.core.dom.Statement; import org.eclipse.jdt.core.dom.StringLiteral; +import org.eclipse.jdt.core.dom.ThisExpression; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.ClassNodeBuilder; @@ -25,6 +26,7 @@ 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.ThisReferenceNode; import org.zwobble.couscous.ast.TypeName; import com.google.common.collect.Lists; @@ -85,6 +87,8 @@ public class JavaReader { return readNumberLiteral((NumberLiteral)expression); case ASTNode.STRING_LITERAL: return readStringLiteral((StringLiteral)expression); + case ASTNode.THIS_EXPRESSION: + return readThisExpression((ThisExpression)expression); case ASTNode.METHOD_INVOCATION: return readMethodInvocation((MethodInvocation)expression); case ASTNode.CLASS_INSTANCE_CREATION: @@ -95,7 +99,7 @@ public class JavaReader { throw new RuntimeException("Unsupported expression: " + expression.getClass()); } } - + private static ExpressionNode readBooleanLiteral(BooleanLiteral expression) { return LiteralNode.literal(expression.booleanValue()); } @@ -108,6 +112,11 @@ public class JavaReader { return LiteralNode.literal(expression.getLiteralValue()); } + private static ExpressionNode readThisExpression(ThisExpression expression) { + return ThisReferenceNode.thisReference( + TypeName.of(expression.resolveTypeBinding().getQualifiedName())); + } + private static ExpressionNode readMethodInvocation(MethodInvocation expression) { val methodName = expression.getName().getIdentifier(); val arguments = readArguments(expression.arguments()); |
