Interface Covariance Bug?
John C
johnch_atms at hotmail.com
Sun Mar 26 01:45:47 PST 2006
This compiles, but produces some strange output on the cmd line (DMD 0.150,
Windows XP SP2):
interface ICollection(T) {
int length();
}
interface IMap(TKey, TValue) {
ICollection!(TKey) keys();
}
class Map(TKey, TValue) : IMap!(TKey, TValue) {
KeyCollection keys() {
return new KeyCollection;
}
class KeyCollection : ICollection!(TKey) {
int length() {
return 5;
}
}
}
void main() {
IMap!(int, int) map = new Map!(int, int);
writefln(map.keys.length);
}
Output:
KeyCollection
10227584
Why does it output "KeyCollection"? Is it some kind of runtime error? And
why is map.keys.length not 5?
More information about the Digitalmars-d-bugs
mailing list