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