diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-20 19:01:38 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-20 19:01:38 +0000 |
| commit | c472034dcdea19ac4e25202ecf76d7ad4a2616b4 (patch) | |
| tree | aa5039016d735ea3cbdb475baf8058fac49c2f80 /src/test/java | |
| parent | 3017cd27f6a9ec81266696d9229dc5c3300482e6 (diff) | |
Only include cyclic dependencies in error
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java b/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java index 0a8e72bc..fba6d0e4 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariserTests.java @@ -136,6 +136,28 @@ public class NamespaceDependencyLineariserTests { )); } + @Test + public void cycleOfDependenciesDoesNotIncludeParentDependenciesOutsideOfCycle() { + var namespaces = List.of( + namespaceNode("Z", List.of("A")), + namespaceNode("A", List.of("B")), + namespaceNode("B", List.of("C")), + namespaceNode("C", List.of("A")) + ); + + var error = assertThrows( + CircularNamespaceDependencyError.class, + () -> NamespaceDependencyLineariser.orderNamespaces(namespaces) + ); + + assertThat(error.namespaceNames(), isSequence( + equalTo(NamespaceName.of("A")), + equalTo(NamespaceName.of("B")), + equalTo(NamespaceName.of("C")), + equalTo(NamespaceName.of("A")) + )); + } + private static UntypedNamespaceNode namespaceNode( String namespaceName, List<String> dependencies |
