CVS difference for ais/ai-00211.txt
--- ais/ai-00211.txt 2000/01/26 18:24:21 1.9
+++ ais/ai-00211.txt 2000/07/13 04:31:30 1.10
@@ -1,4 +1,4 @@
-!standard 8.5.4 (7) 00-01-24 AI95-00211/05
+!standard 8.5.4 (7) 00-07-12 AI95-00211/06
!class ramification 98-11-18
!status Response 2000 00-01-24
!status WG9 approved 99-06-12
@@ -14,41 +14,42 @@
An abstract subprogram can be renamed, and the renamed view is also
abstract. Such a renaming must appear in a place where the declaration
of an abstract subprogram would be legal. Similarly, the "shall be overridden"
-property of 3.9.3(6) applies to a renamed view.
+property of 3.9.3(6) applies to a renamed view. Thus, any renaming of an
+inherited subprogram that must be overridden is illegal.
!question
Can an abstract subprogram be renamed? (Yes.) Can a subprogram which
must be overridden in the sense of 3.9.3(6) be renamed? (No.)
-Consider an example with an abstract parent type and primitive. 8.5.4(8)
-says that the renaming uses the original inherited subprogram, not the
-overriding version.
-
- package types is
- type t is abstract tagged ...
- procedure p (f : t) is abstract;
- end types;
- package extensions is
- type e is new types.t with ...
- procedure pr (f : e) renames p; -- renaming of inherited p
+Consider an example with an abstract parent type and a primitive operation.
+8.5.4(8) says that the renaming uses the original inherited subprogram, not
+the overriding version.
+
+ package Types is
+ type T is abstract tagged ...
+ procedure P (F : T) is abstract;
+ end Types;
+ package Extensions is
+ type E is new Types.T with ...
+ procedure Pr (F : E) renames P; -- renaming of inherited P
-- Legal? (No.)
- procedure p (f : e);
- end extensions;
+ procedure P (F : E);
+ end Extensions;
A similar example can be constructed with a function with a controlling
result.
- package types is
- type t is tagged ...
- function f return t;
- end types;
- package extensions is
- type e is new types.t with ...
- function fr return e renames f; -- renaming of inherited f
+ package Types is
+ type T is tagged ...
+ function F return T;
+ end Types;
+ package Extensions is
+ type E is new Types.T with ...
+ function Fr return E renames F; -- renaming of inherited F
-- Legal? (No.)
- function f return e;
- end extensions;
+ function F return E;
+ end Extensions;
!response
Questions? Ask the ACAA Technical Agent