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 2022/02/19 17:31:30 UTC

[groovy] branch GROOVY_2_5_X updated (2e09796 -> 254146d)

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

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


    from 2e09796  GROOVY-8840: use inferred type for subscript if operand is placeholder
     new 484d5d2  fix for JDK7
     new 254146d  GROOVY-10497: `@NamedVariant`: don't replace explicit value with default

The 2 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.


Summary of changes:
 src/main/groovy/groovy/grape/GrapeIvy.groovy            |  2 +-
 .../groovy/transform/NamedVariantASTTransformation.java |  9 +++++++--
 .../groovy/transform/NamedVariantTransformTest.groovy   | 17 ++++++++++++++++-
 3 files changed, 24 insertions(+), 4 deletions(-)

[groovy] 01/02: fix for JDK7

Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 484d5d20cb27908b6485ede8e1897bb282aa0905
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sat Feb 19 11:19:39 2022 -0600

    fix for JDK7
---
 src/main/groovy/groovy/grape/GrapeIvy.groovy | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/groovy/groovy/grape/GrapeIvy.groovy b/src/main/groovy/groovy/grape/GrapeIvy.groovy
index 9939bbf..417fe39 100644
--- a/src/main/groovy/groovy/grape/GrapeIvy.groovy
+++ b/src/main/groovy/groovy/grape/GrapeIvy.groovy
@@ -763,7 +763,7 @@ class GrapeIvy implements GrapeEngine {
         def resolver = new IBiblioResolver(
             name: (String) args.name,
             root: (String) args.root,
-            m2compatible: (boolean) args.getOrDefault('m2Compatible', Boolean.TRUE),
+            m2compatible: !Boolean.FALSE.equals(args.get('m2Compatible')),
             settings: (ResolverSettings) settings
         )
 

[groovy] 02/02: GROOVY-10497: `@NamedVariant`: don't replace explicit value with default

Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 254146d4974cf071ab168b54486ef0ef77d96d46
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Wed Feb 16 11:24:47 2022 -0600

    GROOVY-10497: `@NamedVariant`: don't replace explicit value with default
    
    Conflicts:
    	src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
---
 .../groovy/transform/NamedVariantASTTransformation.java |  9 +++++++--
 .../groovy/transform/NamedVariantTransformTest.groovy   | 17 ++++++++++++++++-
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
index 300d267..84d8db7 100644
--- a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
@@ -30,7 +30,6 @@ import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.ast.Parameter;
 import org.codehaus.groovy.ast.PropertyNode;
 import org.codehaus.groovy.ast.expr.ArgumentListExpression;
-import org.codehaus.groovy.ast.expr.ElvisOperatorExpression;
 import org.codehaus.groovy.ast.expr.Expression;
 import org.codehaus.groovy.ast.expr.MapEntryExpression;
 import org.codehaus.groovy.ast.expr.MethodCallExpression;
@@ -68,10 +67,12 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.getAllProperties;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.list2args;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.mapX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.nullX;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.notNullX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.param;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.plusX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.propX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.stmt;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.ternaryX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
 
 @GroovyASTTransformation(phase = CompilePhase.SEMANTIC_ANALYSIS)
@@ -274,7 +275,10 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation {
             defaultValue = defaultValueX(type);
         }
         if (defaultValue != null) {
-            value = new ElvisOperatorExpression(value, defaultValue); // GROOVY-9158
+            if (isPrimitiveType(type)) { // handle null for primitive
+                value = ternaryX(notNullX(value), value, defaultValueX(type));
+            }
+            value = ternaryX(containsKey(mapParam, name), value, defaultValue);
         }
         return castX(type, value);
     }
@@ -287,6 +291,7 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation {
 
     private static Expression containsKey(final Parameter mapParam, final String name) {
         MethodCallExpression call = callX(varX(mapParam), "containsKey", constX(name));
+        call.setImplicitThis(false); // required for use before super ctor call
         call.setMethodTarget(MAP_TYPE.getMethods("containsKey").get(0));
         return call;
     }
diff --git a/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy b/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy
index 9c5fbc6..ecbfdf2 100644
--- a/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy
@@ -192,7 +192,7 @@ final class NamedVariantTransformTest {
         '''
     }
 
-    @Test // GROOVY-9158
+    @Test // GROOVY-9158, GROOVY-10497
     void testNamedParamWithDefaultArgument() {
         assertScript '''
             import groovy.transform.*
@@ -226,6 +226,21 @@ final class NamedVariantTransformTest {
                 m()
             }
         '''
+
+        assertScript '''
+            import groovy.transform.*
+
+            @NamedVariant
+            def m(int one, int two = 42) {
+                "$one $two"
+            }
+
+            String result = m(one:0, two:0)
+            assert result == '0 0'
+
+            result = m(one:0, two:null)
+            assert result == '0 0'
+        '''
     }
 
     @Test // GROOVY-10176