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