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();

Reply via email to