From f38d5b17426f7faca4793a52c0891227003fe93e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 20 Dec 2023 19:05:13 +0000 Subject: Handle unknown namespaces --- .../typechecker/NamespaceDependencyLineariserTests.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java b/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java index fba6d0e4..89283ab9 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test; import org.shedlang.compiler.ast.untyped.Untyped; import org.shedlang.compiler.ast.untyped.UntypedNamespaceNode; import org.shedlang.compiler.typechecker.errors.CircularNamespaceDependencyError; +import org.shedlang.compiler.typechecker.errors.UnknownNamespaceError; import org.shedlang.compiler.types.NamespaceName; import org.zwobble.precisely.Matcher; @@ -158,6 +159,20 @@ public class NamespaceDependencyLineariserTests { )); } + @Test + public void whenDependencyIsUnrecognisedThenErrorIsThrown() { + var namespaces = List.of( + namespaceNode("A", List.of("B")) + ); + + var error = assertThrows( + UnknownNamespaceError.class, + () -> NamespaceDependencyLineariser.orderNamespaces(namespaces) + ); + + assertThat(error.unknownNamespaceName(), equalTo(NamespaceName.of("B"))); + } + private static UntypedNamespaceNode namespaceNode( String namespaceName, List dependencies -- cgit v1.2.3