aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-20 19:01:38 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-20 19:01:38 +0000
commitc472034dcdea19ac4e25202ecf76d7ad4a2616b4 (patch)
treeaa5039016d735ea3cbdb475baf8058fac49c2f80 /src/main/java
parent3017cd27f6a9ec81266696d9229dc5c3300482e6 (diff)
Only include cyclic dependencies in error
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java9
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);