You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Christopher Smith (Jira)" <ji...@apache.org> on 2023/02/13 21:20:00 UTC

[jira] [Created] (GROOVY-10933) Bootstrap Method Error on non-void lambda for Consumer

Christopher Smith created GROOVY-10933:
------------------------------------------

             Summary: Bootstrap Method Error on non-void lambda for Consumer
                 Key: GROOVY-10933
                 URL: https://issues.apache.org/jira/browse/GROOVY-10933
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation
    Affects Versions: 4.0.9
            Reporter: Christopher Smith


When a method that returns a value is used as a {{Consumer}}, a runtime {{Error}} is produced.

{code:groovy}
class BugRepro extends Specification {
    def 'repro'() {
        expect:
        new Demo().run()
    }
}

@CompileStatic
class Demo {
    List<String> strings = []

    void run() {
        Optional.of('hello')
            .ifPresent(strings::add)
    }
}
{code}

{code}
Condition failed with Exception:

new Demo().run()
|          |
|          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:307)
|          	at java.base/java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:258)
|          	at java.base/java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:248)
|          	at Demo.run(BugRepro.groovy:18)
|          	at BugRepro.repro(BugRepro.groovy:9)
|          Caused by: java.lang.invoke.LambdaConversionException: Type mismatch for lambda expected return: boolean is not convertible to void
|          	at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.checkDescriptor(AbstractValidatingLambdaMetafactory.java:317)
|          	at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:294)
|          	at java.base/java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:328)
|          	at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:127)
|          	... 5 more
<Demo@18e8473e strings=[]>

	at BugRepro.repro(BugRepro.groovy:9)
Caused by: 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:307)
	at java.base/java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:258)
	at java.base/java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:248)
	at Demo.run(BugRepro.groovy:18)
	... 1 more
Caused by: java.lang.invoke.LambdaConversionException: Type mismatch for lambda expected return: boolean is not convertible to void
	at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.checkDescriptor(AbstractValidatingLambdaMetafactory.java:317)
	at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:294)
	at java.base/java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:328)
	at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:127)
	... 5 more
{code}



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