diff -r 000000000000 -r 959103a6100f test/tools/javac/lambda/TargetType21.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/lambda/TargetType21.java Wed Apr 27 01:34:52 2016 +0800 @@ -0,0 +1,35 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8003280 + * @summary Add lambda tests + * check that candidates with cyclic type-inference are removed from the + * set of applicable methods + * @compile/fail/ref=TargetType21.out -XDrawDiagnostics TargetType21.java + */ + +class TargetType21 { + interface SAM1 { + String m1(Integer n) throws Exception; + } + + interface SAM2 { + void m2(Integer n); + } + + interface SAM3 { + R m3(A n); + } + + void call(SAM1 sam) { } + void call(SAM2 sam) { } + void call(SAM3 sam) { } + + void test() { + call(x -> { throw new Exception(); }); //ambiguous + call((Integer x) -> { System.out.println(""); }); //ok (only one is void) + call((Integer x) -> { return (Object) null; }); //ok (only one returns Object) + call(x -> { System.out.println(""); }); //ambiguous + call(x -> { return (Object) null; }); //ambiguous + call(x -> { return null; }); //ambiguous + } +}