CVS difference for 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