RFR: 8292275: javac does not emit SYNTHETIC and MANDATED flags for parameters by default [v4]
Joe Darcy
darcy at openjdk.org
Mon Aug 22 21:14:41 UTC 2022
On Fri, 19 Aug 2022 13:05:10 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 two additional commits since the last revision:
>
> - cleanup
> - add annotation processing test
test/langtools/tools/javac/processing/model/util/elements/MethodParameters/ClassContainer.java line 1:
> 1: /*
I recommend folding the enum being processed into the source of ImplicitParametersProcessor.java. The jtreg tags can then first compile the source of the processor and then secondly run the processor on itself. This technique is commonly used in annotation processing tests.
-------------
PR: https://git.openjdk.org/jdk/pull/9862
More information about the compiler-dev
mailing list