You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/02/01 17:55:49 UTC
[groovy] 06/11: GROOVY-10141: retain parse order of anon. inner types in module classes
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY_2_5_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit e2437f6157360c6b12ab12e4ffca6fe0f183e6b6
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Wed Jun 16 15:14:02 2021 -0500
GROOVY-10141: retain parse order of anon. inner types in module classes
- InnerClassVisitor checks this$0 which isn't set up if C$1$1 before C$1
Conflicts:
src/test/gls/innerClass/InnerClassTest.groovy
---
.../org/codehaus/groovy/antlr/AntlrParserPlugin.java | 2 +-
src/test/gls/innerClass/InnerClassTest.groovy | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java b/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java
index 94032a6..cff33b8 100644
--- a/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java
+++ b/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java
@@ -617,13 +617,13 @@ public class AntlrParserPlugin extends ASTHelper implements ParserPlugin, Groovy
((InnerClassNode) classNode).setAnonymous(true);
classNode.setEnclosingMethod(methodNode);
configureAST(classNode, node);
+ output.addClass(classNode);
assertNodeType(OBJBLOCK, node);
objectBlock(node);
AnonymousInnerClassCarrier ret = new AnonymousInnerClassCarrier();
ret.innerClass = classNode;
- output.addClass(classNode);
classNode = oldNode;
return ret;
}
diff --git a/src/test/gls/innerClass/InnerClassTest.groovy b/src/test/gls/innerClass/InnerClassTest.groovy
index 52a1c45..64bce3e 100644
--- a/src/test/gls/innerClass/InnerClassTest.groovy
+++ b/src/test/gls/innerClass/InnerClassTest.groovy
@@ -1309,6 +1309,26 @@ final class InnerClassTest {
'''
}
+ @Test // GROOVY-10141
+ void testInnerClassIn2xAIC() {
+ assertScript '''
+ class Outer {
+ class Inner {
+ }
+ def obj = new Object() {
+ String toString() {
+ new Object() {
+ String toString() {
+ new Inner()
+ }
+ }
+ }
+ }
+ }
+ new Outer().obj.toString()
+ '''
+ }
+
@Test // GROOVY-6831
void testNestedPropertyHandling() {
assertScript '''