aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
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);