CVS difference for ai05s/ai05-0048-1.txt
--- ai05s/ai05-0048-1.txt 2007/04/11 00:57:10 1.1
+++ ai05s/ai05-0048-1.txt 2007/12/13 04:39:36 1.2
@@ -1,5 +1,6 @@
-!standard A(3) 07-04-10 AI05-0048-1/01
+!standard A(3) 07-11-29 AI05-0048-1/02
!class binding interpretation 07-04-10
+!status ARG Approved 9-0-0 06-11-10
!status work item 07-04-10
!status received 07-02-15
!priority Low
@@ -14,9 +15,9 @@
!question
Some operations in children of Ada.Containers may be implemented partly
-or fully by calling other primitive operations on the container object.
+or fully by calling other primitive operations on the container object.
The Standard even defines some of the container operations by saying that
-they are "equivalent to" code that uses other operations. For example,
+they are "equivalent to" code that uses other operations. For example,
A.18.7(93/2) defines
Replace (Container, Key, New_Item)
@@ -56,15 +57,16 @@
For a descendant of a language-defined tagged type, the implementation
shall ensure that each inherited language-defined subprogram behaves as
-described in this International Standard, unless that subprogram is
-overridden. In particular, overriding a language-defined subprogram shall
-not affect the behavior of any nonoverridden language-defined subprogram.
+described in this International Standard. In particular, overriding
+a language-defined subprogram shall
+not alter the effect of any inherited language-defined subprogram.
AARM Note: This means that internally the implementation must not do
-redispatching. So when we say that some subprogram Bar is equivalent to
-Foo, overriding Foo for a derived type doesn't not change the semantics of
+redispatching unless it is required by the Standard.
+So when we say that some subprogram Bar is equivalent to
+Foo, overriding Foo for a derived type doesn't change the semantics of
Bar, and in particular it means that Bar may no longer be equivalent to
-Foo. The word "equivalent" is always a bit of a lie anyway...
+Foo. The word "equivalent" is always a bit of a lie anyway...
!discussion
@@ -75,11 +77,25 @@
Still, implementers and users could take the notion of equivalence too literally. The
intent of equivalence is that it is a stand in for repeating the original definition
-of the equivalent code. We use equivalence to increase the clarity of the standrd and
+of the equivalent code. We use equivalence to increase the clarity of the standard and
reduce the chance of errors in the standard, not to suggest an implementation model.
Therefore, we add a statement to this effect that is intended to cover all
language-defined libraries, including those defined in future versions of Ada.
+
+!corrigendum A(3)
+
+@dinsa
+The implementation shall ensure that each language-defined subprogram is reentrant
+in the sense that concurrent calls on the same subprogram perform as specified,
+so long as all parameters that could be passed by reference denote
+nonoverlapping objects.
+@dinst
+For a descendant of a language-defined tagged type, the implementation
+shall ensure that each inherited language-defined subprogram behaves as
+described in this International Standard. In particular, overriding
+a language-defined subprogram shall
+not alter the effect of any inherited language-defined subprogram.
!ACATS test
Questions? Ask the ACAA Technical Agent