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

Differences between 1.1 and version 1.2
Log of other versions for file ai05s/ai05-0282-1.txt

--- ai05s/ai05-0282-1.txt	2011/12/31 00:27:33	1.1
+++ ai05s/ai05-0282-1.txt	2011/12/31 00:32:00	1.2
@@ -1,4 +1,4 @@
-!standard 4.3.2(8)                                            11-11-08  AI12-0008-1/01
+!standard 4.3.2(8)                                            11-11-13  AI05-0282-1/02
 !class binding interpretation 11-11-08
 !status work item 11-11-08
 !status received 11-09-26
@@ -41,12 +41,53 @@
 
 !wording
 
-** TBD.
+In 4.3.2(7), replace:
+   are initialized by default as for an object of the ancestor type.
+with
+   are initialized by default as for an object of the subtype denoted
+   by the subtype_mark.
+
+and append a new paragraph:
+
+   If the type of the ancestor_part has discriminants and the
+   ancestor_part is a subtype_mark that denotes an unconstrained
+   subtype, each discriminant of the ancestor type
+   has the value specified for a corresponding discriminant, either in
+   the record_component_association_list, or in the
+   derived_type_definition or some ancestor of the type of
+   the extension_aggregate.
+
+Replace 4.3.2(8):
+  If the type of the ancestor_part has discriminants that are not
+  inherited by the type of the extension_aggregate, then, unless the
+  ancestor_part is a subtype_mark that denotes an unconstrained subtype,
+  a check is made that each discriminant of the ancestor has the value
+  specified for a corresponding discriminant, either in the
+  record_component_association_list, or in the derived_type_definition
+  for some ancestor of the type of the extension_aggregate.
+  Constraint_Error is raised if this check fails.
+
+With:
+
+  If the type of the ancestor_part has discriminants and the
+  ancestor_part is not a subtype_mark that denotes an unconstrained
+  subtype, then a check is made that each discriminant of the ancestor
+  has the value specified for a corresponding  discriminant, either
+  in the record_component_association_list, or in the
+  derived_type_definition for some ancestor of the type of
+  the extension_aggregate. Constraint_Error is raised if this check
+  fails.
 
 !discussion
 
-Perhaps a static matching rule would be better if the target type
-is constrained??
+In order to help understand this wording, I think it helps to realize that
+if the ancestor type of an extension aggregate has discriminants, then there
+are 6 cases to consider: the cross-product of whether the discriminants of
+the ancestor type are inherited by the type of the extension aggregate (yes
+or no) and the three possible forms of the ancestor part:
+    an expression
+    a subtype mark denoting a constrained subtype
+    a subtype mark denoting an unconstrained subtype.
 
 !ACATS Test
 
@@ -87,3 +128,61 @@
 inherited discriminants and a constrained ancestor subtype_mark.
 
 ****************************************************************
+
+From: Steve Baird
+Sent: Sunday, November 13, 2011  1:02 AM
+
+Wording to discuss on Sunday.
+
+====
+
+In 4.3.2(7), replace:
+   are initialized by default as for an object of the ancestor type.
+with
+   are initialized by default as for an object of the subtype denoted
+   by the subtype_mark.
+
+and append a new paragraph:
+
+   If the type of the ancestor_part has discriminants and the
+   ancestor_part is a subtype_mark that denotes an unconstrained
+   subtype, each discriminant of the ancestor type
+   has the value specified for a corresponding discriminant, either in
+   the record_component_association_list, or in the
+   derived_type_definition or some ancestor of the type of
+   the extension_aggregate.
+
+Replace 4.3.2(8):
+  If the type of the ancestor_part has discriminants that are not
+  inherited by the type of the extension_aggregate, then, unless the
+  ancestor_part is a subtype_mark that denotes an unconstrained subtype,
+  a check is made that each discriminant of the ancestor has the value
+  specified for a corresponding discriminant, either in the
+  record_component_association_list, or in the derived_type_definition
+  for some ancestor of the type of the extension_aggregate.
+  Constraint_Error is raised if this check fails.
+
+With:
+
+  If the type of the ancestor_part has discriminants and the
+  ancestor_part is not a subtype_mark that denotes an unconstrained
+  subtype, then a check is made that each discriminant of the ancestor
+  has the value specified for a corresponding  discriminant, either
+  in the record_component_association_list, or in the
+  derived_type_definition for some ancestor of the type of
+  the extension_aggregate. Constraint_Error is raised if this check
+  fails.
+
+====
+
+In order to help understand this wording, I think it helps to realize that
+if the ancestor type of an extension aggregate has discriminants, then there
+are 6 cases to consider: the cross-product of whether the discriminants of
+the ancestor type are inherited by the type of the extension aggregate (yes
+or no) and the three possible forms of the ancestor part:
+    an expression
+    a subtype mark denoting a constrained subtype
+    a subtype mark denoting an unconstrained subtype.
+
+****************************************************************
+

Questions? Ask the ACAA Technical Agent