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 {