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