CVS difference for ai05s/ai05-0115-1.txt

Differences between 1.9 and version 1.10
Log of other versions for file ai05s/ai05-0115-1.txt

--- ai05s/ai05-0115-1.txt	2011/03/17 07:06:29	1.9
+++ ai05s/ai05-0115-1.txt	2011/03/22 05:07:08	1.10
@@ -2206,3 +2206,82 @@
 we don't already know about...
 
 ****************************************************************
+
+From: Edmond Schonberg
+Sent: Sunday, March 20, 2011   9:00 AM
+
+In testing the implementation of this new rule, I came across some ACATS support
+routines that seem illegal:  F65A00 and its child units.  The skeleton is as
+follows:
+
+package P is
+   type T is tagged private;
+private
+   type T is tagged null record;
+end P;
+
+package P.Child1 is
+   type T1 is new T with record
+      V1 : Integer;
+   end record;
+end P.Child1;
+
+with P.Child1;
+package P.Child2 is
+   type T2 is new Child1.T1 with record
+      V2 : Integer;
+   end record;
+
+   function Create (X : Integer)  return T2; end P.Child2;
+
+package body P.Child2 is
+   function Create (X : Integer) return T2 is
+   begin
+      return T2' (X, X);   --  Legal?
+   end;
+end;
+
+The aggregate appears in a child body. It's type is derived from a type declared
+in a sibling unit, and that one is derived from a private view in the common
+parent. There is no point at which the full view of P.Child1.T1 becomes visible
+in P.Child2, so this is now illegal, right?
+
+****************************************************************
+
+From: Tucker Taft
+Sent: Sunday, March 20, 2011   9:17 AM
+
+Yes, I agree with your reading of the rule.
+
+****************************************************************
+
+From: Edmond Schonberg
+Sent: Sunday, March 20, 2011   9:32 AM
+
+Thanks for confirmation. Apart from this I found a single instance in our test
+suite of an aggregate that becomes illegal with this new rule,  and this is in
+an internally generated example, so this is not a particularly incompatible
+change.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Monday, March 21, 2011   9:49 PM
+
+...
+> package body P.Child2 is
+>    function Create (X : Integer) return T2 is
+>    begin
+>       return T2' (X, X);   --  Legal?
+>    end;
+> end;
+
+I believe the fix would be to make this an extension (which should be OK as this
+isn't a test on aggregates).
+
+       return T2' (T with X, X);   --  OK
+
+Please make sure that you report this to the ACAA Technical Agent so I can put
+it on the pile of ACATS tests needing fixes for Ada 2012.
+
+****************************************************************

Questions? Ask the ACAA Technical Agent