CVS difference for ai05s/ai05-0024-1.txt
--- ai05s/ai05-0024-1.txt 2007/05/24 04:54:56 1.7
+++ ai05s/ai05-0024-1.txt 2007/07/26 02:58:05 1.8
@@ -1,6 +1,8 @@
-!standard 4.8(10/1) 07-05-23 AI05-0024-1/03
-!standard 3.10.2(14-14.3/2)
+!standard 4.8(10.1/2) 07-06-18 AI05-0024-1/04
+!standard 3.10.2(14.1-14.4/2)
+!standard 6.5(8/2)
!class binding interpretation 06-11-13
+!status ARG Approved 4-0-6 07-06-03
!status work item 06-11-13
!status received 06-08-29
!priority High
@@ -98,10 +100,26 @@
!recommendation
-(See Summary.)
+(See summary.)
!wording
+Replace 3.10.2(14.1-4) as follows:
+
+ * for an allocator used to define the discriminant of an object, the level of
+ the object;
+
+ * for an allocator used to define the constraint in a subtype_indication in
+ any other context, the level of the master that elaborates the
+ subtype_indication.
+
+ In [this last]{the first} case, the allocated object is said to be a
+ @i{coextension} of the object whose discriminant designates it, as well as
+ object of which the discriminated object is itself a coextension or
+ subcomponent. All coextensions of an object are finalized
+ when the object is finalized (see 7.6).
+
+
Add an AARM note after 3.10.2(29):
A check is made that the accessibility level of X is not deeper than that of
@@ -113,24 +131,15 @@
masters if we relax this restriction. That might introduce unacceptable
distributed overhead.}
-Replace 3.10.2(14.1, 2, 3) as follows:
- * for an allocator used to define the discriminant of an object, the level of
- the object;
-
- * for an allocator used to define the constraint in a subtype_indication in
- any other context, the level of the master that elaborates the
- subtype_indication.
- [TBD: Should we instead say: "...the master that evaluates the allocator"?]
-
-
Change the first sentence of RM 4.8(10.1/2) to:
For any allocator, if the designated type of the type of the allocator is
- class-wide, then a check is made that the master of the type determined by
- the subtype_indication, or by the tag of the value of the
- qualified_expression, includes the elaboration of the type of the allocator.
+ class-wide, then a check is made that the [accessibility level]{master} of
+ the type determined by the subtype_indication, or by the tag of the value
+ of the qualified_expression, [is not deeper than that]{includes the elaboration}
+ of the type of the allocator.
...
Add an AARM Note after 4.8(10.1/2):
@@ -193,9 +202,93 @@
handling all the rest by saying that the level of the allocated
object is the same as that of the master that elaborates the
subtype_indication (or equivalently, that evaluates the allocator).
+
---!corrigendum A.18.2(239/2)
+!corrigendum 3.10.2(14.1/2)
+@drepl
+@xinbull<for an @fa<allocator> used to define the constraint in a
+@fa<subtype_declaration>, the level of the @fa<subtype_declaration>;>
+@dby
+@xinbull<for an @fa<allocator> used to define the discriminant of an object,
+the level of the object;>
+
+!corrigendum 3.10.2(14.2/2)
+
+@drepl
+@xinbull<for an @fa<allocator> used to define the constraint in a
+@fa<component_definition>, the level of the enclosing type;>
+@dby
+@xinbull<for an @fa<allocator> used to define the constraint in a
+@fa<subtype_indication> in any other context, the level of the master
+that elaborates the @fa<subtype_indication>.>
+
+!corrigendum 3.10.2(14.3/2)
+
+@ddel
+@xinbull<for an @fa<allocator> used to define the discriminant of an object,
+the level of the object.>
+
+!corrigendum 3.10.2(14.4/2)
+
+@drepl
+In this last case, the allocated object
+is said to be a @i<coextension> of the object whose discriminant designates it,
+as well as of any object of which the discriminated object is itself a
+coextension or subcomponent. All coextensions of an object are finalized when
+the object is finalized (see 7.6).
+@dby
+In the first case, the allocated object
+is said to be a @i<coextension> of the object whose discriminant designates it,
+as well as of any object of which the discriminated object is itself a
+coextension or subcomponent. All coextensions of an object are finalized when
+the object is finalized (see 7.6).
+
+!corrigendum 4.8(10.1/2)
+
+@drepl
+For any @fa<allocator>, if the
+designated type of the type of the @fa<allocator> is class-wide, then
+a check is made that the accessibility level of the type determined by
+the @fa<subtype_indication>, or by the tag of the value of the
+@fa<qualified_expression>, is not deeper than that
+of the type of the @fa<allocator>. If the
+designated subtype of the @fa<allocator> has one or more unconstrained
+access discriminants, then a check is made that the accessibility
+level of the anonymous access type of each access discriminant is
+not deeper than that of the type of the @fa<allocator>.
+Program_Error is raised if either such check fails.
+@dby
+For any @fa<allocator>, if the
+designated type of the type of the @fa<allocator> is class-wide, then
+a check is made that the master of the type determined by
+the @fa<subtype_indication>, or by the tag of the value of the
+@fa<qualified_expression>, includes the elaboration
+of the type of the @fa<allocator>. If the
+designated subtype of the @fa<allocator> has one or more unconstrained
+access discriminants, then a check is made that the accessibility
+level of the anonymous access type of each access discriminant is
+not deeper than that of the type of the @fa<allocator>.
+Program_Error is raised if either such check fails.
+
+!corrigendum 6.5(8/2)
+
+@drepl
+If the result type of a function is a specific
+tagged type, the tag of the return object is that
+of the result type. If the result type is class-wide, the tag of the
+return object is that of the value of the expression. A check is made that
+the accessibility level of the type identified by the tag of the result is
+not deeper than that of the master that elaborated the function body. If
+this check fails, Program_Error is raised.
+@dby
+If the result type of a function is a specific
+tagged type, the tag of the return object is that
+of the result type. If the result type is class-wide, the tag of the
+return object is that of the value of the expression. A check is made that
+the master of the type identified by the tag of the result includes the
+elaboration of the master that elaborated the function body. If this
+check fails, Program_Error is raised.
!ACATS test
Questions? Ask the ACAA Technical Agent