You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/04/11 11:48:51 UTC

[groovy] branch GROOVY_3_0_X updated (dfb6496 -> 1f612e1)

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

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


    from dfb6496  GROOVY-9502: Bump junit to 5.6.2
     new fe569c1  Eliminate duplicated code in AST transformations
     new 9840a11  Switch to faster String#indexOf method taking a char parameter.
     new 1f612e1  Trivial refactoring: Iteration can be replaced with bulk 'Collection.addAll' call

The 3 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:
 .../java/groovy/beans/BindableASTTransformation.java   | 17 +++--------------
 .../java/groovy/beans/VetoableASTTransformation.java   | 17 +++--------------
 src/main/java/groovy/lang/MetaClassImpl.java           |  2 +-
 .../org/codehaus/groovy/ast/expr/TupleExpression.java  |  3 ++-
 .../org/codehaus/groovy/control/ErrorCollector.java    |  8 ++++++++
 .../org/codehaus/groovy/tools/LoaderConfiguration.java |  2 +-
 .../groovy/transform/AbstractASTTransformation.java    |  8 +-------
 .../groovy/transform/AnnotationCollectorTransform.java |  6 +-----
 .../groovy/transform/CategoryASTTransformation.java    | 18 ++++--------------
 .../transform/stc/StaticTypeCheckingVisitor.java       |  7 +------
 10 files changed, 25 insertions(+), 63 deletions(-)


[groovy] 02/03: Switch to faster String#indexOf method taking a char parameter.

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

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

commit 9840a11d7f31832d7eacf7b6551e418ecc7f893a
Author: Pascal Schumacher <pa...@gmx.net>
AuthorDate: Sat Apr 11 10:55:23 2020 +0200

    Switch to faster String#indexOf method taking a char parameter.
    
    (cherry picked from commit 6d341b14342cd442141a8422dbad567351c303f5)
---
 src/main/java/groovy/lang/MetaClassImpl.java                     | 2 +-
 src/main/java/org/codehaus/groovy/tools/LoaderConfiguration.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java
