CVS difference for ais/ai-00171.txt

Differences between 1.5 and version 1.6
Log of other versions for file ais/ai-00171.txt

--- ais/ai-00171.txt	1999/09/16 20:40:30	1.5
+++ ais/ai-00171.txt	1999/10/08 23:41:05	1.6
@@ -1,5 +1,6 @@
-!standard 03.08    (18)                               99-09-15  AI95-00171/05
+!standard 03.08    (18)                               99-10-06  AI95-00171/06
 !standard 03.03.01 (18)
+!standard 03.06    (22)
 !standard 04.03.01 (19)
 !standard 04.08    (10)
 !standard 09.04    (14)
@@ -159,6 +160,28 @@
 and any implicit initial values for the object or for its
 subcomponents are obtained as determined by the nominal subtype.>
 
+!corrigendum 3.06(22)
+
+@drepl
+The elaboration of a @fa<discrete_subtype_definition> creates the discrete
+subtype, and consists of the elaboration of the @fa<subtype_indication> or the
+evaluation of the @fa<range>. The elaboration of a @fa<component_definition>
+in an @fa<array_type_definition> consists of the elaboration of the
+@fa<subtype_indication>. The elaboration of any
+@fa<discrete_subtype_definition>s and the elaboration of
+the @fa<component_definition> are performed in an arbitrary order.
+@dby
+The elaboration of a @fa<discrete_subtype_definition> that does not contain
+any per-object expressions creates the discrete
+subtype, and consists of the elaboration of the @fa<subtype_indication> or the
+evaluation of the @fa<range>. The elaboration of a
+@fa<discrete_subtype_definition> that does contain one or more per-object
+expressions is defined in 3.8. The elaboration of a @fa<component_definition>
+in an @fa<array_type_definition> consists of the elaboration of the
+@fa<subtype_indication>. The elaboration of any
+@fa<discrete_subtype_definition>s and the elaboration of
+the @fa<component_definition> are performed in an arbitrary order.
+
 !corrigendum 3.08(18)
 
 @drepl
@@ -193,11 +216,12 @@
 discriminant.
 
 When a per-object constraint is elaborated (as part of creating an object),
-per-object expressions are evaluated, but other expressions are not evaluated.
-Rather, the values of the expressions evaluated during the elaboration of the
+per-object expressions are evaluated. Only per-object expressions are evaluated.
+For other expressions, then values determined during the elaboration of the
 @fa<component_definition> or @fa<entry_declaration> are used. Any checks
-defined for the @fa<constraint> or @fa<range> are performed, including the
-subtype compabilitity check (see 3.2.2).
+associated with the enclosing @fa<subtype_indication> or
+@fa<discrete_subtype_definition> are performed, including the subtype
+compatibility check (see 3.2.2), and the associated subtype is created.
 
 !corrigendum 9.05.02(22)
 
@@ -211,9 +235,8 @@
 single entry has no effect.
 @dby
 The elaboration of an @fa<entry_declaration> for an entry family consists of
-the elaboration or evaluation of the @fa<discrete_subtype_definition> as
-described in 3.8. The elaboration of an @fa<entry_declaration> for a single
-entry has no effect.
+the elaboration of the @fa<discrete_subtype_definition> as described in 3.8.
+The elaboration of an @fa<entry_declaration> for a single entry has no effect.
 
 !ACATS test
 
@@ -321,5 +344,33 @@
 I think that the last phrase of 3.8(18A) ("including the subtype compabilitity
 check (see 3.2.2).") is redundant, but the AI recommendation seems insistent
 that it be included. I'd be happy to do without it.
+
+****************************************************************
+
+!from Randy Brukardt  99-10-06
+
+My notes from the recent ARG meeting say that the end of the first paragraph
+should be changed from:
+
+... then the elaboration consists of the evaluation of any
+included expression that is not part of a per-object expression. Each such
+expression is evaluated once unless it is part of a named association in a
+discriminant constraint, in which case it is evaluated once for each associated
+discriminant.
+
+to:
+
+... then the elaboration consists of the evaluation of any
+included expression that is not part of a per-object expression, according to
+the rules given in 3.7.1.
+
+I did not make this change, because the rules in 3.7.1 are wrong for this use,
+unfortunately. During the meeting, I checked the behavior of existing ACATS
+tests [C37213B.ADA, C37213D.ADA, and others (the tests in fact are Ada 83 tests)],
+and they require that the values be evaluated but not be checked at this point.
+Given that the test suite requires this behavior, and has for many years, all
+compilers delay the checks, and a change would be gratuitous. However, the rules
+in 3.7.1 specifically say that each value is evaluated and converted when a
+discriminant is evaluated. So a reference to 3.7.1 would cause incorrect behavior.
 
 ****************************************************************

Questions? Ask the ACAA Technical Agent