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/08/05 22:00:48 UTC

[groovy] 01/01: GROOVY-9673: do not set method target on call expr in case of overloads

This is an automated email from the ASF dual-hosted git repository.

emilles pushed a commit to branch GROOVY-9673
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 2ec275f29e6fa959e9175eba19f2767bfa3c3589
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Wed Aug 5 16:56:26 2020 -0500

    GROOVY-9673: do not set method target on call expr in case of overloads
---
 .../transform/trait/SuperCallTraitTransformer.java |  1 -
 .../traitx/TraitASTTransformationTest.groovy       | 43 +++++++++++++++++++++-
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/transform/trait/SuperCallTraitTransformer.java b/src/main/java/org/codehaus/groovy/transform/trait/SuperCallTraitTransformer.java
index 76f5782..4e4eea4 100644
--- a/src/main/java/org/codehaus/groovy/transform/trait/SuperCallTraitTransformer.java
+++ b/src/main/java/org/codehaus/groovy/transform/trait/SuperCallTraitTransformer.java
@@ -98,7 +98,6 @@ class SuperCallTraitTransformer extends ClassCodeExpressionTransformer {
                             setterCall.getMethod().setSourcePosition(leftExpression.getProperty());
                             setterCall.getObjectExpression().setSourcePosition(traitType);
                             setterCall.setSpreadSafe(leftExpression.isSpreadSafe());
-                            setterCall.setMethodTarget(method);
                             setterCall.setImplicitThis(false);
                             return setterCall;
                         }
diff --git a/src/test/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy b/src/test/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy
index 11cf72c..8dad8ff 100644
--- a/src/test/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy
@@ -1014,8 +1014,49 @@ final class TraitASTTransformationTest {
         '''
     }
 
+    @Test // GROOVY-9673
+    void testTraitSuperPropertySetWithOverloads() {
+        assertScript '''
+            trait T {
+              def setX(Number n) {
+                'Number'
+              }
+              def setX(String s) {
+                'String'
+              }
+            }
+
+            class C implements T {
+              def test() {
+                T.super.x = 42
+              }
+            }
+
+            assert new C().test() == 'Number'
+        '''
+
+        assertScript '''
+            trait T {
+              def setX(Number n) {
+                'Number'
+              }
+              def setX(String s) {
+                'String'
+              }
+            }
+
+            class C implements T {
+              def test() {
+                T.super.x = 'x'
+              }
+            }
+
+            assert new C().test() == 'String'
+        '''
+    }
+
     @Test
-    void testSuperCallInTraitExtendingAnotherTrait() {
+    void testTraitSuperCallWhenExtendingAnotherTrait() {
         assertScript '''
             trait Foo {
                 int foo() { 1 }