1 /* 2 * @test /nodynamiccopyright/ 3 * @bug 8034223 4 * @summary Most-specific testing with inference variables in function parameter types 5 * @compile/fail/ref=MostSpecific12.out -XDrawDiagnostics MostSpecific12.java 6 */ 7 class MostSpecific12 { 8 take(T arg1, String arg2)9 interface I<T> { void take(T arg1, String arg2); } take(String arg1, T arg2)10 interface J<T> { void take(String arg1, T arg2); } take(String arg1, String arg2)11 interface K { void take(String arg1, String arg2); } 12 m1(I<T> arg)13 <T> void m1(I<T> arg) {} m1(K arg)14 void m1(K arg) {} 15 m2(J<T> arg)16 <T> void m2(J<T> arg) {} m2(K arg)17 <T> void m2(K arg) {} 18 m3(I<T> arg)19 <T> void m3(I<T> arg) {} m3(J<T> arg)20 <T> void m3(J<T> arg) {} 21 test()22 void test() { 23 m1((String s1, String s2) -> {}); // ok 24 m2((String s1, String s2) -> {}); // ok 25 m3((String s1, String s2) -> {}); // error 26 27 m1(this::referencedMethod); // ok 28 m2(this::referencedMethod); // ok 29 m3(this::referencedMethod); // error 30 31 m1(String::compareTo); // ok 32 m2(String::compareTo); // ok 33 m3(String::compareTo); // error 34 } 35 referencedMethod(String s1, String s2)36 void referencedMethod(String s1, String s2) {} 37 38 } 39