Method reference doesn't work correctly
Remi Forax
forax at univ-mlv.fr
Thu May 7 16:19:17 UTC 2020
[move to valhalla-dev]
----- Mail original -----
> De: "Srikanth" <srikanth.adayapalam at oracle.com>
> À: "amber-dev" <amber-dev at openjdk.java.net>
> Envoyé: Jeudi 7 Mai 2020 11:27:02
> Objet: Re: Method reference doesn't work correctly
> On 07/05/20 3:55 am, Remi Forax wrote:
>> Hi all,
>> the inference of method reference doesn't work properly
>>
>> @__inline__ static class Foo {
>> int x;
>> Foo(int x) { this.x = x; }
>> }
>>
>> static void m(Foo foo) {
>> System.out.println("inline");
>> }
>> static void m(Foo.ref foo) {
>> System.out.println("ref");
>> }
>
> There is something wrong with the braces - these m() methods are not
> inside the class Foo,
> but the method reference below is to Foo::m
I was trying to create a reproducer for what you have called problem 3 in [1],
but i goof so no need to create a bug for this one.
>
> Srikanth
Rémi
[1] https://github.com/openjdk/valhalla/pull/32
>
>> public static void main(String[] args) {
>> var list = List.of(new Foo(3));
>> list.forEach(e -> m(e));
>> list.forEach(Foo::m);
>> }
>>
>>
>> Hello.java:19: error: invalid method reference
>> list.forEach(Foo::m);
>> ^
>> cannot find symbol
>> symbol: method m(T)
>> location: class Foo
>> where T is a type-variable:
>> T extends Object declared in interface Iterable
>>
>> regards,
> > Rémi
More information about the valhalla-dev
mailing list