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

Differences between 1.9 and version 1.10
Log of other versions for file ai12s/ai12-0075-1.txt

--- ai12s/ai12-0075-1.txt	2018/01/27 04:54:50	1.9
+++ ai12s/ai12-0075-1.txt	2018/03/02 07:23:28	1.10
@@ -1,4 +1,4 @@
-!standard 4.9(6)                                  18-01-17    AI12-0075-1/06
+!standard 4.9(6)                                  18-03-01    AI12-0075-1/07
 !standard 4.9(18)
 !class Amendment 13-06-09
 !status work item 13-06-09
@@ -57,8 +57,28 @@
   qualified expressions, membership tests, short circuit control forms,
   conditional expressions, and parenthesized expressions.
 
-  A "potentially static expression function" is defined to be an
-  expression function
+   The following language-defined representation aspect may be specified
+   for an expression function.
+
+     Static   The type of aspect Static is Boolean. When aspect Static is True
+	      for an expression function, the function is a *static expression
+	      function*. If directly specified, the aspect_definition shall be a
+	      static expression.
+
+              The Static value for an inherited function is True if some
+              corresponding primitive function of the parent or 
+              progenitor type is a static expression function; otherwise,
+              if not directly specified, the aspect is False.
+
+   Redundant[A static expression function is a static function; see 4.9.]
+
+Move 6.8(6/4) to this point (after the new text), in order to avoid having
+two Static Semantics sections in this clause.
+
+Add after 6.8(5/4): [In the Legality Rules section].
+  
+  Aspect Static shall only be specified to have the value True if the
+  associated expression function:
     - whose expression is a potentially static expression; and
     - which contains no calls to itself; and
     - each of whose parameters (if any) is of mode IN and is of a
@@ -67,27 +87,18 @@
     - to which no precondition or postcondition expression applies; and
     - which is not type invariant enforcing for any type (see 7.3.2); and
     - which is not a completion.
-
-  The following language-defined representation aspect may be specified
-  for a potentially static expression function.
-
-    Static - The type of aspect Static is Boolean.
 
-  A "static expression function" is defined to be an expression function
-  whose Static aspect is True.
-  In addition, an inherited function is defined to be a static expression
-  function if the corresponding primitive function of the parent or
-  progenitor type is a static expression function.
-  [A static expression function is a static function; see 4.9].
+AARM Ramification: Since a string subtype can be static, this allows an
+expression function of a string type to be static.
 
 Add after 7.3.2(8.2/5) [as added by AI12-0199-1]
 
 If one or more invariant expressions apply to a nonabstract type T, then
 a subprogram or entry is said to be "type invariant enforcing" for T if
-   - it is the Read or Input stream-oriented attribute of the type T; or
-   - it is declared within the immediate scope of T (or by an instance of a
-     generic unit, and the generic is declared within the immediate scope of
-     type T), and either:
+    - it is declared within the immediate scope of T (or by an instance
+      of a generic unit, and the generic is declared within the immediate
+      scope of type T), or is the Read or Input stream-oriented attribute
+      of type T, and either:
 
        * has a result with a part of type T; or
        * has one or more *out* or *in out* parameters with a part of type T; or
@@ -96,7 +107,7 @@
        * is a procedure or entry that has an *in* parameter with a part of type
          T.
 
-   - and either:
+    - and either:
 
        * T is a private type or a private extension and the subprogram or
          entry is visible outside the immediate scope of type T or overrides

Questions? Ask the ACAA Technical Agent