----- Mail original ----- > De: "Alex Buckley" <alex.buck...@oracle.com> > À: "amber-spec-experts" <amber-spec-experts@openjdk.java.net> > Envoyé: Jeudi 10 Octobre 2019 19:41:31 > Objet: Re: Fields and methods of a record are marked MANDATED
> Enum types are specified such that a `values` method is always > implicitly declared. (If you declare one explicitly, you have two method > declarations with override-equivalent signatures, which is an error per > JLS 8.4.) Accordingly, the corresponding method in the class file should > always be marked as mandated. Sadly we don't have room for an > ACC_MANDATED flag in `method_info`, but morally the method is mandated > and Core Reflection should expose that fact. ACC_MANDATED is 0x8000 so you can use it on methods. But not on class because it's ACC_MODULE. [...] > > Alex Rémi > > On 10/10/2019 9:09 AM, Brian Goetz wrote: >> Under that interpretation, that leaves record members in a funny place, >> since a >> given mandated member (e.g., an accessor for a component) _might_ have been >> explicit in the source, or might not have been. Should ACC_MANDATED describe >> the member descriptor (“spec mandates a member with this descriptor”) or only >> the implementation (“the source didn’t have it, but its here in the byte >> code”)? In the latter interpretation, the presence of ACC_MANDATED on a >> mandated member would basically be random, based on >> implementation-of-the-day, >> which seems wrong. >> >>> On Oct 10, 2019, at 12:06 PM, Joe Darcy <joe.da...@oracle.com> wrote: >>> >>> A mandated construct is one that is mandated by the specification, but not >>> explicitly declared. Constructs of that sort have been in the platform since >>> the beginning, such as default constructors. ACC_MANDATED was added to the >>> platform only more recently and has some exposure through javax.lang.model. >>> >>> I recommend going forward ACC_MANDATED to be used more widely, on all the >>> mandated structures, including the values methods on enum types, etc. >>> >>> Cheers, >>> >>> -Joe >>> >>> On 10/10/2019 8:50 AM, Brian Goetz wrote: >>>> We should match the behavior of methods like `Enum::values`. >>>> >>>>> On Oct 10, 2019, at 10:15 AM, Remi Forax <fo...@univ-mlv.fr> wrote: >>>>> >>>>> Hi all, >>>>> fields and methods of a record are marked ACC_MANDATED which contradict >>>>> JLS >>>>> 13.1.12 that explains that you can not use ACC_MANDATED on field and >>>>> method. >>>>> >>>>> regards, >>>>> Rémi >>>>>