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
The following commit(s) were added to refs/heads/GROOVY_4_0_X by this push:
new 1cf6837db0 GROOVY-11689: Grails reproducible build (fix @Delegate
method ordering)
1cf6837db0 is described below
commit 1cf6837db0ee2c4bd1e607bbb5da2bc28496dfcf
Author: James Daugherty <[email protected]>
AuthorDate: Sun Jun 1 04:28:49 2025 -0400
GROOVY-11689: Grails reproducible build (fix @Delegate method ordering)
---
.../groovy/transform/DelegateASTTransformation.java | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git
a/src/main/java/org/codehaus/groovy/transform/DelegateASTTransformation.java
b/src/main/java/org/codehaus/groovy/transform/DelegateASTTransformation.java
index 2c79b242e3..f04a19038b 100644
--- a/src/main/java/org/codehaus/groovy/transform/DelegateASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/DelegateASTTransformation.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.transform;
import groovy.lang.Delegate;
import groovy.lang.Lazy;
import groovy.lang.Reference;
+import org.apache.groovy.ast.tools.MethodNodeUtils;
import org.codehaus.groovy.ast.ASTNode;
import org.codehaus.groovy.ast.AnnotatedNode;
import org.codehaus.groovy.ast.AnnotationNode;
@@ -40,6 +41,7 @@ import org.codehaus.groovy.control.SourceUnit;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.ListIterator;
@@ -165,7 +167,10 @@ public class DelegateASTTransformation extends
AbstractASTTransformation {
if (!checkPropertyOrMethodList(delegate.type, delegate.excludes,
"excludes", node, MY_TYPE_NAME)) return;
if (!checkPropertyOrMethodList(delegate.type, delegate.includes,
"includes", node, MY_TYPE_NAME)) return;
- final Iterable<MethodNode> ownerMethods =
getAllMethods(delegate.owner);
+ final List<MethodNode> ownerMethods =
getAllMethods(delegate.owner);
+ if (ownerMethods.size() > 1) {
+
ownerMethods.sort(Comparator.comparing(MethodNodeUtils::methodDescriptorWithoutReturnType));
+ }
final Iterable<MethodNode> delegateMethods =
filterMethods(collectMethods(delegate.type), delegate, allNames,
includeDeprecated);
for (MethodNode mn : delegateMethods) {
@@ -215,7 +220,8 @@ public class DelegateASTTransformation extends
AbstractASTTransformation {
}
private static Collection<MethodNode> collectMethods(final ClassNode type)
{
- List<MethodNode> methods = new
java.util.LinkedList<>(getAllMethods(type));
+ List<MethodNode> methods = getAllMethods(type);
+
// GROOVY-4320, GROOVY-4516
for (ListIterator<MethodNode> it = methods.listIterator();
it.hasNext();) {
MethodNode next = it.next();
@@ -250,6 +256,10 @@ public class DelegateASTTransformation extends
AbstractASTTransformation {
methods.addAll(face.getMethods());
}
+ if (methods.size() > 1) {
+
methods.sort(Comparator.comparing(MethodNodeUtils::methodDescriptorWithoutReturnType));
+ }
+
return methods;
}