CVS difference for ai12s/ai12-0003-1.txt
--- ai12s/ai12-0003-1.txt 2015/01/29 05:06:07 1.15
+++ ai12s/ai12-0003-1.txt 2015/01/30 05:23:09 1.16
@@ -1,7 +1,8 @@
!standard 8.2(11) 15-01-29 AI12-0003-1/09
+!standard 13.11.3(1/3)
!standard 13.11.3(3.1/3)
+!standard 13.11.3(4/3)
!standard 13.11.3(4.1/3)
-!standard 13.11.3(4.2/3)
!standard 13.11.3(5/3)
!standard 13.11.3(6.2/3)
!standard 13.11.3(6.3/3)
@@ -41,33 +42,17 @@
region extending from immediately after the pragma
to end of the the declarative region immediately enclosing the pragma.
-Modify 13.11.3(3.1/3):
+Replace the deleted 13.11.3(1/3):
- storage_pool_indicator ::= storage_pool_name | null {| Standard}
+ Redundant[Pragma and aspect Default_Storage_Pool specify the storage pool that
+ will be used in the absence of an explicit specification of a storage pool or
+ size for an access type.]
-Modify 13.11.3 (4.1/3):
-
- If the pragma is used as a configuration pragma, the storage_pool_indicator
- shall be {either} null {or Standard}, and it defines the default pool to be
- {respectively} null {or Standard} within all applicable compilation units
- (see 10.1.5), except within the immediate scope of another pragma
- Default_Storage_Pool. Otherwise, [the pragma occurs immediately within a
- sequence of declarations, and] it defines the default pool within the
- immediate scope of the pragma to be either null{, Standard,} or the pool
- denoted by the storage_pool_name, except within the immediate scope of a
- later pragma Default_Storage_Pool. Redundant [Thus, an inner pragma overrides
- an outer one.]
-
-Add after 13.11.3 (4.1/3):
-
- Except within the immediate scope of a later Default_Storage_Pool pragma, the
- Standard storage_pool_indicator causes the storage pool of any access type to
- be the standard storage pool as described in 13.11.
+Modify 13.11.3(3.1/3):
-<<< AI Note: the wording carefully ties into 13.11, so that it works for
-instances. >>>>
+ storage_pool_indicator ::= storage_pool_name | null {| Standard}
-Add after 13.11.3(4.2/3):
+Add after 13.11.3(4/3):
The Standard storage_pool_indicator is an identifier specific to a
pragma (see 2.8) and does not denote any declaration. If the
@@ -76,13 +61,15 @@
visible at the point of the pragma, other than package Standard
itself.
-AARM Reason: The Standard storage_pool_indicator does not resolve to the package
- Standard as it is an identifier specific to a pragma. Resolving to package
- Standard would imply that the standard pool is an object declared in that
- package. A storage pool object however must be a variable (see 13.11), yet
- preelaborable packages depend on package Standard, which would require
- implementers to implement the standard storage pool with
- Preelaborable_Initialization, which is an unnecessary restriction.
+AARM Reason: We considering having the Standard storage_pool_indicator
+ resolve to package Standard rather than being an identifier specific to a
+ pragma. That would eliminate the need for a special check. But it would
+ be bizarre to have something that could resolve to either an object or a
+ (single) package, and resolving to package Standard would imply that the
+ standard pool is an object declared in that package. A storage pool object
+ must be a variable (see 13.11), yet preelaborable packages depend on package
+ Standard, which would require implementers to implement the standard storage
+ pool with Preelaborable_Initialization, which is an unnecessary restriction.
No declaration of Standard can ever be use-visible, as the language-defined
non-overloadable definition of Standard will hide any use-visible declarations.
@@ -91,24 +78,35 @@
confusion.
End AARM Reason.
+Modify 13.11.3 (4.1/3):
+
+ If the pragma is used as a configuration pragma, the storage_pool_indicator
+ shall be {either} null {or Standard}, and it defines the default pool to be
+ [null]{that storage_pool_indicator} within all applicable compilation units
+ (see 10.1.5), except within the immediate scope of another pragma
+ Default_Storage_Pool. Otherwise, Redundant[the pragma occurs immediately
+ within a sequence of declarations, and] it defines the default pool within the
+ immediate scope of the pragma to be [either null or the pool
+ denoted by the storage_pool_name]{that storage_pool_indicator}, except
+ within the immediate scope of a later pragma Default_Storage_Pool.
+ Redundant [Thus, an inner pragma overrides an outer one.]
+
Modify 13.11.3(5/3):
The language-defined aspect Default_Storage_Pool may be specified for a
generic instance; it defines the default pool for access types within an
instance. {The Default_Storage_Pool aspect may be specified as Standard,
- which defines the default pool to be Standard, otherwise the} [The] expected
- type for the Default_Storage_Pool aspect is Root_Storage_Pool'Class[.
- The]{and the} aspect_definition must be a name that denotes a variable. This
- aspect overrides any Default_Storage_Pool pragma that might apply to the
- generic unit; if the aspect is not specified, the default pool of the
- instance is that defined for the generic unit.
-
- Standard when used aspect_definition for the Default_Storage_Pool aspect is
- an identifier specific to an aspect (see 13.1.1) and does not denote any
- declaration. If the aspect_definition for the Default_Storage_Pool aspect
- is Standard, then there shall not be a declaration with defining identifier
- Standard that is immediately visible at the point of the aspect, other than
- package Standard itself.
+ which is an identifier specific to an aspect (see 13.1.1) and
+ defines the default pool to be Standard. When the Default_Storage_Pool aspect
+ is specified as Standard, then there shall not be a declaration with defining
+ identifier Standard that is immediately visible at the point of the aspect,
+ other than package Standard itself.
+
+ Otherwise, the} [The] expected type for the Default_Storage_Pool aspect is
+ Root_Storage_Pool'Class[. The]{and the} aspect_definition {shall}[must] be a
+ name that denotes a variable. This aspect overrides any Default_Storage_Pool
+ pragma that might apply to the generic unit; if the aspect is not specified,
+ the default pool of the instance is that defined for the generic unit.
Modify 13.11.3(6.2/3):
@@ -121,6 +119,9 @@
[there is no default pool;] the standard storage pool is used for the type as
described in 13.11.
+<<< AI Note: the wording carefully ties into 13.11, so that it works for
+instances. >>>>
+
!discussion
We do not want to give the standard storage pool a name, since it
@@ -141,99 +142,108 @@
@dinsa
The immediate scope of a declaration is also the immediate scope of the entity
or view declared by the declaration. Similarly, the scope of a declaration
-is also the scope of the entity or view declared by the declaration.
+is also the scope of the entity or view declared by the declaration.
@dinst
The immediate scope of a pragma which is not used
as a configuration pragma is defined to be the
region extending from immediately after the pragma
to end of the declarative region immediately enclosing the pragma.
-!corrigendum 13.11.3(3.1/3)
+!corrigendum 13.11.3(1/3)
@drepl
-@xindent<@fa<storage_pool_indicator> ::= @i<storage_pool_>@fa<name> | @b<null>>
-@dby
-@xindent<@fa<storage_pool_indicator> ::= @i<storage_pool_>@fa<name> | @b<null> | @fa<identifier>>
-
-Modify 13.11.3(3.1/3):
- storage_pool_indicator ::= storage_pool_name | null {| Standard}
+@dby
+Pragma and aspect Default_Storage_Pool specify the storage pool that
+will be used in the absence of an explicit specification of a storage pool or
+size for an access type.
-Modify 13.11.3 (4.1/3):
+!corrigendum 13.11.3(3.1/3)
- If the pragma is used as a configuration pragma, the storage_pool_indicator
- shall be {either} null {or Standard}, and it defines the default pool to be
- {respectively} null {or Standard} within all applicable compilation units
- (see 10.1.5), except within the immediate scope of another pragma
- Default_Storage_Pool. Otherwise, [the pragma occurs immediately within a
- sequence of declarations, and] it defines the default pool within the
- immediate scope of the pragma to be either null{, Standard,} or the pool
- denoted by the storage_pool_name, except within the immediate scope of a
- later pragma Default_Storage_Pool. Redundant [Thus, an inner pragma overrides
- an outer one.]
-
-Add after 13.11.3 (4.1/3):
-
- Except within the immediate scope of a later Default_Storage_Pool pragma, the
- Standard storage_pool_indicator causes the storage pool of any access type to
- be the standard storage pool as described in 13.11.
+@drepl
+@xindent<@fa<storage_pool_indicator> ::= @i<storage_pool_>@fa<name> | @b<null>>
+@dby
+@xindent<@fa<storage_pool_indicator> ::= @i<storage_pool_>@fa<name> | @b<null> | Standard>
-<<< AI Note: the wording carefully ties into 13.11, so that it works for
-instances. >>>>
+!corrigendum 13.11.3(4/3)
-Add after 13.11.3(4.2/3):
+@dinsa
+The @i<storage_pool_>@fa<name> shall denote a variable.
+@dinst
+The Standard @fa<storage_pool_indicator> is an identifier specific to a
+pragma (see 2.8) and does not denote any declaration. If the
+@fa<storage_pool_indicator> is Standard, then there shall not be a
+declaration with defining identifier Standard that is immediately
+visible at the point of the pragma, other than package Standard
+itself.
- The Standard storage_pool_indicator is an identifier specific to a
- pragma (see 2.8) and does not denote any declaration. If the
- storage_pool_indicator is Standard, then there shall not be a
- declaration with defining identifier Standard that is immediately
- visible at the point of the pragma, other than package Standard
- itself.
+!corrigendum 13.11.3(4.1/3)
-AARM Reason: The Standard storage_pool_indicator does not resolve to the package
- Standard as it is an identifier specific to a pragma. Resolving to package
- Standard would imply that the standard pool is an object declared in that
- package. A storage pool object however must be a variable (see 13.11), yet
- preelaborable packages depend on package Standard, which would require
- implementers to implement the standard storage pool with
- Preelaborable_Initialization, which is an unnecessary restriction.
+@drepl
+If the @fa<pragma> is used as a configuration pragma, the @fa<storage_pool_indicator>
+shall be @b<null>, and it defines the @i<default pool> to be @b<null> within all
+applicable compilation units (see 10.1.5), except within the immediate scope of
+another @fa<pragma> Default_Storage_Pool. Otherwise, the pragma occurs
+immediately within a sequence of declarations, and it defines the default pool
+within the immediate scope of the pragma to be either @b<null> or the pool denoted
+by the @i<storage_pool_>@fa<name>, except within the immediate scope of a later pragma
+Default_Storage_Pool. Thus, an inner pragma overrides an outer one.
+@dby
+If the @fa<pragma> is used as a configuration pragma, the @fa<storage_pool_indicator>
+shall be either @b<null> or Standard, and it defines the @i<default pool> to be that
+@fa<storage_pool_indicator> within all applicable compilation units
+(see 10.1.5), except within the immediate scope of another @fa<pragma>
+Default_Storage_Pool. Otherwise, the pragma occurs immediately
+within a sequence of declarations, and it defines the default pool within the
+immediate scope of the pragma to be that @fa<storage_pool_indicator>, except
+within the immediate scope of a later pragma Default_Storage_Pool.
+Thus, an inner pragma overrides an outer one.
- No declaration of Standard can ever be use-visible, as the language-defined
- non-overloadable definition of Standard will hide any use-visible declarations.
- Thus we need only concern ourselves with immediately visible declarations
- with the defining identifier Standard; that eliminates any possible
- confusion.
-End AARM Reason.
+!corrigendum 13.11.3(5/3)
-Modify 13.11.3(5/3):
+@drepl
+The language-defined aspect Default_Storage_Pool may be specified for a generic
+instance; it defines the
+default pool for access types within an instance. The expected type for the
+Default_Storage_Pool aspect is Root_Storage_Pool'Class. The @fa<aspect_definition>
+must be a name that denotes a variable. This aspect overrides any
+Default_Storage_Pool pragma that might apply to the generic unit; if the aspect
+is not specified, the default pool of the instance is that defined for the generic
+unit.
+@dby
+The language-defined aspect Default_Storage_Pool may be specified for a
+generic instance; it defines the default pool for access types within an
+instance. The Default_Storage_Pool aspect may be specified as Standard,
+which is an identifier specific to an aspect (see 13.1.1) and
+defines the default pool to be Standard. When the Default_Storage_Pool aspect
+is specified as Standard, then there shall not be a declaration with defining
+identifier Standard that is immediately visible at the point of the aspect,
+other than package Standard itself.
+
+Otherwise, the expected type for the Default_Storage_Pool aspect is
+Root_Storage_Pool'Class and the @fa<aspect_definition> shall be a
+@fa<name> that denotes a variable. This aspect overrides any Default_Storage_Pool
+pragma that might apply to the generic unit; if the aspect is not specified,
+the default pool of the instance is that defined for the generic unit.
- The language-defined aspect Default_Storage_Pool may be specified for a
- generic instance; it defines the default pool for access types within an
- instance. {The Default_Storage_Pool aspect may be specified as Standard,
- which defines the default pool to be Standard, otherwise the} [The] expected
- type for the Default_Storage_Pool aspect is Root_Storage_Pool'Class[.
- The]{and the} aspect_definition must be a name that denotes a variable. This
- aspect overrides any Default_Storage_Pool pragma that might apply to the
- generic unit; if the aspect is not specified, the default pool of the
- instance is that defined for the generic unit.
-
- Standard when used aspect_definition for the Default_Storage_Pool aspect is
- an identifier specific to an aspect (see 13.1.1) and does not denote any
- declaration. If the aspect_definition for the Default_Storage_Pool aspect
- is Standard, then there shall not be a declaration with defining identifier
- Standard that is immediately visible at the point of the aspect, other than
- package Standard itself.
-Modify 13.11.3(6.2/3):
+!corrigendum 13.11.3(6.2/3)
- If the default pool is {neither} [non]null {nor Standard}, the Storage_Pool
- attribute is that pool.
+@drepl
+@xbullet<If the default pool is nonnull, the Storage_Pool attribute is that
+pool.>
+@dby
+@xbullet<If the default pool is neither @b<null> nor Standard, the Storage_Pool
+attribute is that pool.>
-Modify 13.11.3(6.3/3):
+!corrigendum 13.11.3(6.3/3)
- Otherwise {(including when the default pool is specified as Standard)},
- [there is no default pool;] the standard storage pool is used for the type as
- described in 13.11.
+@drepl
+Otherwise, there is no default pool; the standard storage
+pool is used for the type as described in 13.11.
+@dby
+Otherwise (including when the default pool is specified as Standard),
+the standard storage pool is used for the type as described in 13.11.
!ASIS
@@ -1925,5 +1935,23 @@
So hopefully it will just be a matter of deciding which section we want to
scrap.
+
+****************************************************************
+
+From: Randy Brukardy
+Sent: Wednesday, January 28, 2015 10:13 PM
+
+Just noticed that you didn't make a matching version of the new rule for aspect
+Default_Storage_Pool. To fix that, I added the following after 13.11.3(5/3) as a
+separate paragraph (the paragraph looked too long otherwise):
+
+Standard when used aspect_definition for the Default_Storage_Pool aspect is an
+identifier specific to an aspect (see 13.1.1) and does not denote any
+declaration. If the aspect_definition for the Default_Storage_Pool aspect is
+Standard, then there shall not be a declaration with defining identifier
+Standard that is immediately visible at the point of the aspect, other than
+package Standard itself.
+
+You can do any wordsmithing as part of your Editorial Review.
****************************************************************
Questions? Ask the ACAA Technical Agent