CVS difference for ai12s/ai12-0403-1.txt
--- ai12s/ai12-0403-1.txt 2020/10/21 04:44:45 1.2
+++ ai12s/ai12-0403-1.txt 2020/10/22 23:59:00 1.3
@@ -1,13 +1,12 @@
-!standard 4.2.1(15/5) 20-10-20 AI12-0403-1/02
+!standard 4.2.1(15/5) 20-10-21 AI12-0403-1/03
!standard 4.2.1(17/5)
!standard 4.2.1(18/5)
!standard 4.2.1(19/5)
!standard 4.3.5(93/5)
!standard H.4.1(2/5)
-!standard H.7.1(14/5)
-!standard H.7.1(17/5)
-!standard H.7.1(18/5)
!class binding interpretation 20-10-15
+!status Amendment 1-2012 20-10-21
+!status ARG Approved 14-0-0 20-10-21
!status work item 20-10-15
!status received 20-10-15
!priority Low
@@ -39,19 +38,6 @@
The second sentence seems awkward. Should it be reworded? (Yes.)
-(4) H.7.1(17/5) says:
-
- Within an operation to which a Dispatching aspect applies, any dispatching
- call that does not match any dispatching_operation_specifier of the
- dispatching operation set is checked using the Nonblocking and Global'Class
- aspect(s) applicable to the called dispatching operation; if there is a match,
- there is no checking against the Nonblocking or global aspects applicable at
- the point of call.
-
-Is it clear that this only refers to the call itself and not to any checks
-associated with the evaluation of the parameters? (No.) In particular, the
-parameters are still considered to be read/written, right? (Yes.)
-
!recommendation
(1) Fix as suggested.
@@ -60,11 +46,6 @@
(3) Reword to use "shall" rather than "require".
-(4) Merge this entire rule with H.7.1(14/5), as there is no actual
-Legality Rule in it anyway, and clarify that we're only talking about
-the checks associated with the call and not any other checks that
-are nearby (including those associated with the parameters).
-
!wording
Modify 4.2.1(15/5-20/5):
@@ -108,40 +89,26 @@
any descendants {shall}[do] not have any controlled parts. If specified,
the value of the expression shall be static. If not specified, the value
of this aspect is False.
+
+!discussion
-Modify H.7.1(14/5):
+(See !recommendation.)
-The dispatching operation set is identified by a set of
-dispatching_operation_specifiers. It indicates that the Nonblocking and
-global effects of dispatching calls that match one of the specifiers need
-not be accounted for by the Nonblocking or global aspect, but are instead
-to be accounted for by the invoker of the operation. A dispatching call
-matches a dispatching_operation_specifier if the name or prefix of the call
-statically denotes the same operation(s) as that of the
-dispatching_operation_specifier, and at least one of the objects controlling
-the call is denoted by, or designated by, a name that statically names the
-same object as that denoted by the object_name of the
-dispatching_operation_specifier. {
-
-}In the absence of any dispatching_operation_specifiers{, or if none of them
-match a dispatching call C within an operation P}, Nonblocking and global
-aspects checks are performed at the point of [a dispatching]{the} call {C}
-within [the operation]{P} using the Nonblocking and Global'Class aspects that
-apply to the [named] dispatching operation {named in call C}. {If there is a
-match, any global access or potential blocking within the subprogram body
-invoked by the call C is ignored at the point of call within P. Instead,
-when the operation P itself is invoked, Nonblocking and global aspect checks
-are performed presuming each named dispatching operation is called at least
-once (with the named object controlling the call), but similarly ignoring
-those dispatching calls that would match a dispatching_operation_specifier
-applicable at the point of invocation of P.}
+!corrigendum 4.2.1(0)
-Delete H.7.1(17/5) and H.7.1(18/5) [these are moved above].
+@insc
+See the conflict file for the changes.
-!discussion
+!corrigendum 4.3.5(0)
-(See !recommendation.)
+@dinsc
+See the conflict file for the changes.
+!corrigendum H.4.1(0)
+
+@dinsc
+See the conflict file for the changes.
+
!ASIS
No ASIS effect.
@@ -441,165 +408,5 @@
type and any descendants shall not have any controlled parts.
And I got rid of the "do", making the whole discussion moot. I hope. ;-)
-
-****************************************************************
-
-From: Claire Dross
-Sent: Friday, September 18, 2020 9:54 AM
-
-[From her RM review.]
-
-Annex H-7-1
-
-17/5 Within an operation to which a Dispatching aspect applies, any dispatching
-call that does not match any dispatching_operation_specifier of the dispatching
-operation set is checked using the Nonblocking and Global'Class aspect(s)
-applicable to the called dispatching operation; if there is a match, there is
-no checking against the Nonblocking or global aspects applicable at the point
-of call.
-
->> Is it clear that parameters are still considered to be read/written? should
-we add a comment?
-
-****************************************************************
-
-From: Tucker Taft
-Sent: Friday, September 18, 2020 10:39 AM
-
-> Annex H-7-1
->
-> 17/5 Within an operation to which a Dispatching aspect applies, any
-> dispatching call that does not match any
-> dispatching_operation_specifier of the dispatching operation set is
-> checked using the Nonblocking and Global'Class aspect(s) applicable to
-> the called dispatching operation; if there is a match, there is no
-> checking against the Nonblocking or global aspects applicable at the
-> point of call.
->
->>> Is it clear that parameters are still considered to be read/written?
->>> should we add a comment?
-
-Perhaps an AARM note with an example where the actual parameter is a global,
-indicating it should be treated as a read and/or write of that global.
-Normative wording could perhaps be clarified by saying "checking {of these
-aspects} against the ...". Hence:
-
-"Within an operation to which a Dispatching aspect applies, any dispatching
-call that does not match any dispatching_operation_specifier of the
-dispatching operation set is checked using the Nonblocking and Global'Class
-aspect(s) applicable to the called dispatching operation; if there is a match,
-there is no checking of these aspects against the Nonblocking or global
-aspects applicable at the point of call."
-
-****************************************************************
-
-Editor's note: A summary of private mail between me and Tucker Taft.
-
-Randy:
-
-Humm. I think this makes it worse, because it's not at all clear what "these
-aspects" refer to. The noun here is "a Dispatching aspect"; I know you're not
-talking about that.
-
-I suspect some the confusion here is that the two parts here seem to be
-talking about slightly different parts of the process; the first talks
-about "checking" using the N and G aspects of the called operation, but
-doesn't say anything about what that entails, whereas the second talks
-about "not checking" (unidentified aspects) against some specific aspects
-at the point of the call.
-
-It would be better if the two halves were truly equivalent, talking about
-exactly the same thing. I realize that's not easy to do. The overly long
-version would be something like:
-
-"Within an operation to which a Dispatching aspect applies, any dispatching
-call that does not match any dispatching_operation_specifier of the dispatching
-operation set is checked {against the Nonblocking or global aspects applicable
-at the point of call} using the Nonblocking and Global'Class aspect(s)
-applicable to the called dispatching operation; if there is a match, there
-is no checking {of the Nonblocking and Global'Class aspect(s) applicable to
-the called dispatching operation} against the Nonblocking or global aspects
-applicable at the point of call."
-
-It might be best to mention that we're talking about the "usual" check in the
-first case (which of course makes it longer still):
-
-"Within an operation to which a Dispatching aspect applies, any dispatching
-call that does not match any dispatching_operation_specifier of the
-dispatching operation set is checked {in the normal way against the
-Nonblocking or global aspects applicable at the point of call} using the
-Nonblocking and Global'Class aspect(s) applicable to the called dispatching
-operation; if there is a match, there is no checking {of the Nonblocking and
-Global'Class aspect(s) applicable to the called dispatching operation} against
-the Nonblocking or global aspects applicable at the point of call."
-
-I suspect this can be refactored to simplify and clarify it. Perhaps:
-
-"Within an operation to which a Dispatching aspect applies, the manner in
-which the Nonblocking and Global'Class aspect(s) of a dispatching call are
-checked against the Nonblocking or global aspects applicable at the point of
-call depends upon the Dispatching aspect(s) that apply. In particular, for any
-dispatching call that does not match any dispatching_operation_specifier of
-the dispatching operation set the aspects are checked in the normal way; if
-there is a match, there is no checking of those aspects."
-
-Maybe "in the normal way" would be better phrased as "as usual"? Or more
-pedantically "as described elsewhere in this Standard"?
-
-Maybe there even a better way to organize this wording?
-
-Tucker:
-
-> Humm. I think this makes it worse, because it's not at all clear what
-> "these aspects" refer to. The noun here is "a Dispatching aspect"; I
-> know you're not talking about that.
-
-To me it seems pretty clear what "these aspects" refers to, since it is plural
-while "dispatching aspect" is singular. But perhaps we can avoid any hint of
-ambiguity.
-
-...
-> Maybe there even a better way to organize this wording?
-
-I don't think "normally" or "usually" work very well here, so I think we
-should be a bit more pedantic.
-
-In fact, I would suggest we merge this legality-rule paragraph's content
-(and the one following) into the Static Semantics section, as they seem
-closely related to a Static Semantics paragraph (14/5), and there is no
-"shall" or "shall not" in these paragraphs anyway.
-
-Hence, I would suggest the following:
-
-Modify H.7.1(14/5):
-
-The dispatching operation set is identified by a set of
-dispatching_operation_specifiers. It indicates that the Nonblocking and
-global effects of dispatching calls that match one of the specifiers need
-not be accounted for by the Nonblocking or global aspect, but are instead
-to be accounted for by the invoker of the operation. A dispatching call
-matches a dispatching_operation_specifier if the name or prefix of the call
-statically denotes the same operation(s) as that of the
-dispatching_operation_specifier, and at least one of the objects controlling
-the call is denoted by, or designated by, a name that statically names the
-same object as that denoted by the object_name of the
-dispatching_operation_specifier. {
-
-}In the absence of any dispatching_operation_specifiers{, or if none of them
-match a dispatching call C within an operation P}, Nonblocking and global
-aspects checks are performed at the point of [a dispatching]{the} call {C}
-within [the operation]{P} using the Nonblocking and Global'Class aspects that
-apply to the [named] dispatching operation {named in call C}. {If there is a
-match, any global access or potential blocking within the subprogram body
-invoked by the call C is ignored at the point of call within P. Instead,
-when the operation P itself is invoked, Nonblocking and global aspect checks
-are performed presuming each named dispatching operation is called at least
-once (with the named object controlling the call), but similarly ignoring
-those dispatching calls that would match a dispatching_operation_specifier
-applicable at the point of invocation of P.}
-
--------
-
-Then we can delete H.7.1(17/5 and 18/5).
****************************************************************
Questions? Ask the ACAA Technical Agent