CVS difference for ais/ai-00279.txt
--- ais/ai-00279.txt 2004/10/05 22:49:09 1.9
+++ ais/ai-00279.txt 2004/11/14 06:37:04 1.10
@@ -1,4 +1,4 @@
-!standard 13.13.02 (34) 04-09-24 AI95-00279/06
+!standard 13.13.02 (34) 04-11-08 AI95-00279/07
!standard 3.09 (12)
!standard 3.09 (26)
!standard 13.13.02 (36/1)
@@ -13,6 +13,7 @@
!subject Tag read by T'Class'Input
If Ada.Tags.Internal_Tag or Ada.Tags.Descendant_Tag is given a string
@@ -33,7 +34,8 @@
T'Class'Input reads in a string, maps it to a tag by calling
Tags.Descendant_Tag, and dispatches accordingly.
-What happens if the call to Tags.Descendant_Tag yields either
+What happens if the call to Tags.Descendant_Tag (from AI-344,
+or Tags.Internal_Tag without it) yields either
a) the tag of some type not covered by T'Class
b) the tag of an abstract type
@@ -88,15 +90,15 @@
-The tag of a tagged type T is created at the point where T is frozen.
+The tag (see 3.9) of a tagged type T is created at the point where T is frozen.
-The exact wording of 13.13.2(34/2) is "...dispatches to the subprogram denoted
+The exact wording of 13.13.2(34/1) is "...dispatches to the subprogram denoted
by the Input attribute of the specific type identified by the internal tag;
returns that result.". Reading this strictly, we would expect the appropriate
'Input to be called (by dispatching), followed by a conversion to the return
-type. That is, somewhere this is code like:
+type. That is, somewhere there is code like:
return T'Class(Dispatching_Constructor (Tags.Descendant_Tag(...),
@@ -109,7 +111,7 @@
would raise Constraint_Error. Therefore, we simply confirm the existing
language by saying that Constraint_Error is raised in this case. However,
there is no benefit in insisting that the call to the 'Input routine
-is actually made, so we just clarify this to just say that Constraint_Error is
+is actually made, so we just clarify this to say that Constraint_Error is
If the tag dispatched on is an abstract type, then the appropriate 'Input is
@@ -148,7 +150,7 @@
tasks at the same time. In this case, a single Boolean does not work.
AI-344 allows type extensions that are more nested than the original type.
-The AI also defines that the tag is sufficient to distiguish the descendant
+This AI also defines that the tag is sufficient to distinguish the descendant
from all other descendants of the same type (even if they are from different
elaborations of the same type declaration). This implies that Descendant_Tag
will have at least some dynamic characteristics; a fully static implementation
@@ -162,7 +164,7 @@
a static scheme, where making the check is impossible due to race conditions
and multiple elaborations. Finally, AI-344 does not require Descendant_Tag to
be able to tell between instances of the same type. Thus, it still would be
-possible to read the tag and it confuse with some other instance of the type
+possible to read the tag and confuse it with some other instance of the type
(if the prefix type to T'Class'Input is more nested than some ancestor).
The primary purpose of the Tag_Error rule for Ada.Tags is to insure that a
@@ -182,9 +184,9 @@
rule allows a single Boolean value to be used in a static implementation, and
does not have any race conditions.
-The Internal_Tag function also has this rule, as it eliminate erroneousness
+The Internal_Tag function also has this rule, since it eliminates erroneousness
from user-written routines (including instances of
-Generic_Dispatching_Constructor, see AI-260-2) and as there is no additional
+Generic_Dispatching_Constructor, see AI-260-2) and there is no additional
The wording for erroneous execution includes "does not exist" so that a type
@@ -206,7 +208,7 @@
simplify the wording. But it also would mean that any use of T'Class'Input
during elaboration time would raise Tag_Error (whether or not a problem is
possible). That would mean that T'Class'Input could not be used to read
-configuration files and the like. That seems like too strong of a restriction.
+configuration files and the like. That seems like too strong a restriction.
Questions? Ask the ACAA Technical Agent