You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Daniel Sun (Jira)" <ji...@apache.org> on 2020/10/23 05:45:00 UTC

[jira] [Updated] (GROOVY-9790) bootstrap method initialization exception raised when lambda parameter type is wrong

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

Daniel Sun updated GROOVY-9790:
-------------------------------
    Summary: bootstrap method initialization exception raised when lambda parameter type is wrong  (was: bootstrap method initialization exception raised when argument type is wrong)

> bootstrap method initialization exception raised when lambda parameter type is wrong
> ------------------------------------------------------------------------------------
>
>                 Key: GROOVY-9790
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9790
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static compilation
>    Affects Versions: 3.0.6
>            Reporter: Daniel Sun
>            Priority: Major
>
> The following code will raise BME
> {code:java}
> import java.util.stream.*
> @groovy.transform.CompileStatic
> def x() {
>     IntStream.range(0, 2).forEach((Integer i) -> { assert 0 <= i && i < 2})
> }
> x()
> {code}
> but the following code works well:
> {code:java}
> import java.util.stream.*
> @groovy.transform.CompileStatic
> def x() {
>     IntStream.range(0, 2).forEach((int i) -> { assert 0 <= i && i < 2})
> }
> x()
> {code}
> *BME stacktrace:*
> {code:java}
> java.lang.BootstrapMethodError: bootstrap method initialization exception
> 	at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:194)
> 	at java.base/java.lang.invoke.CallSite.makeSite(CallSite.java:315)
> 	at java.base/java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:271)
> 	at java.base/java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:261)
> 	at ConsoleScript15.x(ConsoleScript15:5)
> 	at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:318)
> 	at ConsoleScript15.run(ConsoleScript15:8)
> 	at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:254)
> 	at groovy.lang.GroovyShell.run(GroovyShell.java:360)
> 	at groovy.lang.GroovyShell.run(GroovyShell.java:339)
> 	at groovy.lang.GroovyShell.run(GroovyShell.java:166)
> 	at groovy.lang.GroovyShell$run$0.call(Unknown Source)
> 	at groovy.console.ui.Console$_runScriptImpl_closure22.doCall(Console.groovy:1302)
> 	at groovy.console.ui.Console$_runScriptImpl_closure22.doCall(Console.groovy)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
> 	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
> 	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
> 	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
> 	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
> 	at groovy.lang.Closure.call(Closure.java:412)
> 	at groovy.lang.Closure.call(Closure.java:406)
> 	at groovy.lang.Closure.run(Closure.java:493)
> 	at java.base/java.lang.Thread.run(Thread.java:832)
> Caused by: java.lang.invoke.LambdaConversionException: Type mismatch for instantiated parameter 0: class java.lang.Integer is not a subtype of int
> 	at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.checkDescriptor(AbstractValidatingLambdaMetafactory.java:322)
> 	at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:308)
> 	at java.base/java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:327)
> 	at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:127)
> 	... 25 more
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)