On Friday, 21 August 2015 at 05:06:47 UTC, Walter Bright wrote:
The solution seems straightforward - only have Object.factory be able to instantiate classes marked as 'export'. This only makes sense anyway.

The export seems to be an arbitrary rule (and export is really broken currently). Let's just use every class that is linked into the binary (e.g. weakly referencing them), then it'll naturally work with all linker functionalities.

This doesn't only affect Object.factory but also ModuleInfo.localClasses. I'd suggest we first add a new internal array of weakly linked classes, turn localClasses into an opApply function or range so it automatically skips null classes (weakly undefined), then change Object.factory to only load weakly linked classes.

For an intermediate time we can keep the old array and print a deprecation warning in Object.factory when a class would no longer be available.
https://github.com/D-Programming-Language/dmd/pull/4638

Reply via email to