diff options
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); |
