CVS difference for ais/ai-00423.txt

Differences between 1.5 and version 1.6
Log of other versions for file 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
 !standard 8.5.1(4)
 !standard 8.5.4(4)
 !standard 12.4(2)
@@ -53,9 +53,31 @@
 not create any compatibility issue, it seems that we should "do the right
 thing".
 
-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
-lie.
+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:
+
+   generic
+      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