|
97 | 97 | import com.oracle.truffle.dsl.processor.java.model.CodeTypeElement; |
98 | 98 | import com.oracle.truffle.dsl.processor.java.model.CodeTypeMirror; |
99 | 99 | import com.oracle.truffle.dsl.processor.java.model.CodeTypeMirror.DeclaredCodeTypeMirror; |
| 100 | +import com.oracle.truffle.dsl.processor.java.model.CodeTypeMirror.WildcardTypeMirror; |
100 | 101 | import com.oracle.truffle.dsl.processor.java.model.GeneratedElement; |
101 | 102 | import com.oracle.truffle.dsl.processor.model.SpecializationData.Idempotence; |
102 | 103 |
|
@@ -365,12 +366,21 @@ public static TypeMirror rawTypeToWildcardedType(ProcessorContext context, TypeM |
365 | 366 | if (typeParameters.isEmpty()) { |
366 | 367 | return type; |
367 | 368 | } |
| 369 | + if (declaredType instanceof DeclaredCodeTypeMirror generatedType) { |
| 370 | + // Special case: generated types |
| 371 | + List<TypeMirror> typeArguments = new ArrayList<>(typeParameters.size()); |
| 372 | + for (int i = 0; i < typeArguments.size(); i++) { |
| 373 | + typeArguments.add(new WildcardTypeMirror(null, null)); |
| 374 | + } |
| 375 | + return new DeclaredCodeTypeMirror(typeElement, typeArguments); |
| 376 | + } |
| 377 | + |
368 | 378 | Types typeUtils = context.getEnvironment().getTypeUtils(); |
369 | | - TypeMirror[] wildcards = new TypeMirror[typeParameters.size()]; |
370 | | - for (int i = 0; i < wildcards.length; i++) { |
371 | | - wildcards[i] = typeUtils.getWildcardType(null, null); |
| 379 | + TypeMirror[] typeArguments = new TypeMirror[typeParameters.size()]; |
| 380 | + for (int i = 0; i < typeArguments.length; i++) { |
| 381 | + typeArguments[i] = typeUtils.getWildcardType(null, null); |
372 | 382 | } |
373 | | - return typeUtils.getDeclaredType(typeElement, wildcards); |
| 383 | + return typeUtils.getDeclaredType(typeElement, typeArguments); |
374 | 384 | } |
375 | 385 |
|
376 | 386 | public static List<AnnotationMirror> collectAnnotations(AnnotationMirror markerAnnotation, String elementName, Element element, DeclaredType annotationClass) { |
|
0 commit comments