diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-13 14:53:32 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-13 14:53:32 +0000 |
| commit | bac463d6b411c2108d56190b5766c9c92eade69d (patch) | |
| tree | 1fc35105e655846cb8ead1e96781d4b9e65e4726 /src/test/java/org | |
| parent | d5c90f5ff00b3ccfb6c2c95bf2176e133c5102fa (diff) | |
Distinguish static and instance fields when checking field exists
Diffstat (limited to 'src/test/java/org')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java | 26 |
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() { |
