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 04:55:23 UTC

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

Repository: groovy
Updated Branches:
  refs/heads/master 742770d04 -> 24114e01f


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/24114e01
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/24114e01
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/24114e01

Branch: refs/heads/master
Commit: 24114e01f8a1fc44b776c9a64c2df50ebc8f7fe9
Parents: 742770d
Author: danielsun1106 <re...@hotmail.com>
Authored: Fri Apr 6 12:54:59 2018 +0800
Committer: danielsun1106 <re...@hotmail.com>
Committed: Fri Apr 6 12:54:59 2018 +0800

----------------------------------------------------------------------
 .../codehaus/groovy/control/ResolveVisitor.java | 50 +++++++++-----------
 1 file changed, 23 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/24114e01/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 43a1dc1..2f82009 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -790,19 +790,8 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer {
                     return null;
                 }
                 String varName = ve.getName();
-                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
-                    // check. other parts of the property expression will be tested
-                    // 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);
-                } else {
-                    name.insert(0, varName + ".");
-                }
+                name = getClassName(doInitialClassTest, name, varName);
+                if (name == null) return null;
                 break;
             }
             // anything other than PropertyExpressions or
@@ -816,25 +805,32 @@ public class ResolveVisitor extends ClassCodeExpressionTransformer {
                 if (propertyPart == null || propertyPart.equals("class")) {
                     return null;
                 }
-                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
-                    // check. other parts of the property expression will be tested
-                    // 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(propertyPart)) return null;
-                    doInitialClassTest= false;
-                    name = new StringBuilder(propertyPart);
-                } else {
-                    name.insert(0, propertyPart + ".");
-                }
+                name = getClassName(doInitialClassTest, name, propertyPart);
             }
         }
-        if (name.length() == 0) return null;
+
+        if (null == name || name.length() == 0) return null;
+
         return name.toString();
     }
 
+    private static StringBuilder getClassName(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
+            // check. other parts of the property expression will be tested
+            // 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);
+        } else {
+            name.insert(0, varName + ".");
+        }
+        return name;
+    }
+
     // iterate from the inner most to the outer and check for classes
     // this check will ignore a .class property, for Example Integer.class will be
     // a PropertyExpression with the ClassExpression of Integer as objectExpression