[ https://issues.apache.org/jira/browse/GROOVY-7856?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King reassigned GROOVY-7856: --------------------------------- Assignee: Paul King > Adding CompileStatic via compiler config script to class with eachWithIndex > results in exception in instruction selection phase > ------------------------------------------------------------------------------------------------------------------------------- > > Key: GROOVY-7856 > URL: https://issues.apache.org/jira/browse/GROOVY-7856 > Project: Groovy > Issue Type: Bug > Components: Compiler > Affects Versions: 2.4.7 > Environment: Groovy Version: 2.4.7 JVM: 1.8.0_92 Vendor: Oracle > Corporation OS: Linux > Reporter: Rick Venutolo > Assignee: Paul King > Priority: Minor > > I have run into an issue when adding the CompileStatic AST transformation to > a class via the Groovy compiler configscript argument. > {code:title=Demo.groovy|borderStyle=solid} > class Demo { > void test() { > ['a', 'b'].eachWithIndex {String s, int i -> println "$i: $s"} > } > } > {code} > {code:title=config.groovy|borderStyle=solid} > import groovy.transform.CompileStatic > import org.codehaus.groovy.ast.ClassNode > withConfig(configuration) { > source(classValidator: {ClassNode classNode -> > classNode.nameWithoutPackage == 'Demo'}) { > ast(CompileStatic) > } > } > {code} > {code:title=Compile using --configscript|borderStyle=solid} > $ groovyc --configscript config.groovy Demo.groovy > {code} > {code:title=Output (abbreviated)|borderStyle=solid} > >>> a serious error occurred: BUG! exception in phase 'instruction selection' > >>> in source unit 'Demo.groovy' unexpected NullpointerException > >>> stacktrace: > BUG! exception in phase 'instruction selection' in source unit 'Demo.groovy' > unexpected NullpointerException > at > org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1058) > at > org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:591) > at > org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569) > ... > Caused by: java.lang.NullPointerException > at > org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:180) > at > org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:170) > at > org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:126) > ... > {code} > *Notes* > * Groovy & JVM versions: {{Groovy Version: 2.4.7 JVM: 1.8.0_92 Vendor: Oracle > Corporation OS: Linux}} > ** Have tried Groovy versions going back to 2.4.3 and Oracle JVM 1.7.0_79 > * Changing any of the following will result in no compilation error: > ** Remove the {{source(classValidator: ...)}} code around {{ast}}, leaving > {{ast(CompileStatic)}}, in the compiler config script > ** Replace the {{eachWithIndex}} call in Demo with {{each}} > ** Annotate {{Demo}} with {{@CompileStatic}} and compile without > {{--configscript}} > I have detailed and demoed the bug > [here|https://github.com/rvenutolo/compilestatic-compiler-config] with some > code you can clone and run. -- This message was sent by Atlassian JIRA (v6.3.4#6332)