From f0bcf07aaac58308bf31c97b5d1f9dc9c18d17b0 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 19 Jul 2023 17:24:35 +0100 Subject: Add appropriate source when checking namespace statement dependencies --- src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 8 +++++--- src/main/java/org/shedlang/compiler/util/Iterables.java | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'src/main/java') 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 first(Iterable iterable) { + return iterable.iterator().next(); + } + public static void forEachInterspersed( Iterable values, OnElement onElement, -- cgit v1.2.3