Skip to content

Commit af7f9a3

Browse files
committed
Eliminate the tail recursion for better performance
1 parent 8c200ec commit af7f9a3

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/main/java/org/codehaus/groovy/classgen/VariableScopeVisitor.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,17 @@ private void declare(final Variable variable, final ASTNode context) {
167167
}
168168

169169
private Variable findClassMember(final ClassNode cn, final String name) {
170+
for (ClassNode classNode = cn; null != classNode; classNode = classNode.getSuperClass()) {
171+
Variable variable = doFindClassMember(classNode, name);
172+
if (null != variable) {
173+
return variable;
174+
}
175+
}
176+
177+
return null;
178+
}
179+
180+
private Variable doFindClassMember(final ClassNode cn, final String name) {
170181
if (cn == null) return null;
171182

172183
if (cn.isScript()) {
@@ -198,7 +209,7 @@ private Variable findClassMember(final ClassNode cn, final String name) {
198209
if (fn != null) return fn;
199210
}
200211

201-
return findClassMember(cn.getSuperClass(), name);
212+
return null;
202213
}
203214

204215
private Variable findVariableDeclaration(final String name) {

0 commit comments

Comments
 (0)