diff options
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java index 3559578..82cccf3 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceTests.java @@ -43,7 +43,7 @@ public class TypeCheckerNamespaceTests { )) )); assertThat( - context.namespaceFields(NamespaceName.of("a", "b")).fieldType("X").orElseThrow(), + context.namespaceFields(NamespaceName.of("a", "b")).orElseThrow().fieldType("X").orElseThrow(), isMetaType(new StructType(NamespaceName.of("a", "b"), "X")) ); } @@ -100,6 +100,27 @@ public class TypeCheckerNamespaceTests { } @Test + public void whenNamespaceIsUnknownThenErrorIsThrown() { + var untyped = UntypedNamespaceNode.arbitrary() + .withImports(List.of( + UntypedImportNode.arbitrary() + .withAncestorDepth(Optional.empty()) + .withNamespaceName(NamespaceName.of("a")) + .withImportedNames(List.of("A")) + .build() + )) + .build(); + var context = TypeCheckerContextArb.globalContext(); + + var error = assertThrows( + UnknownNamespaceError.class, + () -> TypeChecker.typeCheckNamespace(untyped, context) + ); + + assertThat(error.namespaceName(), equalTo(NamespaceName.of("a"))); + } + + @Test public void whenNamespaceHasNoSuchFieldThenErrorIsThrown() { var untyped = UntypedNamespaceNode.arbitrary() .withImports(List.of( |
