You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2022/09/05 16:49:22 UTC

[groovy] branch GROOVY_4_0_X updated (46094981fe -> ad16a236c9)

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

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


    from 46094981fe Trivial tweak: invoke method directly
     new 0bf28f0f2a Trivial refactoring: use `ObjectUtil` to clone
     new 2338d105d1 Trivial refactoring: eliminate redundant checks for `CloneNotSupportedException`
     new ad16a236c9 Update AST checks in test

The 3 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:
 .../transform/options/ImmutablePropertyHandler.java     |  9 ++-------
 .../apache/groovy/ast/tools/ImmutablePropertyUtils.java | 17 +++--------------
 .../groovy/console/ui/AstNodeToScriptAdapterTest.groovy |  2 +-
 3 files changed, 6 insertions(+), 22 deletions(-)


[groovy] 02/03: Trivial refactoring: eliminate redundant checks for `CloneNotSupportedException`

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

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

commit 2338d105d1afa253b154848684fff432578e3823
Author: Daniel Sun <su...@apache.org>
AuthorDate: Tue Sep 6 00:17:08 2022 +0800

    Trivial refactoring: eliminate redundant checks for `CloneNotSupportedException`
    
    (cherry picked from commit f11444838fced17b0f682707adda47c90cb48703)
---
 .../java/groovy/transform/options/ImmutablePropertyHandler.java  | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java b/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
index 2b5fac14e6..4fe8b11569 100644
--- a/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
+++ b/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
@@ -82,7 +82,6 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
 
 public class ImmutablePropertyHandler extends PropertyHandler {
     private static final ClassNode CLONEABLE_TYPE = make(Cloneable.class);
-    private static final ClassNode CLONENOTSUPPORTED_TYPE = make(CloneNotSupportedException.class);
     private static final ClassNode COLLECTION_TYPE = makeWithoutCaching(Collection.class, false);
     private static final ClassNode DGM_TYPE = make(DefaultGroovyMethods.class);
     private static final ClassNode SELF_TYPE = make(ImmutableASTTransformation.class);
@@ -293,17 +292,13 @@ public class ImmutablePropertyHandler extends PropertyHandler {
         assignStmt = ifElseS(
                 equalsNullX(param),
                 shouldNullCheck ? NullCheckASTTransformation.makeThrowStmt(fNode.getName()) : assignNullS(fieldExpr),
-                ifElseS(isInstanceOfX(param, CLONEABLE_TYPE),
-                    assignStmt,
-                    throwS(ctorX(CLONENOTSUPPORTED_TYPE))));
+                assignStmt);
         final Statement assignInit;
         final Expression initExpr = fNode.getInitialValueExpression();
         if (initExpr == null || (initExpr instanceof ConstantExpression && ((ConstantExpression) initExpr).isNullExpression())) {
             assignInit = shouldNullCheck ? NullCheckASTTransformation.makeThrowStmt(fNode.getName()) : assignNullS(fieldExpr);
         } else {
-            assignInit = ifElseS(isInstanceOfX(initExpr, CLONEABLE_TYPE),
-                assignS(fieldExpr, cloneArrayOrCloneableExpr(initExpr, fieldType)),
-                throwS(ctorX(CLONENOTSUPPORTED_TYPE)));
+            assignInit = assignS(fieldExpr, cloneArrayOrCloneableExpr(initExpr, fieldType));
         }
         return assignFieldWithDefault(namedArgsMap, fNode, assignStmt, assignInit);
     }


[groovy] 01/03: Trivial refactoring: use `ObjectUtil` to clone

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

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

commit 0bf28f0f2a122e4d36423850e19aa557d142716e
Author: Daniel Sun <su...@apache.org>
AuthorDate: Tue Sep 6 00:06:41 2022 +0800

    Trivial refactoring: use `ObjectUtil` to clone
    
    (cherry picked from commit 3d1641d62e7dd5c92a473e49ac2548180a42ac4c)
