aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-01-26 10:23:13 +0000
committerMichael Williamson <mike@zwobble.org>2025-01-26 10:25:29 +0000
commitfb439df085eb1f7095d987973475a7753d0a1103 (patch)
tree361de3c13c39c292a6f5ea4ff778302efef5eac5 /src/main/java
parent7d76b7679d0b70b0e38ff08aeeeb78acde14aac3 (diff)
Use correct type for this in methods for generic structs
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java9
1 files changed, 8 insertions, 1 deletions
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<SimpleStructType> constructor ->
+ Types.constructedType(constructor.value(), constructor.value().params());
+ case TypeOrConstructor.Type<SimpleStructType> type ->
+ type.value();
+ };
+
var declareFunctionResult = declareFunctionDefinition(
untypedMethodNode,
- Optional.of(typeOrConstructor.toType()),
+ Optional.of(thisType),
context
);
var typeCheckFunctionState = declareFunctionResult.value();