This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
new 77f973682b GROOVY-8034: apply context type arguments to non-static
method parameter
77f973682b is described below
commit 77f973682b2c70bf80c1fcef7e16f43def4bf88c
Author: Eric Milles <[email protected]>
AuthorDate: Sun Sep 11 14:37:54 2022 -0500
GROOVY-8034: apply context type arguments to non-static method parameter
---
.../codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index c8cdebe597..e2a0263d49 100644
---
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -1387,9 +1387,12 @@ public abstract class StaticTypeCheckingSupport {
}
static void addMethodLevelDeclaredGenerics(final MethodNode method, final
Map<GenericsTypeName, GenericsType> resolvedPlaceholders) {
- ClassNode dummy = OBJECT_TYPE.getPlainNodeReference();
- dummy.setGenericsTypes(method.getGenericsTypes());
- GenericsUtils.extractPlaceholders(dummy, resolvedPlaceholders);
+ GenericsType[] generics = method.getGenericsTypes();
+ if (!method.isStatic() && !resolvedPlaceholders.isEmpty()) {
+ // GROOVY-8034: non-static method may use class generics
+ generics = applyGenericsContext(resolvedPlaceholders, generics);
+ }
+
GenericsUtils.extractPlaceholders(GenericsUtils.makeClassSafe0(OBJECT_TYPE,
generics), resolvedPlaceholders);
}
protected static boolean typeCheckMethodsWithGenerics(final ClassNode
receiver, final ClassNode[] argumentTypes, final MethodNode candidateMethod) {