From fb439df085eb1f7095d987973475a7753d0a1103 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 26 Jan 2025 10:23:13 +0000 Subject: Use correct type for this in methods for generic structs --- src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (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 fa32a440..5feee88b 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -1786,9 +1786,16 @@ public class TypeChecker { // fine since those steps can (currently, at least) happen // in any other -- maybe they should just be merged, given // that otherwise this is invalid? + var thisType = switch (typeOrConstructor) { + case TypeOrConstructor.Constructor constructor -> + Types.constructedType(constructor.value(), constructor.value().params()); + case TypeOrConstructor.Type type -> + type.value(); + }; + var declareFunctionResult = declareFunctionDefinition( untypedMethodNode, - Optional.of(typeOrConstructor.toType()), + Optional.of(thisType), context ); var typeCheckFunctionState = declareFunctionResult.value(); -- cgit v1.2.3