aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-13 14:53:32 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-13 14:53:32 +0000
commitbac463d6b411c2108d56190b5766c9c92eade69d (patch)
tree1fc35105e655846cb8ead1e96781d4b9e65e4726 /src/test
parentd5c90f5ff00b3ccfb6c2c95bf2176e133c5102fa (diff)
Distinguish static and instance fields when checking field exists
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
index 98f4e22..b2b572d 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -2,10 +2,7 @@ package org.zwobble.couscous.tests.interpreter;
import com.google.common.collect.ImmutableMap;
import org.junit.Test;
-import org.zwobble.couscous.ast.ClassNode;
-import org.zwobble.couscous.ast.ExpressionNode;
-import org.zwobble.couscous.ast.FormalArgumentNode;
-import org.zwobble.couscous.ast.MethodSignature;
+import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.interpreter.Environment;
import org.zwobble.couscous.interpreter.JavaProject;
import org.zwobble.couscous.interpreter.MapBackedProject;
@@ -171,6 +168,27 @@ public class EvaluatorTests extends BackendEvalTests {
assertEquals(new NoSuchField("value"), exception);
}
+
+ @Test
+ public void cannotSetValueOfInstanceFieldAsThoughItIsAStaticField() {
+ TypeName type = TypeName.of("com.example.Example");
+ ClassNode classNode = ClassNode.builder(type)
+ .field("value", IntegerValue.REF)
+ .constructor(constructor -> constructor
+ .statement(assignStatement(
+ fieldAccess(type, "value", IntegerValue.REF),
+ literal(42))))
+ .build();
+
+ NoSuchField exception = assertThrows(NoSuchField.class,
+ () -> evalExpression(
+ list(classNode),
+ constructorCall(
+ classNode.getName(),
+ list())));
+
+ assertEquals(new NoSuchField("value"), exception);
+ }
@Test
public void cannotSetValueOfFieldWithWrongType() {