diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-20 19:06:18 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-20 19:06:18 +0000 |
| commit | de82d12a2b929837731a91634603190764b594ef (patch) | |
| tree | f6a161b3528750cb7528cc2bd45e839b3263bf82 /src/main/java | |
| parent | f38d5b17426f7faca4793a52c0891227003fe93e (diff) | |
Use appropriate source in errors
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java | 11 |
1 files changed, 6 insertions, 5 deletions
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<NamespaceName>(); 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; |
