digitalmars.D.bugs - Covariance doesn't work with interfaces
- Stewart Gordon (41/41) Sep 01 2004 Using DMD 0.100, Windows 98.
Using DMD 0.100, Windows 98.
For some reason, the principle of covariant return types doesn't extend
to implementation of interfaces:
----------
class Yuiop {}
interface Qwert {
Qwert hjkl();
Yuiop zxcvb();
}
class Asdfg : Yuiop, Qwert {
Asdfg hjkl() { return null; }
Asdfg zxcvb() { return null; }
}
----------
D:\My Documents\Programming\D\Tests\bugs\covariant1.d(8): class Asdfg
interface function Qwert.hjkl isn't implemented
D:\My Documents\Programming\D\Tests\bugs\covariant1.d(8): class Asdfg
interface function Qwert.zxcvb isn't implemented
----------
Further, the fact of a method being part of an interface prevents any
covariant overriding in subsequently derived classes:
----------
interface Qwert {
Qwert hjkl();
}
class Asdfg : Qwert {
Qwert hjkl() { return null; }
}
class Qaz : Asdfg {
override Qaz hjkl() { return null; }
}
----------
D:\My Documents\Programming\D\Tests\bugs\covariant2.d(9): class Qaz
interface function Qwert.hjkl isn't implemented
D:\My Documents\Programming\D\Tests\bugs\covariant2.d(9): class Qaz
interface function Qwert.hjkl isn't implemented
----------
Stewart.
--
My e-mail is valid but not my primary mailbox. Please keep replies on
the 'group where everyone may benefit.
Sep 01 2004








Stewart Gordon <smjg_1998 yahoo.com>