test/tools/javac/lambda/TargetType02.java

Wed, 27 Apr 2016 01:34:52 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:34:52 +0800
changeset 0
959103a6100f
child 2525
2eb010b6cb22
permissions
-rw-r--r--

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 }

mercurial