CVS difference for ai05s/ai05-0024-1.txt

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