From 45022f09c44fbbd1683cac279ccf53f9ea650446 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 26 Jun 2026 11:39:51 +0100 Subject: Check variant field types --- .../hobgoblin/compiler/typechecker/TypeChecker.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/main') 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 c6f8721..408a0b2 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java @@ -313,6 +313,9 @@ public class TypeChecker { // TODO: set source appropriately. throw new SubtypeIsMissingFieldError(sumType, variantType, sumTypeField.name(), NullSource.INSTANCE); } + + // TODO: set source appropriately. + checkIsSubtype(variantTypeField.get().type(), sumTypeField.type(), NullSource.INSTANCE); } } @@ -385,4 +388,18 @@ public class TypeChecker { return value; } + + private static void checkIsSubtype(Type subtype, Type supertype, Source source) { + if (!isSubtype(subtype, supertype)) { + throw new UnexpectedTypeError( + new TypeSet.SingleType(supertype), + subtype, + source + ); + } + } + + private static boolean isSubtype(Type subtype, Type supertype) { + return subtype.equals(supertype); + } } -- cgit v1.2.3