Integrated: 8361445: javac crashes on unresolvable constant in @SuppressWarnings

Jan Lahoda jlahoda at openjdk.org
Tue Jul 8 12:06:46 UTC 2025


On Sun, 6 Jul 2025 07:40:47 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:

> Consider this code:
> 
> @SuppressWarnings(CONST)
> public class Ann {
>     public static final String CONST = "";
> }
> 
> 
> javac will crash attempting to compile it:
> 
> $ javac -XDdev /tmp/Ann.java
> /tmp/Ann.java:1: error: cannot find symbol
> @SuppressWarnings(CONST)
>                   ^
>   symbol: variable CONST
> 1 error
> An exception has occurred in the compiler (26-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.ClassCastException: class com.sun.tools.javac.code.Attribute$Error cannot be cast to class com.sun.tools.javac.code.Attribute$Constant (com.sun.tools.javac.code.Attribute$Error and com.sun.tools.javac.code.Attribute$Constant are in module jdk.compiler of loader 'app')
>         at jdk.compiler/com.sun.tools.javac.code.Lint.suppressionsFrom(Lint.java:533)
> ...
> 
> 
> The reason is that the unresolvable constant will be `Attribute.Error`, not `Attribute.Constant`, and there's an unguarded cast. The proposal herein is to improve error recovery by ignoring non-constant annotation attributes in `Lint.suppressionsFrom`. Such erroneous cases should have already been reported as compile-time errors anyway.

This pull request has now been integrated.

Changeset: 0bd2f9cb
Author:    Jan Lahoda <jlahoda at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/0bd2f9cba2118ed5a112b4c70b8ff4a1a58f21dd
Stats:     119 lines in 2 files changed: 116 ins; 0 del; 3 mod

8361445: javac crashes on unresolvable constant in @SuppressWarnings

Reviewed-by: asotona, liach

-------------

PR: https://git.openjdk.org/jdk/pull/26142


More information about the compiler-dev mailing list