/* * @test /nodynamiccopyright/ * @bug 8034223 * @summary Most-specific testing with inference variables in function parameter types * @compile/fail/ref=MostSpecific12.out -XDrawDiagnostics MostSpecific12.java */ class MostSpecific12 { interface I { void take(T arg1, String arg2); } interface J { void take(String arg1, T arg2); } interface K { void take(String arg1, String arg2); } void m1(I arg) {} void m1(K arg) {} void m2(J arg) {} void m2(K arg) {} void m3(I arg) {} void m3(J arg) {} void test() { m1((String s1, String s2) -> {}); // ok m2((String s1, String s2) -> {}); // ok m3((String s1, String s2) -> {}); // error m1(this::referencedMethod); // ok m2(this::referencedMethod); // ok m3(this::referencedMethod); // error m1(String::compareTo); // ok m2(String::compareTo); // ok m3(String::compareTo); // error } void referencedMethod(String s1, String s2) {} }