Destructor attribute inheritance, yea or nay?
Stanislav Blinov via Digitalmars-d
digitalmars-d at puremagic.com
Fri May 26 10:17:39 PDT 2017
On Friday, 26 May 2017 at 17:08:40 UTC, Igor Shirkalin wrote:
> On Monday, 22 May 2017 at 17:05:06 UTC, Stanislav Blinov wrote:
>> I'd like to hear what you guys think about this issue:
>>
>> https://issues.dlang.org/show_bug.cgi?id=15246
>>
>> [...]
>
> If your destructor is not @safe and @nogc, why not to make it
> be the same or call inherited destructor implicity?
Destructors of derived classes are called implicitly on
finalization. The net effect is that such finalization adopts the
weakest set of attributes among all the destructors it calls.
There are two sides of this problem: one is that we cannot have
deterministic destruction (i.e. manually allocate/free classes)
while keeping attribute inference: under current rules,
finalization has to be @system. This one can be tackled if the
language provided strict rules of attribute inheritance in
destructors.
Another side, clearly demonstrated by my second post, is that
non-deterministic destruction cannot be @safe, period. Because
when GC collects and calls destructors, it calls all of them,
regardless of their @safe status, even when the collection is
triggered inside a @safe function.
More information about the Digitalmars-d
mailing list