Version 1.1 of acs/ac-00195.txt

Unformatted version of acs/ac-00195.txt version 1.1
Other versions for file acs/ac-00195.txt

!standard 3.4.1(2/2)          10-02-22 AC95-00195/01
!class confirmation 10-02-22
!status received no action 10-02-22
!status received 10-02-18
!subject Interface types can be derived
!summary
!appendix

!topic Interface types can be derived types
!reference 3.9.4
!from Adam Beneschan 10-02-18
!discussion

More of a wording nitpick than anything, but: In the declaration

   type I2 is interface and I1;

I don't see anything in the RM that explicitly says that I2 is derived from I1.
As far as I can tell, the notion of a "derived type" or a "type being derived
from" another type is defined only in 3.4 which says a derived type is created
by a derived_type_definition, which this isn't.  This could matter in a case
like

   type I1 is interface;

   generic
      type Formal_Type is abstract new I1 with private;
   package Gen_Pack is ...

   type I2 is interface and I1;

   package Gen_Inst is new Gen_Pack (I2);

The rules require I2 to be a descendant of I1, and the definition of
"descendant" is in terms of "derived from"; so for this to be legal (which I
think it is), the RM needs to say somewhere that I2 is derived from, or
descended from, I1.

3.9.4(13-15) make it clear that it's intended that interface types can be
derived.  But it probably ought to be stated explicitly somewhere.

****************************************************************

From: Adam Beneschan
Date: Thursday, February 18, 2010  1:10 PM

> I don't see anything in the RM that explicitly says that I2 is derived
> from I1.

Scratch that---I found it in 3.4.1(2), I think.  Please ignore my last mail.

****************************************************************

From: Randy Brukardt
Date: Thursday, February 18, 2010  1:34 PM

For the enlightenment of everybody else, an interface type isn't a derived type
(that requires a derived_type_declaration), but any type with progenitors is
technically "derived from" those progenitors. The descendant relationship
requires "derived from", not "derived type". Hope that clears it up. :-)

****************************************************************

Questions? Ask the ACAA Technical Agent