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