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/main/java | |
| parent | 3017cd27f6a9ec81266696d9229dc5c3300482e6 (diff) | |
Only include cyclic dependencies in error
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java b/src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java index ac7c2853..1afeb258 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java +++ b/src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java @@ -30,11 +30,14 @@ public class NamespaceDependencyLineariser { var adder = new Object() { private void add(NamespaceName name) { if (!seen.contains(name)) { - var cycle = stack.contains(name); + var cycleStartIndex = stack.indexOf(name); stack.add(name); - if (cycle) { - throw new CircularNamespaceDependencyError(stack, Sources.NULL); + if (cycleStartIndex != -1) { + throw new CircularNamespaceDependencyError( + stack.subList(cycleStartIndex, stack.size()), + Sources.NULL + ); } var untypedNamespaceNode = nodesByName.get(name); |
