From 089f1dfd9a3972fe8d399fa5797d75e9c69b5dac Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 2 Mar 2025 19:46:06 +0000 Subject: Handle This type for generic native types --- .../java/org/shedlang/compiler/typechecker/TypeChecker.java | 10 +++++++++- 1 file changed, 9 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 5d08633d..aaf49ba0 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -1770,12 +1770,20 @@ public class TypeChecker { var typedMethodNodes = new ArrayList(); var methodInfos = new ArrayList(); + // TODO: remove duplication with methods on struct + var thisType = switch (typeOrConstructor) { + case TypeOrConstructor.Constructor constructor -> + Types.constructedType(constructor.value(), constructor.value().params()); + case TypeOrConstructor.Type type -> + type.value(); + }; + for (var untypedMethodNode : untyped.methods()) { context = context.enterBlock(P.map( Map.entry( "This", Variable.defined( - Types.metaType(typeOrConstructor.toType()), + Types.metaType(thisType), VariableType.VAL ) ) -- cgit v1.2.3