CVS difference for ai12s/ai12-0039-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai12s/ai12-0039-1.txt

--- ai12s/ai12-0039-1.txt	2012/11/30 03:10:02	1.1
+++ ai12s/ai12-0039-1.txt	2012/12/28 02:37:24	1.2
@@ -1,6 +1,24 @@
-!standard 4.4(3/3)                                   12-11-29    AI12-0039-1/01
+!standard 4.4(3/3)                                   12-12-27    AI12-0039-1/02
 !standard 4.4(3.2/3)
+!standard 4.5.2(3.1/3)
+!standard 4.5.2(4)
+!standard 4.5.2(4.1/3)
+!standard 4.5.2(27/3)
+!standard 4.5.2(27.1/3)
+!standard 4.5.2(28.1/3)
+!standard 4.5.2(28.2/3)
+!standard 4.5.2(29/3)
+!standard 4.5.2(30/3)
+!standard 4.5.2(30.1/3)
+!standard 4.5.2(30.2/3)
+!standard 4.5.2(30.3/3)
+!standard 4.9(11/3)
+!standard 4.9(32.6/3)
+!standard 8.6(27.1/3)
+!standard 3.2.4(17/3)
 !class binding interpretation 12-11-29
+!status Amendment 202x 12-12-17
+!status ARG Approved 8-0-2  12-12-06
 !status work item 12-11-29
 !status received 12-10-09
 !priority High
@@ -54,10 +72,10 @@
   membership_choice ::= *choice_*simple_expression | range | subtype_mark
 
 [Note: The change here is to replace "choice_expression" with
-"simple_expression"; it would be ambiguous to use the usual insertion
+"*choice_*simple_expression"; it would be ambiguous to use the usual insertion
 and deletion marks in syntax, so this was not done here.]
 
-In 4.5.2, paragraphs 3.1/3 [only the first use], 3.b/2, 4, 27/3, 27.1/3, 28.1/3,
+In 4.5.2, paragraphs 3.1/3 [only the two uses], 3.b/2, 4, 27/3, 27.1/3, 28.1/3,
 28.2/3, 29/3, 30/3, 30.a, 30.1/2, 30.2/2, 30.3/2, and 32.a/3, in 4.9(11/3),
  in 3.2.4(17/3), and in 8.6(27.1/3):
 replace "simple_expression" with "*tested_*simple_expression".
@@ -65,16 +83,15 @@
 In 4.5.2, paragraphs 3.1/3, 4.1/3, 28.1/3, in 4.9(11/3), and in 4.9(32.6/3):
 replace "choice_expression" with "*choice_*simple_expression".
 
-[Editor's note: There are a few cases where we don't have use the new prefixes,
+[Editor's note: There are a few cases where we don't have to use the new prefixes,
 especially for the latter cases (where we often say "of a membership_choice")
 but it's going to be clearer to just them globally.]
 
-In AARM 3.9.2(9.a/2), "expression" probably should be "*tested_*simple_expression",
+In AARM 3.9.2(9.b/2), "expression" probably should be "*tested_*simple_expression",
 although this isn't absolutely required.
 
 [Editor's note: I searched for "membership", "choice_expression", and "simple_expression"
-everywhere in the Standard (and AARM), and above are the changes that I found. There
-seem to be enough. :-)]
+everywhere in the Standard (and AARM), and the above are the changes that I found.]
 
 !discussion
 
@@ -107,6 +124,238 @@
 talk about "the simple_expression" and "a choice_expression" in 4.5.2 ambiguous.
 As such, we have to give these syntax items prefixes to eliminate any confusion.
 Thus we talk about "tested_simple_expression" and "choice_simple_expression".
+
+!corrigendum 3.2.4(17/3)
+
+@drepl
+@xbullet<a membership test whose @fa<simple_expression> is the current instance,
+and whose @fa<membership_choice_list> meets the requirements for a static
+membership test (see 4.9);>
+@dby
+@xbullet<a membership test whose @i<tested_>@fa<simple_expression> is the current
+instance, and whose @fa<membership_choice_list> meets the requirements for a static
+membership test (see 4.9);>
+
+!corrigendum 4.4(3/3)
+
+@drepl
+@xcode<@fa<relation ::=
+         simple_expression [relational_operator simple_expression]
+       | simple_expression [>@ft<@b<not>>@fa<] >@ft<@b<in>>@fa< membership_choice_list>>
+@dby
+@xcode<@fa<relation ::=
+         simple_expression [relational_operator simple_expression]
+       | @i<tested_>simple_expression [>@ft<@b<not>>@fa<] >@ft<@b<in>>@fa< membership_choice_list>>
+
+!corrigendum 4.4(3.2/3)
+
+@drepl
+@xcode<@fa<membership_choice ::= choice_expression | range | subtype_mark>>
+@dby
+@xcode<@fa<membership_choice ::= @i<choice_>simple_expression | range | subtype_mark>>
+
+!corrigendum 4.5.2(3.1/3)
+
+@drepl
+If the tested type is tagged, then the @fa<simple_expression> shall
+resolve to be of a type that is convertible (see 4.6) to the tested
+type; if untagged, the expected type for the @fa<simple_expression> is
+the tested type. The expected type of a @fa<choice_expression> in a
+@fa<membership_choice>, and of a @fa<simple_expression> of a @fa<range>
+in a @fa<membership_choice>, is the tested type of the membership operation.
+@dby
+If the tested type is tagged, then the @i<tested_>@fa<simple_expression> shall
+resolve to be of a type that is convertible (see 4.6) to the tested
+type; if untagged, the expected type for the @i<tested_>@fa<simple_expression> is
+the tested type. The expected type of a @i<choice_>@fa<simple_expression> in a
+@fa<membership_choice>, and of a @fa<simple_expression> of a @fa<range>
+in a @fa<membership_choice>, is the tested type of the membership operation.
+
+!corrigendum 4.5.2(4)
+
+@drepl
+For a membership test, if the @fa<simple_expression> is of a tagged class-wide
+type, then the tested type shall be (visibly) tagged. 
+@dby
+For a membership test, if the @i<tested_>@fa<simple_expression> is of a tagged
+class-wide type, then the tested type shall be (visibly) tagged. 
+
+!corrigendum 4.5.2(4.1/3)
+
+@drepl
+If a membership test includes one or more @fa<choice_expression>s and
+the tested type of the membership test is limited, then the
+tested type of the membership test shall have a visible
+primitive equality operator.
+@dby
+If a membership test includes one or more @i<choice_>@fa<simple_expression>s and
+the tested type of the membership test is limited, then the
+tested type of the membership test shall have a visible
+primitive equality operator.
+
+!corrigendum 4.5.2(27/3)
+
+@drepl
+For the evaluation of a membership test using @b<in> whose @fa<membership_choice_list>
+has a single @fa<membership_choice>, the @fa<simple_expression> and the @fa<membership_choice>
+are evaluated in an arbitrary order; the result is the result of the individual
+membership test for the @fa<membership_choice>.
+@dby
+For the evaluation of a membership test using @b<in> whose @fa<membership_choice_list>
+has a single @fa<membership_choice>, the @i<tested_>@fa<simple_expression> and the
+@fa<membership_choice> are evaluated in an arbitrary order; the result is the result
+of the individual membership test for the @fa<membership_choice>.
+
+!corrigendum 4.5.2(27.1/3)
+
+@drepl
+For the evaluation of a membership test using @b<in> whose @fa<membership_choice_list>
+has more than one @fa<membership_choice>, the @fa<simple_expression> of the membership test
+is evaluated first and the result of the operation is equivalent to that of a
+sequence consisting of an individual membership test on each @fa<membership_choice>
+combined with the short-circuit control form @b<or else>.
+@dby
+For the evaluation of a membership test using @b<in> whose @fa<membership_choice_list>
+has more than one @fa<membership_choice>, the @i<tested_>@fa<simple_expression> of the
+membership test is evaluated first and the result of the operation is equivalent to that
+of a sequence consisting of an individual membership test on each @fa<membership_choice>
+combined with the short-circuit control form @b<or else>.
+
+!corrigendum 4.5.2(28.1/3)
+
+@drepl
+@xbullet<The @fa<membership_choice> is a @fa<choice_expression>, and the @fa<simple_expression>
+is equal to the value of the @fa<membership_choice>. If the tested type is a record type
+or a limited type, the test uses the primitive equality for the type; otherwise, the test
+uses predefined equality.>
+@dby
+@xbullet<The @fa<membership_choice> is a @i<choice_>@fa<simple_expression>, and the
+@i<tested_>@fa<simple_expression> is equal to the value of the @fa<membership_choice>. If the
+tested type is a record type or a limited type, the test uses the primitive equality for the
+type; otherwise, the test uses predefined equality.>
+
+!corrigendum 4.5.2(28.2/3)
+
+@drepl
+@xbullet<The @fa<membership_choice> is a @fa<range> and the value of the
+@fa<simple_expression> belongs to the given @fa<range>.>
+@dby
+@xbullet<The @fa<membership_choice> is a @fa<range> and the value of the
+@i<tested_>@fa<simple_expression> belongs to the given @fa<range>.>
+
+!corrigendum 4.5.2(29/3)
+
+@drepl
+@xbullet<The @fa<membership_choice> is a @fa<subtype_mark>, the tested type is scalar,
+the value of the @fa<simple_expression> belongs to the range of the named subtype, and
+the predicate of the named subtype evaluates to True.>
+@dby
+@xbullet<The @fa<membership_choice> is a @fa<subtype_mark>, the tested type is scalar,
+the value of the @i<tested_>@fa<simple_expression> belongs to the range of the named
+subtype, and the predicate of the named subtype evaluates to True.>
+
+!corrigendum 4.5.2(30/3)
+
+@drepl
+@xbullet<The @fa<membership_choice> is a @fa<subtype_mark>, the tested type is not
+scalar, the value of the @fa<simple_expression> satisfies any
+constraints of the named subtype, the predicate of the named subtype
+evaluates to True, and:>
+@dby
+@xbullet<The @fa<membership_choice> is a @fa<subtype_mark>, the tested type is not
+scalar, the value of the @i<tested_>@fa<simple_expression> satisfies any
+constraints of the named subtype, the predicate of the named subtype
+evaluates to True, and:>
+
+!corrigendum 4.5.2(30.1/2)
+
+@drepl
+if the type of the @fa<simple_expression> is class-wide, the value has a tag that
+identifies a type covered by the tested type;
+@dby
+if the type of the @i<tested_>@fa<simple_expression> is class-wide, the value has
+a tag that identifies a type covered by the tested type;
+
+!corrigendum 4.5.2(30.2/3)
+
+@drepl
+@xbullet<if the tested type is an access type and the named subtype excludes null,
+the value of the @fa<simple_expression> is not null;>
+@dby
+@xbullet<if the tested type is an access type and the named subtype excludes null,
+the value of the @i<tested_>@fa<simple_expression> is not null;>
+
+!corrigendum 4.5.2(30.3/3)
+
+@drepl
+@xbullet<if the tested type is a general access-to-object type, the type of the
+@fa<simple_expression> is convertible to the tested type and its
+accessibility level is no deeper than that of the tested type;
+further, if the designated type of the tested type is tagged and the
+@fa<simple_expression> is nonnull, the tag of the object designated by the value of the
+@fa<simple_expression> is covered by the designated type of the tested type.>
+@dby
+@xbullet<if the tested type is a general access-to-object type, the type of the
+@i<tested_>@fa<simple_expression> is convertible to the tested type and its
+accessibility level is no deeper than that of the tested type;
+further, if the designated type of the tested type is tagged and the
+@i<tested_>@fa<simple_expression> is nonnull, the tag of the object designated by
+the value of the @i<tested_>@fa<simple_expression> is covered by the designated type
+of the tested type.>
+
+!corrigendum 4.9(11/3)
+
+@drepl
+@xbullet<a membership test whose @fa<simple_expression> is a static expression,
+and whose @fa<membership_choice_list> consists only of @fa<membership_choice>s
+that are either static @fa<choice_expression>s, static @fa<range>s,
+or @fa<subtype_mark>s that denote a static (scalar or string) subtype;>
+@dby
+@xbullet<a membership test whose @i<tested_>@fa<simple_expression> is a static
+expression, and whose @fa<membership_choice_list> consists only of
+@fa<membership_choice>s that are either static @i<choice_>@fa<simple_expression>s,
+static @fa<range>s, or @fa<subtype_mark>s that denote a static (scalar or string)
+subtype;>
+
+!corrigendum 4.9(32.6/3)
+
+@drepl
+@xbullet<a @fa<choice_expression> (or a @fa<simple_expression> of a @fa<range> that
+occurs as a @fa<membership_choice> of a @fa<membership_choice_list>) of a static
+membership test that is preceded in the enclosing @fa<membership_choice_list> by
+another item whose individual membership test (see 4.5.2) statically yields True.>
+@dby
+@xbullet<a @i<choice_>@fa<simple_expression> (or a @fa<simple_expression> of a
+@fa<range> that
+occurs as a @fa<membership_choice> of a @fa<membership_choice_list>) of a static
+membership test that is preceded in the enclosing @fa<membership_choice_list> by
+another item whose individual membership test (see 4.5.2) statically yields True.>
+
+!corrigendum 8.6(27.1/3)
+
+@drepl
+Other than for the @fa<simple_expression> of a membership test, if the
+expected type for a @fa<name> or @fa<expression> is not the same as the actual
+type of the @fa<name> or @fa<expression>, the actual type shall be convertible
+to the expected type (see 4.6); further, if the expected type is a
+named access-to-object type with designated type @i<D1> and the actual type
+is an anonymous access-to-object type with designated type @i<D2>, then @i<D1>
+shall cover @i<D2>, and the @fa<name> or @fa<expression> shall denote a view
+with an accessibility level for which the statically deeper
+relationship applies; in particular it shall not denote
+an access parameter nor a standalone access object.
+@dby
+Other than for the @i<tested_>@fa<simple_expression> of a membership test, if the
+expected type for a @fa<name> or @fa<expression> is not the same as the actual
+type of the @fa<name> or @fa<expression>, the actual type shall be convertible
+to the expected type (see 4.6); further, if the expected type is a
+named access-to-object type with designated type @i<D1> and the actual type
+is an anonymous access-to-object type with designated type @i<D2>, then @i<D1>
+shall cover @i<D2>, and the @fa<name> or @fa<expression> shall denote a view
+with an accessibility level for which the statically deeper
+relationship applies; in particular it shall not denote
+an access parameter nor a standalone access object.
+
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent