On Friday, 3 August 2018 at 21:44:55 UTC, Adam D. Ruppe wrote:
Is it possible to deinitialize the class without calling the
gc?
Yes, use the .destroy function,
Which is converted to void type when passing the object to
rt_finalize, which causes to lost all type information. How is
this a better solution!?
Child classes have independent destructors which do not need to
adhere to the attributes of the parent class destructor,
Why is this an issue? Simply don't call them. There is no reason
for a child class to adhere to the attribute of an empty
destructor. If you want to be transparent of the possibility of
them not being called, then create "destructor_hook".
and moreover this cannot be detected at compile time when the
attributes are processed
Are you telling me that D is incapable of determining the classes
that is currently inheriting the parent class? That not even
extern (D) can provide information to the compiler!? Do I need to
add meta information section to my DIP?
I am not interested in a poor man solution here. This is a
serious problem that needs addressing. I literally see the usage
of __.dtor in the standard library! What's worst is that I seen
sledge hammer approach to this by forcing the destroy function to
be @nogc! I am not convinced that the upcoming protoObject is
going to fix this issue given that old Object still exist.