[1/3] groovy git commit: minor refactor

2017-09-29 Thread paulk
Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X faeca1600 -> d3baea9ac


minor refactor


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/dbf8e71d
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/dbf8e71d
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/dbf8e71d

Branch: refs/heads/GROOVY_2_6_X
Commit: dbf8e71ddc8fda325a936a4537ed0ee5570aba27
Parents: faeca16
Author: paulk 
Authored: Wed Sep 27 21:50:52 2017 +1000
Committer: paulk 
Committed: Fri Sep 29 22:44:06 2017 +1000

--
 .../stc/StaticTypeCheckingVisitor.java  | 63 ++--
 1 file changed, 33 insertions(+), 30 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/groovy/blob/dbf8e71d/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
--
diff --git 
a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java 
b/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index d5e4080..aec399c 100644
--- a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -112,7 +112,7 @@ import static 
org.codehaus.groovy.syntax.Types.ASSIGNMENT_OPERATOR;
 import static org.codehaus.groovy.syntax.Types.COMPARE_EQUAL;
 import static org.codehaus.groovy.syntax.Types.COMPARE_NOT_EQUAL;
 import static org.codehaus.groovy.syntax.Types.COMPARE_NOT_IN;
-import static org.codehaus.groovy.syntax.Types.COMPARE_NOT_INSTANCEOF;
+//import static org.codehaus.groovy.syntax.Types.COMPARE_NOT_INSTANCEOF;
 import static org.codehaus.groovy.syntax.Types.COMPARE_TO;
 import static org.codehaus.groovy.syntax.Types.DIVIDE;
 import static org.codehaus.groovy.syntax.Types.DIVIDE_EQUAL;
@@ -1973,40 +1973,43 @@ public class StaticTypeCheckingVisitor extends 
ClassCodeVisitorSupport {
 protected ClassNode[] getArgumentTypes(ArgumentListExpression args) {
 List arglist = args.getExpressions();
 ClassNode[] ret = new ClassNode[arglist.size()];
-int i = 0;
+for (int i = 0; i < arglist.size(); i++) {
+Expression exp = arglist.get(i);
+if (isNullConstant(exp)) {
+ret[i] = UNKNOWN_PARAMETER_TYPE;
+} else {
+ret[i] = getInferredTypeFromTempInfo(exp, getType(exp));
+}
+}
+return ret;
+}
+
+private ClassNode getInferredTypeFromTempInfo(Expression exp, ClassNode 
result) {
 Map> info = 
typeCheckingContext.temporaryIfBranchTypeInformation.empty() ? null : 
typeCheckingContext.temporaryIfBranchTypeInformation.peek();
-for (Expression exp : arglist) {
-if (isNullConstant(exp)) {
-ret[i] = UNKNOWN_PARAMETER_TYPE;
-} else {
-ret[i] = getType(exp);
-if (exp instanceof VariableExpression && info != null) {
-List classNodes = 
getTemporaryTypesForExpression(exp);
-if (classNodes != null && !classNodes.isEmpty()) {
-ArrayList arr = new 
ArrayList(classNodes.size() + 1);
-arr.add(ret[i]);
-arr.addAll(classNodes);
-// GROOVY-7333: filter out Object
-Iterator iterator = arr.iterator();
-while (iterator.hasNext()) {
-ClassNode next = iterator.next();
-if (ClassHelper.OBJECT_TYPE.equals(next)) {
-iterator.remove();
-}
-}
-if (arr.isEmpty()) {
-ret[i] = 
ClassHelper.OBJECT_TYPE.getPlainNodeReference();
-} else if (arr.size()==1) {
-ret[i] = arr.get(0);
-} else {
-ret[i] = new UnionTypeClassNode(arr.toArray(new 
ClassNode[arr.size()]));
-}
+if (exp instanceof VariableExpression && info != null) {
+List classNodes = getTemporaryTypesForExpression(exp);
+if (classNodes != null && !classNodes.isEmpty()) {
+ArrayList arr = new 
ArrayList(classNodes.size() + 1);
+if (result != null) arr.add(result);
+arr.addAll(classNodes);
+// GROOVY-7333: filter out Object
+Iterator iterator = arr.iterator();
+while (iterator.hasNext()) {
+ClassNode next = iterator.next();
+if (ClassHelper.OBJECT_TYPE.equals(next)) {
+iterator.r

[1/3] groovy git commit: minor refactor

2016-06-14 Thread paulk
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 
Authored: Tue Jun 7 21:46:11 2016 +1000
Committer: paulk 
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 
getDeclaredMethodMapsFromInterfaces(ClassNode classNode) {
+Map result = new HashMap();
+ClassNode[] interfaces = classNode.getInterfaces();
+for (ClassNode iface : interfaces) {
+result.putAll(iface.getDeclaredMethodsMap());
+}
+return result;
+}
+
+public static void addDeclaredMethodMapsFromSuperInterfaces(ClassNode cn, 
Map 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 allInterfaceMethods = new HashMap();
-ClassNode[] interfaces = classNode.getInterfaces();
-for (ClassNode iface : interfaces) {
-Map ifaceMethodsMap = iface.getDeclaredMethodsMap();
-abstractMethods.putAll(ifaceMethodsMap);
-allInterfaceMethods.putAll(ifaceMethodsMap);
-}
-
-collectSuperInterfaceMethods(classNode, allInterfaceMethods);
+Map abstractMethods = 
ClassNodeUtils.getDeclaredMethodMapsFromInterfaces(classNode);
+Map allInterfaceMethods = new HashMap(abstractMethods);
+ClassNodeUtils.addDeclaredMethodMapsFromSuperInterfaces(classNode, 
allInterfaceMethods);
 
 List declaredMethods = new 
ArrayList(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 allInterfaceMethods) {
-List cnInterfaces = Arrays.asList(cn.getInterfaces());
-