diff -r 000000000000 -r 959103a6100f test/tools/javac/lambda/MethodReference48.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/lambda/MethodReference48.java Wed Apr 27 01:34:52 2016 +0800 @@ -0,0 +1,43 @@ +/* + * @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 m() { return null; }; + } + + interface SAM1 { + Foo m(Foo fs); + } + + interface SAM2 { + Integer m(Foo fi); + } + + interface SAM3 { + Object m(Foo 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); + } +}