digitalmars.D.bugs - Covariance doesn't work on forward-referenced classes
- Stewart Gordon (25/25) Feb 11 2005 Using DMD 0.111, Windows 98SE.
- =?ISO-8859-1?Q?Thomas_K=FChne?= (43/43) Feb 11 2005 -----BEGIN PGP SIGNED MESSAGE-----
- Stewart Gordon (8/11) Feb 14 2005 Surely this is override, not overload? Or are you using "override" to
- =?ISO-8859-1?Q?Thomas_K=FChne?= (21/21) Feb 18 2005 -----BEGIN PGP SIGNED MESSAGE-----
Using DMD 0.111, Windows 98SE.
The compiler refuses to accept a covariant return type that is forward
referenced. Hence it is impossible for two classes to use each other as
covariant return types (unless one is nested within the other).
----------
class Qwert {
Qwert yuiop() { return new Qwert; }
}
class Asdfg : Qwert {
override Hjkl yuiop() { return new Hjkl; }
}
class Hjkl : Qwert {
override Asdfg yuiop() { return new Asdfg; }
}
----------
D:\My Documents\Programming\D\Tests\bugs\covariant3.d(6): function
covariant3.Asdfg.yuiop of type Hjkl () overrides but is not covariant
with covariant3.Qwert.yuiop of type Qwert ()
----------
The same occurs if the two classes are defined in separate modules (in
which case compiling module A reports an error in module B, and vice versa).
Stewart.
--
My e-mail is valid but not my primary mailbox. Please keep replies on
the 'group where everyone may benefit.
Feb 11 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Stewart Gordon wrote:
| Using DMD 0.111, Windows 98SE.
|
| The compiler refuses to accept a covariant return type that is forward
| referenced. Hence it is impossible for two classes to use each other as
| covariant return types (unless one is nested within the other).
|
| ----------
| class Qwert {
| Qwert yuiop() { return new Qwert; }
| }
|
| class Asdfg : Qwert {
| override Hjkl yuiop() { return new Hjkl; }
| }
|
| class Hjkl : Qwert {
| override Asdfg yuiop() { return new Asdfg; }
| }
| ----------
| D:\My Documents\Programming\D\Tests\bugs\covariant3.d(6): function
| covariant3.Asdfg.yuiop of type Hjkl () overrides but is not covariant
| with covariant3.Qwert.yuiop of type Qwert ()
| ----------
|
| The same occurs if the two classes are defined in separate modules (in
| which case compiling module A reports an error in module B, and vice
| versa).
|
| Stewart.
|
Added to DStress as
http://dstres.kuehne.cn/run/overload_17.d
http://dstres.kuehne.cn/run/overload_18.d
Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (MingW32)
iD8DBQFCDUwi3w+/yD4P9tIRAj5oAKCeiV2W94Hyp9aKPAqMHEkl10ZCRwCfXMcV
Rum0wJuLym6iAJJJjV8EVBk=
=HfCU
-----END PGP SIGNATURE-----
Feb 11 2005
Thomas Kühne wrote: <snip>Added to DStress as http://dstres.kuehne.cn/run/overload_17.d http://dstres.kuehne.cn/run/overload_18.dSurely this is override, not overload? Or are you using "override" to mean issues specific to the override keyword? Stewart. -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.
Feb 14 2005
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Stewart Gordon wrote: | Thomas Kühne wrote: | <snip> | |> Added to DStress as |> http://dstress.kuehne.cn/run/overload_17.d |> http://dstress.kuehne.cn/run/overload_18.d | | Surely this is override, not overload? Or are you using "override" to | mean issues specific to the override keyword? "override" is specific to the "override" keyword. "overload" contains general problems with functions' signatures. Thomas -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (MingW32) iD8DBQFCFl9X3w+/yD4P9tIRAvWpAJ9DZC+6YHKc8fIEK+fLLDMCOk0RawCfWeOe wJ0FZdvr/UUA4uknSS8GidM= =YuMV -----END PGP SIGNATURE-----
Feb 18 2005








=?ISO-8859-1?Q?Thomas_K=FChne?= <thomas-dloop kuehne.THISISSPAM.cn>