1 /*
2  * @test /nodynamiccopyright/
3  * @bug 8003280
4  * @summary Add lambda tests
5  *  check that candidates with cyclic type-inference are removed from the
6  *          set of applicable methods
7  * @compile/fail/ref=TargetType21.out -XDrawDiagnostics TargetType21.java
8  */
9 
10 class TargetType21 {
11     interface SAM1 {
m1(Integer n)12         String m1(Integer n) throws Exception;
13     }
14 
15     interface SAM2 {
m2(Integer n)16         void m2(Integer n);
17     }
18 
19     interface SAM3<R,A> {
m3(A n)20         R m3(A n);
21     }
22 
call(SAM1 sam)23     void call(SAM1 sam) { }
call(SAM2 sam)24     void call(SAM2 sam) { }
call(SAM3<R,A> sam)25     <R,A> void call(SAM3<R,A> sam) { }
26 
test()27     void test() {
28         call(x -> { throw new Exception(); }); //ambiguous
29         call((Integer x) -> { System.out.println(""); }); //ok (only one is void)
30         call((Integer x) -> { return (Object) null; }); //ok (only one returns Object)
31         call(x -> { System.out.println(""); }); //ambiguous
32         call(x -> { return (Object) null; }); //ambiguous
33         call(x -> { return null; }); //ambiguous
34     }
35 }
36