CVS difference for ai05s/ai05-0220-1.txt
--- ai05s/ai05-0220-1.txt 2010/08/05 01:11:52 1.2
+++ ai05s/ai05-0220-1.txt 2010/08/13 05:32:36 1.3
@@ -98,11 +98,14 @@
-The existing wording is quite clear that it applies only when there are actually
-components. However, as the questioner points out, this makes little sense
-since it makes the interpretation of the rule dependent on discriminant values
-that aren't necessarily known when this rule is enforced. Essentially, the rule is
-circular in that it depends on itself in order to be understandable.
+The existing wording is quite clear that it applies only when there
+are actually components. This is well-defined when a variant_part has
+no components at all. However, as the questioner points out, this
+makes little sense when some variants have components and others do not
+since it makes the interpretation of the rule dependent on discriminant
+values that aren't necessarily known when this rule is enforced.
+Essentially, the rule is circular in that it depends on itself being enforced
+in order to make any sense.
Thus we adopt a rule that does not depend on components that are "needed". For
this new rule, the variants of the variant_part P mentioned in the wording play
@@ -117,6 +120,13 @@
whether a variant has components in enforcing 4.3.1(17). Thus, the
incompatibility does not exist in practice (compilers already reject such
+What was supposed to happen when some variants have components and others do not
+was not well-defined by the existing 4.3.1(17). Thus, it is possible for a compiler
+to have allowed some cases that will now be clearly illegal. This is also a
+potential incompability, but since our compiler survey did not identify any such
+compilers, it seems unlikely. In any case, such programs would not have been
+portable to the majority of existing Ada compilers.
Note that wording following "unless" exists to allow the last example of the
!question to remain legal. This is necessary to avoid an unnecessary
Questions? Ask the ACAA Technical Agent