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:44:00 UTC

[jira] [Created] (GROOVY-9790) bootstrap method initialization exception raised when argument type is wrong

Daniel Sun created GROOVY-9790:
----------------------------------

             Summary: bootstrap method initialization exception raised when argument 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


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)