CVS difference for ais/ai-00423.txt
--- ais/ai-00423.txt 2005/05/10 17:59:31 1.5
+++ ais/ai-00423.txt 2005/05/10 20:23:39 1.6
@@ -1,4 +1,4 @@
-!standard 8.5.1(2) 05-04-17 AI95-00423/04
+!standard 8.5.1(2) 05-05-05 AI95-00423/05
@@ -53,9 +53,31 @@
not create any compatibility issue, it seems that we should "do the right
-The best approach seems to allow the user to write an explicit null_exclusion
-in object and subprogram renamings, but only if such a null_exclusion doesn't
+An alternative would be to always require the null_exclusion to match exactly.
+We already do that for formal access types, so it would seem to be possible.
+But it would cause anomolies with formal private types:
+ type T is private;
+ with procedure P (A : T);
+ X : in out T;
+ procedure G is
+ type A is access ...;
+ procedure Q (P : not null A);
+ Obj : not null A;
+ procedure Goof is new G (T => A, P => Q, X => Obj);
+ -- Illegal by exact rule.
+This is annoying, because there is no way to change the specification of the
+generic to allow this to work (T is not an access type, so it doesn't allow
+a null exclusion).
+So, the best approach seems to be to allow the user to write an explicit
+null_exclusion in object and subprogram renamings, but only if such a
+null_exclusion doesn't lie.
Similar rules should apply to generic subprograms.
Questions? Ask the ACAA Technical Agent