| /* |
| * @test /nodynamiccopyright/ |
| * @bug 8003280 |
| * @summary Add lambda tests |
| * check that raw qualifier in unbound method reference is inferred from descriptor |
| * @compile/fail/ref=MethodReference48.out -XDrawDiagnostics MethodReference48.java |
| */ |
| |
| public class MethodReference48 { |
| |
| static class Foo<X> { |
| X m() { return null; }; |
| } |
| |
| interface SAM1 { |
| Foo<Object> m(Foo<String> fs); |
| } |
| |
| interface SAM2 { |
| Integer m(Foo<Integer> fi); |
| } |
| |
| interface SAM3 { |
| Object m(Foo<Integer> fi); |
| } |
| |
| static void g1(SAM1 s) { } //return type not compatible |
| |
| static void g2(SAM2 s) { } //ok |
| |
| static void g3(SAM3 s) { } //ok |
| |
| static void g4(SAM1 s) { } //return type not compatible |
| static void g4(SAM2 s) { } //ok |
| static void g4(SAM3 s) { } //ok |
| |
| public static void main(String[] args) { |
| g1(Foo::m); |
| g2(Foo::m); |
| g3(Foo::m); |
| g4(Foo::m); |
| } |
| } |