summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-14 09:29:19 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-14 09:29:19 +0100
commita8bdefad22ad6776aa8695dd403dcc300cf24543 (patch)
tree14a31e6abbe824f7965e33bf6b7290e9c18f732c /src
parent1070928d39728d2aa4ae6d43aee20cb595f8584a (diff)
Use wildcard when field type is type param
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java
index 2a00d2b..5b1a282 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javapreciselymatchers/JavaPreciselyMatchersGenerator.java
@@ -233,7 +233,11 @@ public class JavaPreciselyMatchersGenerator implements Generator {
case TypeOrConstructor.Type<SimpleStructType> _ ->
Set.<TypeParam>of();
};
- var javaFieldTypeRef = this.javaGenerator.generateReferenceTypeRef(fieldType, typeParams);
+ var javaFieldMatcherTypeRef = !typeParams.isEmpty() && typeParams.contains(fieldType)
+ ? genericMatcherRef(JavaTypeArg.wildcard())
+ : genericMatcherRef(JavaTypeArg.superType(
+ this.javaGenerator.generateReferenceTypeRef(fieldType, typeParams)
+ ));
var javaFieldName = this.javaGenerator.generateFieldName(field.name());
methods.add(new JavaMethodDeclaration(
@@ -243,7 +247,7 @@ public class JavaPreciselyMatchersGenerator implements Generator {
List.of(),
javaMatcherTypeRef,
List.of(
- new JavaParam(genericMatcherRef(JavaTypeArg.superType(javaFieldTypeRef)), javaFieldName)
+ new JavaParam(javaFieldMatcherTypeRef, javaFieldName)
),
List.of(),
new JavaBlock(List.of(