This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits 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 47c3f290af Trivial refactor: Extract nested-class redirect check from
a Predicate lambda
47c3f290af is described below
commit 47c3f290af4eeb5d6da8e2bfb998ca7b276ed533
Author: Daniel Sun <[email protected]>
AuthorDate: Mon Sep 7 01:41:13 2026 +0900
Trivial refactor: Extract nested-class redirect check from a Predicate
lambda
Replace the per-call Predicate in ResolveVisitor.setRedirect with a
named helper so the nested-class lookup is not allocated on every
redirect attempt.
---
.../codehaus/groovy/control/ResolveVisitor.java | 31 +++++++++++-----------
1 file changed, 15 insertions(+), 16 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 98772ad23d..7190d4d93c 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -82,7 +82,6 @@ import java.util.ListIterator;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.function.Predicate;
import static groovy.lang.Tuple.tuple;
import static
org.apache.groovy.ast.tools.ExpressionUtils.transformInlineConstants;
@@ -620,20 +619,7 @@ public class ResolveVisitor extends
ClassCodeExpressionTransformer {
}
private boolean setRedirect(final ClassNode type, final ClassNode
classToCheck) {
- String typeName = type.getName();
-
- Predicate<ClassNode> resolver = (ClassNode maybeOuter) -> {
- if (!typeName.equals(maybeOuter.getName())) {
- ClassNode maybeNested = new ConstructedNestedClass(maybeOuter,
typeName);
- if (resolveFromCompileUnit(maybeNested) ||
resolveToOuter(maybeNested)) {
- type.setRedirect(maybeNested);
- return true;
- }
- }
- return false;
- };
-
- if (resolver.test(classToCheck)) {
+ if (tryRedirectNested(type, classToCheck)) {
if (currentClass != classToCheck &&
!currentClass.getOuterClasses().contains(classToCheck) &&
!isVisibleNestedClass(type.redirect(), currentClass)) {
type.setRedirect(null);
} else {
@@ -642,7 +628,7 @@ public class ResolveVisitor extends
ClassCodeExpressionTransformer {
}
if (classToCheck.getInterfaces().length > 0) {
for (ClassNode face : classToCheck.getAllInterfaces()) {
- if (resolver.test(face)) {
+ if (tryRedirectNested(type, face)) {
return true;
}
}
@@ -650,6 +636,19 @@ public class ResolveVisitor extends
ClassCodeExpressionTransformer {
return false;
}
+ private boolean tryRedirectNested(final ClassNode type, final ClassNode
maybeOuter) {
+ final String typeName = type.getName();
+
+ if (!typeName.equals(maybeOuter.getName())) {
+ ClassNode maybeNested = new ConstructedNestedClass(maybeOuter,
typeName);
+ if (resolveFromCompileUnit(maybeNested) ||
resolveToOuter(maybeNested)) {
+ type.setRedirect(maybeNested);
+ return true;
+ }
+ }
+ return false;
+ }
+
private static String replaceLastPointWithDollar(final String name) {
int lastPointIndex = name.lastIndexOf('.');
char[] chars = name.toCharArray();