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 * compiler throw AssertionError while backtracing from speculative attribution round
6 * @compile/fail/ref=TargetType44.out -XDrawDiagnostics TargetType44.java
7 */
8 class TargetType44 {
10 interface Unary {
11 void m(int i1);
12 }
14 interface Binary {
15 void m(int i1, int i2);
16 }
18 void m(Unary u) { }
19 void m(Binary u) { }
21 void test() {
22 m(()-> { new Object() { }; }); //fail
23 m(x -> { new Object() { }; }); //ok
24 m((x, y) -> { new Object() { }; }); //ok
25 m((x, y, z) -> { new Object() { }; }); //fail
26 }
27 }