CVS difference for ai05s/ai05-0219-1.txt
--- ai05s/ai05-0219-1.txt 2010/06/13 06:59:12 1.1
+++ ai05s/ai05-0219-1.txt 2010/08/12 22:33:50 1.2
@@ -1,15 +1,17 @@
-!standard 10.2.1(18/2) 10-06-13 AI05-0219-1/01
+!standard 10.2.1(18/2) 10-08-12 AI05-0219-1/02
!class binding interpretation 10-06-13
+!status Amendment 2012 10-08-12
+!status ARG Approved 8-0-1 10-06-19
!status work item 10-06-13
!status received 10-05-06
!priority Low
!difficulty Easy
-!qualifier Omission
+!qualifier Clarification
!subject Pure permissions and limited parameters
!summary
The permission to eliminate calls on pure subprograms cannot be used if
-any parameter has a part whose full type is limited.
+any parameter has a part whose full type is immutably limited.
!question
@@ -35,20 +37,47 @@
type}, and the addresses and values of all by-reference actual parameters, the
values of all by-copy-in actual parameters, and the values of all objects
accessible via access values from the parameters, are the same as they were at
-the earlier call. [This permission applies even if the subprogram produces other
-side effects when called.]
+the earlier call. This permission applies even if the subprogram produces other
+side effects when called.
-
!discussion
"Immutably limited" isn't strong enough, as it doesn't include all types with
-limited parts. "Limited type" here is vague, we are really talking about
+limited parts. However, "limited type" here is vague, we are really talking about
types whose full type is limited.
To be consistent, we use the same wording as for build-in-place: "full type of
any part of the object is immutably limited".
+!corrigendum 10.2.1(18/2)
+
+@drepl
+If a library unit is declared pure, then the implementation is permitted to
+omit a call on a library-level subprogram of the library unit if the results
+are not needed after the call. In addition, the implementation may omit a call
+on such a subprogram and simply reuse the results produced by an earlier call
+on the same subprogram, provided that none of the parameters nor any object
+accessible via access values from the parameters are of a limited type, and the
+addresses and values of all by-reference actual parameters, the values of all
+by-copy-in actual parameters, and the values of all objects accessible via
+access values from the parameters, are the same as they were at the earlier
+call. This permission applies even if the subprogram produces other side
+effects when called.
+@dby
+If a library unit is declared pure, then the implementation is permitted to
+omit a call on a library-level subprogram of the library unit if the results
+are not needed after the call. In addition, the implementation may omit a call
+on such a subprogram and simply reuse the results produced by an earlier call
+on the same subprogram, provided that none of the parameters nor any object
+accessible via access values from the parameters have any part that is of a
+type whose full type is an immutably limited type, and the
+addresses and values of all by-reference actual parameters, the values of all
+by-copy-in actual parameters, and the values of all objects accessible via
+access values from the parameters, are the same as they were at the earlier
+call. This permission applies even if the subprogram produces other side
+effects when called.
+
!ACATS Test
This is just a permission, it is hard to test usefully. (We could try to
@@ -421,7 +450,7 @@
****************************************************************
-From: Robert Dewar
+From: Gary Dismukes
Sent: Friday, May 7, 2010 12:26 PM
> I agree something like "inherently limited"
Questions? Ask the ACAA Technical Agent