https://issues.dlang.org/show_bug.cgi?id=15247
Marco Leise <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #3 from Marco Leise <[email protected]> --- class D { ~this() @system {} } void main() { foo(new D); } void foo(Object o) pure @safe nothrow @nogc { o.destroy(); // Whatever we call it... } What I'm saying here is, if destructors were virtual methods that inherit and recursively call their base class destructors, and we had pure @safe nothrow @nogc on Object, we could NOT actually introduce impure destructors, as the compiler cannot statically verify attributes that may be loosened in a derived class. Attributes can only be added to overridden methods never removed, the same way methods can only be added and not removed. This bug report is invalid, in my humble opinion. --
