aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-20 19:06:18 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-20 19:06:18 +0000
commitde82d12a2b929837731a91634603190764b594ef (patch)
treef6a161b3528750cb7528cc2bd45e839b3263bf82 /src/main/java
parentf38d5b17426f7faca4793a52c0891227003fe93e (diff)
Use appropriate source in errors
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/NamespaceDependencyLineariser.java11
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;