CVS difference for ai12s/ai12-0162-1.txt
--- ai12s/ai12-0162-1.txt 2015/06/18 05:56:10 1.1
+++ ai12s/ai12-0162-1.txt 2015/07/09 01:04:37 1.2
@@ -1,5 +1,6 @@
-!standard B.3.3(25/2) 15-06-04 AI05-0162-1/01
+!standard B.3.3(25/2) 15-07-08 AI05-0162-1/02
!class binding interpretation 15-06-04
+!status ARG Approved 8-0-2 15-06-26
!status work item 15-06-04
!status received 15-04-28
!priority Low
@@ -32,9 +33,9 @@
Modify B.3.3(25/2):
-Evaluation of a membership test if {a membership_choice}[the] subtype_mark
+Evaluation of a {individual} membership test if the subtype_mark {(if any)}
denotes a constrained unchecked union subtype and the
-{tested_simple_expression}[expression] lacks inferable discriminants.
+{tested_simple_expression}[expression] lacks inferable discriminants.
!discussion
@@ -43,25 +44,25 @@
to raise Program_Error rather than evaluating to True. We could have
required that all of the subtypes fail this check before we raise
Program_Error, but this would mean that we'd be allowing an individual
-membership test whose result is undefined, and allowing that because
-these results are ORed (any ORed with True is True). That seems unusual and
+membership test whose result is undefined, and allowing that because these
+results are ORed (anything ORed with True is True). That seems unusual and
unnecessary as such an expression makes little sense to begin with (why write
a membership which is always True? And if so, why combine it with one that
requires an actual test?). It's important that these things are well-defined,
but how they're defined isn't that important.
-It was suggested that we could make this rule about an individual membership
-test (by inserting "individual" in front of "membership test"), but it still
-would be weird to talk about "the subtype_mark" (since the test might be
-against an expression instead). So the amount of wording change seems about
-the same.
+We could have talked about the "subtype_mark of a membership_choice" instead
+of talking about invididual membership tests, but that's just longer, not
+clearer.
Note that the choice_expression case is covered by B.3.3(23/2) if necessary,
as evaluating that choice is defined to be an evaluation of primitive equality
for a record type; if there is no user-defined equality, then B.3.3(23/2)
applies. (If there is a user-defined equality, then B.3.3(23/2) does not apply
-and the call is made; the implementation of the user-defined equality either
-works around the problem or triggers one of these rules itself.)
+and the call is made; the implementation of the user-defined equality might
+trigger one of these rules itself, but it doesn't have to.)
+
+!corrigendum B.3.3(25/2)
!ASIS
Questions? Ask the ACAA Technical Agent