From de82d12a2b929837731a91634603190764b594ef Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 20 Dec 2023 19:06:18 +0000 Subject: Use appropriate source in errors --- .../compiler/typechecker/NamespaceDependencyLineariser.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 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 8fa1876d..bdd1eaf1 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java +++ b/src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.typechecker; import org.shedlang.compiler.ast.untyped.UntypedNamespaceNode; +import org.shedlang.compiler.sources.Source; import org.shedlang.compiler.sources.Sources; import org.shedlang.compiler.typechecker.errors.CircularNamespaceDependencyError; import org.shedlang.compiler.typechecker.errors.UnknownNamespaceError; @@ -29,7 +30,7 @@ public class NamespaceDependencyLineariser { var stack = new ArrayList(); var adder = new Object() { - private void add(NamespaceName name) { + private void add(NamespaceName name, Source source) { if (!seen.contains(name)) { var cycleStartIndex = stack.indexOf(name); stack.add(name); @@ -37,17 +38,17 @@ public class NamespaceDependencyLineariser { if (cycleStartIndex != -1) { throw new CircularNamespaceDependencyError( stack.subList(cycleStartIndex, stack.size()), - Sources.NULL + source ); } var untypedNamespaceNode = nodesByName.get(name); if (untypedNamespaceNode == null) { - throw new UnknownNamespaceError(name, Sources.NULL); + throw new UnknownNamespaceError(name, source); } for (var import_ : untypedNamespaceNode.imports()) { - add(import_.namespaceName()); + add(import_.namespaceName(), import_.source()); } seen.add(name); ordered.add(untypedNamespaceNode); @@ -58,7 +59,7 @@ public class NamespaceDependencyLineariser { }; for (var untypedNamespaceNode : untypedNamespaceNodes) { - adder.add(untypedNamespaceNode.namespaceName()); + adder.add(untypedNamespaceNode.namespaceName(), Sources.NULL); } return ordered; -- cgit v1.2.3