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 2023/05/09 03:18:59 UTC

[groovy] branch GROOVY_4_0_X updated: GROOVY-11048: Optimisations for bytecode for record generated methods (missing case)

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 73e865e494 GROOVY-11048: Optimisations for bytecode for record generated methods (missing case)
73e865e494 is described below

commit 73e865e494b53acfb5c796b9bea791f04d3b28e9
Author: Paul King <pa...@asert.com.au>
AuthorDate: Tue May 9 13:18:49 2023 +1000

    GROOVY-11048: Optimisations for bytecode for record generated methods (missing case)
---
 src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java         | 4 ++++
 .../codehaus/groovy/transform/EqualsAndHashCodeASTTransformation.java | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
index ba10197726..bd726edc21 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -148,6 +148,10 @@ public class GeneralUtils {
         return new AttributeExpression(oe, prop);
     }
 
+    public static Expression attrX(final Expression oe, final String propName) {
+        return new AttributeExpression(oe, constX(propName));
+    }
+
     public static BinaryExpression binX(final Expression left, final Token token, final Expression right) {
         return new BinaryExpression(left, token, right);
     }
diff --git a/src/main/java/org/codehaus/groovy/transform/EqualsAndHashCodeASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/EqualsAndHashCodeASTTransformation.java
index 0d5bd80d67..679badb958 100644
--- a/src/main/java/org/codehaus/groovy/transform/EqualsAndHashCodeASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/EqualsAndHashCodeASTTransformation.java
@@ -54,6 +54,7 @@ import static org.codehaus.groovy.ast.ClassHelper.make;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.andX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.args;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.assignS;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.attrX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.callSuperX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.callThisX;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
@@ -363,7 +364,7 @@ public class EqualsAndHashCodeASTTransformation extends AbstractASTTransformatio
                     pNode.getOriginType(), cNode
             );
             Expression thisX = useGetter ? getterThisX(originType, pNode) : propX(varX("this"), pNode.getName());
-            Expression otherX = useGetter ? getterX(originType, otherTyped, pNode) : propX(otherTyped, pNode.getName());
+            Expression otherX = useGetter ? getterX(originType, otherTyped, pNode) : attrX(otherTyped, pNode.getName());
             Expression propsEqual = pojo
                     ? callX(OBJECTS_TYPE, EQUALS, args(thisX, otherX))
                     : hasEqualPropertyX(originType, pNode, otherTyped);