CVS difference for ai05s/ai05-0113-1.txt
--- ai05s/ai05-0113-1.txt 2010/04/08 02:00:07 1.8
+++ ai05s/ai05-0113-1.txt 2010/06/07 05:58:43 1.9
@@ -1,4 +1,4 @@
-!standard 3.9(12.1/2) 10-04-02 AI05-0113-1/05
+!standard 3.9(12.1/2) 10-06-07 AI05-0113-1/06
!standard 3.9(26.1/2)
!standard 13.3(76)
!class binding interpretation 08-10-06
@@ -105,10 +105,14 @@
!discussion
-The runtime check will require some sort of runtime table to check
-External_Tag names; the table will need exclusion in case multiple tasks are
-creating tagged types at the same time. The mechanism used to implement
-Internal_Tag should be sufficient.
+For (1), we choose to (almost) eliminate the cause of the problem by not allowing
+explicitly defined external tag values to match any other external tag value in
+the partition. This is done with a runtime check.
+
+The runtime check for conflicting external tag values will require some sort of
+runtime table to check External_Tag names; the table will need exclusion in case
+multiple tasks are creating tagged types at the same time. The mechanism used to
+implement Internal_Tag should be sufficient.
A post-compilation check is not possible in general, as tagged types can
be created in subprograms and tasks, and it is possible that the two types
@@ -121,7 +125,7 @@
that case, as well. Internal_Tag does not need a rule, as it is defined to
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.
+in that case to use the same exception as it does for 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
@@ -136,7 +140,7 @@
mean that the return of library-level tags would not be advised, which
seems wrong). We could try to say that a tag whose master is the innermost
one surrounding the call that has an applicable type is returned, but that
-is hard to word (or explain) and seems like overspecification, as it not
+is hard to word (or explain) and seems like overspecification, as it is not
likely that there are multiple applicable tagged types in different masters
surrounding the call. It is enough to say that the tag should belong to some
master of the call, especially as the primary goal is to prevent returning
Questions? Ask the ACAA Technical Agent