summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-11-01 21:11:14 +0000
committerMichael Williamson <mike@zwobble.org>2026-11-01 21:11:39 +0000
commitc5fd3e34f18f0773d1283fc5ed06fb289053e162 (patch)
tree7abe20b0606b1bb16e4cf20306bfd37f2ced55be /src
parent83cd529c660872f4e3a502cace62cd72a739ff05 (diff)
Add test for evalExpression()
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java2
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java31
2 files changed, 32 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
index 840010f..a7fe03f 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
@@ -683,7 +683,7 @@ public class TypeChecker {
// == Expressions ==
- private static TypeLevelValue evalExpression(
+ static TypeLevelValue evalExpression(
UntypedExpressionNode expression,
TypeCheckerNamespaceContext context
) {
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java
new file mode 100644
index 0000000..1c4d276
--- /dev/null
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerEvalExpressionTests.java
@@ -0,0 +1,31 @@
+package org.zwobble.hobgoblin.compiler.typechecker;
+
+import org.junit.jupiter.api.Test;
+import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedReferenceNode;
+import org.zwobble.hobgoblin.compiler.sources.NullSource;
+import org.zwobble.hobgoblin.compiler.types.DatabaseSchema;
+import org.zwobble.hobgoblin.compiler.types.NamespaceName;
+import org.zwobble.hobgoblin.compiler.types.Table;
+import org.zwobble.hobgoblin.compiler.types.Types;
+
+import static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.equalTo;
+
+public class TypeCheckerEvalExpressionTests {
+ @Test
+ public void canEvaluateReference() {
+ var untyped = UntypedReferenceNode.arbitrary()
+ .withName("authors")
+ .build();
+ var globalContext = TypeCheckerContextArb.globalContext();
+ var namespaceName = NamespaceName.of("App");
+ var namespaceContext = globalContext.enterNamespace(namespaceName);
+ var databaseSchema = new DatabaseSchema(namespaceName, "blogApp");
+ var table = new Table(databaseSchema, "authors");
+ namespaceContext.declare("authors", Types.table(table), NullSource.INSTANCE);
+
+ var typed = TypeChecker.evalExpression(untyped, namespaceContext);
+
+ assertThat(typed, equalTo(table));
+ }
+}