CVS difference for ai05s/ai05-0113-1.txt
--- ai05s/ai05-0113-1.txt 2010/04/02 19:28:32 1.5
+++ ai05s/ai05-0113-1.txt 2010/04/02 20:29:57 1.6
@@ -47,9 +47,9 @@
and accessibility level}.
AARM Note: Rules for specifying external tags will usually prevent an external tag
-from identifying more than one type. However, this can happen if a generic body
-contains a derivation of a tagged type declared outside of the generic, and there
-are multiple instances at the same accessibility level as the type. (There is an
+from identifying more than one type. However, an external tag can identify multiple types
+if a generic body contains a derivation of a tagged type declared outside of the generic,
+and there are multiple instances at the same accessibility level as the type. (There is an
exception to the general requirement that default external tags be unique for this case.)
Modify 3.9(26.1/2) as follows:
@@ -99,7 +99,7 @@
implementations that do link-time construction of the external tag lookup table;
implementations that dynamically construct the table will likely prefer to
raise Program_Error upon elaboration of the problem construct.
-We don't want this check to cause any implementation complexity, as it will be
+We don't want this check to require any implementation complexity, as it will be
very rare that there would be a problem.
!discussion
@@ -121,6 +121,14 @@
return "*a* tag" (that was intended to cover recursion, but it works here,
too). But we do need a rule for Dependent_Tag. We made it raise Tag_Error
in that case to use the same exception as it does other problems.
+
+One ramification of these rules is that if an external tag is specified
+for a type declared within a generic unit, the generic can only be successfully
+instantiated once. (Two generic instances are "different declarations"; the second
+instance to be elaborated must raise Program_Error.) We believe it would be better
+to allow the external name to depend on formal parameters (which would mean
+dropping the static string requirement) than to intentionally have conflicting
+tag names.
For (2), we change the wording to "a master". The original intent was that
master of the innermost task was "the" master, but that seems wrong (it would
Questions? Ask the ACAA Technical Agent