RFR: 8337976: Insufficient error recovery in parser for switch inside class body [v2]
Vicente Romero
vromero at openjdk.org
Mon Aug 12 14:45:34 UTC 2024
On Mon, 12 Aug 2024 12:06:15 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:
>> Consider this code:
>>
>> public class T9999999 {
>> switch (0) { default: }
>> }
>>
>>
>> When trying to compile this, javac crashes:
>>
>>
>> $ .../jdk-22/bin/javac -XDdev /tmp/T9999999.java
>> /tmp/T9999999.java:2: error: switch expression does not have any result expressions
>> switch (0) { default: } f;
>> ^
>> 1 error
>> An exception has occurred in the compiler (22.0.1-internal). Please file a bug against the Java compiler via the Java bug reporting page (https://bugreport.java.com/) after checking the Bug Database (https://bugs.java.com/) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
>> java.lang.AssertionError: Unexpected tree: switch (0) {
>> default:
>>
>> } with kind: SWITCH_EXPRESSION within: switch (0) {
>> default:
>>
>> } with kind: SWITCH_EXPRESSION
>> at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:162)
>> at jdk.compiler/com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.validateAnnotatedType(Attr.java:5881)
>> at jdk.compiler/com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitVarDef(Attr.java:5727)
>> at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:1022)
>> at jdk.compiler/com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:50)
>> at jdk.compiler/com.sun.tools.javac.comp.Attr$TypeAnnotationsValidator.visitClassDef(Attr.java:5780)
>> at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:814)
>> at jdk.compiler/com.sun.tools.javac.comp.Attr.validateTypeAnnotations(Attr.java:5677)
>> at jdk.compiler/com.sun.tools.javac.code.TypeAnnotations.lambda$validateTypeAnnotationsSignatures$1(TypeAnnotations.java:144)
>> at jdk.compiler/com.sun.tools.javac.comp.Annotate.flush(Annotate.java:200)
>> at jdk.compiler/com.sun.tools.javac.comp.Annotate.unblockAnnotations(Annotate.java:144)
>> at jdk.compiler/com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:157)
>> at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterDone(JavaCompiler.java:1827)
>> at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1081)
>> at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:947)
>> at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:319)
>> at jdk.compiler/com.sun.tools.javac.main.Main....
>
> Jan Lahoda has updated the pull request incrementally with one additional commit since the last revision:
>
> Adding a comment for the isDefiniteStatementStartToken.
lgtm
-------------
Marked as reviewed by vromero (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/20526#pullrequestreview-2233260341
More information about the compiler-dev
mailing list