Aleksey created GROOVY-11559:
--------------------------------

             Summary: BUG! exception in phase 'instruction selection' of 
@CompileStatic method
                 Key: GROOVY-11559
                 URL: https://issues.apache.org/jira/browse/GROOVY-11559
             Project: Groovy
          Issue Type: Bug
          Components: Compiler
    Affects Versions: 4.0.24
         Environment: Linux
OpenJdk 21.0.2 x64
Groovy 4.0.24
            Reporter: Aleksey


Compilation of next script results in *NullPointerException* error: 
{code:java}
@CompileStatic
void test(Object val) {
    if(val instanceof Set || val instanceof List) {
        val = "..."
    }
}
{code}

Resulting error and stack trace:
{noformat}
BUG! exception in phase 'instruction selection' in source unit 
'ideaGroovyConsole.groovy' unexpected NullPointerException
        at 
org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:943)
        at 
org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:692)
        at 
org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:666)
        at 
groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:365)
        at 
groovy.lang.GroovyClassLoader.lambda$parseClass$2(GroovyClassLoader.java:314)
        at 
org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163)
        at 
org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314)
        at groovy.lang.GroovyShell.parseClass(GroovyShell.java:572)
        at groovy.lang.GroovyShell.run(GroovyShell.java:392)
        at groovy.lang.GroovyShell.run(GroovyShell.java:372)
        at 
org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
        at console.run(console.groovy:11)
        at groovy.ui.GroovyMain.processReader(GroovyMain.java:628)
        at groovy.ui.GroovyMain.processFiles(GroovyMain.java:549)
        at groovy.ui.GroovyMain.run(GroovyMain.java:387)
        at groovy.ui.GroovyMain.access$1400(GroovyMain.java:67)
        at groovy.ui.GroovyMain$GroovyCommand.process(GroovyMain.java:313)
        at groovy.ui.GroovyMain.processArgs(GroovyMain.java:141)
        at groovy.ui.GroovyMain.main(GroovyMain.java:114)
        at 
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at 
org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:115)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:37)
Caused by: java.lang.NullPointerException: Cannot invoke 
"org.codehaus.groovy.ast.ClassNode.isGenericsPlaceHolder()" because "type" is 
null
        at 
org.codehaus.groovy.ast.tools.GenericsUtils.hasUnresolvedGenerics(GenericsUtils.java:926)
        at 
org.codehaus.groovy.ast.tools.GenericsUtils.parameterizeType(GenericsUtils.java:281)
        at 
org.codehaus.groovy.ast.tools.GeneralUtils.addAllInterfaces(GeneralUtils.java:482)
        at 
org.codehaus.groovy.ast.tools.GeneralUtils.getInterfacesAndSuperInterfaces(GeneralUtils.java:495)
        at 
org.codehaus.groovy.ast.tools.WideningCategories.lowestUpperBound(WideningCategories.java:422)
        at 
org.codehaus.groovy.ast.tools.WideningCategories.lowestUpperBound(WideningCategories.java:210)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.storeType(StaticTypeCheckingVisitor.java:4563)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitBinaryExpression(StaticTypeCheckingVisitor.java:908)
        at 
org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:60)
        at 
org.codehaus.groovy.ast.CodeVisitorSupport.visitExpressionStatement(CodeVisitorSupport.java:117)
        at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitExpressionStatement(ClassCodeVisitorSupport.java:204)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitExpressionStatement(StaticTypeCheckingVisitor.java:2286)
        at 
org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:41)
        at 
org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:86)
        at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:168)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitBlockStatement(StaticTypeCheckingVisitor.java:4109)
        at 
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:72)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitIfElse(StaticTypeCheckingVisitor.java:4065)
        at org.codehaus.groovy.ast.stmt.IfStatement.visit(IfStatement.java:55)
        at 
org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:86)
        at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:168)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitBlockStatement(StaticTypeCheckingVisitor.java:4109)
        at 
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:72)
        at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:142)
        at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:115)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitConstructorOrMethod(StaticTypeCheckingVisitor.java:2753)
        at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:110)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.startMethodInference(StaticTypeCheckingVisitor.java:2736)
        at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingVisitor.visitMethod(StaticTypeCheckingVisitor.java:2715)
        at 
org.codehaus.groovy.transform.sc.StaticCompilationVisitor.visitConstructorOrMethod(StaticCompilationVisitor.java:192)
        at 
org.codehaus.groovy.transform.sc.StaticCompilationVisitor.visitMethod(StaticCompilationVisitor.java:207)
        at 
org.codehaus.groovy.transform.sc.StaticCompileTransformation.visit(StaticCompileTransformation.java:81)
        at 
org.codehaus.groovy.transform.ASTTransformationVisitor.visitClass(ASTTransformationVisitor.java:155)
        at 
org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperations$2(ASTTransformationVisitor.java:237)
        at 
org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:938)
        ... 23 more
{noformat}




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to