CVS difference for 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