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
mcimadamore@1415 | 1 | /* |
mcimadamore@1415 | 2 | * @test /nodynamiccopyright/ |
mcimadamore@1415 | 3 | * @bug 8003280 |
mcimadamore@1415 | 4 | * @summary Add lambda tests |
mcimadamore@1415 | 5 | * Check void-compatibility in strict vs. loose conversion contexts |
mcimadamore@1415 | 6 | * @compile/fail/ref=TargetType16.out -XDrawDiagnostics TargetType16.java |
mcimadamore@1415 | 7 | */ |
mcimadamore@1415 | 8 | |
mcimadamore@1415 | 9 | class TargetType16 { |
mcimadamore@1415 | 10 | |
mcimadamore@1415 | 11 | interface SAM1 { |
mcimadamore@1415 | 12 | void m1(); |
mcimadamore@1415 | 13 | } |
mcimadamore@1415 | 14 | |
mcimadamore@1415 | 15 | interface SAM2<X> { |
mcimadamore@1415 | 16 | X m2(); |
mcimadamore@1415 | 17 | } |
mcimadamore@1415 | 18 | |
mcimadamore@1415 | 19 | static void m(SAM1 s1) { } |
mcimadamore@1415 | 20 | static <T> void m(SAM2<T> s2) { } |
mcimadamore@1415 | 21 | |
mcimadamore@1415 | 22 | public static void main(String[] args) { |
mcimadamore@1415 | 23 | m(() -> { throw new AssertionError(); }); //ambiguous |
mcimadamore@1415 | 24 | } |
mcimadamore@1415 | 25 | } |