8064464: regression with type inference of conditional expression

Bad classification of conditional leads to spurious error

Reviewed-by: jlahoda
This commit is contained in:
Maurizio Cimadamore 2014-11-12 12:41:32 +00:00
parent 732c7c5e28
commit ed9c1bb743
7 changed files with 52 additions and 13 deletions

View file

@ -1,14 +1,16 @@
/*
* @test /nodynamiccopyright/
* @bug 4974927
* @bug 4974927 8064464
* @summary The compiler was allowing void types in its parsing of conditional expressions.
* @author tball
*
* @compile/fail/ref=ConditionalWithVoid.out -XDrawDiagnostics ConditionalWithVoid.java
*/
public class ConditionalWithVoid {
public int test(Object o) {
// Should fail to compile since Object.wait() has a void return type.
public void test(Object o) {
// Should fail to compile since Object.wait() has a void return type. Poly case.
System.out.println(o instanceof String ? o.hashCode() : o.wait());
// Should fail to compile since Object.wait() has a void return type. Standalone case.
(o instanceof String ? o.hashCode() : o.wait()).toString();
}
}