diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-30 14:49:04 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-30 14:49:04 +0100 |
| commit | 63dc7ca2d4576c9ba3887abb5d858d6fd1d93957 (patch) | |
| tree | fed5075b588a7898e858a1513446dde57d771b63 | |
| parent | 128b5e62d46f1522511c1200f5fa62888fa75adb (diff) | |
Support reading of static field accesses by class name
| -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"); } |
