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/07/27 04:09:01 UTC

[groovy] branch master updated (e51c322208 -> de3baef1d3)

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

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


    from e51c322208 GROOVY-10705: ToString order bug for super properties (also handle pseudo properties)
     new 400233cda8 GROOVY-10704: retain order of inherited methods
     new de3baef1d3 GROOVY-10704: retain order of field-related methods

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/java/org/apache/groovy/ast/tools/ClassNodeUtils.java       | 6 +++---
 .../java/org/codehaus/groovy/transform/trait/TraitComposer.java     | 5 +++--
 2 files changed, 6 insertions(+), 5 deletions(-)


[groovy] 02/02: GROOVY-10704: retain order of field-related methods

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

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

commit de3baef1d35b350672d97226180527471fa05163
Author: Paul King <pa...@asert.com.au>
AuthorDate: Wed Jul 27 14:08:49 2022 +1000

    GROOVY-10704: retain order of field-related methods
---
 src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java b/src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java
index 135e82e31e..e13142502e 100644
--- a/src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java
+++ b/src/main/java/org/codehaus/groovy/transform/trait/TraitComposer.java
@@ -179,9 +179,10 @@ public abstract class TraitComposer {
             cNode.addInterface(fieldHelperClassNode);
             // implementation of methods
             List<MethodNode> declaredMethods = new LinkedList<>();
+            int pos = 0; // keep direct getters at start but in declaration order
             for (MethodNode declaredMethod : fieldHelperClassNode.getAllDeclaredMethods()) {
                 if (declaredMethod.getName().endsWith(Traits.DIRECT_GETTER_SUFFIX)) {
-                    declaredMethods.add(0, declaredMethod);
+                    declaredMethods.add(pos++, declaredMethod);
                 } else {
                     declaredMethods.add(declaredMethod);
                 }
@@ -190,7 +191,7 @@ public abstract class TraitComposer {
             if (staticFieldHelperClassNode != null) {
                 for (MethodNode declaredMethod : staticFieldHelperClassNode.getAllDeclaredMethods()) {
                     if (declaredMethod.getName().endsWith(Traits.DIRECT_GETTER_SUFFIX)) {
-                        declaredMethods.add(0, declaredMethod);
+                        declaredMethods.add(pos++, declaredMethod);
                     } else {
                         declaredMethods.add(declaredMethod);
                     }


[groovy] 01/02: GROOVY-10704: retain order of inherited methods

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

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

commit 400233cda8572840782c29a78eb4356f10be530c
Author: musketyr <vl...@orany.cz>
AuthorDate: Tue Jul 26 08:25:33 2022 +0200

    GROOVY-10704: retain order of inherited methods
    
    to ensure the generated trait classes are the same for the same source code
---
 src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java b/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
index 510888e91b..0e968f14e2 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
@@ -36,8 +36,8 @@ import java.lang.reflect.Modifier;
 import java.util.ArrayDeque;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -165,7 +165,7 @@ public class ClassNodeUtils {
     public static Map<String, MethodNode> getDeclaredMethodsFromSuper(final ClassNode cNode) {
         ClassNode parent = cNode.getSuperClass();
         if (parent == null) {
-            return new HashMap<>();
+            return new LinkedHashMap<>();
         }
         return parent.getDeclaredMethodsMap();
     }
@@ -197,7 +197,7 @@ public class ClassNodeUtils {
      * @return A map of methods
      */
     public static Map<String, MethodNode> getDeclaredMethodsFromInterfaces(final ClassNode cNode) {
-        Map<String, MethodNode> methodsMap = new HashMap<>();
+        Map<String, MethodNode> methodsMap = new LinkedHashMap<>();
         addDeclaredMethodsFromInterfaces(cNode, methodsMap);
         return methodsMap;
     }