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