/* * @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; } }