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 2020/09/12 06:16:56 UTC

[groovy] branch GROOVY_3_0_X updated (6700de3 -> 4e82124)

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

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


    from 6700de3  update json-unit version
     new b404dfd  GROOVY-9732: re-implement transformExpression and several setters (closes #1361)
     new 4e82124  remove superfluous trailing whitespace

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:
 .../sc/transformers/CompareToNullExpression.java   | 55 +++++++++++++++-------
 .../transform/GeneratedAnnotationTest.groovy       |  2 +-
 2 files changed, 38 insertions(+), 19 deletions(-)


[groovy] 01/02: GROOVY-9732: re-implement transformExpression and several setters (closes #1361)

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

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

commit b404dfd9505d617478e7f7955aff7e756fc2c506
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Tue Sep 8 09:57:45 2020 -0500

    GROOVY-9732: re-implement transformExpression and several setters (closes #1361)
---
 .../sc/transformers/CompareToNullExpression.java   | 55 +++++++++++++++-------
 1 file changed, 37 insertions(+), 18 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java b/src/main/java/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java
index 723be81..8c4e4f1 100644
--- a/src/main/java/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java
+++ b/src/main/java/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java
@@ -19,7 +19,6 @@
 package org.codehaus.groovy.transform.sc.transformers;
 
 import org.codehaus.groovy.ast.ClassHelper;
-import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GroovyCodeVisitor;
 import org.codehaus.groovy.ast.expr.BinaryExpression;
 import org.codehaus.groovy.ast.expr.ConstantExpression;
@@ -35,21 +34,38 @@ import org.objectweb.asm.Opcodes;
 
 public class CompareToNullExpression extends BinaryExpression implements Opcodes {
     private final boolean equalsNull;
-    private final Expression objectExpression;
 
     public CompareToNullExpression(final Expression objectExpression, final boolean compareToNull) {
         super(objectExpression, new Token(Types.COMPARE_TO, compareToNull ? "==" : "!=", -1, -1), ConstantExpression.NULL);
-        this.objectExpression = objectExpression;
+        super.setType(ClassHelper.boolean_TYPE);
         this.equalsNull = compareToNull;
     }
 
     public Expression getObjectExpression() {
-        return objectExpression;
+        return getLeftExpression();
+    }
+
+    @Override
+    public void setLeftExpression(final Expression expression) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setRightExpression(final Expression expression) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setType(final org.codehaus.groovy.ast.ClassNode type) {
+        throw new UnsupportedOperationException();
     }
 
     @Override
     public Expression transformExpression(final ExpressionTransformer transformer) {
-        return this;
+        Expression ret = new CompareToNullExpression(transformer.transform(getObjectExpression()), equalsNull);
+        ret.setSourcePosition(this);
+        ret.copyNodeMetaData(this);
+        return ret;
     }
 
     @Override
@@ -58,23 +74,26 @@ public class CompareToNullExpression extends BinaryExpression implements Opcodes
             AsmClassGenerator acg = (AsmClassGenerator) visitor;
             WriterController controller = acg.getController();
             MethodVisitor mv = controller.getMethodVisitor();
-            objectExpression.visit(acg);
-            ClassNode top = controller.getOperandStack().getTopOperand();
-            if (ClassHelper.isPrimitiveType(top)) {
+
+            getObjectExpression().visit(acg);
+
+            if (ClassHelper.isPrimitiveType(controller.getOperandStack().getTopOperand())) {
                 controller.getOperandStack().pop();
                 mv.visitInsn(equalsNull ? ICONST_0 : ICONST_1);
+
                 controller.getOperandStack().push(ClassHelper.boolean_TYPE);
-                return;
+            } else {
+                Label zero = new Label();
+                mv.visitJumpInsn(equalsNull ? IFNONNULL : IFNULL, zero);
+                mv.visitInsn(ICONST_1);
+                Label end = new Label();
+                mv.visitJumpInsn(GOTO, end);
+                mv.visitLabel(zero);
+                mv.visitInsn(ICONST_0);
+                mv.visitLabel(end);
+
+                controller.getOperandStack().replace(ClassHelper.boolean_TYPE);
             }
-            Label zero = new Label();
-            mv.visitJumpInsn(equalsNull ? IFNONNULL : IFNULL, zero);
-            mv.visitInsn(ICONST_1);
-            Label end = new Label();
-            mv.visitJumpInsn(GOTO, end);
-            mv.visitLabel(zero);
-            mv.visitInsn(ICONST_0);
-            mv.visitLabel(end);
-            controller.getOperandStack().replace(ClassHelper.boolean_TYPE);
         } else {
             super.visit(visitor);
         }


[groovy] 02/02: remove superfluous trailing whitespace

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

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

commit 4e82124a2ae8fc53eba11e057285ff440303c581
Author: Paul King <pa...@asert.com.au>
AuthorDate: Sat Sep 12 15:56:13 2020 +1000

    remove superfluous trailing whitespace
---
 src/test/org/codehaus/groovy/transform/GeneratedAnnotationTest.groovy | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/test/org/codehaus/groovy/transform/GeneratedAnnotationTest.groovy b/src/test/org/codehaus/groovy/transform/GeneratedAnnotationTest.groovy
index b3c477d..28c7842 100644
--- a/src/test/org/codehaus/groovy/transform/GeneratedAnnotationTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/GeneratedAnnotationTest.groovy
@@ -85,7 +85,7 @@ class GeneratedAnnotationTest extends GroovyShellTestCase {
         def person = evaluate('''
             class Person {
                 String name
-                
+
                 def invokeMethod(String name, args) { }
             }
             new Person()