index 4ade193..27b19bf 100644
--- a/src/main/java/groovy/lang/MetaClassImpl.java
+++ b/src/main/java/groovy/lang/MetaClassImpl.java
@@ -565,7 +565,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
             private String[] decomposeMopName(final String mopName) {
                 int idx = mopName.indexOf('$');
                 if (idx > 0) {
-                    int eidx = mopName.indexOf("$", idx + 1);
+                    int eidx = mopName.indexOf('$', idx + 1);
                     if (eidx > 0) {
                         return new String[]{
                                 mopName.substring(0, idx + 1),
diff --git a/src/main/java/org/codehaus/groovy/tools/LoaderConfiguration.java b/src/main/java/org/codehaus/groovy/tools/LoaderConfiguration.java
index 9840317..eb2e261 100644
--- a/src/main/java/org/codehaus/groovy/tools/LoaderConfiguration.java
+++ b/src/main/java/org/codehaus/groovy/tools/LoaderConfiguration.java
@@ -170,7 +170,7 @@ public class LoaderConfiguration {
             if (propertyIndexStart == -1) break;
             result.append(str, propertyIndexEnd, propertyIndexStart);
 
-            propertyIndexEnd = str.indexOf("}", propertyIndexStart);
+            propertyIndexEnd = str.indexOf('}', propertyIndexStart);
             if (propertyIndexEnd == -1) break;
 
             String propertyKey = str.substring(propertyIndexStart + 2, propertyIndexEnd);


[groovy] 01/03: Eliminate duplicated code in AST transformations

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

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

commit fe569c14a6b72b5e066cbc83755c25dbc721ea03
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Apr 11 18:41:04 2020 +0800

    Eliminate duplicated code in AST transformations
    
    (cherry picked from commit 38f10257e3b7315b72d866b7c2d172a70d82b574)
---
 .../java/groovy/beans/BindableASTTransformation.java   | 17 +++--------------
 .../java/groovy/beans/VetoableASTTransformation.java   | 17 +++--------------
 .../org/codehaus/groovy/control/ErrorCollector.java    |  8 ++++++++
 .../groovy/transform/AbstractASTTransformation.java    |  8 +-------
 .../groovy/transform/AnnotationCollectorTransform.java |  6 +-----
 .../groovy/transform/CategoryASTTransformation.java    | 18 ++++--------------
 .../transform/stc/StaticTypeCheckingVisitor.java       |  7 +------
 7 files changed, 21 insertions(+), 60 deletions(-)

diff --git a/src/main/java/groovy/beans/BindableASTTransformation.java b/src/main/java/groovy/beans/BindableASTTransformation.java
index 60474f9..65f0062 100644
--- a/src/main/java/groovy/beans/BindableASTTransformation.java
+++ b/src/main/java/groovy/beans/BindableASTTransformation.java
@@ -34,8 +34,6 @@ import org.codehaus.groovy.ast.tools.PropertyNodeUtils;
 import org.codehaus.groovy.control.CompilePhase;
 import org.codehaus.groovy.control.SourceUnit;
 import org.codehaus.groovy.control.messages.SimpleMessage;
-import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
-import org.codehaus.groovy.syntax.SyntaxException;
 import org.codehaus.groovy.transform.ASTTransformation;
 import org.codehaus.groovy.transform.GroovyASTTransformation;
 import org.objectweb.asm.Opcodes;
@@ -115,10 +113,7 @@ public class BindableASTTransformation implements ASTTransformation, Opcodes {
         ClassNode declaringClass = parent.getDeclaringClass();
         if (parent instanceof FieldNode) {
             if ((((FieldNode) parent).getModifiers() & Opcodes.ACC_FINAL) != 0) {
-                source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                        new SyntaxException("@groovy.beans.Bindable cannot annotate a final property.",
-                                node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()),
-                        source));
+                source.getErrorCollector().addErrorAndContinue("@groovy.beans.Bindable cannot annotate a final property.", node, source);
             }
 
             if (VetoableASTTransformation.hasVetoableAnnotation(parent.getDeclaringClass())) {
@@ -137,10 +132,7 @@ public class BindableASTTransformation implements ASTTransformation, Opcodes {
             if (propertyNode.getName().equals(fieldName)) {
                 if (field.isStatic()) {
                     //noinspection ThrowableInstanceNeverThrown
-                    source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                            new SyntaxException("@groovy.beans.Bindable cannot annotate a static property.",
-                                    node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()),
-                            source));
+                    source.getErrorCollector().addErrorAndContinue("@groovy.beans.Bindable cannot annotate a static property.", node, source);
                 } else {
                     if (needsPropertyChangeSupport(declaringClass, source)) {
                         addPropertyChangeSupport(declaringClass);
@@ -151,10 +143,7 @@ public class BindableASTTransformation implements ASTTransformation, Opcodes {
             }
         }
         //noinspection ThrowableInstanceNeverThrown
-        source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                new SyntaxException("@groovy.beans.Bindable must be on a property, not a field.  Try removing the private, protected, or public modifier.",
-                        node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()),
-                source));
+        source.getErrorCollector().addErrorAndContinue("@groovy.beans.Bindable must be on a property, not a field.  Try removing the private, protected, or public modifier.", node, source);
     }
 
     private void addListenerToClass(SourceUnit source, ClassNode classNode) {
diff --git a/src/main/java/groovy/beans/VetoableASTTransformation.java b/src/main/java/groovy/beans/VetoableASTTransformation.java
index 315c014..5e35dff 100644
--- a/src/main/java/groovy/beans/VetoableASTTransformation.java
+++ b/src/main/java/groovy/beans/VetoableASTTransformation.java
@@ -34,8 +34,6 @@ import org.codehaus.groovy.ast.tools.PropertyNodeUtils;
 import org.codehaus.groovy.control.CompilePhase;
 import org.codehaus.groovy.control.SourceUnit;
 import org.codehaus.groovy.control.messages.SimpleMessage;
-import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
-import org.codehaus.groovy.syntax.SyntaxException;
 import org.codehaus.groovy.transform.GroovyASTTransformation;
 import org.objectweb.asm.Opcodes;
 
@@ -110,10 +108,7 @@ public class VetoableASTTransformation extends BindableASTTransformation {
             addListenerToClass(source, (ClassNode) nodes[1]);
         } else {
             if ((((FieldNode)nodes[1]).getModifiers() & Opcodes.ACC_FINAL) != 0) {
-                source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                        new SyntaxException("@groovy.beans.Vetoable cannot annotate a final property.",
-                                node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()),
-                        source));
+                source.getErrorCollector().addErrorAndContinue("@groovy.beans.Vetoable cannot annotate a final property.", node, source);
             }
 
             addListenerToProperty(source, node, (AnnotatedNode) nodes[1]);
@@ -131,10 +126,7 @@ public class VetoableASTTransformation extends BindableASTTransformation {
             if (propertyNode.getName().equals(fieldName)) {
                 if (field.isStatic()) {
                     //noinspection ThrowableInstanceNeverThrown
-                    source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                            new SyntaxException("@groovy.beans.Vetoable cannot annotate a static property.",
-                                    node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()),
-                            source));
+                    source.getErrorCollector().addErrorAndContinue("@groovy.beans.Vetoable cannot annotate a static property.", node, source);
                 } else {
                     createListenerSetter(source, bindable, declaringClass, propertyNode);
                 }
@@ -142,10 +134,7 @@ public class VetoableASTTransformation extends BindableASTTransformation {
             }
         }
         //noinspection ThrowableInstanceNeverThrown
-        source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                new SyntaxException("@groovy.beans.Vetoable must be on a property, not a field.  Try removing the private, protected, or public modifier.",
-                        node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()),
-                source));
+        source.getErrorCollector().addErrorAndContinue("@groovy.beans.Vetoable must be on a property, not a field.  Try removing the private, protected, or public modifier.", node, source);
     }
 
 
