From bbee238f6f5989dbcfd2790d7310aad5664336ec Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 2 Aug 2026 12:00:52 +0100 Subject: Store source for sum types --- .../org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java | 7 ++++++- .../compiler/typechecker/TypeCheckerNamespaceContext.java | 5 +++-- .../hobgoblin/compiler/typechecker/TypesInfoInMemory.java | 9 ++++++--- 3 files changed, 15 insertions(+), 6 deletions(-) (limited to 'src/main/java') 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 variantTypes, - List fields + List fields, + Source source ) { - this.typesInfo.defineSumType(sumType, variantTypes, fields); + this.typesInfo.defineSumType(sumType, variantTypes, fields, source); } public List 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 variants, - List fields + List fields, + Source source ) {} public static TypesInfoInMemory empty() { @@ -69,9 +71,10 @@ public class TypesInfoInMemory implements TypesInfo { public void defineSumType( SumType sumType, List variants, - List fields + List 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) { -- cgit v1.2.3