test/tools/javac/lambda/TargetType02.java

changeset 2000
4a6acc42c3a1
parent 1415
01c9d4161882
child 2370
acd64168cf8b
equal deleted inserted replaced
1999:7993cfab8610 2000:4a6acc42c3a1
1 /* 1 /*
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
25 * @test 25 * @test
26 * @bug 8003280 26 * @bug 8003280
27 * @summary Add lambda tests 27 * @summary Add lambda tests
28 * check overload resolution and target type inference w.r.t. generic methods 28 * check overload resolution and target type inference w.r.t. generic methods
29 * @author Maurizio Cimadamore 29 * @author Maurizio Cimadamore
30 * @run main TargetType02 30 * @compile/fail/ref=TargetType02.out -XDrawDiagnostics TargetType02.java
31 */ 31 */
32 32
33 public class TargetType02 { 33 public class TargetType02 {
34
35 static int assertionCount = 0;
36
37 static void assertTrue(boolean cond) {
38 assertionCount++;
39 if (!cond)
40 throw new AssertionError();
41 }
42 34
43 interface S1<X extends Number> { 35 interface S1<X extends Number> {
44 X m(Integer x); 36 X m(Integer x);
45 } 37 }
46 38
47 interface S2<X extends String> { 39 interface S2<X extends String> {
48 abstract X m(Integer x); 40 abstract X m(Integer x);
49 } 41 }
50 42
51 static <Z extends Number> void call(S1<Z> s) { s.m(1); assertTrue(true); } 43 static <Z extends Number> void call1(S1<Z> s) { }
52 static <Z extends String> void call(S2<Z> s) { s.m(2); assertTrue(false); } 44
45 static <Z extends String> void call2(S2<Z> s) { }
46
47 static <Z extends Number> void call3(S1<Z> s) { }
48 static <Z extends String> void call3(S2<Z> s) { }
53 49
54 void test() { 50 void test() {
55 call(i -> { toString(); return i; }); 51 call1(i -> { toString(); return i; });
56 } 52 call2(i -> { toString(); return i; });
57 53 call3(i -> { toString(); return i; });
58 public static void main(String[] args) {
59 new TargetType02().test();
60 assertTrue(assertionCount == 1);
61 } 54 }
62 } 55 }

mercurial