lambda: check more specific method based on lambda return types with wildcards

This commit is contained in:
anna
2013-02-27 18:03:31 +01:00
parent 329607d9eb
commit 47c7983713
4 changed files with 35 additions and 4 deletions
@@ -0,0 +1,27 @@
public class Test<A, B extends Number> {
interface IO<T> {
T _(Object o);
}
interface IN<T extends Number> {
T _(Object o);
}
private void foo(IO<? extends A> <warning descr="Parameter 'p' is never used">p</warning>) {}
private void <warning descr="Private method 'foo(Test.IN<? extends B>)' is never used">foo</warning>(IN<? extends B> <warning descr="Parameter 'p' is never used">p</warning>) {}
private static class Inner<A extends Object, B extends Number> {
private void <warning descr="Private method 'm8(Test.IO<? extends A>)' is never used">m8</warning>(IO<? extends A> <warning descr="Parameter 'p' is never used">p</warning>) {}
private void m8(IN<? extends B> <warning descr="Parameter 'p' is never used">p</warning>) {}
}
public static void main(String[] args) {
Inner<Number, Double> inn = new Inner<>();
inn.m8(p -> 1.0);
new Test<Number, Integer>().foo(p -> 1.0);
}
}
@@ -58,11 +58,11 @@ class MyTest1 {
System.out.println(i);
}
private static void m(I2 i) {
private static void <warning descr="Private method 'm(MyTest1.I2)' is never used">m</warning>(I2 i) {
System.out.println(i);
}
private static void <warning descr="Private method 'm(MyTest1.I3)' is never used">m</warning>(I3 i) {
private static void m(I3 i) {
System.out.println(i);
}