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 2016/06/14 13:16:57 UTC
[1/3] groovy git commit: minor refactor
Repository: groovy
Updated Branches:
refs/heads/GROOVY_2_4_X bb3daa2c0 -> d84193c2a
minor refactor
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/77f9b9ba
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/77f9b9ba
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/77f9b9ba
Branch: refs/heads/GROOVY_2_4_X
Commit: 77f9b9bac184f788f544f40585a796a0bdbef69e
Parents: 984173f
Author: paulk <pa...@asert.com.au>
Authored: Tue Jun 7 21:46:11 2016 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Tue Jun 14 23:15:57 2016 +1000
----------------------------------------------------------------------
.../groovy/ast/tools/ClassNodeUtils.java | 27 ++++++++++++++++++
.../org/codehaus/groovy/classgen/Verifier.java | 29 +++-----------------
2 files changed, 31 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/77f9b9ba/src/main/org/codehaus/groovy/ast/tools/ClassNodeUtils.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/ast/tools/ClassNodeUtils.java b/src/main/org/codehaus/groovy/ast/tools/ClassNodeUtils.java
index f3eec90..82cc190 100644
--- a/src/main/org/codehaus/groovy/ast/tools/ClassNodeUtils.java
+++ b/src/main/org/codehaus/groovy/ast/tools/ClassNodeUtils.java
@@ -20,9 +20,13 @@
package org.codehaus.groovy.ast.tools;
+import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.ClassNode;
import org.codehaus.groovy.ast.MethodNode;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
public class ClassNodeUtils {
@@ -38,4 +42,27 @@ public class ClassNodeUtils {
}
}
}
+
+ public static Map<String, MethodNode> getDeclaredMethodMapsFromInterfaces(ClassNode classNode) {
+ Map<String, MethodNode> result = new HashMap<String, MethodNode>();
+ ClassNode[] interfaces = classNode.getInterfaces();
+ for (ClassNode iface : interfaces) {
+ result.putAll(iface.getDeclaredMethodsMap());
+ }
+ return result;
+ }
+
+ public static void addDeclaredMethodMapsFromSuperInterfaces(ClassNode cn, Map<String, MethodNode> allInterfaceMethods) {
+ List cnInterfaces = Arrays.asList(cn.getInterfaces());
+ ClassNode sn = cn.getSuperClass();
+ while (sn != null && !sn.equals(ClassHelper.OBJECT_TYPE)) {
+ ClassNode[] interfaces = sn.getInterfaces();
+ for (ClassNode iface : interfaces) {
+ if (!cnInterfaces.contains(iface)) {
+ allInterfaceMethods.putAll(iface.getDeclaredMethodsMap());
+ }
+ }
+ sn = sn.getSuperClass();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/77f9b9ba/src/main/org/codehaus/groovy/classgen/Verifier.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/classgen/Verifier.java b/src/main/org/codehaus/groovy/classgen/Verifier.java
index 1e390a9..d65a755 100644
--- a/src/main/org/codehaus/groovy/classgen/Verifier.java
+++ b/src/main/org/codehaus/groovy/classgen/Verifier.java
@@ -37,6 +37,7 @@ import org.codehaus.groovy.ast.stmt.BlockStatement;
import org.codehaus.groovy.ast.stmt.ExpressionStatement;
import org.codehaus.groovy.ast.stmt.ReturnStatement;
import org.codehaus.groovy.ast.stmt.Statement;
+import org.codehaus.groovy.ast.tools.ClassNodeUtils;
import org.codehaus.groovy.ast.tools.GenericsUtils;
import org.codehaus.groovy.classgen.asm.BytecodeHelper;
import org.codehaus.groovy.classgen.asm.MopWriter;
@@ -1135,16 +1136,9 @@ public class Verifier implements GroovyClassVisitor, Opcodes {
Map genericsSpec = new HashMap();
// unimplemented abstract methods from interfaces
- Map abstractMethods = new HashMap();
- Map<String, MethodNode> allInterfaceMethods = new HashMap<String, MethodNode>();
- ClassNode[] interfaces = classNode.getInterfaces();
- for (ClassNode iface : interfaces) {
- Map ifaceMethodsMap = iface.getDeclaredMethodsMap();
- abstractMethods.putAll(ifaceMethodsMap);
- allInterfaceMethods.putAll(ifaceMethodsMap);
- }
-
- collectSuperInterfaceMethods(classNode, allInterfaceMethods);
+ Map<String, MethodNode> abstractMethods = ClassNodeUtils.getDeclaredMethodMapsFromInterfaces(classNode);
+ Map<String, MethodNode> allInterfaceMethods = new HashMap<String, MethodNode>(abstractMethods);
+ ClassNodeUtils.addDeclaredMethodMapsFromSuperInterfaces(classNode, allInterfaceMethods);
List<MethodNode> declaredMethods = new ArrayList<MethodNode>(classNode.getMethods());
// remove all static, private and package private methods
@@ -1183,21 +1177,6 @@ public class Verifier implements GroovyClassVisitor, Opcodes {
}
}
- private static void collectSuperInterfaceMethods(ClassNode cn, Map<String, MethodNode> allInterfaceMethods) {
- List cnInterfaces = Arrays.asList(cn.getInterfaces());
- ClassNode sn = cn.getSuperClass();
- while (sn != null && !sn.equals(ClassHelper.OBJECT_TYPE)) {
- ClassNode[] interfaces = sn.getInterfaces();
- for (ClassNode iface : interfaces) {
- if (!cnInterfaces.contains(iface)) {
- Map<String, MethodNode> ifaceMethodsMap = iface.getDeclaredMethodsMap();
- allInterfaceMethods.putAll(ifaceMethodsMap);
- }
- }
- sn = sn.getSuperClass();
- }
- }
-
private void addCovariantMethods(ClassNode classNode, List declaredMethods, Map abstractMethods, Map methodsToAdd, Map oldGenericsSpec) {
ClassNode sn = classNode.getUnresolvedSuperClass(false);
[2/3] groovy git commit: GROOVY-7855: NullPointerException in
GenericsTypeMatcher
Posted by pa...@apache.org.
GROOVY-7855: NullPointerException in GenericsTypeMatcher
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/cad0a650
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/cad0a650
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/cad0a650
Branch: refs/heads/GROOVY_2_4_X
Commit: cad0a650feaf62152e1b90c04daab1147c5f471b
Parents: 77f9b9b
Author: paulk <pa...@asert.com.au>
Authored: Tue Jun 14 23:14:31 2016 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Tue Jun 14 23:16:06 2016 +1000
----------------------------------------------------------------------
src/main/org/codehaus/groovy/ast/GenericsType.java | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/cad0a650/src/main/org/codehaus/groovy/ast/GenericsType.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/ast/GenericsType.java b/src/main/org/codehaus/groovy/ast/GenericsType.java
index 51e10c5..3494b33 100644
--- a/src/main/org/codehaus/groovy/ast/GenericsType.java
+++ b/src/main/org/codehaus/groovy/ast/GenericsType.java
@@ -441,17 +441,15 @@ public class GenericsType extends ASTNode {
gt = classNodePlaceholders.get(gt.getName());
}
}
- match = match &&
- (implementsInterfaceOrIsSubclassOf(classNodeType.getType(), gt.getType())
- || classNodeType.isCompatibleWith(gt.getType())); // workaround for GROOVY-6095
+ match = implementsInterfaceOrIsSubclassOf(classNodeType.getType(), gt.getType())
+ || classNodeType.isCompatibleWith(gt.getType()); // workaround for GROOVY-6095
if (!match) break;
}
}
return match;
- } else {
+ } else if (classNodePlaceholders.containsKey(name)) {
redirectBoundType = classNodePlaceholders.get(name);
}
-
}
}
match = redirectBoundType.isCompatibleWith(classNodeType.getType());
[3/3] groovy git commit: Merge branch 'GROOVY_2_4_X' of
http://git-wip-us.apache.org/repos/asf/groovy into GROOVY_2_4_X
Posted by pa...@apache.org.
Merge branch 'GROOVY_2_4_X' of http://git-wip-us.apache.org/repos/asf/groovy into GROOVY_2_4_X
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/d84193c2
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/d84193c2
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/d84193c2
Branch: refs/heads/GROOVY_2_4_X
Commit: d84193c2a8e47bdd8de47868de167871ff034c7b
Parents: cad0a65 bb3daa2
Author: paulk <pa...@asert.com.au>
Authored: Tue Jun 14 23:16:37 2016 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Tue Jun 14 23:16:37 2016 +1000
----------------------------------------------------------------------
.../org/codehaus/groovy/classgen/Verifier.java | 2 +-
.../m12n/StandardPropertiesModuleFactory.java | 2 +-
src/test/groovy/OverrideTest.groovy | 42 ++++++++++++++++++++
3 files changed, 44 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/d84193c2/src/main/org/codehaus/groovy/classgen/Verifier.java
----------------------------------------------------------------------