test/tools/javac/lambda/TargetType02.java

changeset 0
959103a6100f
child 2525
2eb010b6cb22
equal deleted inserted replaced
-1:000000000000 0:959103a6100f
1 /*
2 * @test /nodynamiccopyright/
3 * @bug 8003280 8029718
4 * @summary Add lambda tests
5 * check overload resolution and target type inference w.r.t. generic methods
6 * Should always use lambda body structure to disambiguate overload resolution
7 * @author Maurizio Cimadamore
8 * @compile/fail/ref=TargetType02.out -XDrawDiagnostics TargetType02.java
9 */
10
11 public class TargetType02 {
12
13 interface S1<X extends Number> {
14 X m(Integer x);
15 }
16
17 interface S2<X extends String> {
18 abstract X m(Integer x);
19 }
20
21 static <Z extends Number> void call1(S1<Z> s) { }
22
23 static <Z extends String> void call2(S2<Z> s) { }
24
25 static <Z extends Number> void call3(S1<Z> s) { }
26 static <Z extends String> void call3(S2<Z> s) { }
27
28 static <Z extends Number> Z call4(S1<Z> s) { return null; }
29 static <Z extends String> Z call4(S2<Z> s) { return null; }
30
31 void test() {
32 call1(i -> { toString(); return i; });
33 call2(i -> { toString(); return i; });
34 call3(i -> { toString(); return i; });
35 call3(i -> {
36 toString();
37 return call4(j -> {
38 return j;
39 });
40 });
41 }
42 }

mercurial