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:47 UTC

[groovy] branch GROOVY-9673 created (now 2ec275f)

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

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


      at 2ec275f  GROOVY-9673: do not set method target on call expr in case of overloads

This branch includes the following new commits:

     new 2ec275f  GROOVY-9673: do not set method target on call expr in case of overloads

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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

Posted by em...@apache.org.
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 }