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

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

--- ai12s/ai12-0138-1.txt	2015/02/26 00:09:52	1.6
+++ ai12s/ai12-0138-1.txt	2015/03/24 22:22:45	1.7
@@ -1,4 +1,4 @@
-!standard 13.1.1(34/3)                                  15-02-25  AI05-0138-1/05
+!standard 13.1.1(34/3)                                 15-03-24  AI05-0138-1/06
 !standard 4.1.5(5/3)
 !standard 4.1.6(5/3)
 !standard 4.1.6(6/3)
@@ -14,10 +14,13 @@
 !subject Iterators of formal derived types
 !summary
 
-We define the notion of an "unalterable" aspect, and declare Default_Iterator,
-Iterator_Element, Implicit_Dereference, Constant_Indexing, and
-Variable_Indexing to be unalterable aspects. These aspects don't allow
-redefinition for derived types.
+We define the notion of "nonoverridable" aspects, and declare
+Default_Iterator, Iterator_Element, Implicit_Dereference,
+Constant_Indexing, and Variable_Indexing to be nonoverridable aspects.
+The value of these aspects are names which must not be changed for a
+derived type (their value can be confirmed), though in each type it is
+expected that the name might denote different subprograms, types, or
+discriminants.
 
 !question
 
@@ -41,31 +44,34 @@
 
 Insert after 13.1.1(34/3) (and perhaps add "Legality Rules" in front of 34/3):
 
-  Certain type-related aspects are defined to be *unalterable*.
+  Certain type-related aspects are defined to be *nonoverridable*; all such
+  aspects are specified using an ASPECT_DEFINITION that is a NAME.
 
-  If an unalterable aspect is directly specified for a type T, then any
+  If a nonoverridable aspect is directly specified for a type T, then any
   explicit specification of that aspect for any other descendant of T
-  shall denote the same entities as would the inherited aspect.
+  shall be *confirming*; that is, the specified NAME shall *match* the
+  inherited aspect, meaning that the specified NAME shall denote the
+  same entities as would the inherited NAME.
+
+  If a full type has a partial view, and a given nonoverridable aspect
+  is allowed for both the full view and the partial view, then the given
+  aspect for the partial view and the full view shall be the same: the
+  aspect shall be directly specified only on the partial view; if the
+  full type inherits the aspect, then a matching definition shall be
+  specified (directly or by inheritance) for the partial view.
 
-  An unalterable aspect shall not be directly specified on a
-  full_type_declaration if the type has a partial view that would allow
-  the specification of the same aspect. If a type with a partial view
-  inherits an unalterable aspect, then a matching definition shall be
-  specified (directly or by inheritance) for this unalterable aspect of
-  the partial view.
-
   In addition to the places where Legality Rules normally apply (see
-  12.3), these rules about unalterable aspects apply also in the private
+  12.3), these rules about nonoverridable aspects apply also in the private
   part of an instance of a generic unit.
 
   Redundant: [The Default_Iterator, Iterator_Element, Implicit_Dereference,
-  Constant_Indexing, and Variable_Indexing aspects are unalterable.]
+  Constant_Indexing, and Variable_Indexing aspects are nonoverridable.]
 
 ----
 
 Add to the Static Semantics section of 4.1.5 (before 4.1.5(6/3)):
 
-    The Implicit_Dereference aspect is unalterable (see 13.1.1).
+    The Implicit_Dereference aspect is nonoverridable (see 13.1.1).
 
 ----
 
@@ -80,13 +86,15 @@
 
 Add after 4.1.6(5/3):
 
-    The Constant_Indexing and Variable_Indexing aspects are unalterable (see 13.1.1).
+    The Constant_Indexing and Variable_Indexing aspects are nonoverridable (see
+    13.1.1).
 
 ----
 
 Add at the end of the Static Semantics section of 5.5.1 (after 5.5.1(11/3):
 
-    The Default_Iterator and Iterator_Element aspects are unalterable (see 13.1.1).
+    The Default_Iterator and Iterator_Element aspects are nonoverridable (see
+    13.1.1).
 
 !discussion
 
@@ -100,7 +108,7 @@
 is fine as it stands. [Editor's note: AI12-0104-1 removed the above wording
 and replaced it by a User Note, which is OK.]
 
-The rules about partial views in the definition of unalterable aspects are
+The rules about partial views in the definition of nonoverridable aspects are
 needed so that privacy is not compromised.
 
 The first new rule on partial views (which was originally in 4.1.6) is
@@ -751,5 +759,18 @@
 
 But I don't think the exact term matters that much; making sure that the rules
 are well-defined matters more.
+
+****************************************************************
+
+From: Tucker Taft
+Sent: Tuesday, March 24, 2015  2:27 PM
+
+I believe this is the only "corrigendum" AI still outstanding.
+[This is version /06 of the AI - Editor.]  I tried to make
+the wording easier to understand, with the rationale implicit in the wording
+itself.  I also indicated that nonoverridable aspects are always specified by
+NAMEs, so it makes sense to talk about what they "denote."  I hope this will
+also make it clearer that we are saying that the NAME is inherited, even if the
+denoted entities might not be.
 
 ****************************************************************

Questions? Ask the ACAA Technical Agent