[
https://issues.apache.org/jira/browse/GROOVY-11265?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles updated GROOVY-11265:
---------------------------------
Labels: traits (was: )
> Runtime rehydrate error for closure in interface default method
> ---------------------------------------------------------------
>
> Key: GROOVY-11265
> URL: https://issues.apache.org/jira/browse/GROOVY-11265
> Project: Groovy
> Issue Type: Bug
> Components: Compiler, Static compilation
> Affects Versions: 4.0.13, 4.0.17
> Reporter: Christopher Smith
> Assignee: Eric Milles
> Priority: Critical
> Labels: traits
>
> When using an interface default method (implemented in Groovy 4 as a trait)
> that returns an instance of a functional interface defined by a lambda,
> compilation succeeds but runtime invocation produces
> {code}
> groovy.lang.MissingMethodException: No signature of method:
> com.example.MyInterface$Trait$Helper$$Lambda$2132/0x0000000800e24c40.rehydrate()
> is applicable for argument types: (com.example.MyImplementation...) values:
> [com.example.MyImplementation@2a7087a8, ...]
> at
> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:72)
> at
> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:184)
> at com.example.MyInterface$Trait$Helper.curry(MyInterface.groovy:19)
> at com.example.MyImplementation.curry(MyImplementation.groovy)
> {code}
> Update: This appears to be a problem introduced between 4.0.12 and 4.0.13 and
> shows up only when _the interface_ is defined as {{@CompileStatic}}. While I
> understand that the party line is that traits and ASTTs aren't guaranteed to
> be compatible, (1) this was working perfectly previously and (2) the
> compiler's implementation of interface default methods as traits is an
> implementation detail and should have as limited a blast radius as practical.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)