RFR: JDK-8236692: static final fields without initializer are accepted by javac

Vicente Romero vicente.romero at oracle.com
Wed Jan 8 03:39:05 UTC 2020


I have updated the patch after an offline review with Maurizio, 
basically I have rewritten how Flow deals with the compact constructor 
to isolate it as a special case. The new iteration is at [1]. I have 
basically restored the original code for method checkInit and added a 
special case for the compact constructor.


[1] http://cr.openjdk.java.net/~vromero/8236692/webrev.01/

On 1/7/20 3:18 PM, Vicente Romero wrote:
> Please review the fix for [1] at [2], javac was failing to issue an 
> error for code like:
> record R() {
>     public static final int X;
> }
> even though `X` was not initialized as the automatic code to generate 
> initializer expressions only apply to the fields generated from the 
> record component. The patch updates the code in Flow that analyzes 
> compact constructors to don't bail out if the variable being analyzed 
> is static.
> Thanks,
> Vicente
> [1] https://bugs.openjdk.java.net/browse/JDK-8236692
> [2] http://cr.openjdk.java.net/~vromero/8236692/webrev.00/

More information about the compiler-dev mailing list