CVS difference for ai05s/ai05-0042-1.txt
--- ai05s/ai05-0042-1.txt 2007/03/27 22:52:35 1.1
+++ ai05s/ai05-0042-1.txt 2007/10/26 01:37:57 1.2
@@ -1,4 +1,4 @@
-!standard 3.9.3(6/2) 07-03-27 AI05-0042-1/00
+!standard 3.9.3(6/2) 07-10-25 AI05-0042-1/01
!class binding interpretation 07-03-27
!status work item 07-03-27
@@ -9,7 +9,9 @@
!subject Overriding versus implemented-by
+A subprogram that is implemented by an entry or by a protected subprogram
+is effectively overridden by an implict subprogram which calls the
+entry or protected subprogram.
@@ -49,17 +51,43 @@
+Add after 9.1(9.2/2):
+A subprogram implemented by a task entry is also overridden by an implicit,
+nonabstract subprogram having a subtype conformant profile. [At execution
+time, the effect of this implicit subprogram is to call the task entry.]
+AARM: This rule is needed so that a subprogram implemented by an entry is
+considered to be overridden for the purpose of the other rules of the
+language. Without it, it would for instance be illegal for an abstract
+subprogram to be implemented by an entry, because the abstract subprogram
+would not be overridden. The rules in 9.1(9.6/2-9.8/2) and 9.4(11.5/2-11.7/2)
+ensure that there is no conflict between the implicit overriding subprogram
+and a user-defined overriding subprogram.
+Add after 9.4(11.1/2):
+A subprogram implemented by a protected subprogram or entry is also overridden
+by an implicit, nonabstract subprogram having a subtype conformant profile.
+[At execution time, the effect of this implicit subprogram is to call the
+protected subprogram or entry.]
+One possible fix would be to change "overridden" by "overridden or implemented by"
+everywhere. But there are 24 occurrences of "overridden" in the RM, and the
+occurrences of "overriding" would have to be checked too. That's unappealing.
+It seems more straightforward to reify the model that we have had in mind all
+along anyway, namely that there is an implicit override that acts as a wrapper
+to call the protected subprogram or entry.
+A C test should be written to ensure that a code fragment like the one in the
+!question is actually accepted by implementations.
Questions? Ask the ACAA Technical Agent