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

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0448-1.txt

--- ai12s/ai12-0448-1.txt	2022/12/10 10:14:30	1.1
+++ ai12s/ai12-0448-1.txt	2022/12/15 03:56:04	1.2
@@ -1,4 +1,4 @@
-!standard 10.2(2/5)                                   22-11-30  AI12-0448-1/01
+!standard 10.2(2/5)                                   22-12-13  AI12-0448-1/02
 !standard 10.2(3)
 !standard 10.2(4)
 !standard 10.2(5)
@@ -67,21 +67,22 @@
 
 progenitor[ of a derived type]
 
-one of the types given in the definition of {an interface, task, protected,
-or}[the] derived type{,} other than the first{ type given in a derived type definition}
+[one of the types]{type} given in the {interface list, if any,}[definition] 
+of {an interface, task, protected, or}[the] derived type {definition}[other
+than the first]
 
 Note: A progenitor is always an interface type.[ Interfaces, tasks, and 
 protected types can also have progenitors.]
 
 [ISO comment: ""progenitor of a derived type"
 This term is not used in the document. Please either use in the document or delete entry."]
-[Editor: It's better to just define "progenitor", there is no other use.  **** To
+[Editor: It's better to just define "progenitor", there is no other use.  To
 do this, we need to generalize the definition. The formal definition is "a type
-given in an interface_list", but that's not descriptive enough. I also considered
-"a type that is an ancestor of an interface, task, protected,
-or derived type, other than a derived type", but that is makes the definitions of
-ancestor and progenitor depend on each other, so that's not acceptable. The commas
-in the proposed wording are uncomfortable, but I don't have a better idea.]
+given in an interface_list", but that's not descriptive enough. We came up with the
+longer version given above. I also considered "a type that is an ancestor of an
+interface, task, protected, or derived type, other than a derived type", but
+that is makes the definitions of ancestor and progenitor depend on each other,
+so that's not acceptable.]
 
 ----
 
@@ -217,7 +218,7 @@
 Note: Incomplete types can be used for defining recursive data structures.
 
 incomplete view
-view of a type that reveals only a few of its properties
+view of a type that reveals minimal properties
 
 Note: The remaining properties are defined by the full view given elsewhere.
 
@@ -255,8 +256,21 @@
 * homograph
 * overloaded
 
-[Editor: We probably can wait on these unless ISO complains (they haven't to date). But we
-should plan on adding these in an AI22.]
+We probably can wait on these unless ISO complains (they haven't to date). But we
+should plan on adding these in an AI22.
+
+------
+
+The JTC1 Directives, Part 2 strictly ban recursive definitions. We have the following:
+
+ancestor of a type
+     type itself or, in the case of a type derived from other types, its
+     parent type or one of its progenitor types or one of their ancestors
+
+ISO hasn't detected this yet (perhaps because in their strict constructionist
+view, "ancestors" and "ancestors of a type" are different things), but we 
+should plan to fix it somehow in an AI22 (rather than waiting for ISO to drop
+this on us).
 
 ------
 

Questions? Ask the ACAA Technical Agent