Fri, 05 Jul 2013 11:04:22 +0100
8016702: use of ternary operator in lambda expression gives incorrect results
Summary: Constant types erroneously creep in during inference
Reviewed-by: jjg, vromero
1 /*
2 * @test /nodynamiccopyright/
3 * @bug 8003280
4 * @summary Add lambda tests
5 * check that incompatible return types in lambdas are flagged with error
6 * @author Maurizio Cimadamore
7 * @compile/fail/ref=BadReturn.out -XDrawDiagnostics BadReturn.java
8 */
10 class BadReturn {
12 interface SAM {
13 Comparable<?> m();
14 }
16 static void testNeg1() {
17 SAM s = ()-> {
18 if (true) {
19 return "";
20 } else {
21 return System.out.println("");
22 }};
23 }
25 static void testNeg2() {
26 SAM s = ()-> { return System.out.println(""); };
27 }
29 static void testPos() {
30 SAM s = ()-> {
31 if (false) {
32 return 10;
33 }
34 else {
35 return true;
36 }};
37 }
38 }