Wed, 27 Apr 2016 01:34:52 +0800
Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/langtools/
changeset: 2573:53ca196be1ae
tag: jdk8u25-b17
aoqi@0 | 1 | /* |
aoqi@0 | 2 | * @test /nodynamiccopyright/ |
aoqi@0 | 3 | * @bug 8003280 8029718 |
aoqi@0 | 4 | * @summary Add lambda tests |
aoqi@0 | 5 | * check overload resolution and target type inference w.r.t. generic methods |
aoqi@0 | 6 | * Should always use lambda body structure to disambiguate overload resolution |
aoqi@0 | 7 | * @author Maurizio Cimadamore |
aoqi@0 | 8 | * @compile/fail/ref=TargetType02.out -XDrawDiagnostics TargetType02.java |
aoqi@0 | 9 | */ |
aoqi@0 | 10 | |
aoqi@0 | 11 | public class TargetType02 { |
aoqi@0 | 12 | |
aoqi@0 | 13 | interface S1<X extends Number> { |
aoqi@0 | 14 | X m(Integer x); |
aoqi@0 | 15 | } |
aoqi@0 | 16 | |
aoqi@0 | 17 | interface S2<X extends String> { |
aoqi@0 | 18 | abstract X m(Integer x); |
aoqi@0 | 19 | } |
aoqi@0 | 20 | |
aoqi@0 | 21 | static <Z extends Number> void call1(S1<Z> s) { } |
aoqi@0 | 22 | |
aoqi@0 | 23 | static <Z extends String> void call2(S2<Z> s) { } |
aoqi@0 | 24 | |
aoqi@0 | 25 | static <Z extends Number> void call3(S1<Z> s) { } |
aoqi@0 | 26 | static <Z extends String> void call3(S2<Z> s) { } |
aoqi@0 | 27 | |
aoqi@0 | 28 | static <Z extends Number> Z call4(S1<Z> s) { return null; } |
aoqi@0 | 29 | static <Z extends String> Z call4(S2<Z> s) { return null; } |
aoqi@0 | 30 | |
aoqi@0 | 31 | void test() { |
aoqi@0 | 32 | call1(i -> { toString(); return i; }); |
aoqi@0 | 33 | call2(i -> { toString(); return i; }); |
aoqi@0 | 34 | call3(i -> { toString(); return i; }); |
aoqi@0 | 35 | call3(i -> { |
aoqi@0 | 36 | toString(); |
aoqi@0 | 37 | return call4(j -> { |
aoqi@0 | 38 | return j; |
aoqi@0 | 39 | }); |
aoqi@0 | 40 | }); |
aoqi@0 | 41 | } |
aoqi@0 | 42 | } |