aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-31 23:06:58 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-31 23:06:58 +0100
commit629382bf1172be2b0398fa1b65c1c46048c31af3 (patch)
tree5d76a890e052ee9467f7e237fc09bdeece38f1e2 /src/test/java
parentab0e1c0e31158a090630070472723c34deedc83a (diff)
Check assignment is to var
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerAssignTests.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerAssignTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerAssignTests.java
index e3c819f5..c9d904c5 100644
--- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerAssignTests.java
+++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerAssignTests.java
@@ -6,6 +6,7 @@ import org.shedlang.compiler.ast.typed.TypedNamespaceStatementNode;
import org.shedlang.compiler.ast.untyped.Untyped;
import org.shedlang.compiler.ast.untyped.UntypedFunctionStatementNode;
import org.shedlang.compiler.ast.untyped.UntypedNamespaceStatementNode;
+import org.shedlang.compiler.typechecker.errors.CanOnlyAssignToVarError;
import org.shedlang.compiler.typechecker.errors.UnexpectedTypeError;
import org.shedlang.compiler.typechecker.typesets.TypeSets;
import org.shedlang.compiler.types.Types;
@@ -52,6 +53,20 @@ public class TypeCheckerAssignTests {
assertThat(error.actual(), equalTo(Types.STRING));
}
+ @Test
+ public void whenTargetIsNotVarThenErrorIsThrown() {
+ var untyped = Untyped.assign(Untyped.targetVariable("x"), Untyped.stringLiteral("hello"));
+ var context = TypeCheckerContext.EMPTY
+ .enterNamespace(P.map(
+ Map.entry("x", Variable.defined(Types.STRING, VariableType.VAL))
+ ));
+
+ assertThrows(
+ CanOnlyAssignToVarError.class,
+ () -> typeCheckFunctionStatement(untyped, context)
+ );
+ }
+
private static TypeCheckerResult<? extends TypedFunctionStatementNode> typeCheckFunctionStatement(
UntypedFunctionStatementNode untyped,
TypeCheckerContext context