CVS difference for ai12s/ai12-0417-1.txt

Differences between 1.5 and version 1.6
Log of other versions for file ai12s/ai12-0417-1.txt

--- ai12s/ai12-0417-1.txt	2021/02/26 23:52:23	1.5
+++ ai12s/ai12-0417-1.txt	2021/03/03 08:52:48	1.6
@@ -1,4 +1,4 @@
-!standard 7.2(4)                                       21-02-25  AI12-0417-1/02
+!standard 7.2(4)                                       21-03-02  AI12-0417-1/03
 !standard 10.1.5(1)
 !standard 10.1.5(2)
 !standard 10.1.5(3)
@@ -8,6 +8,7 @@
 !standard 10.1.5(7/3)
 !standard 10.1.5(7.1/1)
 !standard 10.1.5(10/1)
+!standard 10.2(15/3)
 !standard 10.2(33)
 !standard 10.2.1(1)
 !standard 10.2.1(2)
@@ -188,9 +189,11 @@
     If a unit is not declared pure, the value of the Pure aspect for
     that unit is False.
 
-Modify 10.2.1(19):
-The form of a pragma Elaborate[,]{ or} Elaborate_All[, or Elaborate_Body] is
+Replace 10.2.1(19):
+The form of a pragma Elaborate, Elaborate_All, or Elaborate_Body is
 as follows: 
+with:
+The following pragmas are defined with the given forms: 
 
 Delete 10.2.1(22).
 
@@ -209,11 +212,11 @@
    Elaborate_Body aspect of a library unit is True, the body of the library 
    unit is elaborated immediately after its declaration.
 
-Modify AARM 10.2.1(27.b):
+Modify AARM 10.2.1(26.b):
 
    The {specification}[presence] of [a pragma]{the} Elaborate_Body {aspect}
    simplifies the removal of unnecessary Elaboration_Checks. For a subprogram 
-   declared immediately within a library unit [to] which {the}[a pragma] 
+   declared immediately within a library unit {for}[to] which {the}[a pragma] 
    Elaborate_Body {aspect is specified as True}[applies], the only calls that
    can fail the Elaboration_Check are those that occur in the library unit 
    itself, between the declaration and body of the called subprogram; if there
@@ -226,11 +229,12 @@
 
 Modify 13.1.1(32/4):
 
-{Some aspects are defined to be /library unit aspects/. For a library unit
-aspect, the}[Any aspect specified by a representation pragma or library unit pragma that
-has a local_name as its single argument may be specified by an 
+{Some aspects are defined to be /library unit aspects/. Library unit aspects
+are}[Any aspect specified by a representation pragma or library unit pragma
+that has a local_name as its single argument may be specified by an 
 aspect_specification, with the entity being the local_name.
-The] aspect_definition is expected to be of type Boolean. The expression shall be static.
+The aspect_definition is expected to be] of type Boolean. The expression
+{specifying a library unit aspect }shall be static.
 {Library unit aspects are defined for all program units, but shall be specified only
 for library units. }Notwithstanding what this International Standard says elsewhere, the
 expression of {a library unit}[an] aspect [that can be specified by a library unit pragma]
@@ -239,10 +243,10 @@
 {unit}[package]].
 
 [Editor's note: I've deleted the equivalence between pragmas and aspects.
-With this AI, all language-defined pragmas already have such an equivalence
-defined explicitly. And implementation-defined pragmas can do whatever they want
-anyway. So this is just wasted text. I changed "package" to "unit" since library
-unit aspects can be given on subprograms.]
+With this AI, all language-defined pragmas that have associated aspects already 
+have such an equivalence defined explicitly. And implementation-defined pragmas
+can do whatever they want anyway. So this is just wasted text. I changed "package"
+to "unit" since library unit aspects can be given on subprograms.]
 
 Modify C.4(1/3):
 
@@ -400,17 +404,16 @@
 
 J.15.14 Elaboration Control Pragmas
 
-This subclause defines pragmas that set aspects that help control the 
+This subclause defines pragmas that specify aspects that help control the 
 elaboration order of library_items. 
 
 AARM Discussion: Pragmas that do not have associated aspects still appear
-in 10.2.1. These pragmas are presented in the order that the aspects are
-defined in 10.2.1.
+in 10.2.1. The pragmas presented below are shown in the order that the
+aspects are defined in 10.2.1.
 
      Syntax
  
-  The form of pragmas Preelaborate, Preelaborable_Initialization, Pure, and
-  Elaborate_Body is as follows: 
+  The following pragmas are defined with the given forms: 
 
     pragma Preelaborate[(/library_unit_/name)];
     
@@ -424,15 +427,15 @@
 
      Static Semantics
 
-A pragma Preelaborate specifies that a library unit is preelaborated, by 
-setting the Preelaborate aspect (see 10.2.1) of the library unit to True.
+A pragma Preelaborate specifies that a library unit is preelaborated, 
+namely that the Preelaborate aspect (see 10.2.1) of the library unit is True.
 
