Christopher Smith created GROOVY-11024:
------------------------------------------

             Summary: STC NPE when using Collectors.toMap() with a generic 
result
                 Key: GROOVY-11024
                 URL: https://issues.apache.org/jira/browse/GROOVY-11024
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation
    Affects Versions: 4.0.11
            Reporter: Christopher Smith


I'm not sure what the most specific culprit is, but this reproduces the problem 
reliably. (The original use case was using {{DynamoDbTable#index(String)}}, 
which also returns a generic result.)

{code:groovy}
import static java.util.function.Function.identity
import static java.util.stream.Collectors.toMap

import groovy.transform.CompileStatic

@CompileStatic
class Bug {
    Bug() {
        ['a'].stream().collect(toMap(identity(), List::of))
    }
}
{code}

{code}
[ERROR] Caused by: java.lang.NullPointerException: Cannot load from object 
array because the return value of 
"org.codehaus.groovy.ast.ClassNode.getGenericsTypes()" is null
[ERROR]         at 
org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isAssignableTo(StaticTypeCheckingSupport.java:496)
[ERROR]         at 
org.codehaus.groovy.ast.tools.ParameterUtils.parametersMatch(ParameterUtils.java:74)
[ERROR]         at 
org.codehaus.groovy.ast.tools.ParameterUtils.parametersCompatible(ParameterUtils.java:53)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticTypesMethodReferenceExpressionWriter.lambda$findMethodRefMethod$2(StaticTypesMethodReferenceExpressionWriter.java:334)
[ERROR]         at java.base/java.util.Collection.removeIf(Collection.java:576)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticTypesMethodReferenceExpressionWriter.findMethodRefMethod(StaticTypesMethodReferenceExpressionWriter.java:319)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticTypesMethodReferenceExpressionWriter.writeMethodReferenceExpression(StaticTypesMethodReferenceExpressionWriter.java:104)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodReferenceExpression(AsmClassGenerator.java:925)
[ERROR]         at 
org.codehaus.groovy.ast.expr.MethodReferenceExpression.visit(MethodReferenceExpression.java:34)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.visitArgument(StaticInvocationWriter.java:513)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.loadArguments(StaticInvocationWriter.java:460)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.writeDirectMethodCall(InvocationWriter.java:213)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.writeDirectMethodCall(StaticInvocationWriter.java:386)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.makeDirectCall(InvocationWriter.java:311)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:131)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:125)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.makeCall(StaticInvocationWriter.java:648)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:454)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.writeInvokeMethod(StaticInvocationWriter.java:136)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:988)
[ERROR]         at 
org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:77)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.visitArgument(StaticInvocationWriter.java:513)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.loadArguments(StaticInvocationWriter.java:460)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.writeDirectMethodCall(InvocationWriter.java:213)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.writeDirectMethodCall(StaticInvocationWriter.java:386)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.makeDirectCall(InvocationWriter.java:311)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:131)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:125)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.makeCall(StaticInvocationWriter.java:648)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:454)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter.writeInvokeMethod(StaticInvocationWriter.java:136)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:988)
[ERROR]         at 
org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:77)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.StatementWriter.writeExpressionStatement(StatementWriter.java:613)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitExpressionStatement(AsmClassGenerator.java:827)
[ERROR]         at 
org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:41)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:95)
[ERROR]         at 
org.codehaus.groovy.classgen.asm.sc.StaticTypesStatementWriter.writeBlockStatement(StaticTypesStatementWriter.java:77)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:752)
[ERROR]         at 
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:72)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:611)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:546)
[ERROR]         at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructor(ClassCodeVisitorSupport.java:105)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructor(AsmClassGenerator.java:689)
[ERROR]         at 
org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1121)
[ERROR]         at 
org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:52)
[ERROR]         at 
org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:365)
[ERROR]         ... 41 more

{code}



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

Reply via email to