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/04/06 06:15:00 UTC

[2/3] groovy git commit: Fix "Minor refactoring: remove duplicated code of `ResolveVisitor`"

Fix "Minor refactoring: remove duplicated code of `ResolveVisitor`"

(cherry picked from commit 0c7c6b1)


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

Branch: refs/heads/GROOVY_2_6_X
Commit: 0b30e808120f9d3eea79f1886fc24198d49bbf53
Parents: 84930c1
Author: danielsun1106 <re...@hotmail.com>
Authored: Fri Apr 6 13:09:57 2018 +0800
Committer: danielsun1106 <re...@hotmail.com>
Committed: Fri Apr 6 14:14:40 2018 +0800

----------------------------------------------------------------------
 .../codehaus/groovy/control/ResolveVisitor.java | 25 +++++++++++++-------
 1 file changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/0b30e808/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 2f82009..653e11c 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -18,6 +18,7 @@
  */
 package org.codehaus.groovy.control;
 
+import groovy.lang.Tuple2;
 import org.codehaus.groovy.GroovyBugError;
 import org.codehaus.groovy.ast.ASTNode;
 import org.codehaus.groovy.ast.AnnotatedNode;
@@ -790,8 +791,10 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer {
                     return null;
                 }
                 String varName = ve.getName();
-                name = getClassName(doInitialClassTest, name, varName);
-                if (name == null) return null;
+                Tuple2<StringBuilder, Boolean> classNameInfo = makeClassName(doInitialClassTest, name, varName);
+                name = classNameInfo.getFirst();
+                doInitialClassTest = classNameInfo.getSecond();
+
                 break;
             }
             // anything other than PropertyExpressions or
@@ -805,7 +808,9 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer {
                 if (propertyPart == null || propertyPart.equals("class")) {
                     return null;
                 }
-                name = getClassName(doInitialClassTest, name, propertyPart);
+                Tuple2<StringBuilder, Boolean> classNameInfo = makeClassName(doInitialClassTest, name, propertyPart);
+                name = classNameInfo.getFirst();
+                doInitialClassTest = classNameInfo.getSecond();
             }
         }
 
@@ -814,7 +819,7 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer {
         return name.toString();
     }
 
-    private static StringBuilder getClassName(boolean doInitialClassTest, StringBuilder name, String varName) {
+    private static Tuple2<StringBuilder, Boolean> makeClassName(boolean doInitialClassTest, StringBuilder name, String varName) {
         if (doInitialClassTest) {
             // we are at the first name part. This is the right most part.
             // If this part is in lower case, then we do not need a class
@@ -822,13 +827,17 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer {
             // by a different method call to this method, so foo.Bar.bar
             // can still be resolved to the class foo.Bar and the static
             // field bar.
-            if (!testVanillaNameForClass(varName)) return null;
-            doInitialClassTest = false;
-            name = new StringBuilder(varName);
+            if (!testVanillaNameForClass(varName)) {
+                name = null;
+            } else {
+                doInitialClassTest = false;
+                name = new StringBuilder(varName);
+            }
         } else {
             name.insert(0, varName + ".");
         }
-        return name;
+
+        return new Tuple2<StringBuilder, Boolean>(name, doInitialClassTest);
     }
 
     // iterate from the inner most to the outer and check for classes