RFR: JDK-8236692: static final fields without initializer are accepted by javac
Vicente Romero
vicente.romero at oracle.com
Wed Jan 8 13:40:14 UTC 2020
On 1/8/20 6:38 AM, Maurizio Cimadamore wrote:
>
> The Flow patch looks great and it brings back some sanity into the
> code - after all adding the special case for compact constructor is
> not so bad, and is now called out in its own special case, which makes
> the code more readable.
>
> On the test - I'm not sure, why is the test source defined in two
> strings - as in
>
> "record R() { # }", "static final String x;"
> Doesn't this mean the second string will be replaced for the "#" ?
yes
> But since there's only one string, why having the replacement at all?
> I noted this idiom in most of the negative tests.
yes we can do either, although there are already other cases of one
liners using this idiom
> Maurizio
Vicente
>
> On 08/01/2020 03:39, Vicente Romero wrote:
>> Hi,
>>
>> 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.
>>
>> Thanks,
>> Vicente
>>
>> [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/
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20200108/ab0abc8a/attachment.htm>
More information about the compiler-dev
mailing list