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;
}