You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2022/08/30 05:24:40 UTC

[groovy] branch GROOVY_4_0_X updated (f9680739ce -> 1c66bb276c)

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

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


    from f9680739ce Remove redundant plugin applying
     new 15c57ccf93 Bump Gradle Enterprise plugin to 3.11.1
     new 61a5fe00dc minor refactor
     new afa0f64f07 Update groovy-build-test-ea.yml
     new 1c66bb276c GROOVY-10732: @Immutable handling of cloneable types should have the same behavior for non-cloneables on JDK16+

The 4 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:
 .github/workflows/groovy-build-test-ea.yml                |  5 ++++-
 settings.gradle                                           |  3 ++-
 .../transform/options/ImmutablePropertyHandler.java       | 13 +++++++++----
 .../groovy/transform/ImmutableASTTransformation.java      | 15 +++++++--------
 .../groovy/transform/ImmutableTransformTest.groovy        |  2 +-
 5 files changed, 23 insertions(+), 15 deletions(-)


[groovy] 04/04: GROOVY-10732: @Immutable handling of cloneable types should have the same behavior for non-cloneables on JDK16+

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

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

commit 1c66bb276cec2d17815fb1f2e7726bb48596bb1e
Author: Paul King <pa...@asert.com.au>
AuthorDate: Mon Aug 29 20:02:16 2022 +1000

    GROOVY-10732: @Immutable handling of cloneable types should have the same behavior for non-cloneables on JDK16+
---
 .../groovy/transform/options/ImmutablePropertyHandler.java  | 13 +++++++++----
 .../codehaus/groovy/transform/ImmutableTransformTest.groovy |  2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java b/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
index b47beef658..2b5fac14e6 100644
--- a/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
+++ b/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
@@ -82,6 +82,7 @@ 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);
@@ -230,8 +231,8 @@ public class ImmutablePropertyHandler extends PropertyHandler {
             return assignStmt;
         }
         ArgumentListExpression nameArg = args(constX(fNode.getName()));
-        MethodCallExpression var = callX(varX(map), "get", nameArg);
-        var.setImplicitThis(false);
+        MethodCallExpression get = callX(varX(map), "get", nameArg);
+        get.setImplicitThis(false);
         MethodCallExpression containsKey = callX(varX(map), "containsKey", nameArg);
         containsKey.setImplicitThis(false);
         fNode.getDeclaringClass().getField(fNode.getName()).setInitialValueExpression(null); // to avoid default initialization
@@ -292,13 +293,17 @@ public class ImmutablePropertyHandler extends PropertyHandler {
         assignStmt = ifElseS(
                 equalsNullX(param),
                 shouldNullCheck ? NullCheckASTTransformation.makeThrowStmt(fNode.getName()) : assignNullS(fieldExpr),
-                assignStmt);
+                ifElseS(isInstanceOfX(param, CLONEABLE_TYPE),
+                    assignStmt,
+                    throwS(ctorX(CLONENOTSUPPORTED_TYPE))));
         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 = assignS(fieldExpr, cloneArrayOrCloneableExpr(initExpr, fieldType));
+            assignInit = ifElseS(isInstanceOfX(initExpr, CLONEABLE_TYPE),
+                assignS(fieldExpr, cloneArrayOrCloneableExpr(initExpr, fieldType)),
+                throwS(ctorX(CLONENOTSUPPORTED_TYPE)));
         }
         return assignFieldWithDefault(namedArgsMap, fNode, assignStmt, assignInit);
     }
diff --git a/src/test/org/codehaus/groovy/transform/ImmutableTransformTest.groovy b/src/test/org/codehaus/groovy/transform/ImmutableTransformTest.groovy
index 2095952132..e74dac7e94 100644
--- a/src/test/org/codehaus/groovy/transform/ImmutableTransformTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/ImmutableTransformTest.groovy
@@ -139,7 +139,7 @@ class ImmutableTransformTest extends GroovyShellTestCase {
 
     @Test
     void testCloneableFieldNotCloneableObject() {
-        shouldFail(isAtLeastJdk('16.0') ? IllegalAccessException : CloneNotSupportedException, '''
+        shouldFail(CloneNotSupportedException, '''
                 import groovy.transform.Immutable
 
                 class Dolly {


[groovy] 03/04: Update groovy-build-test-ea.yml

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

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

commit afa0f64f07c5c6122569cb01e9669f348e91644d
Author: Alex <93...@users.noreply.github.com>
AuthorDate: Mon Aug 29 10:56:19 2022 +0100

    Update groovy-build-test-ea.yml
    
    Signed-off-by: sashashura <93...@users.noreply.github.com>
---
 .github/workflows/groovy-build-test-ea.yml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/groovy-build-test-ea.yml b/.github/workflows/groovy-build-test-ea.yml
index 4c06c1a9ab..be088f215c 100644
--- a/.github/workflows/groovy-build-test-ea.yml
+++ b/.github/workflows/groovy-build-test-ea.yml
@@ -17,6 +17,9 @@ name: Build and test ea
 
 on: [push, pull_request]
 
+permissions:
+  contents: read
+
 jobs:
   test:
     strategy:
@@ -42,4 +45,4 @@ jobs:
       - uses: gradle/gradle-build-action@v2
       - name: Test with Gradle
         run: ./gradlew test -Ptarget.java.home=/home/runner/openjdk
-        timeout-minutes: 60
\ No newline at end of file
+        timeout-minutes: 60


[groovy] 02/04: minor refactor

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

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

commit 61a5fe00dc8c13c4e39ccb9ce51e25514f5a4549
Author: Paul King <pa...@asert.com.au>
AuthorDate: Mon Aug 29 20:01:28 2022 +1000

    minor refactor
---
 .../groovy/transform/ImmutableASTTransformation.java      | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java
index 7e5336b1bf..b72d16ac18 100644
--- a/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java
@@ -307,14 +307,13 @@ public class ImmutableASTTransformation extends AbstractASTTransformation implem
                 varX("this", cNode)
         )));
 
-        final ClassNode clonedNode = cNode.getPlainNodeReference();
-
-        addGeneratedMethod(cNode, "copyWith",
-                ACC_PUBLIC | ACC_FINAL,
-                clonedNode,
-                params(new Parameter(new ClassNode(Map.class), "map")),
-                null,
-                body);
+        addGeneratedMethod(cNode,
+            "copyWith",
+            ACC_PUBLIC | ACC_FINAL,
+            cNode.getPlainNodeReference(),
+            params(new Parameter(new ClassNode(Map.class), "map")),
+            null,
+            body);
     }
 
     /**


[groovy] 01/04: Bump Gradle Enterprise plugin to 3.11.1

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

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

commit 15c57ccf93e072c2151b56b904d41ba6035428f5
Author: Goooler <wa...@gmail.com>
AuthorDate: Mon Aug 29 12:56:01 2022 +0800

    Bump Gradle Enterprise plugin to 3.11.1
---
 settings.gradle | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/settings.gradle b/settings.gradle
index e0c59c7590..ee3138ec15 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -26,8 +26,9 @@ pluginManagement {
     }
 }
 
+// check https://gradle.com/enterprise/releases with new versions. GE plugin version should not lag behind Gradle version
 plugins {
-    id "com.gradle.enterprise" version "3.5.2"
+    id "com.gradle.enterprise" version "3.11.1"
 }
 
 gradleEnterprise {