aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-19 17:24:35 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-19 17:24:35 +0100
commitf0bcf07aaac58308bf31c97b5d1f9dc9c18d17b0 (patch)
tree75d1735127a524a2dfb305b28ede7a981a91bc5c /src/main/java
parentc9ef1ef7860340ff87c051622d0d226791fa296a (diff)
Add appropriate source when checking namespace statement dependencies
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java8
-rw-r--r--src/main/java/org/shedlang/compiler/util/Iterables.java4
2 files changed, 9 insertions, 3 deletions
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
index f3018fdb..af843021 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -3,11 +3,11 @@ package org.shedlang.compiler.typechecker;
import org.shedlang.compiler.ast.typed.*;
import org.shedlang.compiler.ast.untyped.*;
import org.shedlang.compiler.sources.Source;
-import org.shedlang.compiler.sources.Sources;
import org.shedlang.compiler.typechecker.errors.*;
import org.shedlang.compiler.typechecker.typesets.TypeSetTypeLevelValue;
import org.shedlang.compiler.typechecker.typesets.TypeSets;
import org.shedlang.compiler.types.*;
+import org.shedlang.compiler.util.Iterables;
import org.shedlang.compiler.util.P;
import org.shedlang.compiler.util.PCollectors;
@@ -638,8 +638,10 @@ public class TypeChecker {
var subdependencies = deferredDependenciesByFunctionName.get(dependency.name());
if (subdependencies == null) {
- // TODO: fix source
- throw new ReferenceBeforeDefinitionError(dependency.name(), Sources.NULL);
+ throw new ReferenceBeforeDefinitionError(
+ dependency.name(),
+ Iterables.first(dependency.referenceSources())
+ );
}
for (var subdependency : subdependencies) {
diff --git a/src/main/java/org/shedlang/compiler/util/Iterables.java b/src/main/java/org/shedlang/compiler/util/Iterables.java
index ef392893..27fa3e8d 100644
--- a/src/main/java/org/shedlang/compiler/util/Iterables.java
+++ b/src/main/java/org/shedlang/compiler/util/Iterables.java
@@ -30,6 +30,10 @@ public class Iterables {
return result;
}
+ public static <T> T first(Iterable<T> iterable) {
+ return iterable.iterator().next();
+ }
+
public static <T, E extends Exception> void forEachInterspersed(
Iterable<T> values,
OnElement<T, E> onElement,