| /* |
| * @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 |
| } |
| } |