This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new af7f9a3 Eliminate the tail recursion for better performance
af7f9a3 is described below
commit af7f9a3c6d1fd321b82a164d79a255fce2a9c964
Author: Daniel Sun <[email protected]>
AuthorDate: Fri Jun 26 18:42:44 2020 +0800
Eliminate the tail recursion for better performance
---
.../org/codehaus/groovy/classgen/VariableScopeVisitor.java | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git
a/src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java
b/src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java
index 4ff9a18..536630a 100644
--- a/src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java
@@ -167,6 +167,17 @@ public class VariableScopeVisitor extends
ClassCodeVisitorSupport {
}
private Variable findClassMember(final ClassNode cn, final String name) {
+ for (ClassNode classNode = cn; null != classNode; classNode =
classNode.getSuperClass()) {
+ Variable variable = doFindClassMember(classNode, name);
+ if (null != variable) {
+ return variable;
+ }
+ }
+
+ return null;
+ }
+
+ private Variable doFindClassMember(final ClassNode cn, final String name) {
if (cn == null) return null;
if (cn.isScript()) {
@@ -198,7 +209,7 @@ public class VariableScopeVisitor extends
ClassCodeVisitorSupport {
if (fn != null) return fn;
}
- return findClassMember(cn.getSuperClass(), name);
+ return null;
}
private Variable findVariableDeclaration(final String name) {