[ https://issues.apache.org/jira/browse/GROOVY-7757?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pascal Schumacher reassigned GROOVY-7757: ----------------------------------------- Assignee: (was: Jochen Theodorou) > Malformed class names for closures in inner classes > --------------------------------------------------- > > Key: GROOVY-7757 > URL: https://issues.apache.org/jira/browse/GROOVY-7757 > Project: Groovy > Issue Type: Sub-task > Components: class generator > Affects Versions: 2.4.5 > Reporter: Sam Corbett > > The class names generated for closures in inner classes break > Class.getSimpleName() > For example, the closure passed to .each in this example has name > Example$_Inner_closure1.class: > {code} > public class Example { > private class Inner { > def _ = [1, 2, 3].each {} > } > } > {code} > Calling getSimpleName() on this class (e.g. as done by > [Weld|http://seamframework.org/Weld] on startup) throws a > java.lang.InternalError: > {code} > Caused by: java.lang.InternalError: Malformed class name > at java.lang.Class.getSimpleName(Class.java:1133) [:1.6.0_29] > at java.lang.Class.isAnonymousClass(Class.java:1188) [:1.6.0_29] > {code} > I believe the class name is expected to be in the format > Example$Inner$closure1. > I've attached a test case to demonstrate the problem - extract the archive, > cd to groovy-closure-classname-test and run mvn test. The test uses Weld to > inject a ClosureClassNameTest instance, but fails when Weld calls > getSimpleName() on the class for the closure on line 10. -- This message was sent by Atlassian JIRA (v6.3.4#6332)