--- ai12s/ai12-0086-1.txt 2015/01/30 05:23:09 1.3 +++ ai12s/ai12-0086-1.txt 2015/07/14 02:29:41 1.4 @@ -1,6 +1,7 @@ -!standard 4.3.1(17/3) 15-01-28 AI12-0086-1/03 +!standard 4.3.1(17/3) 15-07-13 AI12-0086-1/04 !standard 4.3.1(19/3) !class Amendment 13-10-30 +!status ARG Approved 7-1-1 15-06-28 !status Promising (9-0-1) 15-01-28 !status work item 13-10-30 !status received 13-08-22 @@ -68,15 +69,19 @@ with - The value of a discriminant that governs a variant_part P shall be - given by a static expression, or by a nonstatic expression having a - constrained static nominal subtype, unless P is nested within a - variant V that is not selected by the discriminant value governing - the variant_part enclosing V. In the case of a nonstatic expression, - there shall be exactly one discrete_choice_list of P that covers - each value that belongs to the nominal subtype and satisfies the - predicates of the subtype, and there shall be at least one such value. + If a variant_part P is nested within a variant V that is not selected by + the discriminant value governing the variant_part enclosing V, then there + is no restriction on the discriminant governing P. Otherwise, the value of + the discriminant that governs P shall be given by a static expression, or + by a nonstatic expression having a constrained static nominal subtype. In + this latter case of a nonstatic expression, there shall be exactly one + discrete_choice_list of P that covers each value that belongs to the + nominal subtype and satisfies the predicates of the subtype, and there + shall be at least one such value. + AARM Ramification: This means that in the nonstatic value case, the (static) + subtype cannot have a null range. + Append to the end of 4.3.1(19): If the value of a discriminant that governs a selected variant_part @@ -85,7 +90,8 @@ of the expression, then Constraint_Error is raised. AARM Ramification: In this case, the value of the discriminant is - outside the base range of its type, or is an invalid representation. + outside the base range of its type, does not satisfy the (static) + predicates of the subtype, or is an invalid representation. This is a rule similar to that used for case statements. !discussion

Questions? Ask the ACAA Technical Agent