diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java | 11 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java | 7 |
2 files changed, 17 insertions, 1 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 71826fe..8020174 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java @@ -3,6 +3,7 @@ package org.zwobble.couscous.frontends.java; import com.google.common.collect.Iterables; import org.eclipse.jdt.core.dom.*; import org.zwobble.couscous.ast.*; +import org.zwobble.couscous.types.ScalarType; import org.zwobble.couscous.types.Type; import org.zwobble.couscous.types.Types; import org.zwobble.couscous.util.InsertionOrderSet; @@ -82,6 +83,9 @@ public class JavaExpressionReader { case ASTNode.FIELD_ACCESS: return readFieldAccess((FieldAccess)expression); + case ASTNode.QUALIFIED_NAME: + return readQualifiedName((QualifiedName)expression); + case ASTNode.METHOD_INVOCATION: return readMethodInvocation((MethodInvocation)expression); @@ -181,6 +185,13 @@ public class JavaExpressionReader { typeOf(expression)); } + private ExpressionNode readQualifiedName(QualifiedName expression) { + return FieldAccessNode.fieldAccess( + ScalarType.of(expression.getQualifier().getFullyQualifiedName()), + expression.getName().getIdentifier(), + typeOf(expression)); + } + private ExpressionNode readMethodInvocation(MethodInvocation expression) { String methodName = expression.getName().getIdentifier(); @SuppressWarnings("unchecked") diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java index 2f35064..b78a395 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java @@ -100,7 +100,12 @@ public class ExpressionReadingTests { } @Test - public void canReadExplicitStaticFieldReference() { + public void canReadExplicitStaticFieldReferenceWithClassAsReceiver() { + canReadStaticFieldReference("com.example.Example.name"); + } + + @Test + public void canReadExplicitStaticFieldReferenceWithThisAsReceiver() { canReadStaticFieldReference("this.name"); } |
