RFR: 8292275: javac does not emit SYNTHETIC and MANDATED flags for parameters by default [v8]

Julian Waters jwaters at openjdk.org
Sat Apr 29 20:19:28 UTC 2023

On Sat, 29 Apr 2023 19:03:23 GMT, Hannes Greule <duke at openjdk.org> wrote:

>> With this change, javac emits the MethodParameters attribute in cases where the JLS requires the information about synthetic and mandated parameters to be stored (see issue).
>> Parameter names are *not* emitted unless the `-parameter` flag is set.
>> The relevant changes are in `ClassWriter`, where we go through the params to see if we need the attribute if the `-parameter` flag is not set (if it is set, both names and flags will be emitted).
>> For records, the mandated flag wasn't set at all, this is solved by the one line fix in `JavacParser`.
>> The changes to `CreateSymbols` and `ClassReader` are needed as they weren't able to deal with missing names in the attribute.
>> I also had to update some tests as they got a new constant pool entry.
>> Only the mandated flag is covered by tests at the moment, as the occurrences are well-specified in the JLS.
>> Please let me know if you want tests for specific appearances of synthetic parameters.
> Hannes Greule has updated the pull request incrementally with one additional commit since the last revision:
>   Use ternary operator
>   Co-authored-by: liach <7806504+liach at users.noreply.github.com>

Windows Failures are due to a longstanding (and annoying) build system bug that's been around for quite a while by this point, and aren't related to this PR in any way

Shall I do the honours?


PR Comment: https://git.openjdk.org/jdk/pull/9862#issuecomment-1528861568

More information about the compiler-dev mailing list