overload resolution for explicitly typed lambda: poly wins over primitive

This commit is contained in:
Anna Kozlova
2015-02-01 16:07:03 +03:00
parent 51c1a50606
commit 867a714293
3 changed files with 44 additions and 0 deletions

View File

@@ -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;
}
}