!standard 4.1.3 (13) 05-02-08 AI95-00407/02 !class amendment 05-02-07 !status work item 05-02-07 !status received 05-02-07 !priority High !difficulty Easy !subject Terminology and semantics of prefixed names !summary (See proposal.) !problem The description of the Obj.Op notation in 4.1.3 is quite confused (and occasionally incorrect) because we do not have a technical term to designate this notation. A rule must be added in 4.1.3 to make illegal to write a prefixed name whose prefix is a constant and whose first parameter may be modified by the subprogram. Some of the description in 4.1.3 has to do with calls, not names, and furthermore it's not exactly correct in the presence of renamings. !proposal We introduce *prefixed name* to denote the Obj.Op notation and use this technical term when appropriate. We add a rule to disallow a prefixed name if the prefix is constant and the first parameter is of mode *out*, *in out*, or of an access-to-variable type. This rule should be a legality rule, not a name resolution rule, for consistency with what we do for normal calls. Wording in added in 6.4(10) to explain the dynamic semantics of calls to prefixed names, including calls that go through renamings. !wording Change the last sentence of 4.1.3(9.2/2) to read: The selected_component is called a *prefixed name* and denotes a view of this subprogram that omits the first formal parameter. Change 4.1.3(13.1/2) to read: If a prefixed name denotes a view of a subprogram whose first parameter is an access parameter, the prefix shall denote an aliased view of an object. Add after 4.1.3(13.1/2): If a prefixed name denotes a view of a subprogram whose first parameter is of mode *in out* or *out*, or of an anonymous access-to-variable type, the prefix shall denote a variable. Remove 4.1.3(15.1/2) (it has to do with calls, not names). Change 6.3.1(10.1/2): the view of a subprogram denoted by a prefixed name (see 4.1.3). Add after 6.4(10): If the name or prefix of a subprogram call denotes a prefixed name, the subprogram call is equivalent to a call on the subprogram denoted by the selector_name of the prefixed name, with the first actual parameter being provided by the the prefix of the prefixed name (or the Access attribute of this prefix if the first formal parameter is an access parameter), and the remaining actual parameters given by the actual_parameter_part, if any. !discussion (See proposal.) !example --!corrigendum !ACATS test !appendix *************************************************************