On Sunday, 12 January 2020 at 15:21:05 UTC, Per Nordlöw wrote:
- in the short run,
Qualifying all user-defined class destructors with `@nogc`?
- in the long run,
Making DMD forbid GC-allocations transitively inside class
destructors?
The class doesn't necessarily know what its destructor is going
to be used for, nor does as struct. So such static checks would
end problematic; limiting to some legit cases and not catching
some problem cases (because destructors are called with child
classes to).
The most recent release added a runtime function you can test
though:
https://dlang.org/phobos/core_memory.html#.GC.inFinalizer
so if that is true, avoid doing the call.
Of course that doesn't help the case when you don't know the rule
and don't even think to call it.......