diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-19 17:24:35 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-19 17:24:35 +0100 |
| commit | f0bcf07aaac58308bf31c97b5d1f9dc9c18d17b0 (patch) | |
| tree | 75d1735127a524a2dfb305b28ede7a981a91bc5c /src/main/java | |
| parent | c9ef1ef7860340ff87c051622d0d226791fa296a (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.java | 8 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/util/Iterables.java | 4 |
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, |
