You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Rick Venutolo (JIRA)" <ji...@apache.org> on 2016/06/09 13:55:20 UTC

[jira] [Created] (GROOVY-7856) Adding CompileStatic via compiler config script to class with eachWithIndex results in exception in instruction selection phase

Rick Venutolo created GROOVY-7856:
-------------------------------------

             Summary: 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
            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)