summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-11-01 21:17:29 +0000
committerMichael Williamson <mike@zwobble.org>2026-11-01 21:17:29 +0000
commita6d2cf68ec980cb7f53e50e56fe1c0376b15bf5a (patch)
treef7be2623c8f74d9d1ca89240a14aa0444e64043c /src
parent1390becc9814e78f94fa01299b1b04acadfbfe46 (diff)
Check handling of undeclared variable
Diffstat (limited to 'src')
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java
index 2d63eae..1b8ddf9 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java
@@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test;
import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedReferenceNode;
import org.zwobble.hobgoblin.compiler.builtins.NativeTypes;
import org.zwobble.hobgoblin.compiler.sources.NullSource;
+import org.zwobble.hobgoblin.compiler.typechecker.errors.UndeclaredVariableError;
import org.zwobble.hobgoblin.compiler.typechecker.errors.UnexpectedTypeError;
import org.zwobble.hobgoblin.compiler.types.*;
@@ -46,4 +47,21 @@ public class TypeCheckerEvalExpressionTests {
assertThat(error.expected(), equalTo(new TypeSet.TypeLevelValue()));
}
+
+ @Test
+ public void whenVariableIsNotDeclaredThenCannotEvaluateReference() {
+ var untyped = UntypedReferenceNode.arbitrary()
+ .withName("count")
+ .build();
+ var globalContext = TypeCheckerContextArb.globalContext();
+ var namespaceName = NamespaceName.of("App");
+ var namespaceContext = globalContext.enterNamespace(namespaceName);
+
+ var error = assertThrows(
+ UndeclaredVariableError.class,
+ () -> TypeChecker.evalExpression(untyped, namespaceContext)
+ );
+
+ assertThat(error.variableName(), equalTo("count"));
+ }
}