-A pragma Pure specifies that a library unit is declared pure, by 
-setting the Pure aspect (see 10.2.1) of the library unit to True.
+A pragma Pure specifies that a library unit is declared pure, namely that
+the Pure aspect (see 10.2.1) of the library unit is True.
 
-A pragma Elaborate_Body @Redundant[specifies that a library unit 
-requires a completion,] by setting the Elaborate_Body aspect (see 10.2.1)
-of the library unit to True.
+A pragma Elaborate_Body specifies that @Redundant[a library unit 
+requires a completion, namely that] the Elaborate_Body aspect (see 10.2.1)
+of the library unit is True.
 
     Legality Rules
   
@@ -460,13 +463,12 @@
 
 J.15.15 Distribution Pragmas
 
-This subclause defines pragmas that set properties of units for distributed
+This subclause defines pragmas that specify properties of units for distributed
 systems.
 
 Syntax
 
-  The form of pragmas Shared_Passive, Remote_Types, Remote_Call_Interface, and
-  All_Calls_Remote is as follows: 
+  The following pragmas are defined with the given forms:  
 
      pragma Shared_Passive[(/library_unit_/name)];
 
@@ -492,11 +494,22 @@
 to someone (for instance, in error messages).]
 
 A pragma Shared_Passive specifies that a library unit is a shared passive
-library unit, by setting the Shared_Passive aspect (see E.2.1) of the library
-unit to True.
+library unit, namely that the Shared_Passive aspect (see E.2.1) of the library
+unit is True.
+
+A pragma Remote_Types specifies that a library unit is a remote types
+library unit, namely that the Remote_Types aspect (see E.2.2) of the library
+unit is True.
+
+A pragma Remote_Call_Interface specifies that a library unit is a remote call
+interface, namely that the Remote_Call_Interface aspect (see E.2.3) of the library
+unit is True.
 
+A pragma All_Calls_Remote specifies that the All_Calls_Remote aspect 
+(see E.2.3) of the library unit is True.
 
 
+
 !discussion
 
 Pragma Preelaborable_Initialization has already made the trip to Annex J.
@@ -756,7 +769,7 @@
 The form of a @fa<pragma> Elaborate, Elaborate_All, or Elaborate_Body is as 
 follows: 
 @dby
-The form of a @fa<pragma> Elaborate or Elaborate_All is as follows: 
+The following @fa<pragma>s are defined with the given forms: 
 
 !corrigendum 10.2.1(22)
 
@@ -817,9 +830,9 @@
 @fa<aspect_specification>, rather than the first freezing point of the
 associated package.
 @dby
-Some aspects are defined to be @i<library unit aspects>. For a library unit
-aspect, the @fa<aspect_definition> is expected to be of type Boolean. The 
-expression shall be static. Library unit aspects are defined for all program 
+Some aspects are defined to be @i<library unit aspects>. Library unit aspects are
+of type Boolean. The expression specifying a library unit aspect shall be static.
+Library unit aspects are defined for all program 
 units, but shall be specified only for library units. Notwithstanding what 
 this International Standard says elsewhere, the expression of a library unit
 aspect is resolved and evaluated at the point where it occurs in the
@@ -1053,13 +1066,12 @@
 !corrigendum J.15.15(0)
 
 @dinsc
-This subclause defines pragmas that set properties of units for distributed
+This subclause defines pragmas that specify properties of units for distributed
 systems.
 
 @s8<@i<Syntax>>
 
-The form of @fa<pragma>s Shared_Passive, Remote_Types, Remote_Call_Interface,
-and All_Calls_Remote is as follows: 
+The following @fa<pragma>s are defined with the given forms: 
 
 @xindent<@ @ @b<pragma> Shared_Passive (@i<library_unit_>@fa<name>);>
 
@@ -1080,10 +1092,20 @@
 categorization pragmas. In addition, the pragma Pure (see J.15.14) is 
 considered a categorization pragma.
 
-A pragma Shared_Passive specifies that a library unit is a shared passive
-library unit, by setting the Shared_Passive aspect (see E.2.1) of the library
-unit to True.
+A @fa<pragma> Shared_Passive specifies that a library unit is a shared passive
+library unit, namely that the Shared_Passive aspect (see E.2.1) of the library
+unit is True.
+
+A @fa<pragma> Remote_Types specifies that a library unit is a remote types
+library unit, namely that the Remote_Types aspect (see E.2.2) of the library
+unit is True.
+
+A @fa<pragma> Remote_Call_Interface specifies that a library unit is a remote call
+interface, namely that the Remote_Call_Interface aspect (see E.2.3) of the library
+unit is True.
 
+A @fa<pragma> All_Calls_Remote specifies that the All_Calls_Remote aspect 
+(see E.2.3) of the library unit is True.
 
 !ASIS
 

Questions? Ask the ACAA Technical Agent