Version 1.3 of 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 Amendment 2012 11-07-20
!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 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