< prev index next >

test/langtools/tools/javac/ConditionalWithVoid.java

Print this page
rev 51258 : imported patch switch

*** 2,16 **** * @test /nodynamiccopyright/ * @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 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(); } } --- 2,20 ---- * @test /nodynamiccopyright/ * @bug 4974927 8064464 * @summary The compiler was allowing void types in its parsing of conditional expressions. * @author tball * ! * @compile/fail/ref=ConditionalWithVoid.out --enable-preview -source 12 -XDrawDiagnostics ConditionalWithVoid.java */ public class ConditionalWithVoid { ! public void test(Object o, String s) { // 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(); + // Should fail to compile since Object.wait() has a void return type. Poly case. + System.out.println(switch (s) {case "" -> o.hashCode(); default -> o.wait();}); + // Should fail to compile since Object.wait() has a void return type. Standalone case. + (switch (s) {case "" -> o.hashCode(); default -> o.wait();}).toString(); } }
< prev index next >