!standard 13.5.1(11) 04-11-11 AC95-00103/01 !class confirmation 04-11-11 !status received no action 04-11-11 !status received 04-10-08 !subject Record representation clauses on type extensions !summary !appendix !topic Record representation clauses on type extensions !reference RM95 13.5.1 !from Adam Beneschan 04-10-08 !discussion [second attempt, not sure the first one got through] 13.5.1(11) says, "Storage places within a component_list shall not overlap" [with exceptions for variant parts]. 13.5.1(14) says, "A record_representation_clause for a record extension does not override the layout of the parent part; if the layout was specified for the parent type, it is inherited by the record extension." What happens if a record_representation_clause for a record extension specifies a storage place for a component in the extension part, that overlaps with the storage place already determined for an inherited component? There doesn't appear to be anything that makes this illegal, assuming that the storage place already determined for the inherited component doesn't appear in the component_list. (This falls under the cases that 13.5.1(22) says that an implementation doesn't need to support; however, it seems to me that this should be an error.) (Note also that "inherited component" above should be taken to include discriminants of ancestor types that are not inherited, since space needs to be reserved for them in type extensions even though they're not visible in the view defined by the type extension.) **************************************************************** From: Tucker Taft Sent: Monday, October 11, 2004 8:44 PM Admittedly the rule in 13.5.1(11) is strange, in that it talks about the syntactic construct "component_list," rather than about the semantic notion of components. This approach leaves out discriminants (since they are in a separate syntactic construct, the discriminant_part). As you point out, there may also be discriminants that are "hidden", and there are the components of the parent. Of course the general rule applies that a rep-clause is illegal if the implementation does not support it. I don't think this is worth fixing, personally, but I agree that the existing wording is a bit bogus. ****************************************************************