1/*
2 * @test /nodynamiccopyright/
3 * @bug 8003280
4 * @summary Add lambda tests
5 *  check correctness of structural most specific test routine
6 * @compile/fail/ref=MostSpecific03.out -XDrawDiagnostics MostSpecific03.java
7 */
8
9class Test {
10
11    interface IntMapper {
12        int map();
13    }
14
15    interface LongMapper {
16        long map();
17    }
18
19    void m(IntMapper... im) { }
20    void m(LongMapper... lm) { }
21
22    void m2(IntMapper im1, IntMapper... im) { }
23    void m2(LongMapper... lm) { }
24
25    void test1() {
26        m(); //ambiguous
27        m(()->1); //ok
28        m(()->1, ()->1); //ok
29        m(()->1, ()->1, ()->1); //ok
30    }
31
32    void test2() {
33        m(null, null); //ambiguous
34        m(()->1, null); //ambiguous
35        m(null, ()->1); //ambiguous
36        m(()->1L, null); //ok
37        m(null, ()->1L); //ok
38    }
39
40    void test3() {
41        m2(); //ok
42        m2(()->1); //ambiguous
43        m2(()->1, ()->1); //ok
44        m2(()->1, ()->1, ()->1); //ok
45    }
46
47    void test4() {
48        m2(null, null, null); //ambiguous
49        m2(()->1, null, null); //ambiguous
50        m2(null, ()->1, null); //ambiguous
51        m2(null, null, ()->1); //ambiguous
52        m2(()->1, ()->1, null); //ambiguous
53        m2(null, ()->1, ()->1); //ambiguous
54        m2(()->1, null, ()->1); //ambiguous
55
56        m2(()->1L, null, null); //ok
57        m2(null, ()->1L, null); //ok
58        m2(null, null, ()->1L); //ok
59        m2(()->1L, ()->1L, null); //ok
60        m2(null, ()->1L, ()->1L); //ok
61        m2(()->1L, null, ()->1L); //ok
62    }
63}
64