[ 
https://issues.apache.org/jira/browse/GROOVY-11559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eric Milles reassigned GROOVY-11559:
------------------------------------

    Assignee: Eric Milles

> 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: 5.0.0-alpha-11, 4.0.24
>         Environment: Linux
> OpenJdk 21.0.2 x64
> Groovy 4.0.24
>            Reporter: Aleksey
>            Assignee: Eric Milles
>            Priority: Major
>
> 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