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