From c472034dcdea19ac4e25202ecf76d7ad4a2616b4 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 20 Dec 2023 19:01:38 +0000 Subject: Only include cyclic dependencies in error --- .../compiler/typechecker/NamespaceDependencyLineariser.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/main/java') 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); -- cgit v1.2.3