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

Hannes Greule duke at openjdk.org
Sat Aug 13 17:03:57 UTC 2022


On Fri, 12 Aug 2022 22:38:49 GMT, Joe Darcy <darcy at openjdk.org> wrote:

>> src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java line 4023:
>> 
>>> 4021:                         tmpParams.add(F.at(param)
>>> 4022:                                 // we will get flags plus annotations from the record component
>>> 4023:                                 .VarDef(F.Modifiers(Flags.PARAMETER | Flags.GENERATED_MEMBER | Flags.MANDATED | param.mods.flags & Flags.VARARGS,
>> 
>> Should the use of MANDATED be conditional on the target class file version?
>
> I advise also writing a core reflection test that uses access flags (java.lang.reflect.AccessFlag).

> Should the use of MANDATED be conditional on the target class file version?

I don't think this is needed. The JLS mentions the parameters of canonical record constructors in Java 14 already. Previous versions don't have records and shouldn't enter that method at all.

> I advise also writing a core reflection test that uses access flags (java.lang.reflect.AccessFlag).

Will do. I assume the `jdk/java/lang/reflect/AccessFlag` folder is a good place for that?

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

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



More information about the build-dev mailing list