Integrated: 8292275: javac does not emit SYNTHETIC and MANDATED flags for parameters by default

Hannes Greule duke at openjdk.org
Sun Apr 30 07:47:29 UTC 2023


On Fri, 12 Aug 2022 19:54:59 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.

This pull request has now been integrated.

Changeset: b3dbf28b
Author:    Hannes Greule <SirYwell at users.noreply.github.com>
Committer: Julian Waters <jwaters at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/b3dbf28bc0614bee2f7137af95389134155c9511
Stats:     627 lines in 9 files changed: 520 ins; 23 del; 84 mod

8292275: javac does not emit SYNTHETIC and MANDATED flags for parameters by default

Co-authored-by: Chen Liang <liach at openjdk.org>
Reviewed-by: vromero, jwaters

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

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


More information about the compiler-dev mailing list