| /* | |
| * @test /nodynamiccopyright/ | |
| * @bug 8003280 | |
| * @summary Add lambda tests | |
| * check correctness of structural most specific test routine | |
| * @compile/fail/ref=MostSpecific03.out -XDrawDiagnostics MostSpecific03.java | |
| */ | |
| class Test { | |
| interface IntMapper { | |
| int map(); | |
| } | |
| interface LongMapper { | |
| long map(); | |
| } | |
| void m(IntMapper... im) { } | |
| void m(LongMapper... lm) { } | |
| void m2(IntMapper im1, IntMapper... im) { } | |
| void m2(LongMapper... lm) { } | |
| void test1() { | |
| m(); //ambiguous | |
| m(()->1); //ok | |
| m(()->1, ()->1); //ok | |
| m(()->1, ()->1, ()->1); //ok | |
| } | |
| void test2() { | |
| m(null, null); //ambiguous | |
| m(()->1, null); //ambiguous | |
| m(null, ()->1); //ambiguous | |
| m(()->1L, null); //ok | |
| m(null, ()->1L); //ok | |
| } | |
| void test3() { | |
| m2(); //ok | |
| m2(()->1); //ambiguous | |
| m2(()->1, ()->1); //ok | |
| m2(()->1, ()->1, ()->1); //ok | |
| } | |
| void test4() { | |
| m2(null, null, null); //ambiguous | |
| m2(()->1, null, null); //ambiguous | |
| m2(null, ()->1, null); //ambiguous | |
| m2(null, null, ()->1); //ambiguous | |
| m2(()->1, ()->1, null); //ambiguous | |
| m2(null, ()->1, ()->1); //ambiguous | |
| m2(()->1, null, ()->1); //ambiguous | |
| m2(()->1L, null, null); //ok | |
| m2(null, ()->1L, null); //ok | |
| m2(null, null, ()->1L); //ok | |
| m2(()->1L, ()->1L, null); //ok | |
| m2(null, ()->1L, ()->1L); //ok | |
| m2(()->1L, null, ()->1L); //ok | |
| } | |
| } |