1 /* 2 * @test /nodynamiccopyright/ 3 * @bug 4974927 8064464 4 * @summary The compiler was allowing void types in its parsing of conditional expressions. 5 * @author tball 6 * 7 * @compile/fail/ref=ConditionalWithVoid.out --enable-preview -source 12 -XDrawDiagnostics ConditionalWithVoid.java 8 */ 9 public class ConditionalWithVoid { 10 public void test(Object o, String s) { 11 // Should fail to compile since Object.wait() has a void return type. Poly case. 12 System.out.println(o instanceof String ? o.hashCode() : o.wait()); 13 // Should fail to compile since Object.wait() has a void return type. Standalone case. 14 (o instanceof String ? o.hashCode() : o.wait()).toString(); 15 // Should fail to compile since Object.wait() has a void return type. Poly case. 16 System.out.println(switch (s) {case "" -> o.hashCode(); default -> o.wait();}); 17 // Should fail to compile since Object.wait() has a void return type. Standalone case. 18 (switch (s) {case "" -> o.hashCode(); default -> o.wait();}).toString(); 19 } 20 }