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

Differences between 1.5 and version 1.6
Log of other versions for file ai12s/ai12-0191-1.txt

--- ai12s/ai12-0191-1.txt	2019/02/07 04:11:31	1.5
+++ ai12s/ai12-0191-1.txt	2019/02/23 01:05:41	1.6
@@ -1,4 +1,4 @@
-!standard 3.9.1(4.1/2)                                      19-02-06  AI12-0191-1/02
+!standard 3.9.1(4.1/2)                                      19-02-12  AI12-0191-1/03
 !standard 7.3.2(10.1/4)
 !standard 7.3.2(15/5)
 !class binding interpretation 16-06-06
@@ -31,7 +31,7 @@
   components that are not visible. On the other hand, a reference
   to the components of an object in a dynamic semantics rule would
   apply to all components of the object, visible or not, including
-  screened components (see 3.9.1).
+  supplementary components (see 3.9.1).
   Other terms, such as "subcomponent" and "part", are interpreted
   analogously.
 
@@ -41,12 +41,12 @@
   tagged type T1 or T1'Class and the (runtime) tag of X is T2'Tag,
   the components (if any) of X which are not components of T1
   (and which are not discriminants which correspond to a discriminant
-  of T1) are said to be "screened". For example, if T2 is an
+  of T1) are said to be "supplementary". For example, if T2 is an
   undiscriminated extension of T1 which declares a component named Comp,
-  then X.Comp would be an screened component of X.
-  A part of an object is said to be either a *screened part* or
-  an *unscreened part* depending on whether it is a part of
-  a screened component of the object.
+  then X.Comp would be an supplementary component of X.
+  A part of an object is said to be either a *supplementary part* or
+  a *non-supplementary part* depending on whether it is a part of
+  a supplementary component of the object.
 
   AARM note: For example, there is a dynamic semantics rule that
   finalization of an object includes finalization of its components
@@ -57,31 +57,34 @@
      function Func return T1'Class is (T2'(others => <>));
      X : T1'Class := Func;
   the rule that "every component of the object is finalized" (as opposed to
-  something like "every unscreened component of the object is finalized")
+  something like "every non-supplementary component of the object is finalized")
   means that the finalization of X will include finalization of X.Comp.
   For another example, see the rule about accessibility checking of
   access discriminants of parts of function results in 6.5.
   In contrast, the rules in 7.3.2 explicitly state that type invariant
-  checks are only performed for unscreened parts which are of the
-  type-invariant bearing type (as opposed to for all parts, screened or not,
-  which are of that type).
+  checks are only performed for non-supplementary parts which are of the
+  type-invariant bearing type (as opposed to for all parts, supplementary
+  or not, which are of that type). Similarly, the rule in 13.13.2 governing
+  which components of a composite value are read and written by the
+  default implementations of Read and Write for a composite type states that
+  supplementary components are not read or written.
 
 Modify 7.3.2(10.1/4):
 
    After successful explicit initialization of the completion of a deferred 
-   constant with a part of type T, if the completion is inside the immediate
-   scope of the full view of T, and the deferred constant is visible outside
-   the immediate scope of T, the check is performed on the {unscreened} 
-   part(s) of type T;
+   constant with a {non-supplementary} part of type T, if the completion is 
+   inside the immediate scope of the full view of T, and the deferred constant 
+   is visible outside the immediate scope of T, the check is performed on 
+   the {non-supplementary} part(s) of type T;
 
 Modify 7.3.2(15/5):
 
    Upon a successful return from a call on any subprogram or entry which is 
    type-invariant preserving for T, an invariant check is performed on each
-   {unscreened} part of type T which is subject to an invariant check for T.
+   {non-supplementary} part of type T which is subject to an invariant check for T.
    In the case of a call to a protected operation, the check is performed 
    before the end of the protected action. In the case of a call to a task
-    entry, the check is performed before the end of the rendezvous;
+   entry, the check is performed before the end of the rendezvous;
 
 Replace AARM 7.3.2(20.a.1/5):
      To be honest: {AI12-0167-1} In all of the above, for a class-wide object,
@@ -91,11 +94,14 @@
      finalization, where we do intend that overhead). 
 with:
      Reason: The various rules requiring type invariant checks for
-     unscreened parts of type T, as opposed to all parts of type T,
+     non-supplementary parts of type T, as opposed to all parts of type T,
      are motivated by a desire to avoid overhead associated with the
      possibility that there *might* exist an extension of the tagged type
      in question which has a part of type T.
 
+Modify in 13.13.2(9/3):
+   ... the Write or Read attribute for each {non-supplementary} 
+   component is called ...
 
 !discussion
 
@@ -130,11 +136,11 @@
 is not T1'Tag, we are talking about the components of X which were
 declared in extensions of T1.
 
-Choices that were considered include "underlying", "screened",
-"sequestered", "cloaked", and "occulted". We used "screened", but that's a 
-fairly arbitrary choice and is easily changed.
+Based on feedback from the group, the current write-up of the AI
+uses "supplementary". [Any of "concealed", "latent", or "undercover" (or
+even "screened", "sequestered", "cloaked", or "occulted") seem
+preferable to the AI author, but that's ok.]
 
-
 !example
 
 with Derived; use Derived;
@@ -450,5 +456,24 @@
 Similar comments apply to the rest of this wording section.
 
 Otherwise, looks good.
+
+****************************************************************
+
+From: Steve Baird
+Sent: Tuesday, February 12, 2019  7:32 PM
+
+Here is another version of this AI, reflecting feedback received since the
+previous version was distributed on Feb 6 2019, notably at the last phone 
+meeting.
+
+Two changes:
+    1) The term "screened" has been replaced with "supplementary"
+       throughout the AI as per the guidance of the group.
+
+    2) The rules about which components are streamed in and out in
+       the default implementations of 'Read and 'Write for a
+       a tagged type are clarified.
+
+[This is version /03 of the AI - Editor.]
 
 ***************************************************************

Questions? Ask the ACAA Technical Agent