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

Differences between 1.3 and version 1.4
Log of other versions for file ai05s/ai05-0150-1.txt

--- ai05s/ai05-0150-1.txt	2009/10/23 06:06:31	1.3
+++ ai05s/ai05-0150-1.txt	2010/01/30 05:03:20	1.4
@@ -1,4 +1,4 @@
-!standard  8.4(4)                                 09-04-22    AI05-0150-1/01
+!standard  8.4(4)                                 10-01-29    AI05-0150-1/02
 !standard  8.4(8/2)
 !class Amendment 09-04-22
 !status work item 09-04-22
@@ -39,11 +39,32 @@
     following additional declarations are also made potentially
     use-visible in the same way as is done for the primitive operators of T:
 
-      - The visible primitive subprograms of T;
-      - If T is a tagged type declared immediately within a
-        package_specification, then any visible subprograms that are declared
-        immediately within the same package_specification and
-        operate on T'Class.
+      - The visible primitive subprograms of T Redundant[including any
+        enumeration literals];
+      - Any visible subprograms that are declared immediately within
+        the declarative region in which an ancestor type of T is
+        declared and that operation on a class-wide type that covers T.
+
+!discussion
+
+The model of "use all type" for tagged type is that it makes the same
+subprograms that have parameters of the type directly visible that are
+directly usable in prefix notation. If Obj.Proc is legal for an object of type
+T, then too will use all type T; Proc(Obj); be legal. "use all type" also
+makes constructor functions directly visible.
+
+
+The use of package use clause introduces a maintenance hazard into a program.
+Adding a new non-overloadable entity (like an object or subtype) to a package P
+can make unrelated code that happens to "use" P illegal. That can happen
+because the non-overloadable entity will "cancel" any other uses of the same
+identifier, even if they are clearly unrelated (objects of different types,
+for example). In contrast, overloadable entities only become ambiguous when
+there is an actual profile conflict.
+
+Since "use all type" only makes overloadable entities visible, it neatly
+avoids this maintenance hazard.
+
 
 !example
 

Questions? Ask the ACAA Technical Agent