diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-02 12:00:52 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-02 12:00:52 +0100 |
| commit | bbee238f6f5989dbcfd2790d7310aad5664336ec (patch) | |
| tree | 17f5071efbdd5c2a846d59744b5b001960e577bd /src/main/java | |
| parent | 3b74ee086e4b59e4265fa632c6db93fd0a9d07ea (diff) | |
Store source for sum types
Diffstat (limited to 'src/main/java')
3 files changed, 15 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java index d87b7ff..a40bd92 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java @@ -293,7 +293,12 @@ public class TypeChecker { var typeCheckedFieldDefinitions = typeCheckFieldDefinitions(untyped.fields(), context); - context.defineSumType(sumType, variants, typeCheckedFieldDefinitions.fields); + context.defineSumType( + sumType, + variants, + typeCheckedFieldDefinitions.fields, + untyped.source() + ); for (var variant : variants) { if (context.isDefined(variant.valueType())) { diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceContext.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceContext.java index 804fd68..56bc5ed 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceContext.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerNamespaceContext.java @@ -76,9 +76,10 @@ public class TypeCheckerNamespaceContext { public void defineSumType( SumType sumType, List<SumVariant> variantTypes, - List<Field> fields + List<Field> fields, + Source source ) { - this.typesInfo.defineSumType(sumType, variantTypes, fields); + this.typesInfo.defineSumType(sumType, variantTypes, fields, source); } public List<SumType> variantOf(StructType variantType) { diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypesInfoInMemory.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypesInfoInMemory.java index 64c285b..07c3673 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypesInfoInMemory.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypesInfoInMemory.java @@ -1,5 +1,6 @@ package org.zwobble.hobgoblin.compiler.typechecker; +import org.zwobble.hobgoblin.compiler.sources.Source; import org.zwobble.hobgoblin.compiler.types.*; import java.util.*; @@ -7,7 +8,8 @@ import java.util.*; public class TypesInfoInMemory implements TypesInfo { private record SumTypeInfo( List<SumVariant> variants, - List<Field> fields + List<Field> fields, + Source source ) {} public static TypesInfoInMemory empty() { @@ -69,9 +71,10 @@ public class TypesInfoInMemory implements TypesInfo { public void defineSumType( SumType sumType, List<SumVariant> variants, - List<Field> fields + List<Field> fields, + Source source ) { - var sumTypeInfo = new SumTypeInfo(variants, fields); + var sumTypeInfo = new SumTypeInfo(variants, fields, source); this.sumTypeInfos.put(sumType, sumTypeInfo); for (var variant : variants) { |
