CVS difference for ai12s/ai12-0003-1.txt

Differences between 1.15 and version 1.16
Log of other versions for file 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