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