CVS difference for ais/ai-00251.txt

Differences between 1.7 and version 1.8
Log of other versions for file ais/ai-00251.txt

--- ais/ai-00251.txt	2002/06/12 00:36:45	1.7
+++ ais/ai-00251.txt	2002/06/14 23:48:56	1.8
@@ -1,4 +1,4 @@
-!standard 03.04    (02)                            02-06-05  AI95-00251/04
+!standard 03.04    (02)                            02-06-13  AI95-00251/05
 !standard 03.09.01 (02)
 !class amendment 00-12-04
 !status work item 00-12-04
@@ -508,12 +508,11 @@
         interface type.
 
     A descendant of a type which names an interface type in an
-    abstract_interface_list, or which is derived from an interface type,
-    is said to "implement" the interface and all of its ancestors.
-    A class-wide type implements the interfaces implemented by the
-    corresponding specific type. The corresponding full view of a
-    partial view of a type implements all interfaces implemented by
-    the partial view.
+    abstract_interface_list, or which is derived from an interface type, is
+    said to "implement" the interface and any other interfaces implemented by
+    that interface. A class-wide type implements the interfaces implemented by
+    the corresponding specific type. The corresponding full view of a partial
+    view of a type implements all interfaces implemented by the partial view.
 
     A type which implements an interface shall be limited if and only
     if the interface type is limited.
@@ -1091,8 +1090,7 @@
 
     3.9.4 Abstract Interface Types
 
-        An abstract interface type is an abstract tagged type intended for
-use
+        An abstract interface type is an abstract tagged type intended for use
         in providing a restricted form of multiple inheritance.
         A tagged type may "implement" multiple interfaces, thereby allowing
         multiple views of objects of the type.
@@ -1108,8 +1106,7 @@
                                  Legality Rules
 
         An abstract interface type (also called an "interface type" or
-        "interface") is a specific abstract tagged type that is defined by
-an
+        "interface") is a specific abstract tagged type that is defined by an
         abstract_interface_definition, or by a derived_type_definition or
         formal_derived_type_definition where the keyword ABSTRACT
         appears and the parent type is an interface type.
@@ -1663,6 +1660,44 @@
       If the target type is not included in any of the above five cases,
       there shall be a type that is an ancestor of both the target type and the
       operand type.
+
+****************************************************************
+
+From: Steve Baird
+Sent: Thursday, June 13, 2002   3:52 PM
+
+I intended that the "implements" relation be transitive, but I didn't word
+the definition correctly.
+
+In this example,
+
+     type Ifc1 is abstract interface;
+
+     type Ifc2 is abstract interface;
+
+     type Ifc3 is abstract new Ifc1 and Ifc2 with null record;
+
+     type T1 is tagged null record;
+
+     type T2 is new T1 and Ifc3 with null record;
+
+, T2 implements Ifc3 and Ifc3 implements Ifc2, so therefore T2 should
+implement Ifc2.
+
+I believe that the proposed wording should be fixed to handle this case.
+
+In the new 3.9.4 section, replace
+        A descendant of a type which names an interface type in an
+        abstract_interface_list, or which is derived from an interface type,
+        is said to "implement" the interface and all of its ancestors.
+with
+        A descendant of a type which names an interface type in an
+        abstract_interface_list, or which is derived from an interface type,
+        is said to "implement" the interface and any other interfaces
+        implemented by that interface.
+
+
+Comments?
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent