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

Differences between 1.3 and version 1.4
Log of other versions for file ai12s/ai12-0421-1.txt

--- ai12s/ai12-0421-1.txt	2021/01/20 01:34:49	1.3
+++ ai12s/ai12-0421-1.txt	2021/01/20 02:51:10	1.4
@@ -1,7 +1,8 @@
-!standard 6.1.1(18/5)                                    21-01-14  AI12-0421-1/00
+!standard 6.1.1(18/5)                                    21-01-19  AI12-0421-1/01
 !standard 6.1.1(18.1/4)
 !standard 6.1.1(18.2/4)
 !class binding interpretation 21-01-14
+!status deleted 21-01-19
 !status work item 21-01-14
 !status received 21-01-14
 !priority Low
@@ -10,73 +11,15 @@
 !subject Legality checks for class-wide Pre and Post
-*** TBD.
+This AI was merged into AI12-0412-1.
-The rule "and the corresponding expression would be illegal" in 6.1.1(18.2/4)
-seems too broad.
-   package Pkg is
-      package P1 is
-         type T1 is tagged null record;
-         function F (F1 : T1; Flag : Boolean := False) return Boolean;
-         procedure Op (X1 : T1) with Pre'Class => F (F1 => X1);
-      end P1;
-      package P2 is
-         type T2 is new P1.T1 with null record;
-         overriding function F (F2 : T2; Flag : Boolean := True) return Boolean;
-         overriding procedure Op (X2 : T2);
-      end P2;
-   end Pkg;
-   Applying the transformation described in 6.1.1(18.1/4), we get a
-   class-wide precondition expression for P2.Op of
-      F (F1 => X2)
-   It seems like this "would be illegal" because of the type
-   mismatch between the formal and the actual parameters;
-   that is not what we want or intended. Incidentally, note that
-   P1.F is being called here, not P2.F; if it were otherwise,
-   then we would need to talk about the value of the Flag parameter.
-Should this be corrected? (Yes.)
-(See Summary.)
-*** TBD.
-** Temporary discussion **
-This question came from the AARM Review of Steve Baird.
-Randy suggested that we need an additional transformation bullet
-to talk about the inherited subprograms of a descendant of T. Something
-   * References of primitive subprograms of an ancestor of T other than S are 
-     replaced by the corresponding subprograms inherited by the descendant of
-     T (even if those are hidden by subsequent overridding).
-Tucker noted that the Dynamic Semantics does the right thing without needing
-any transformation. He suggests that we don't need this rule at all.
-Randy is skeptical of that. This rule came from the Ada 2012 corrigendum.
-There is no way we would have constructed such a complete fiction and check if
-we didn't have examples that needed this legal recheck.
-We need to research the origin of this rule to see of some other formulation
-would work. A brief look at AI12-0113-1 and AI12-0170-1 shows a bunch of wild
-examples using interfaces and other abstract types. As we've passed the agenda 
-deadline, it's too late to craft a solution.

Questions? Ask the ACAA Technical Agent