CVS difference for ais/ai-00306.txt

Differences between 1.2 and version 1.3
Log of other versions for file ais/ai-00306.txt

--- ais/ai-00306.txt	2002/10/10 17:41:47	1.2
+++ ais/ai-00306.txt	2003/03/04 04:56:23	1.3
@@ -1,12 +1,13 @@
-!standard  4.3.2 (04)                                  02-10-09  AI95-00306/01
-!standard  4.3.2 (05)
+!standard  4.3.2 (05)                                  03-02-18  AI95-00306/02
 !class binding interpretation 02-08-28
+!status Amendment 200Y 03-02-18
+!status ARG Approved 7-0-1  03-02-09
 !status work item 02-10-09
 !status received 02-08-07
 !qualifier Error
 !priority Low
 !difficulty Medium
-!subject Classwide extension aggregate expressions
+!subject Class-wide extension aggregate expressions
 
 !summary
 
@@ -41,7 +42,7 @@
       end F;
 
       procedure P (X : in T'Class) is
-         V : TT := (F (X) with null record);  -- Error?
+         V : TT := (F (X) with null record);  -- Error? (Yes.)
       begin
          null;
       end P;
@@ -65,26 +66,10 @@
 
 !wording
 
-First solution:
-
 Add the following rule as the second sentence of 4.3.2(5):
-
-  {If the ancestor_part is an expression, it shall not be dynamically tagged.}
-
-The above sentence definitely seems to fix the problem, but the following
-change would avoid adding a new rule:
-
-Second solution:
 
-Revise the second sentence of 4.3.2(4) to read:
+  If the ancestor_part is an expression, it shall not be dynamically tagged.
 
-  If the ancestor_part is an expression, it is expected to be of any {specific}
-  nonlimited tagged type.
-
-However, it's not clear that the second proposed solution will work,
-as the "expected to be of any ... type" wording still seems to prevent
-3.9.2(9/1) from applying. See discussion.
-
 !discussion
 
 The current rules for resolution of an ancestor expression in an
@@ -116,20 +101,23 @@
 the wording in 4.3.2(4) talks about expecting a type in a class of
 types, and that doesn't seem to jibe with expecting some specific
 type. It's not clear how 3.9.2(9/1) could be cleanly reworded to
-cover this case.
+cover this case. Thus, this approach was rejected.
+
+Therefore, we add an additional legality rule to 4.3.2(5).
+
+!corrigendum 4.3.2(5)
 
-If it's decided that it is sufficient to simply add "specific"
-to 4.3.2(4), then this is clearly the preferred wording change.
-Note that this will have an effect on the set of interpretations
-that are considered for the ancestor expression (now excluding
-any interpretations with class-wide results), but that can only
-prevent ambiguities, not add any new ones, so it's compatible.
-
-If a revision to 4.3.2(4) isn't considered sufficient, then a new
-legality rule is needed. The rule to be added is to require in
-4.3.2(5) that "If the ancestor_part is an expression, it shall
-not be dynamically tagged". This clearly fixes the problem,
-but at the cost of an additional rule.
+@drepl
+If the @fa<ancestor_part> is a @fa<subtype_mark>, it shall denote a specific
+tagged subtype. The type of the @fa<extension_aggregate> shall be derived from
+the type of the @fa<ancestor_part>, through one or more record extensions (and
+no private extensions).
+@dby
+If the @fa<ancestor_part> is a @fa<subtype_mark>, it shall denote a specific
+tagged subtype. If the @fa<ancestor_part> is an @fa<expression>, it shall not
+be dynamically tagged. The type of the @fa<extension_aggregate> shall be
+derived from the type of the @fa<ancestor_part>, through one or more record
+extensions (and no private extensions).
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent