aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-16 11:39:29 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-16 11:39:29 +0100
commit2302ed0baaaf5bbced5c1b512fcd2f0d72e0b95b (patch)
tree209b3e6e4c6231bdb8856063efe1c961881f6805 /src/main/java
parentb02657e9a6a172be263eaefaea842fb0c7572a6e (diff)
Pass source to TypeCheckerContext::define()
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java4
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java4
2 files changed, 5 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 359c49d1..5563d9bb 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java
@@ -438,7 +438,7 @@ public class TypeChecker {
untyped.source()
);
- return context.define(untyped.name(), typed.type()).toResult(typed);
+ return context.define(untyped.name(), typed.type(), untyped.source()).toResult(typed);
}
private static TypeCheckerResult<? extends TypedFunctionStatementNode> typeCheckFunctionReturn(
@@ -674,7 +674,7 @@ public class TypeChecker {
) {
return switch (target) {
case UntypedTargetNode.Variable variable -> {
- context = context.define(variable.name(), expressionType);
+ context = context.define(variable.name(), expressionType, target.source());
yield context.toResult(new TypedTargetNode.Variable(variable.name(), target.source()));
}
diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java
index 5f95fdc3..6b24dd6b 100644
--- a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java
+++ b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java
@@ -3,6 +3,7 @@ package org.shedlang.compiler.typechecker;
import org.pcollections.Empty;
import org.pcollections.PMap;
import org.shedlang.compiler.ast.typed.FreeVariables;
+import org.shedlang.compiler.sources.Source;
import org.shedlang.compiler.types.*;
import org.shedlang.compiler.util.PCollectors;
import org.shedlang.compiler.util.POrderedMap;
@@ -125,7 +126,8 @@ public class TypeCheckerContext {
public TypeCheckerContext define(
String name,
- Type type
+ Type type,
+ Source source
) {
// TODO: check if already defined
// TODO: check is not defined