diff -r 000000000000 -r 959103a6100f test/tools/javac/lambda/MostSpecific03.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/lambda/MostSpecific03.java Wed Apr 27 01:34:52 2016 +0800 @@ -0,0 +1,63 @@ +/* + * @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 + } +}