https://issues.dlang.org/show_bug.cgi?id=20428
FeepingCreature <default_357-l...@yahoo.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |default_357-l...@yahoo.de --- Comment #1 from FeepingCreature <default_357-l...@yahoo.de> --- Sorta a bug but not really. More a really confusing aspect of how in-conditions work. By substitutability, a subclass can always say that it chooses to accept more data as parameters than its parent class or interface demands. Contracts are an extension of this mechanism, so an in-condition on an interface is mostly useless - the subclass only *has to* accept all the values that the interface in-condition lets through; but it can always choose to accept more values. (This is fundamental to what inheritance formally means.) In D, a lack of in-condition is taken to mean "the function takes any value allowed by the type." As such, you can always override a method with an in-condition with one that doesn't have an in-condition, which is taken to dissolve the in-condition. Now, from a language design perspective it would probably be better if "no in-condition" meant "copy the in-condition of the parent interface" and you'd signal the desire to accept any value with something like "in (true)". However, that'd be a feature proposal, not a bug. --