| /* |
| * @test /nodynamiccopyright/ |
| * @bug 8003280 8029718 8078024 |
| * @summary Add lambda tests |
| * check overload resolution and target type inference w.r.t. generic methods |
| * Should always use lambda body structure to disambiguate overload resolution |
| * @author Maurizio Cimadamore |
| * @compile/fail/ref=TargetType02.out -XDrawDiagnostics TargetType02.java |
| */ |
| |
| public class TargetType02 { |
| |
| interface S1<X extends Number> { |
| X m(Integer x); |
| } |
| |
| interface S2<X extends String> { |
| abstract X m(Integer x); |
| } |
| |
| static <Z extends Number> void call1(S1<Z> s) { } |
| |
| static <Z extends String> void call2(S2<Z> s) { } |
| |
| static <Z extends Number> void call3(S1<Z> s) { } |
| static <Z extends String> void call3(S2<Z> s) { } |
| |
| static <Z extends Number> Z call4(S1<Z> s) { return null; } |
| static <Z extends String> Z call4(S2<Z> s) { return null; } |
| |
| void test() { |
| call1(i -> { toString(); return i; }); |
| call2(i -> { toString(); return i; }); |
| call3(i -> { toString(); return i; }); |
| call3(i -> { |
| toString(); |
| return call4(j -> { |
| return j; |
| }); |
| }); |
| } |
| } |