| /* | |
| * @test /nodynamiccopyright/ | |
| * @bug 8003280 | |
| * @summary Add lambda tests | |
| * check that non-compatible method references are rejected | |
| * @compile/fail/ref=MethodReference28.out -XDrawDiagnostics MethodReference28.java | |
| */ | |
| class MethodReference28 { | |
| interface SAM1 { | |
| void m(int i); | |
| } | |
| interface SAM2 { | |
| void m(MethodReference28 rec, int i); | |
| } | |
| static void static_m1(Integer i) { } //ok - boxing | |
| static void static_m2(Integer i1, Integer i2) { } //wrong arity | |
| static void static_m3(String s) { } //type mismatch | |
| static void static_m4(String... ss) { } //type mismatch - varargs | |
| void m1(Integer i) { } //ok - boxing | |
| void m2(Integer i1, Integer i2) { } //wrong arity | |
| void m3(String s) { } //type mismatch | |
| void m4(String... ss) { } //type mismatch - varargs | |
| static void testStatic() { | |
| SAM1 s1 = MethodReference28::static_m1; | |
| SAM1 s2 = MethodReference28::static_m2; | |
| SAM1 s3 = MethodReference28::static_m3; | |
| SAM1 s4 = MethodReference28::static_m4; | |
| } | |
| void testBadMember() { | |
| SAM1 s1 = MethodReference28::m1; | |
| SAM1 s2 = MethodReference28::m2; | |
| SAM1 s3 = MethodReference28::m3; | |
| SAM1 s4 = MethodReference28::m4; | |
| } | |
| void testMember() { | |
| SAM1 s1 = this::m1; | |
| SAM1 s2 = this::m2; | |
| SAM1 s3 = this::m3; | |
| SAM1 s4 = this::m4; | |
| } | |
| static void testUnbound() { | |
| SAM2 s1 = MethodReference28::m1; | |
| SAM2 s2 = MethodReference28::m2; | |
| SAM2 s3 = MethodReference28::m3; | |
| SAM2 s4 = MethodReference28::m4; | |
| } | |
| } |