[
https://issues.apache.org/jira/browse/GROOVY-11467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eric Milles updated GROOVY-11467:
---------------------------------
Fix Version/s: 3.0.23
> Failed to find method when using method reference on a class field
> ------------------------------------------------------------------
>
> Key: GROOVY-11467
> URL: https://issues.apache.org/jira/browse/GROOVY-11467
> Project: Groovy
> Issue Type: Bug
> Components: Static Type Checker
> Reporter: Thodoris Sotiropoulos
> Assignee: Eric Milles
> Priority: Minor
> Fix For: 3.0.23, 4.0.23, 5.0.0-alpha-10
>
>
> I have the following program
> {code:java}
> import java.util.function.Supplier
> interface A {
> Double m()
> }
> interface B extends A {
> }
> class C implements B {
> Integer m() { 42 }
> }
> @groovy.transform.CompileStatic
> class Test {
> B f = new C()
> public void test() {
> Supplier<Integer> s = f::m
> assert s.get() == 42
> }
> }
> {code}
> h3. Actual behavior
> The code is rejected with
> {code:java}
> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup
> failed:
> test.groovy: 17: Failed to find method 'm()' for the type: B @ line 17,
> column 26.
> Supplier<Double> x = f::m;
> ^1 error
> {code}
> h3. Expected behavior
> The code should have been compiled successfully.
>
> h3. Notes
> There are two requirements for this bug:
> # The type of the receiver should be an interface (e.g., B) that extends the
> interface where the method is defined.
> # The receiver should be a field.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)