aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-30 14:49:04 +0100
committerMichael Williamson <mike@zwobble.org>2016-03-30 14:49:04 +0100
commit63dc7ca2d4576c9ba3887abb5d858d6fd1d93957 (patch)
treefed5075b588a7898e858a1513446dde57d771b63 /src
parent128b5e62d46f1522511c1200f5fa62888fa75adb (diff)
Support reading of static field accesses by class name
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java11
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java7
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");
}