Version 1.2 of ai05s/ai05-0255-1.txt

Unformatted version of ai05s/ai05-0255-1.txt version 1.2
Other versions for file ai05s/ai05-0255-1.txt

!standard 3.1(6/2)          11-07-20 AI05-0255-1/02
!standard 3.3.1(23)
!standard 8.1(4)
!class Amendment 11-06-16
!status ARG Approved 13-0-0 11-06-24
!status work item 11-06-16
!status received 11-04-13
!priority Low
!difficulty Easy
!subject Missing text about user-defined iterators and quantified expressions
!summary
!proposal
(1) A quantified expression introduces a new way of declaring an identifier
(via a loop_parameter_specification or iterator_specification); this means that the rules on declarative regions and scoping have to account for it, but this wasn't done.
I've gone through Chapter 8, and I think the only thing that needs to be done is to add, after 8.1(6) [or somewhere else in the list, if preferred]:
a quantified_expression.
(2) The language has added an iterator_specification, which is used
roughly in the same kinds of places that a loop_parameter_specification is allowed and declares an identifier like a loop_parameter_specification does. Thus, in most of the Standard, an iterator_specification should also be dealt with in places where a loop_parameter_specification is mentioned. In particular, iterator_specification needs to be added to 3.1(6). Also, 3.3.1(23) [which is a Note] and AARM sections 8.6(6.a) and 13.3.1(5.b) should include iterator_specification.
!wording
In 3.1(6/2), add "an iterator_specification" after "a loop_parameter_specification".
In 3.3.1(23), add "iterator_specification" after "a loop_parameter_specification".
Add after 8.1(4):
* a quantified_expression;
[This list is roughly in the order of importance of the contents. - Editor]
In 13.3.1(4.b/3), add "iterator_specification -- NO".
!discussion
The AARM Note 8.6(6.a) is just an example, and does not need to list all of these things, so it does not need to be changed.
!corrigendum 3.1(6/2)
Replace the paragraph:
Each of the following is defined to be a declaration: any basic_declaration; an enumeration_literal_specification; a discriminant_specification; a component_declaration; a loop_parameter_specification; a parameter_specification; a subprogram_body; an entry_declaration; an entry_index_specification; a choice_parameter_specification; a generic_formal_parameter_declaration. In addition, an extended_return_statement is a declaration of its defining_identifier.
by:
Each of the following is defined to be a declaration: any basic_declaration; an enumeration_literal_specification; a discriminant_specification; a component_declaration; a loop_parameter_specification; an >fa<iterator_specification>; a parameter_specification; a subprogram_body; an entry_declaration; an entry_index_specification; a choice_parameter_specification; a generic_formal_parameter_declaration. In addition, an extended_return_statement is a declaration of its defining_identifier.
!corrigendum 3.3.1(23)
Replace the paragraph:
8 As indicated above, a stand-alone object is an object declared by an object_declaration. Similar definitions apply to "stand-alone constant" and "stand-alone variable." A subcomponent of an object is not a stand-alone object, nor is an object that is created by an allocator. An object declared by a loop_parameter_specification, parameter_specification, entry_index_specification, choice_parameter_specification, or a formal_object_declaration is not called a stand-alone object.
by:
8 As indicated above, a stand-alone object is an object declared by an object_declaration. Similar definitions apply to "stand-alone constant" and "stand-alone variable." A subcomponent of an object is not a stand-alone object, nor is an object that is created by an allocator. An object declared by a loop_parameter_specification, iterator_specification, parameter_specification, entry_index_specification, choice_parameter_specification, or a formal_object_declaration is not called a stand-alone object.
!corrigendum 8.1(4)
Insert after the paragraph:
the new paragraph:
!ACATS test
None needed.
!ASIS
No ASIS effect.
!appendix

!topic Omissions in RM2012
!reference 8.1(6), 3.1(6), 3.3.1(23), AARM 8.6(6.a), 13.3.1(5.b)
!from Adam Beneschan 11-04-13
!discussion

A couple things I noticed that I think are missing from RM2012:

(1) A quantified expression is a new way of declaring an identifier
    (via a loop_parameter_specification or iterator_specification);
    this means that the rules on declarative regions and scoping have
    to account for it, but this wasn't done.

    I've gone through Chapter 8, and I think the only thing that needs
    to be done is to add, after 8.1(6) [or somewhere else in the list,
    if preferred]:

       a quantified_expression.

(2) The language has added an iterator_specification, which is used
    roughly in the same kinds of places that a
    loop_parameter_specification is allowed and declares an identifier
    like a loop_parameter_specification does.  Thus, in most of the
    RM, an iterator_specification should also be dealt with in places
    where a loop_parameter_specification is mentioned.  In particular,
    iterator_specification needs to be added to 3.1(6).  Also,
    3.3.1(23) [which is a Note] and AARM sections 8.6(6.a) and
    13.3.1(5.b) should include iterator_specification.  (I determined
    this by searching the text files currently available from
    www.ada-auth.org, which I know aren't quite up to date; so it's
    possible, but not likely, that there are other instances of
    loop_parameter_specification that I wasn't able to find.)

****************************************************************



Questions? Ask the ACAA Technical Agent