lambda valueCompatible check: don't evaluate constant expressions which could lead to reference resolution during overload check = caching possible wrong refs (IDEA-141808)

This commit is contained in:
Anna Kozlova
2015-06-24 11:08:36 +03:00
parent b2e3679223
commit 7f0692d0f2
3 changed files with 34 additions and 1 deletions

View File

@@ -0,0 +1,29 @@
class Test {
class Message<T> {
public T data;
}
class Result<<warning descr="Type parameter 'T' is never used">T</warning>> {
public boolean isSuccessful() {
return false;
}
}
interface handlerReturn<R, T> {
R process(T m);
}
private <R, T> void <warning descr="Private method 'process(Test.handlerReturn<R,T>)' is never used">process</warning>(handlerReturn<R, T> <warning descr="Parameter 'h' is never used">h</warning>) {}
interface handler<T> {
void process(T m);
}
private <T> void process(handler<T> <warning descr="Parameter 'h' is never used">h</warning>) {}
public static void main(String[] args) {
Test t = new Test();
t.<Message<Result<String>>>process(m -> {
if (m.data.isSuccessful());
});
}
}