MethodReference23.java revision 2946:e72b28547e96
1139749Simp/* 297883Sgibbs * @test /nodynamiccopyright/ 397883Sgibbs * @bug 8003280 8075184 8081271 497883Sgibbs * @summary Add lambda tests 597883Sgibbs * check that pair of bound/non-bound constructor references is flagged as ambiguous 697883Sgibbs * @author Maurizio Cimadamore 797883Sgibbs * @compile/fail/ref=MethodReference23.out -XDrawDiagnostics MethodReference23.java 897883Sgibbs */ 997883Sgibbs 1097883Sgibbsclass MethodReference23 { 1197883Sgibbs 1297883Sgibbs class Inner1 { 1397883Sgibbs Inner1(MethodReference23 outer) {}; 1497883Sgibbs Inner1() {}; 1597883Sgibbs } 1697883Sgibbs 1797883Sgibbs static class Inner2 { 1897883Sgibbs Inner2(MethodReference23 outer) {}; 1997883Sgibbs Inner2() {}; 2097883Sgibbs } 2197883Sgibbs 2297883Sgibbs interface SAM11 { 2397883Sgibbs Inner1 m(MethodReference23 rec); 2497883Sgibbs } 2597883Sgibbs 2697883Sgibbs interface SAM12 { 2797883Sgibbs Inner1 m(); 2897883Sgibbs } 2997883Sgibbs 3097883Sgibbs interface SAM21 { 31123579Sgibbs Inner2 m(MethodReference23 rec); 3297883Sgibbs } 3397883Sgibbs 34119418Sobrien interface SAM22 { 35119418Sobrien Inner2 m(); 36119418Sobrien } 3797883Sgibbs 3897883Sgibbs static void call11(SAM11 s) { } 3997883Sgibbs 4097883Sgibbs static void call12(SAM12 s) { } 4197883Sgibbs 4297883Sgibbs static void call21(SAM21 s) { } 4397883Sgibbs 4497883Sgibbs static void call22(SAM22 s) { } 4597883Sgibbs 4697883Sgibbs static void call3(SAM11 s) { } 4797883Sgibbs static void call3(SAM12 s) { } 4897883Sgibbs static void call3(SAM21 s) { } 4997883Sgibbs static void call3(SAM22 s) { } 5097883Sgibbs 5197883Sgibbs static void test11() { 5297883Sgibbs SAM11 s = MethodReference23.Inner1::new; // fail. 5397883Sgibbs call11(MethodReference23.Inner1::new); // fail. 5497883Sgibbs } 5597883Sgibbs 5697883Sgibbs static void test12() { 5797883Sgibbs SAM12 s = MethodReference23.Inner1::new; //fail 5897883Sgibbs call12(MethodReference23.Inner1::new); //fail 5997883Sgibbs } 6097883Sgibbs 6197883Sgibbs static void test21() { 6297883Sgibbs SAM21 s = MethodReference23.Inner2::new; //ok 6397883Sgibbs call21(MethodReference23.Inner2::new); //ok 6497883Sgibbs } 6597883Sgibbs 6697883Sgibbs static void test22() { 6797883Sgibbs SAM22 s = MethodReference23.Inner2::new; //ok 6897883Sgibbs call22(MethodReference23.Inner2::new); //ok 6997883Sgibbs } 70143164Simp 7197883Sgibbs static void test3() { 7297883Sgibbs call3(MethodReference23.Inner2::new); //ambiguous 7397883Sgibbs } 7497883Sgibbs} 7597883Sgibbs