CVS difference for ais/ai-00162.txt

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

--- ais/ai-00162.txt	2005/08/05 04:31:43	1.12
+++ ais/ai-00162.txt	2005/08/21 06:00:11	1.13
@@ -1,4 +1,4 @@
-!standard 03.10.02 (3)                               05-06-15  AI95-00162/08
+!standard 03.10.02 (3)                               05-08-21  AI95-00162/09
 !standard 03.10.02 (7)
 !standard 03.10.02 (13)
 !standard 06.05 (18)
@@ -91,7 +91,8 @@
 In 3.10.2(3) replace the first two sentences with
     "The accessibility rules, which prevent dangling references, are written
      in terms of *accessibility levels*, which reflect the run-time nesting
-     of *masters* (see 7.6.1).
+     of *masters*. As explained in 7.6.1, a master is the execution of a
+     certain construct, such as a subprogram_body."
 
 In 3.10.2(7), replace "innermost enclosing master" with
 "innermost enclosing master other than the declaration itself".
@@ -360,7 +361,9 @@
 @dby
 The accessibility rules, which prevent dangling references, are written in
 terms of @i<accessibility levels>, which reflect the run-time nesting of
-@i<masters> (see 7.6.1). An accessibility level is @i<deeper than> another if it
+@i<masters>. As explained in 7.6.1, a master is the execution of a
+certain construct, such as a @fa<subprogram_body>.
+An accessibility level is @i<deeper than> another if it
 is more deeply nested at run time. For example, an object declared local to a
 called subprogram has a deeper accessibility level than an object declared
 local to the calling subprogram. The accessibility rules for access types
@@ -1602,6 +1605,39 @@
 get finalized/waited-for sooner rather than later.
 
 [This is version /05 of the AI - ED]
+
+****************************************************************
+
+!topic Rewriting 3.10.2(18) in light of AI-162
+!reference RM05 3.10.2(18), AARM05 3.10.2(18.a), AI95-00162
+!from Adam Beneschan 05-02-09
+!discussion
+
+This may be a nitpick, but . . .
+
+3.10.2(18) says,
+
+    For a master that is statically nested within another master, the
+    accessibility level of the inner master is statically deeper than
+    that of the outer master.
+
+The AARM follows this with a "To be honest" comment:
+
+    To be honest: Strictly speaking, this should talk about the
+    constructs (such as subprogram_bodies) being statically nested
+    within one another; the masters are really the executions of those
+    constructs.
+
+This looseness was probably OK in Ada 95 since a master was defined as
+the execution of a task_body, block_statement, subprogram_body, or
+accept_statement.  It was pretty clear what static constructs
+corresponded to the executions in the definition of "master".  AI-162
+has muddied things up, though, and the definition of "master" now
+includes elaborations and expression evaluations as well as
+executions.  (RM05 7.6.1(3/2))
+
+Given that, perhaps we should consider rewording 3.10.2(18) to make it
+say what we really mean?
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent