CVS difference for ai05s/ai05-0073-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file 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