This is an automated email from the ASF dual-hosted git repository.

jonnybot pushed a commit to branch 
GROOVY-11719-regression-semantic-analysis-exception
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 4eb5a76804af1a75f8640058988ead1351a037e6
Author: Jonny Carter <jcar...@adaptavist.com>
AuthorDate: Tue Jul 22 09:04:16 2025 -0500

    Revert "GROOVY-11711: restore outer class generics after inner class visit"
    
    This reverts commit 33064484cc043bfb7c2ad75ee8fccbcbc6329b76.
---
 .../org/codehaus/groovy/control/ResolveVisitor.java   |  9 +--------
 src/test/groovy/gls/innerClass/InnerClassTest.groovy  | 19 -------------------
 2 files changed, 1 insertion(+), 27 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java 
b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
index 383c0bffa7..1af01a97d9 100644
--- a/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/ResolveVisitor.java
@@ -1272,14 +1272,8 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
 
         //
 
-        Map<GenericsTypeName, GenericsType> outerNames = null;
-        if (node instanceof InnerClassNode) {
-            outerNames = genericParameterNames;
+        if (!(node instanceof InnerClassNode) || 
Modifier.isStatic(node.getModifiers())) {
             genericParameterNames = new HashMap<>();
-            if (!Modifier.isStatic(node.getModifiers()))
-                genericParameterNames.putAll(outerNames); // outer names 
visible
-        } else {
-            genericParameterNames.clear(); // outer class: new generic 
namespace
         }
         resolveGenericsHeader(node.getGenericsTypes());
         switch (phase) { // GROOVY-9866, GROOVY-10466
@@ -1322,7 +1316,6 @@ public class ResolveVisitor extends 
ClassCodeExpressionTransformer {
             visitObjectInitializerStatements(node);
             visitAnnotations(node); // GROOVY-10750, GROOVY-11206
         }
-        if (outerNames != null) genericParameterNames = outerNames;
         currentClass = oldNode;
     }
 
diff --git a/src/test/groovy/gls/innerClass/InnerClassTest.groovy 
b/src/test/groovy/gls/innerClass/InnerClassTest.groovy
index 4378c49efa..148a562bea 100644
--- a/src/test/groovy/gls/innerClass/InnerClassTest.groovy
+++ b/src/test/groovy/gls/innerClass/InnerClassTest.groovy
@@ -1265,25 +1265,6 @@ final class InnerClassTest {
         assert err =~ /No enclosing instance passed in constructor call of a 
non-static inner class/
     }
 
-    // GROOVY-11711
-    @Test
-    void testUsageOfOuterType6() {
-        assertScript '''
-            class Foo<T> {
-                static class Bar {
-                }
-                /*non-static*/ class Baz
-                    implements java.util.concurrent.Callable<T> {
-                    T call() {
-                    }
-                }
-            }
-            def foo = new Foo<Short>()
-            def baz = new Foo.Baz(foo)
-            assert baz.call() == null
-        '''
-    }
-
     @Test
     void testClassOutputOrdering() {
         // this does actually not do much, but before this

Reply via email to