diff options
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, |
