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 2025/08/31 14:46:12 UTC
(groovy) branch master updated (7f5977689b -> c05793f64e)
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
from 7f5977689b Update JDK version requirement to 17 or higher
new 2eb173a0db jdk17 items
new c05793f64e GROOVY-11743: super trait may not be transformed when creating helper
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/org/apache/groovy/gradle/DocGDK.groovy | 2 +-
.../groovy/transform/ASTTransformationVisitor.java | 14 ++++++--------
.../groovy/transform/trait/TraitReceiverTransformer.java | 4 +++-
.../java/org/codehaus/groovy/transform/trait/Traits.java | 6 ++++--
.../transform/traitx/TraitASTTransformationTest.groovy | 2 +-
5 files changed, 15 insertions(+), 13 deletions(-)
(groovy) 02/02: GROOVY-11743: super trait may not be transformed when creating helper
Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit c05793f64eaac776452c1c21223f63703ce276c4
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Tue Aug 26 11:21:46 2025 -0500
GROOVY-11743: super trait may not be transformed when creating helper
---
.../codehaus/groovy/transform/trait/TraitReceiverTransformer.java | 4 +++-
src/main/java/org/codehaus/groovy/transform/trait/Traits.java | 6 ++++--
.../groovy/transform/traitx/TraitASTTransformationTest.groovy | 2 +-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/transform/trait/TraitReceiverTransformer.java b/src/main/java/org/codehaus/groovy/transform/trait/TraitReceiverTransformer.java
index a4a084b995..d0d9d21cde 100644
--- a/src/main/java/org/codehaus/groovy/transform/trait/TraitReceiverTransformer.java
+++ b/src/main/java/org/codehaus/groovy/transform/trait/TraitReceiverTransformer.java
@@ -320,7 +320,9 @@ class TraitReceiverTransformer extends ClassCodeExpressionTransformer {
var traits = Traits.findTraits(traitClass); traits.remove(traitClass);
for (ClassNode superTrait : traits) {
- for (MethodNode methodNode : Traits.findHelper(superTrait).getDeclaredMethods(methodName)) {
+ ClassNode traitHelper = Traits.findHelper(superTrait);
+ if (traitHelper == null) continue; // GROOVY-11743: order issue
+ for (MethodNode methodNode : traitHelper.getDeclaredMethods(methodName)) {
if (methodNode.isPublic() && methodNode.isStatic()
// exclude public method with body as it's included in trait interface
&& ClassHelper.isClassType(methodNode.getParameters()[0].getType())) {
diff --git a/src/main/java/org/codehaus/groovy/transform/trait/Traits.java b/src/main/java/org/codehaus/groovy/transform/trait/Traits.java
index ce078f3789..1d2dc7ec1b 100644
--- a/src/main/java/org/codehaus/groovy/transform/trait/Traits.java
+++ b/src/main/java/org/codehaus/groovy/transform/trait/Traits.java
@@ -142,7 +142,7 @@ public abstract class Traits {
staticFieldHelperClassNode = icn;
}
} while (innerClasses.hasNext());
- } else {
+ } else if (!trait.isPrimaryClassNode()) { // GROOVY-11743
// precompiled trait
try {
String helperClassName = Traits.helperClassName(trait);
@@ -159,7 +159,9 @@ public abstract class Traits {
}
}
GenericsType[] typeArguments = trait.getGenericsTypes();
- helperClassNode = GenericsUtils.makeClassSafe0(helperClassNode, typeArguments);
+ if (helperClassNode != null) {
+ helperClassNode = GenericsUtils.makeClassSafe0(helperClassNode, typeArguments);
+ }
if (fieldHelperClassNode != null) {
fieldHelperClassNode = GenericsUtils.makeClassSafe0(fieldHelperClassNode, typeArguments);
}
diff --git a/src/test/groovy/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy b/src/test/groovy/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy
index f1435791e8..acdb2dc6ce 100644
--- a/src/test/groovy/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy
+++ b/src/test/groovy/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy
@@ -568,7 +568,7 @@ final class TraitASTTransformationTest {
assertScript shell, """
$mode
trait Impl<T> implements Api<T> {
- @Override T fun() { null }
+ @Override T fun() { print("") }
}
$mode
trait Api<RT> {
(groovy) 01/02: jdk17 items
Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 2eb173a0db2a099c7a5bb3aac976da2eb084a794
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Tue Aug 26 11:05:07 2025 -0500
jdk17 items
---
.../src/main/groovy/org/apache/groovy/gradle/DocGDK.groovy | 2 +-
.../groovy/transform/ASTTransformationVisitor.java | 14 ++++++--------
2 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/build-logic/src/main/groovy/org/apache/groovy/gradle/DocGDK.groovy b/build-logic/src/main/groovy/org/apache/groovy/gradle/DocGDK.groovy
index 5487b9682e..b5a00bfd28 100644
--- a/build-logic/src/main/groovy/org/apache/groovy/gradle/DocGDK.groovy
+++ b/build-logic/src/main/groovy/org/apache/groovy/gradle/DocGDK.groovy
@@ -78,7 +78,7 @@ class DocGDK extends DefaultTask {
'-link',
'groovy,org.codehaus.groovy,org.apache.groovy=https://docs.groovy-lang.org/latest/html/gapi/',
'-link',
- 'java,org.xml,javax,org.w3c=https://docs.oracle.com/en/java/javase/11/docs/api/java.base/'] + classes.get()
+ 'java,org.xml,javax,org.w3c=https://docs.oracle.com/en/java/javase/17/docs/api/java.base/'] + classes.get()
)
}
fs.copy {
diff --git a/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java b/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java
index c18a410e9a..7687a87a20 100644
--- a/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java
@@ -143,15 +143,15 @@ public final class ASTTransformationVisitor extends ClassCodeVisitorSupport {
// second pass, call visit on all the collected nodes
List<Tuple2<ASTTransformation, ASTNode[]>> tuples = new ArrayList<>();
- for (ASTNode[] node : targetNodes) {
- for (ASTTransformation snt : transforms.get(node[0])) {
- tuples.add(new Tuple2<>(snt, node));
+ for (ASTNode[] nodes : targetNodes) {
+ for (ASTTransformation xform : transforms.get(nodes[0])) {
+ tuples.add(new Tuple2<>(xform, nodes));
}
}
- tuples.sort(priorityComparator);
+ if (tuples.size() > 1) tuples.sort(priorityComparator);
for (Tuple2<ASTTransformation, ASTNode[]> tuple : tuples) {
- if (tuple.getV1() instanceof CompilationUnitAware) {
- ((CompilationUnitAware)tuple.getV1()).setCompilationUnit(context.getCompilationUnit());
+ if (tuple.getV1() instanceof CompilationUnitAware unitAware) {
+ unitAware.setCompilationUnit(context.getCompilationUnit());
}
tuple.getV1().visit(tuple.getV2(), source);
}
@@ -237,8 +237,6 @@ public final class ASTTransformationVisitor extends ClassCodeVisitorSupport {
visitor.source = source;
visitor.visitClass(classNode);
}, phase.getPhaseNumber());
- break;
-
}
}
}