1/*
2 * @test /nodynamiccopyright/
3 * @bug 8003280
4 * @summary Add lambda tests
5 *   This is negative test for wrong parameter/return type in method references
6 * @compile/fail/ref=MethodRef_neg.out -XDrawDiagnostics MethodRef_neg.java
7 */
8
9public class MethodRef_neg {
10
11    static interface A {void m(Integer i);}
12
13    static interface B {void m(String s);}
14
15    static interface C {Integer m();}
16
17    static interface D {String m();}
18
19
20    static void bar(int x) { }
21
22    int foo() {
23        return 5;
24    }
25
26    static void make() { }
27
28    void method() {
29        A a = MethodRef_neg::bar; //boxing on parameter type is ok
30        B b = MethodRef_neg::bar; //wrong parameter type, required: String, actual: int
31        C c = this::foo; //boxing on return type is ok
32        D d = this::foo; //wrong return type, required: String, actual: int
33        a = MethodRef_neg::make; //missing parameter
34        c = MethodRef_neg::make; //missing return type
35    }
36}
37