1 /*
2  * @test /nodynamiccopyright/
3  * @bug 8003280
4  * @summary Add lambda tests
5  *  check that raw qualifier in unbound method reference is inferred from descriptor
6  * @compile/fail/ref=MethodReference48.out -XDrawDiagnostics MethodReference48.java
7  */
8 
9 public class MethodReference48 {
10 
11     static class Foo<X> {
m()12         X m() { return null; };
13     }
14 
15     interface SAM1 {
m(Foo<String> fs)16         Foo<Object> m(Foo<String> fs);
17     }
18 
19     interface SAM2 {
m(Foo<Integer> fi)20         Integer m(Foo<Integer> fi);
21     }
22 
23     interface SAM3 {
m(Foo<Integer> fi)24         Object m(Foo<Integer> fi);
25     }
26 
g1(SAM1 s)27     static void g1(SAM1 s) { } //return type not compatible
28 
g2(SAM2 s)29     static void g2(SAM2 s) { } //ok
30 
g3(SAM3 s)31     static void g3(SAM3 s) { } //ok
32 
g4(SAM1 s)33     static void g4(SAM1 s) { } //return type not compatible
g4(SAM2 s)34     static void g4(SAM2 s) { } //ok
g4(SAM3 s)35     static void g4(SAM3 s) { } //ok
36 
main(String[] args)37     public static void main(String[] args) {
38         g1(Foo::m);
39         g2(Foo::m);
40         g3(Foo::m);
41         g4(Foo::m);
42     }
43 }
44