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 2021/06/01 14:10:32 UTC
[groovy] branch master updated: refactor interface collect methods
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 cfd5ef0 refactor interface collect methods
cfd5ef0 is described below
commit cfd5ef09e43d3f29fb3c2d5468858c15d0cf165c
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Tue Jun 1 09:10:18 2021 -0500
refactor interface collect methods
---
.../codehaus/groovy/ast/tools/GeneralUtils.java | 14 +++------
.../transform/stc/StaticTypeCheckingSupport.java | 35 +++++++---------------
.../transform/stc/StaticTypeCheckingVisitor.java | 2 +-
3 files changed, 15 insertions(+), 36 deletions(-)
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 6585abc..e09e281 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java
@@ -451,17 +451,11 @@ public class GeneralUtils {
}
public static Set<ClassNode> getInterfacesAndSuperInterfaces(final ClassNode type) {
- Set<ClassNode> res = new LinkedHashSet<>();
- if (type.isInterface()) {
- res.add(type);
- return res;
+ Set<ClassNode> result = new LinkedHashSet<>();
+ for (ClassNode next = type; next != null; next = next.getSuperClass()) {
+ result.addAll(next.getAllInterfaces());
}
- ClassNode next = type;
- while (next != null) {
- res.addAll(next.getAllInterfaces());
- next = next.getSuperClass();
- }
- return res;
+ return result;
}
public static List<FieldNode> getSuperNonPropertyFields(final ClassNode cNode) {
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index 8b079f9..1708cf3 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -101,22 +101,22 @@ import static org.codehaus.groovy.ast.ClassHelper.float_TYPE;
import static org.codehaus.groovy.ast.ClassHelper.getUnwrapper;
import static org.codehaus.groovy.ast.ClassHelper.getWrapper;
import static org.codehaus.groovy.ast.ClassHelper.int_TYPE;
-import static org.codehaus.groovy.ast.ClassHelper.isNumberType;
-import static org.codehaus.groovy.ast.ClassHelper.isPrimitiveType;
-import static org.codehaus.groovy.ast.ClassHelper.isSAMType;
-import static org.codehaus.groovy.ast.ClassHelper.long_TYPE;
-import static org.codehaus.groovy.ast.ClassHelper.make;
-import static org.codehaus.groovy.ast.ClassHelper.makeWithoutCaching;
-import static org.codehaus.groovy.ast.ClassHelper.short_TYPE;
-import static org.codehaus.groovy.ast.ClassHelper.void_WRAPPER_TYPE;
import static org.codehaus.groovy.ast.ClassHelper.isBigDecimalType;
import static org.codehaus.groovy.ast.ClassHelper.isClassType;
import static org.codehaus.groovy.ast.ClassHelper.isGStringType;
import static org.codehaus.groovy.ast.ClassHelper.isGroovyObjectType;
+import static org.codehaus.groovy.ast.ClassHelper.isNumberType;
import static org.codehaus.groovy.ast.ClassHelper.isObjectType;
import static org.codehaus.groovy.ast.ClassHelper.isPrimitiveBoolean;
+import static org.codehaus.groovy.ast.ClassHelper.isPrimitiveType;
+import static org.codehaus.groovy.ast.ClassHelper.isSAMType;
import static org.codehaus.groovy.ast.ClassHelper.isStringType;
import static org.codehaus.groovy.ast.ClassHelper.isWrapperBoolean;
+import static org.codehaus.groovy.ast.ClassHelper.long_TYPE;
+import static org.codehaus.groovy.ast.ClassHelper.make;
+import static org.codehaus.groovy.ast.ClassHelper.makeWithoutCaching;
+import static org.codehaus.groovy.ast.ClassHelper.short_TYPE;
+import static org.codehaus.groovy.ast.ClassHelper.void_WRAPPER_TYPE;
import static org.codehaus.groovy.ast.tools.WideningCategories.isBigIntCategory;
import static org.codehaus.groovy.ast.tools.WideningCategories.isFloatingCategory;
import static org.codehaus.groovy.ast.tools.WideningCategories.isNumberCategory;
@@ -2174,24 +2174,9 @@ public abstract class StaticTypeCheckingSupport {
* @param node a class for which we want to retrieve all interfaces
* @return a set of interfaces implemented by this class node
*/
+ @Deprecated
public static Set<ClassNode> collectAllInterfaces(final ClassNode node) {
- Set<ClassNode> result = new HashSet<>();
- collectAllInterfaces(node, result);
- return result;
- }
-
- /**
- * Collects all interfaces of a class node, including those defined by the
- * super class.
- *
- * @param node a class for which we want to retrieve all interfaces
- * @param out the set where to collect interfaces
- */
- private static void collectAllInterfaces(final ClassNode node, final Set<ClassNode> out) {
- if (node == null) return;
- Set<ClassNode> allInterfaces = node.getAllInterfaces();
- out.addAll(allInterfaces);
- collectAllInterfaces(node.getSuperClass(), out);
+ return GeneralUtils.getInterfacesAndSuperInterfaces(node);
}
/**
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 5ac3efe..cf64542 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -4965,7 +4965,7 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
return null;
}
- protected void collectAllInterfaceMethodsByName(final ClassNode type, final String name, final List<MethodNode> methods) {
+ private static void collectAllInterfaceMethodsByName(final ClassNode type, final String name, final List<MethodNode> methods) {
Set<ClassNode> done = new LinkedHashSet<>();
for (ClassNode next = type; next != null; next = next.getSuperClass()) {
done.add(next);