You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2018/02/28 03:35:22 UTC

groovy git commit: Minor refactoring: remove duplicated code of `ResolveVisitor`

Repository: groovy
Updated Branches:
  refs/heads/master 1937901a6 -> 5030e401a


Minor refactoring: remove duplicated code of `ResolveVisitor`


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

Branch: refs/heads/master
Commit: 5030e401a141165dd60a603b62dd0351b2f15f3f
Parents: 1937901
Author: sunlan <su...@apache.org>
Authored: Wed Feb 28 11:35:16 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Wed Feb 28 11:35:16 2018 +0800

----------------------------------------------------------------------
 .../codehaus/groovy/control/ResolveVisitor.java | 47 ++++++++------------
 1 file changed, 19 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/5030e401/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 922c528..a06ad99 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -367,28 +367,14 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer {
         // name in X.
         // GROOVY-4043: Do this check up the hierarchy, if needed
         Map<String, ClassNode> hierClasses = new LinkedHashMap<String, ClassNode>();
-        ClassNode val;
-        for(ClassNode classToCheck = currentClass; classToCheck != ClassHelper.OBJECT_TYPE; 
+        for(ClassNode classToCheck = currentClass; classToCheck != ClassHelper.OBJECT_TYPE;
             classToCheck = classToCheck.getSuperClass()) {
             if(classToCheck == null || hierClasses.containsKey(classToCheck.getName())) break;
             hierClasses.put(classToCheck.getName(), classToCheck);
         }
 
         for (ClassNode classToCheck : hierClasses.values()) {
-            val = new ConstructedNestedClass(classToCheck,type.getName());
-            if (resolveFromCompileUnit(val)) {
-                type.setRedirect(val);
-                return true;
-            }
-            // also check interfaces in case we have interfaces with nested classes
-            for (ClassNode next : classToCheck.getAllInterfaces()) {
-                if (type.getName().contains(next.getName())) continue;
-                val = new ConstructedNestedClass(next,type.getName());
-                if (resolve(val, false, false, false)) {
-                    type.setRedirect(val);
-                    return true;
-                }
-            }
+            if (setRedirect(type, classToCheck)) return true;
         }
 
         // another case we want to check here is if we are in a
@@ -416,22 +402,27 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer {
         }
         // most outer class is now element 0
         for (ClassNode testNode : outerClasses) {
-            val = new ConstructedNestedClass(testNode,type.getName());
-            if (resolveFromCompileUnit(val)) {
+            if (setRedirect(type, testNode)) return true;
+        }
+
+        return false;
+    }
+
+    private boolean setRedirect(ClassNode type, ClassNode classToCheck) {
+        ClassNode val = new ConstructedNestedClass(classToCheck, type.getName());
+        if (resolveFromCompileUnit(val)) {
+            type.setRedirect(val);
+            return true;
+        }
+        // also check interfaces in case we have interfaces with nested classes
+        for (ClassNode next : classToCheck.getAllInterfaces()) {
+            if (type.getName().contains(next.getName())) continue;
+            val = new ConstructedNestedClass(next, type.getName());
+            if (resolve(val, false, false, false)) {
                 type.setRedirect(val);
                 return true;
             }
-            // also check interfaces in case we have interfaces with nested classes
-            for (ClassNode next : testNode.getAllInterfaces()) {
-                if (type.getName().contains(next.getName())) continue;
-                val = new ConstructedNestedClass(next,type.getName());
-                if (resolve(val, false, false, false)) {
-                    type.setRedirect(val);
-                    return true;
-                }
-            }
         }
-
         return false;
     }