CVS difference for 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