diff --git a/src/main/java/org/codehaus/groovy/control/ErrorCollector.java b/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
index 60fb05e..85bb723 100644
--- a/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
+++ b/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
@@ -18,6 +18,7 @@
  */
 package org.codehaus.groovy.control;
 
+import org.codehaus.groovy.ast.ASTNode;
 import org.codehaus.groovy.control.messages.ExceptionMessage;
 import org.codehaus.groovy.control.messages.LocatedMessage;
 import org.codehaus.groovy.control.messages.Message;
@@ -94,6 +95,13 @@ public class ErrorCollector implements Serializable {
         errors.add(message);
     }
 
+    public void addErrorAndContinue(String error, ASTNode node, SourceUnit source) {
+        addErrorAndContinue(new SyntaxErrorMessage(
+                new SyntaxException(error,
+                        node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()),
+                source));
+    }
+
     /**
      * Adds a non-fatal error to the message set, which may cause a failure if the error threshold is exceeded.
      * The message is not required to have a source line and column specified, but it is best practice to try
diff --git a/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java
index 84002f5..15ce131 100644
--- a/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java
@@ -38,9 +38,7 @@ import org.codehaus.groovy.ast.tools.BeanUtils;
 import org.codehaus.groovy.ast.tools.GeneralUtils;
 import org.codehaus.groovy.ast.tools.GenericsUtils;
 import org.codehaus.groovy.control.SourceUnit;
-import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
 import org.codehaus.groovy.runtime.StringGroovyMethods;
-import org.codehaus.groovy.syntax.SyntaxException;
 import org.objectweb.asm.Opcodes;
 
 import java.lang.annotation.Retention;
@@ -254,11 +252,7 @@ public abstract class AbstractASTTransformation implements Opcodes, ASTTransform
     }
 
     public void addError(String msg, ASTNode expr) {
-        sourceUnit.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                        new SyntaxException(msg + '\n', expr.getLineNumber(), expr.getColumnNumber(),
-                                expr.getLastLineNumber(), expr.getLastColumnNumber()),
-                        sourceUnit)
-        );
+        sourceUnit.getErrorCollector().addErrorAndContinue(msg + '\n', expr, sourceUnit);
     }
 
     protected boolean checkNotInterface(ClassNode cNode, String annotationName) {
diff --git a/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java b/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
index bf94211..c0e3e9b 100644
--- a/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
+++ b/src/main/java/org/codehaus/groovy/transform/AnnotationCollectorTransform.java
@@ -37,8 +37,6 @@ import org.codehaus.groovy.ast.expr.MapExpression;
 import org.codehaus.groovy.ast.stmt.ReturnStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
 import org.codehaus.groovy.control.SourceUnit;
-import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
-import org.codehaus.groovy.syntax.SyntaxException;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -196,9 +194,7 @@ public class AnnotationCollectorTransform {
      * @param source    the source unit for the error report
      */
     protected void addError(String message, ASTNode node, SourceUnit source) {
-        source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(new SyntaxException(
-                message,  node.getLineNumber(), node.getColumnNumber(), node.getLastLineNumber(), node.getLastColumnNumber()
-                ), source));
+        source.getErrorCollector().addErrorAndContinue(message, node, source);
     }
 
     private List<AnnotationNode> getTargetListFromValue(AnnotationNode collector, AnnotationNode aliasAnnotationUsage, SourceUnit source) {
diff --git a/src/main/java/org/codehaus/groovy/transform/CategoryASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/CategoryASTTransformation.java
index 443db581..511e2cb 100644
--- a/src/main/java/org/codehaus/groovy/transform/CategoryASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/CategoryASTTransformation.java
@@ -258,16 +258,9 @@ public class CategoryASTTransformation implements ASTTransformation, Opcodes {
     }
 
     private static void addUnsupportedError(ASTNode node, SourceUnit unit) {
-        unit.getErrorCollector().addErrorAndContinue(
-                new SyntaxErrorMessage(
-                        new SyntaxException("The @Category transformation does not support instance "+
-                                (node instanceof FieldNode?"fields":"properties")
-                                + " but found ["+getName(node)+"]",
-                                node.getLineNumber(),
-                                node.getColumnNumber()
-
-                        ), unit
-                ));
+        unit.getErrorCollector().addErrorAndContinue("The @Category transformation does not support instance "+
+                (node instanceof FieldNode?"fields":"properties")
+                + " but found ["+getName(node)+"]", node, unit);
     }
 
     private static String getName(ASTNode node) {
@@ -280,10 +273,7 @@ public class CategoryASTTransformation implements ASTTransformation, Opcodes {
         Expression value = annotation.getMember("value");
         if (!(value instanceof ClassExpression)) {
             //noinspection ThrowableInstanceNeverThrown
-            source.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                    new SyntaxException("@groovy.lang.Category must define 'value' which is the class to apply this category to",
-                            annotation.getLineNumber(), annotation.getColumnNumber(), annotation.getLastLineNumber(), annotation.getLastColumnNumber()),
-                    source));
+            source.getErrorCollector().addErrorAndContinue("@groovy.lang.Category must define 'value' which is the class to apply this category to", annotation, source);
             return null;
         } else {
             ClassExpression ce = (ClassExpression) value;
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 5380f21..fec7971 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -104,9 +104,7 @@ import org.codehaus.groovy.control.CompilationUnit;
 import org.codehaus.groovy.control.ErrorCollector;
 import org.codehaus.groovy.control.ResolveVisitor;
 import org.codehaus.groovy.control.SourceUnit;
-import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
 import org.codehaus.groovy.runtime.DefaultGroovyMethods;
-import org.codehaus.groovy.syntax.SyntaxException;
 import org.codehaus.groovy.syntax.Token;
 import org.codehaus.groovy.syntax.TokenUtil;
 import org.codehaus.groovy.transform.StaticTypesTransformation;
@@ -5426,10 +5424,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
     public void addError(final String msg, final ASTNode expr) {
         Long err = ((long) expr.getLineNumber()) << 16 + expr.getColumnNumber();
         if ((DEBUG_GENERATED_CODE && expr.getLineNumber() < 0) || !typeCheckingContext.reportedErrors.contains(err)) {
-            typeCheckingContext.getErrorCollector().addErrorAndContinue(new SyntaxErrorMessage(
-                    new SyntaxException(msg + '\n', expr.getLineNumber(), expr.getColumnNumber(), expr.getLastLineNumber(), expr.getLastColumnNumber()),
-                    getSourceUnit())
-            );
+            typeCheckingContext.getErrorCollector().addErrorAndContinue(msg + '\n', expr, getSourceUnit());
             typeCheckingContext.reportedErrors.add(err);
         }
     }


[groovy] 03/03: Trivial refactoring: Iteration can be replaced with bulk 'Collection.addAll' call

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

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

commit 1f612e176f6147ee3d717f1474f7bf93e7b8f6f9
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Apr 11 19:19:41 2020 +0800

    Trivial refactoring: Iteration can be replaced with bulk 'Collection.addAll' call
    
    (cherry picked from commit f1f88a303e86a97b2125ec8de8acce6c9b231bf9)
---
 src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java
index 62c5d0b..317d82f 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.ast.expr;
 import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -61,7 +62,7 @@ public class TupleExpression extends Expression implements Iterable<Expression>
 
     public TupleExpression(final Expression[] expressionArray) {
         this(expressionArray.length);
-        for (Expression e : expressionArray) expressions.add(e);
+        expressions.addAll(Arrays.asList(expressionArray));
     }
 
     public TupleExpression addExpression(final Expression expression) {