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/03/21 22:33:55 UTC

[groovy] branch master updated: partial rollback

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 6b0c320  partial rollback
6b0c320 is described below

commit 6b0c3205a45bf155cd08b77da0848f5cfcfb74c3
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Mon Mar 21 17:18:24 2022 -0500

    partial rollback
---
 src/main/java/org/codehaus/groovy/ast/ClassNode.java      | 15 +++++++++------
 .../org/codehaus/groovy/classgen/AsmClassGenerator.java   |  2 +-
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/ast/ClassNode.java b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
index 0d2903e..a28d219 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
@@ -36,7 +36,6 @@ import org.codehaus.groovy.vmplugin.VMPluginFactory;
 
 import java.lang.reflect.Array;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.EnumMap;
 import java.util.Iterator;
@@ -696,13 +695,17 @@ public class ClassNode extends AnnotatedNode {
         return node;
     }
 
-    public void addInterface(ClassNode type) {
+    public void addInterface(final ClassNode type) {
+        assert type != null && type.isInterface();
         ClassNode[] interfaces = getInterfaces();
-        if (!Arrays.asList(interfaces).contains(type)) {
-            interfaces = Arrays.copyOf(interfaces, interfaces.length + 1);
-            interfaces[interfaces.length - 1] = type;
-            setInterfaces(interfaces);
+        for (ClassNode face : interfaces) {
+            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);
     }
 
     @Override
diff --git a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
index f8ea12e..7cdfadc 100644
--- a/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/AsmClassGenerator.java
@@ -1163,7 +1163,7 @@ public class AsmClassGenerator extends ClassGenerator {
     }
 
     private static boolean implementsGroovyObject(final ClassNode cn) {
-        return cn.isDerivedFromGroovyObject() || (!cn.isInterface() && cn.getCompileUnit() != null);
+        return cn.isDerivedFromGroovyObject() /*|| (!cn.isInterface() && cn.getCompileUnit() != null)*/;
     }
 
     @Override