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

Jan Lahoda jlahoda at openjdk.org
Sun Jul 6 07:45:57 UTC 2025


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.

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

Commit messages:
 - 8361445: javac crashes on unresolvable constant in @SuppressWarnings

Changes: https://git.openjdk.org/jdk/pull/26142/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26142&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8361445
  Stats: 56 lines in 2 files changed: 53 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/26142.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/26142/head:pull/26142

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


More information about the compiler-dev mailing list