CVS difference for ai05s/ai05-0073-1.txt
--- ai05s/ai05-0073-1.txt 2007/10/25 03:40:20 1.1
+++ ai05s/ai05-0073-1.txt 2007/10/31 02:24:49 1.2
@@ -1,4 +1,5 @@
-!standard 3.9.3(8/2) 07-10-24 AI05-0073-1/01
+!standard 3.9.3(8/2) 07-10-24 AI05-0073-1/02
+!standard 3.9.3(10/2)
!class binding interpretation 07-10-24
!status work item 07-10-24
!status received 07-10-09
@@ -17,6 +18,9 @@
There is a check that a function with an access result type designating a specific tagged
type returns a value which designates a value of that specific tagged type.
+For a tagged type declared in a visible part, a primitive function with a controlling
+access result cannot be declared in the private part.
+
!question
(1) Consider:
@@ -64,6 +68,12 @@
What is the intent here?
+(3) 3.9.3(10) has rules that prevent a visible tagged type from having "hidden" routines
+that would require overriding for a derived type. The Amendment changed the rules for
+"require overriding" [3.9.3(4-6/2)] to include functions with controlling access
+results. But it doesn't make a corresponding change in 3.9.3(10). What is supposed to
+happen when such types are derived?
+
!recommendation
(See Summary.)
@@ -76,6 +86,15 @@
shall be abstract. A generic function shall not have an abstract result type or an
access result type designating an abstract type.
+Modify 3.9.3(10) as follows:
+
+For an abstract type declared in a visible part, an abstract primitive subprogram shall
+not be declared in the private part, unless it is overriding an abstract subprogram
+implicitly declared in the visible part. For a tagged type declared in a visible part,
+a primitive function with a controlling result {or a controlling access result}
+shall not be declared in the private part, unless it is overriding a function
+implicitly declared in the visible part.
+
Add a new paragraph after 6.5(8/2):
If the result subtype of the function is defined by an access_definition designating a
@@ -334,5 +353,21 @@
what was "return Lim_Type" in Ada 95 becomes
"return access Lim_Type" in Ada 2005. Hence, one should
not be surprised if the tag check is carried over.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Thursday, October 25, 2007 12:42 PM
+
+I opened the test objectives for 3.9.3 in order to check that I had remembered
+to retest them for interface type (I had), and happened to notice another
+problem.
+
+3.9.3(10) has rules that prevent a visible tagged type from having "hidden"
+routines that would require overriding for a derived type. We changed the rules
+for "require overriding" [3.9.3(4-6/2)] to include functions with controlling
+access results. But we didn't make a corresponding change in 3.9.3(10). Oops.
+
+I'll add this to the already open AI for abstract screwups, AI05-0073-1.
****************************************************************
Questions? Ask the ACAA Technical Agent