CVS difference for ais/ai-presentation.txt

Differences between 1.13 and version 1.14
Log of other versions for file ais/ai-presentation.txt

--- ais/ai-presentation.txt	2004/04/06 19:57:24	1.13
+++ ais/ai-presentation.txt	2004/06/10 05:40:00	1.14
@@ -1579,3 +1579,62 @@
 
 ****************************************************************
 
+!topic Elaboration_Check wording nitpick
+!reference 3.11(13)
+!from Adam Beneschan 04-04-29
+!discussion
+
+There seems to be an inconsistency in the way 3.11(9-13) is presented:
+
+===============================================================================
+For a construct that attempts to use a body, a check
+(Elaboration_Check) is performed, as follows:
+
+* 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.
+
+* For a call to a protected operation of a protected type (that has a
+  body -- no check is performed if a pragma Import applies to the
+  protected type), a check is made that the protected_body is already
+  elaborated. This check and the evaluations of any actual parameters
+  of the call are done in an arbitrary order.
+
+* For the activation of a task, a check is made by the activator that
+  the task_body is already elaborated. If two or more tasks are being
+  activated together (see 9.2), as the result of the elaboration of a
+  declarative_part or the initialization for the object created by an
+  allocator, this check is done for all of them before activating any
+  of them.
+
+* For the instantiation of a generic unit that has a body, a check is
+  made that this body is already elaborated. This check and the
+  evaluation of any explicit_generic_actual_parameters of the
+  instantiation are done in an arbitrary order.
+===============================================================================
+
+The first three items discuss checks that are performed on: a call to
+a subprogram, a call to a protected operation of a protected type, and
+the activation of a task.  All of these are run-time (dynamic)
+activities.
+
+The fourth item refers to "the instantiation of a generic unit".  As
+far as I can tell, the term "instantiation" appears in the RM only as
+a syntactic category, and does not refer to an activity that takes
+place at runtime.
+
+Am I correct to assume that the check is performed when the
+"*elaboration* of a generic_instantiation of a generic unit that has a
+body" takes place?  If so, may I suggest tweaking the wording of
+3.11(13) to say this?
+
+If not, then when exactly is the elaboration check performed?
+
+Yes, I realize this is very minor, but it's the sort of thing that
+causes me headaches when I try to read the RM, since I prefer to be
+sure I'm understanding the RM correctly rather than assume that the
+interpretation that makes sense to me is the right one.
+
+****************************************************************
+

Questions? Ask the ACAA Technical Agent