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.

--

Reply via email to