On 10/31/2019 7:17 AM, Gavin Bierman wrote:
(Alongside is a draft JVM spec for this feature:
http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191031/specs/records-jvms.html
)

I looked at this for the CSR JDK-8233595. The `component_info` structure which is mentioned all over the place really tripped me up. Unlike fields and methods, a component isn't a first-class JVM construct, so a simple (i.e. unqualified) name is not deserved. Even the JLS always uses the qualified name, "record component" (if nothing else, to distinguish from "array component").

It would be wrong to replace mentions of the `component_info` structure with mentions of the `Record_attribute` structure, because `Record_attribute` isn't literally the structure which holds attributes (whereas the oft-mentioned `Code_attribute` structure really is). It would also be clunky to spell out "the `component_info` structure of the `Record_attribute` structure" in many places.

For spec clarity, please rename `component_info` to `record_component_info`. (From a search of internal mail, I believe `component_info` was introduced around 7/24 in a discussion about annotations on record components, as an alternative to reusing the `field_info` structure in Record. Now that the term has spread throughout JVMS ch.4, it's time to name it properly.)

As an aside, please drop "We're being intentionally vague here about just what it means for a class to have a "component"." and strengthen the opener: "The Record attribute is a variable-length attribute in the attributes table of a ClassFile structure. ***A `Record` attribute indicates that this class is a _record type_ (JLS ยง8.10), declared with a list of _record components_.***" [Almost certainly declared _in source code_, but maybe this class file was auto-generated, so no need to say how the record type was declared ... but it was, since here we are in its class file.]

Alex

Reply via email to