You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2020/11/08 02:01:04 UTC

[groovy] 01/02: GROOVY-9762: backport fix to findMethodRefMethod

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

commit adbb2220cce310c32bb11381ad0bcf39bb9a2034
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sat Nov 7 19:20:43 2020 -0600

    GROOVY-9762: backport fix to findMethodRefMethod
---
 .../classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java    | 3 ++-
 src/test/groovy/transform/stc/GenericsSTCTest.groovy                   | 3 +--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
index 9e758bc..9c530eb 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
@@ -301,7 +301,8 @@ public class StaticTypesMethodReferenceExpressionWriter extends MethodReferenceE
     }
 
     private MethodNode findMethodRefMethod(String methodRefName, Parameter[] abstractMethodParameters, Expression typeOrTargetRef) {
-        ClassNode typeOrTargetRefType = typeOrTargetRef.getType();
+        ClassNode typeOrTargetRefType = isClassExpr(typeOrTargetRef) ? typeOrTargetRef.getType()
+                : controller.getTypeChooser().resolveType(typeOrTargetRef, controller.getClassNode());
         List<MethodNode> methodNodeList = typeOrTargetRefType.getMethods(methodRefName);
         Set<MethodNode> dgmMethodNodeSet = findDGMMethodsForClassNode(controller.getSourceUnit().getClassLoader(), typeOrTargetRefType, methodRefName);
 
diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
index caa8952..72b5272 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -628,8 +628,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
 
     // GROOVY-9762
     void testShouldUseMethodGenericType7() {
-        // TODO GROOVY-9762 reinstate fourth case below for GROOVY_3_0_X once working
-        for (toList in ['{ list(it) }', 'o -> list(o)', 'this.&list'/*, 'this::list'*/]) {
+        for (toList in ['{ list(it) }', 'o -> list(o)', 'this.&list', 'this::list']) {
             assertScript """
                 def <T> List<T> list(T item) {
                     return [item]