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