test/tools/javac/lambda/MostSpecific12.java

Sat, 07 Nov 2020 10:30:02 +0800

author
aoqi
date
Sat, 07 Nov 2020 10:30:02 +0800
changeset 3938
93012e2a5d1d
parent 0
959103a6100f
permissions
-rw-r--r--

Added tag mips-jdk8u275-b01 for changeset eb6ee6a5f2fe

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 }

mercurial