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)