Version 1.1 of ais/ai-00407.txt
!standard 4.1.3 (13) 05-02-07 AI95-00407/01
!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 prefix 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 prefix view 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 prefix name to denote the Obj.Op notation and use this technical
term when appropriate.
We add a rule to disallow a prefix 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 prefix
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 prefix 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 prefix 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 prefix 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.
Change 6.3.1(10.1/2):
the view of a subprogram denoted by a prefix name (see 4.1.3).
Remove 6.3.1(15.1/2) (it has to do with calls, not names).
Add after 6.4(10):
If the name or prefix of a subprogram call denotes a prefix name, the subprogram
call is equivalent to a call on the subprogram denoted by the selector_name of
the prefix name, with the first actual parameter being provided by the the
prefix of the prefix_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
*************************************************************
Questions? Ask the ACAA Technical Agent