You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/07/17 15:47:45 UTC

[groovy] branch GROOVY_3_0_X updated: sync with 4_0_X

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

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


The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
     new 2f21b4278b sync with 4_0_X
2f21b4278b is described below

commit 2f21b4278b2c518699adb072221b4844b3e3c644
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sun Jul 17 10:30:16 2022 -0500

    sync with 4_0_X
---
 .../java/org/codehaus/groovy/ast/ClassHelper.java    |  1 +
 src/main/java/org/codehaus/groovy/ast/ClassNode.java | 20 +++++++-------------
 .../java/org/codehaus/groovy/ast/MethodNode.java     |  4 +++-
 .../groovy/ast/expr/DeclarationExpression.java       |  8 ++++----
 4 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index 6045883f9a..2dda09c70c 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -108,6 +108,7 @@ public class ClassHelper {
             STRING_TYPE = makeCached(String.class),
             SCRIPT_TYPE = makeCached(Script.class),
             BINDING_TYPE = makeCached(Binding.class),
+            THROWABLE_TYPE = makeCached(Throwable.class),
 
             boolean_TYPE = makeCached(boolean.class),
             char_TYPE = makeCached(char.class),
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassNode.java b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
index 4e09342c72..ef30d3065e 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
@@ -662,21 +662,15 @@ public class ClassNode extends AnnotatedNode implements Opcodes {
     }
 
     public void addInterface(ClassNode type) {
-        // let's check if it already implements an interface
-        boolean skip = false;
         ClassNode[] interfaces = getInterfaces();
         for (ClassNode face : interfaces) {
-            if (type.equals(face)) {
-                skip = true;
-                break;
-            }
-        }
-        if (!skip) {
-            ClassNode[] newInterfaces = new ClassNode[interfaces.length + 1];
-            System.arraycopy(interfaces, 0, newInterfaces, 0, interfaces.length);
-            newInterfaces[interfaces.length] = type;
-            redirect().interfaces = newInterfaces;
+            if (face.equals(type)) return;
         }
+        final int n = interfaces.length;
+
+        System.arraycopy(interfaces, 0, interfaces = new ClassNode[n + 1], 0, n);
+        interfaces[n] = type; // append interface
+        setInterfaces(interfaces);
     }
 
     public boolean equals(Object that) {
@@ -982,7 +976,7 @@ public class ClassNode extends AnnotatedNode implements Opcodes {
      * classes, not interfaces.
      */
     public boolean declaresInterface(ClassNode classNode) {
-        ClassNode[] interfaces = redirect().getInterfaces();
+        ClassNode[] interfaces = getInterfaces();
         for (ClassNode face : interfaces) {
             if (face.equals(classNode)) {
                 return true;
diff --git a/src/main/java/org/codehaus/groovy/ast/MethodNode.java b/src/main/java/org/codehaus/groovy/ast/MethodNode.java
index f2214e40ce..4f1bb5bbc8 100644
--- a/src/main/java/org/codehaus/groovy/ast/MethodNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/MethodNode.java
@@ -18,6 +18,7 @@
  */
 package org.codehaus.groovy.ast;
 
+import org.apache.groovy.ast.tools.ClassNodeUtils;
 import org.apache.groovy.ast.tools.MethodNodeUtils;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
@@ -287,6 +288,7 @@ public class MethodNode extends AnnotatedNode implements Opcodes {
 
     @Override
     public String toString() {
-        return super.toString() + "[" + getDeclaringClass().getName() + "#" + getTypeDescriptor() + "]";
+        ClassNode declaringClass = getDeclaringClass();
+        return super.toString() + "[" + getTypeDescriptor() + (declaringClass == null ? "" : " from " + ClassNodeUtils.formatTypeName(declaringClass)) + "]";
     }
 }
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/DeclarationExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/DeclarationExpression.java
index 074a0b4fa0..154c7fcea3 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/DeclarationExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/DeclarationExpression.java
@@ -54,8 +54,8 @@ public class DeclarationExpression extends BinaryExpression {
      * @param right
      *      the right hand side of a declaration
      */
-    public DeclarationExpression(VariableExpression left, Token operation, Expression right) {
-        super(left,operation,right);
+    public DeclarationExpression(final VariableExpression left, final Token operation, final Expression right) {
+        this((Expression) left, operation, right);
     }
 
     /**
@@ -68,8 +68,8 @@ public class DeclarationExpression extends BinaryExpression {
      * @param right
      *       the right hand side of a declaration
      */
-    public DeclarationExpression(Expression left, Token operation, Expression right) {
-        super(left,operation,right);
+    public DeclarationExpression(final Expression left, final Token operation, final Expression right) {
+        super(left, Token.newSymbol("=", operation.getStartLine(), operation.getStartColumn()), right);
         check(left);
     }