mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-24 09:20:53 +07:00
overload resolution for explicitly typed lambda: poly wins over primitive
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
class Test {
|
||||
interface GetInt { int get(); }
|
||||
interface GetInteger { Integer get(); }
|
||||
|
||||
private void <warning descr="Private method 'm(Test.GetInt)' is never used">m</warning>(GetInt getter) {
|
||||
System.out.println(getter);
|
||||
}
|
||||
|
||||
private void m(GetInteger getter) {
|
||||
System.out.println(getter);
|
||||
}
|
||||
|
||||
void test(boolean cond) {
|
||||
m<error descr="Cannot resolve method 'm(<lambda expression>)'">(() -> {
|
||||
if (cond)
|
||||
return 42;
|
||||
else
|
||||
return foo();
|
||||
})</error>;
|
||||
|
||||
m(() -> {
|
||||
return foo();
|
||||
});
|
||||
|
||||
m(() -> {
|
||||
if (cond)
|
||||
return new Integer(42);
|
||||
else
|
||||
return foo();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private <T> T foo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user