CVS difference for ais/ai-00064.txt
--- ais/ai-00064.txt 1998/09/30 00:17:12 1.1
+++ ais/ai-00064.txt 1999/06/26 01:11:13 1.2
@@ -1,5 +1,6 @@
-!standard 03.11 (09) 97-04-11 AI95-00064/06
+!standard 03.11 (09) 99-06-25 AI95-00064/07
!class binding interpretation 95-07-06
+!status Corrigendum 2000 99-05-24
!status WG9 approved (8-0-0) 97-07-04
!status ARG approved (9-0-0) 97-04-11
!status work item (letter ballot was 10-1-1) 96-10-03
@@ -12,7 +13,7 @@
!difficulty Hard
!subject Elaboration checks for renamings-as-body
-!summary 96-11-16
+!summary
An elaboration check is performed for a call to a subprogram whose body
is given as a renaming-as-body. This check fails if the renaming-as-body
@@ -20,7 +21,7 @@
performed for the renamed subprogram, and fails if *its* body has not yet
been elaborated.)
-!question 96-11-16
+!question
3.11(10) indicates that an elaboration check is required only when a
subprogram has an explicit body that is a subprogram_body. However,
@@ -50,11 +51,11 @@
and perhaps renaming-as-body. However, only the syntactic entity BODY is
defined (in 3.11). Where is the unbolded term "body" defined?
-!recommendation 96-11-16
+!recommendation
(See summary.)
-!wording 96-11-16
+!wording
Define the term "body" to include the syntactic category body, plus
entry_body, plus renaming-as-body, in 3.11.1(1).
@@ -69,7 +70,7 @@
equivalent to the execution of a subprogram_body that simply calls
the renamed subprogram with the same parameters.
-!discussion 96-05-08
+!discussion
Since the elaboration of a renaming-as-body may evaluate expressions, it
is clearly necessary that this elaboration be performed before calling
@@ -90,8 +91,55 @@
See AI95-00135 for a discussion of circularities involving
renamings-as-body.
+
+!corrigendum 3.11.01(1)
+
+@drepl
+Declarations sometimes come in two parts. A declaration that requires a
+second part is said to @i<require completion>. The second part is called the
+@i<completion> of the declaration (and of the entity declared), and is
+either another declaration, a body, or a pragma.
+@dby
+Declarations sometimes come in two parts. A declaration that requires a
+second part is said to @i<require completion>. The second part is called the
+@i<completion> of the declaration (and of the entity declared), and is
+either another declaration, a body, or a pragma. A @i<body> is a @fa<body>,
+@fa<entry_body>, or a renaming-as-body (see 8.5.4).
+
+!corrigendum 3.11(10)
+
+@drepl
+@xindent<For a call to a (non-protected) subprogram that has an explicit
+body, a check is made that the @fa<subprogram_body> is already
+elaborated. This check and the evaluations of any actual
+parameters of the call are done in an arbitrary order.>
+@dby
+@xindent<For a call to a (non-protected) subprogram that has an explicit
+body, a check is made that the body is already elaborated. This check and
+the evaluations of any actual parameters of the call are done in an
+arbitrary order.>
+
+!corrigendum 8.05.04(8)
+
+@dinsb
+For a call on a renaming of a dispatching subprogram that is overridden,
+if the overriding occurred before the renaming, then the body executed is
+that of the overriding declaration, even if the overriding declaration is not
+visible at the place of the renaming; otherwise, the inherited or predefined
+subprogram is called.
+@dinst
+For a call to a subprogram whose body is given as a renaming-as-body, the
+execution of the renaming-as-body is equivalent to the execution of a
+subprogram_body that simply calls the renamed subprogram with the same
+parameters.
+
+!ACATS test
+
+A test is needed. A C-Test should be built that checks cases similiar to the
+example in the question. The cases should include access to subprograms, and
+unelaborated regular subprograms, and verify that Program_Error is raised.
-!appendix 96-06-06
+!appendix
!section 3.11(9)
!section 8.5.4(1)
@@ -188,10 +236,10 @@
> body of the renamed subprogram has been elaborated. (In addition, the
> AI should make it obvious that this check is performed at the time of a
> call.)
->
+>
> I suggest that the !recommendation be rewritten in
> language that parallels 3.11(10) and 3.11(14):
->
+>
> For a call to a (non-protected) subprogram that has a
> renaming-as-body, a check is made that the renaming declaration has
> already been elaborated, and that the body of the subprogram named in
@@ -199,7 +247,7 @@
> the evaluations of any actual parameters of the call are done in an
> arbitrary order. The exception Program_Error is raised if this check
> fails.
->
+>
> (Perhaps just the first sentence will suffice as the !summary.)
I agree with Norm's complaint. However, I think the above wording fails
Questions? Ask the ACAA Technical Agent