Version 1.6 of ai05s/ai05-0072-1.txt

Unformatted version of ai05s/ai05-0072-1.txt version 1.6
Other versions for file ai05s/ai05-0072-1.txt

!standard 9.10(6.1/1)          07-12-13 AI05-0072-1/02
!class binding interpretation 07-10-24
!status Amendment 201Z 08-11-26
!status WG9 Approved 08-06-20
!status ARG Approved 9-0-0 06-11-10
!status work item 07-10-24
!status received 07-10-23
!priority Low
!difficulty Easy
!qualifier Error
!subject Termination only signals 'Terminated when it is True
!summary
A task A signals another task B only when B reads A'Terminated as True (or the equivalent call to Ada.Task_Identification).
!question
Section 9.10 defines the notion of one action "signaling" another. If A1 "signals" A2 then we know that A1 precedes A2. 9.10(6.1/1) has added task termination to this list, where A1 is termination, and A2 is the evaluation of T'Terminated (or the equivalent call on Is_Terminated). But this is only a "signal" if the evaluation returns True. The wording should reflect that.
!recommendation
(See Summary.)
!wording
Modify 9.10(6.1/1) as follows:
* If A1 is the termination of a task T, and A2 is either {an}[the] evaluation of the expression T'Terminated {that results in True,} or a call to Ada.Task_Identification. Is_Terminated with an actual parameter that identifies T {and a result of True} (see C.7.1).
!discussion
If T'Terminated returns False, that says nothing interesting about the state of T.
!corrigendum 9.10(6.1/1)
Replace the paragraph:
by:
!ACATS Test
This is testable, but the ARG voted not to test it in AI95-00118 (which originated the wording that this AI is correcting). Note that a test is unlikely to detect any errors - even an implementation which gets this wrong probably would pass a test like the one in the example of AI95-00118.
!appendix

From: Tucker Taft
Sent: Tuesday, October 23, 2007  3:35 PM

Section 9.10 defines the notion of one action "signaling"
another.  If A1 "signals" A2 then we know that A1
precedes A2.  6.1/1 has added task termination
to this list, where A1 is termination, and A2 is
the evaluation of T'Terminated (or the equivalent
call on Is_Terminated).  But this is only a "signal"
if the evaluation returns *True*.

So 6.1/1 should probably be revised as follows:

  * If A1 is the termination of a task T, and A2 is either
    the evaluation of the expression T'Terminated {that
    results in True,} or a call to Ada.Task_Identification.
    Is_Terminated with an actual parameter that identifies
    T {and a result of True} (see C.7.1).

****************************************************************

From: Tucker Taft
Sent: Tuesday, October 23, 2007  3:46 PM

Actually, the wording makes more sense if we replace
"either the evaluation of ..." with "either *an* evaluation
of ..." since the next part says "or *a* call ...".

Pick those nits!

****************************************************************

Questions? Ask the ACAA Technical Agent