CVS difference for ai05s/ai05-0092-1.txt
--- ai05s/ai05-0092-1.txt 2008/05/29 04:36:46 1.3
+++ ai05s/ai05-0092-1.txt 2008/07/12 03:58:22 1.4
@@ -1,7 +1,11 @@
-!standard 3.3.1(20.4/2) 08-05-28 AI05-0092-1/02
+!standard 3.3.1(20.4/2) 08-07-11 AI05-0092-1/03
+!standard 3.9(25.1/2)
!standard 6.3.1(21.1/2)
+!standard 13.3(75/1)
!standard 13.13.2(55/2)
!standard 13.13.2(56/2)
+!standard A.11(4/2)
+!standard A.11(5/2)
!standard G.2.2(11)
!class presentation 08-03-05
!status work item 06-03-05
@@ -25,6 +29,13 @@
5) Replace "Safe_last" by "Safe_Last" in G.2.2(11).
+6) Drop the "3.9.2" reference from 13.3(75/1).
+
+7) In A.11(4-5/2), replace "Wide_Bounded_String" with "Bounded_Wide_String" and
+"Wide_Wide_Bounded_String" with "Bounded_Wide_Wide_String".
+
+8) Replace "Interface_Ancestor_Tag" with "Interface_Ancestor_Tags" in 3.9(25.1/2).
+
!question
1) Generally, "must" shall not be used in normative rules of the standard. However,
@@ -38,6 +49,15 @@
5) "Safe_last" should be written as "Safe_Last" in G.2.2(11). Fix it? (Yes.)
+6) 13.3(75/1) says "See 3.9.2 and 13.13.2". There doesn't appear to be anything
+relevant in 3.9.2. What is the intent? (Delete it.)
+
+7) A.11(4-5/2) use the wrong names for the Wide and Wide_Wide versions of
+bounded strings. Fix these? (Yes.)
+
+8) 3.9(25.1/2) mentions "Interface_Ancestor_Tag", but there is no such thing.
+Change to "Interface_Ancestor_Tags"? (Yes.)
+
[Other questions here.]
!recommendation
@@ -56,6 +76,13 @@
5) Replace "Safe_last" by "Safe_Last" in G.2.2(11).
+6) Remove "3.9.2 and" from 13.3(75/1).
+
+7) In A.11(4-5/2), replace "Wide_Bounded_String" with "Bounded_Wide_String" and
+"Wide_Wide_Bounded_String" with "Bounded_Wide_Wide_String".
+
+8) Replace "Interface_Ancestor_Tag" with "Interface_Ancestor_Tags" in 3.9(25.1/2).
+
!discussion
1) 3.3.1(20.4/2) uses "must precede", while 3.3.1(20.1-3/2) use "is preceded by".
@@ -73,6 +100,14 @@
5) All other references to Safe_Last use a capital 'L', this one should, too.
Note that this error dates all the way back to the original Ada 95 Standard.
+6) It's possible the author meant 3.9, but that wouldn't be useful, as 3.9(11)
+just references 13.3. We surely don't want a circular definition, so we just
+drop the reference.
+
+7) The names of the types ought be consistent between A.4.7, A.4.8, and A.11.
+
+8) An obvious missing 's'.
+
!corrigendum 3.3.1(20.4/2)
@drepl
@@ -90,6 +125,17 @@
earlier in the order of the component declarations precede the initial
value evaluations of the component occurring later.>
+!corrigendum 3.9(25.1/2)
+
+@drepl
+Tag_Error is raised by a call of Descendant_Tag, Expanded_Name, External_Tag,
+Interface_Ancestor_Tag, Is_Descendant_At_Same_Level, or Parent_Tag if any tag
+passed is No_Tag.
+@dby
+Tag_Error is raised by a call of Descendant_Tag, Expanded_Name, External_Tag,
+Interface_Ancestor_Tags, Is_Descendant_At_Same_Level, or Parent_Tag if any tag
+passed is No_Tag.
+
!corrigendum 6.3.1(21.1/2)
@drepl
@@ -116,6 +162,25 @@
the word. Machine scalars are used to interpret component_clauses when the
nondefault bit ordering applies.
+!corrigendum 13.3(75/1)
+
+@drepl
+@xindent<S'External_Tag denotes an external string representation for S'Tag;
+it is of the predefined type String. External_Tag may be specified for a
+specific tagged type via an @fa<attribute_definition_clause>; the expression
+of such a clause shall be static. The default external tag representation
+is implementation defined. See 3.9.2 and 13.13.2. The value of External_Tag
+is never inherited; the default value is always used unless a new value
+is directly specified for a type.>
+@dby
+@xindent<S'External_Tag denotes an external string representation for S'Tag;
+it is of the predefined type String. External_Tag may be specified for a
+specific tagged type via an @fa<attribute_definition_clause>; the expression
+of such a clause shall be static. The default external tag representation
+is implementation defined. See 13.13.2. The value of External_Tag
+is never inherited; the default value is always used unless a new value
+is directly specified for a type.>
+
!corrigendum 13.13.2(55/2)
@drepl
@@ -148,6 +213,46 @@
An explicit invocation is one appearing explicitly in the program text,
possibly through a generic instantiation (see 12.3).
+!corrigendum A.11(4/2)
+
+@drepl
+The specification of package Wide_Text_IO.Wide_Bounded_IO is the same as that
+for Text_IO.Bounded_IO, except that any occurrence of Bounded_String is
+replaced by Wide_Bounded_String, and any occurrence of package Bounded is
+replaced by Wide_Bounded. The specification of package
+Wide_Wide_Text_IO.Wide_Bounded_IO is the same as that for
+Text_IO.Bounded_IO, except that any occurrence of Bounded_String is
+replaced by Wide_Wide_Bounded_String, and any occurrence of package Bounded
+is replaced by Wide_Wide_Bounded.
+@dby
+The specification of package Wide_Text_IO.Wide_Bounded_IO is the same as that
+for Text_IO.Bounded_IO, except that any occurrence of Bounded_String is
+replaced by Bounded_Wide_String, and any occurrence of package Bounded is
+replaced by Wide_Bounded. The specification of package
+Wide_Wide_Text_IO.Wide_Wide_Bounded_IO is the same as that for
+Text_IO.Bounded_IO, except that any occurrence of Bounded_String is
+replaced by Bounded_Wide_Wide_String, and any occurrence of package Bounded
+is replaced by Wide_Wide_Bounded.
+
+!corrigendum A.11(5/2)
+The specification of package Wide_Text_IO.Wide_Unbounded_IO is the same as that
+for Text_IO.Unbounded_IO, except that any occurrence of Unbounded_String is
+replaced by Wide_Unbounded_String, and any occurrence of package Unbounded is
+replaced by Wide_Unbounded. The specification of package
+Wide_Wide_Text_IO.Wide_Wide_Unbounded_IO is the same as that for
+Text_IO.Unbounded_IO, except that any occurrence of Unbounded_String is
+replaced by Wide_Wide_Unbounded_String, and any occurrence of package Unbounded
+is replaced by Wide_Wide_Unbounded.
+@dby
+The specification of package Wide_Text_IO.Wide_Unbounded_IO is the same as that
+for Text_IO.Unbounded_IO, except that any occurrence of Unbounded_String is
+replaced by Unbounded_Wide_String, and any occurrence of package Unbounded is
+replaced by Wide_Unbounded. The specification of package
+Wide_Wide_Text_IO.Wide_Wide_Unbounded_IO is the same as that for
+Text_IO.Unbounded_IO, except that any occurrence of Unbounded_String is
+replaced by Unbounded_Wide_Wide_String, and any occurrence of package Unbounded
+is replaced by Wide_Wide_Unbounded.
+
!corrigendum G.2.2(11)
@drepl
@@ -419,5 +524,61 @@
!topic S'Safe_[l]{L}ast
!reference Ada 2005 RM G.2.2(11)
!author Grein 2008.04.23
+
+****************************************************************
+
+!topic Strange reference in 13.3(75)
+!reference 13.3(75), 3.9.2
+!from Adam Beneschan 08-05-19
+!discussion
+
+Presentation nitpick:
+
+13.3(75) reads:
+
+ S'External_Tag denotes an external string representation for
+ S'Tag; it is of the predefined type String. External_Tag may be
+ specified for a specific tagged type via an
+ attribute_definition_clause; the expression of such a clause shall
+ be static. The default external tag representation is
+ implementation defined. See 3.9.2 and 13.13.2. The value of
+ External_Tag is never inherited; the default value is always used
+ unless a new value is directly specified for a type.
+
+Assuming someone reads this and then decides to follow the cross-references,
+it's reasonable to think they might try 3.9.2 first since it's listed first;
+but the effect is likely to be, "Huh? Why did it refer me here?" since 3.9.2
+says nothing about external tags or anything related to them---at least, I
+don't see any connection. If the intent was that 13.13.2(29-34) is the
+section that discusses T'Class'Input and 'Output (which use the external tags),
+and those sections involve subprogram dispatching, perhaps it would be better
+to remove the 3.9.2 reference from 13.3(75) and put them in 13.13.2(29-34).
+Or, alternatively, was this 3.9.2 reference a typo (intended to be 3.9,
+which would make sense)?
+
+****************************************************************
+
+!topic Wrong names in Wide_(Un)Bounded_IO package definitions
+!reference A.11(4-5), A.4.7, A.4.8
+!from Adam Beneschan 08-06-11
+!discussion
+
+A.11(4) says:
+
+ The specification of package Wide_Text_IO.Wide_Bounded_IO is the same
+ as that for Text_IO.Bounded_IO, except that any occurrence of
+ Bounded_String is replaced by Wide_Bounded_String, and any occurrence
+ ^^^^^^^^^^^^^^^^^^^
+ of package Bounded is replaced by Wide_Bounded. The specification of
+ package Wide_Wide_Text_IO.Wide_Wide_Bounded_IO is the same as that for
+ Text_IO.Bounded_IO, except that any occurrence of Bounded_String is
+ replaced by Wide_Wide_Bounded_String, and any occurrence of package
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ Bounded is replaced by Wide_Wide_Bounded.
+
+The names noted are incorrect: they should be Bounded_Wide_String and
+Bounded_Wide_Wide_String.
+
+There are similar errors in A.11(5).
****************************************************************
Questions? Ask the ACAA Technical Agent