1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/test/tools/javac/lambda/MostSpecific12.java Wed May 14 15:41:28 2014 -0600 1.3 @@ -0,0 +1,38 @@ 1.4 +/* 1.5 + * @test /nodynamiccopyright/ 1.6 + * @bug 8034223 1.7 + * @summary Most-specific testing with inference variables in function parameter types 1.8 + * @compile/fail/ref=MostSpecific12.out -XDrawDiagnostics MostSpecific12.java 1.9 + */ 1.10 +class MostSpecific12 { 1.11 + 1.12 + interface I<T> { void take(T arg1, String arg2); } 1.13 + interface J<T> { void take(String arg1, T arg2); } 1.14 + interface K { void take(String arg1, String arg2); } 1.15 + 1.16 + <T> void m1(I<T> arg) {} 1.17 + void m1(K arg) {} 1.18 + 1.19 + <T> void m2(J<T> arg) {} 1.20 + <T> void m2(K arg) {} 1.21 + 1.22 + <T> void m3(I<T> arg) {} 1.23 + <T> void m3(J<T> arg) {} 1.24 + 1.25 + void test() { 1.26 + m1((String s1, String s2) -> {}); // ok 1.27 + m2((String s1, String s2) -> {}); // ok 1.28 + m3((String s1, String s2) -> {}); // error 1.29 + 1.30 + m1(this::referencedMethod); // ok 1.31 + m2(this::referencedMethod); // ok 1.32 + m3(this::referencedMethod); // error 1.33 + 1.34 + m1(String::compareTo); // ok 1.35 + m2(String::compareTo); // ok 1.36 + m3(String::compareTo); // error 1.37 + } 1.38 + 1.39 + void referencedMethod(String s1, String s2) {} 1.40 + 1.41 +}