---
 .../apache/groovy/ast/tools/ImmutablePropertyUtils.java | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java b/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java
index 298cae5a8b..a8ea396a30 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java
@@ -19,22 +19,20 @@
 package org.apache.groovy.ast.tools;
 
 import groovy.transform.ImmutableOptions;
+import org.apache.groovy.runtime.ObjectUtil;
 import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ClassHelper;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GenericsType;
-import org.codehaus.groovy.ast.expr.ArrayExpression;
 import org.codehaus.groovy.ast.expr.ClassExpression;
 import org.codehaus.groovy.ast.expr.ConstantExpression;
 import org.codehaus.groovy.ast.expr.Expression;
 import org.codehaus.groovy.ast.expr.ListExpression;
-import org.codehaus.groovy.runtime.ReflectionMethodInvoker;
 import org.codehaus.groovy.transform.AbstractASTTransformation;
 
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
@@ -45,14 +43,13 @@ import static org.codehaus.groovy.ast.ClassHelper.makeWithoutCaching;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.args;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.castX;
-import static org.codehaus.groovy.ast.tools.GeneralUtils.constX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.ctorX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.isOrImplements;
 
 public class ImmutablePropertyUtils {
     private static final ClassNode CLONEABLE_TYPE = make(Cloneable.class);
     private static final ClassNode DATE_TYPE = make(Date.class);
-    private static final ClassNode REFLECTION_INVOKER_TYPE = make(ReflectionMethodInvoker.class);
+    private static final ClassNode OBJECT_UTIL_TYPE = make(ObjectUtil.class);
     private static final Class<? extends Annotation> IMMUTABLE_OPTIONS_CLASS = ImmutableOptions.class;
     public static final ClassNode IMMUTABLE_OPTIONS_TYPE = makeWithoutCaching(IMMUTABLE_OPTIONS_CLASS, false);
     private static final String MEMBER_KNOWN_IMMUTABLE_CLASSES = "knownImmutableClasses";
@@ -135,15 +132,7 @@ public class ImmutablePropertyUtils {
     private ImmutablePropertyUtils() { }
 
     public static Expression cloneArrayOrCloneableExpr(final Expression fieldExpr, final ClassNode type) {
-        Expression smce = callX(
-                REFLECTION_INVOKER_TYPE,
-                "invoke",
-                args(
-                        fieldExpr,
-                        constX("clone"),
-                        new ArrayExpression(ClassHelper.OBJECT_TYPE.makeArray(), Collections.emptyList())
-                )
-        );
+        Expression smce = callX(OBJECT_UTIL_TYPE, "cloneObject", args(fieldExpr));
         return castX(type, smce);
     }
 


[groovy] 03/03: Update AST checks in test

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

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

commit ad16a236c927839bbd252f8ddfbd88e24f3163a9
Author: Daniel Sun <su...@apache.org>
AuthorDate: Tue Sep 6 00:30:40 2022 +0800

    Update AST checks in test
    
    (cherry picked from commit 72fbd8e52c9cc4dfa122033b64813a7a70f03a33)
---
 .../src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/subprojects/groovy-console/src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy b/subprojects/groovy-console/src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy
index 136862307a..7da2ede8ba 100644
--- a/subprojects/groovy-console/src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy
+++ b/subprojects/groovy-console/src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy
@@ -604,7 +604,7 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
         assert result.contains("_result = org.codehaus.groovy.util.HashCodeHelper.updateHash(_result, this.getColor())")
 
         // assert clones
-        assert result.contains("((java.util.Date) org.codehaus.groovy.runtime.ReflectionMethodInvoker.invoke(when, 'clone', new java.lang.Object[][]))")
+        assert result.contains("((java.util.Date) org.apache.groovy.runtime.ObjectUtil.cloneObject(when))")
     }
 
     void testAnonymousInnerClass() {