I'm currently in the process of annotating all of phobos with "export" and its quite cumbersome. To verify that I annoted all relevant functions and types with export I would like to run the unitests against the shared version of phobos. There is a problem with this though. The unittests are always compiled into the same binary the modules are in so the unittests would end up in the phobos.dll and would not test phobos across a shared library boundary. It would also be very usefull to have this verifycation for the future when DLL support is officially in and new features need to be tested if they are propperly annotated with "export". Once "export" is used for shared library symbol visibility on non-windows as well this will be an issue on all pattforms.

The best solution would be if you could simply compile the unittests and just the unittests into a executable. This would require some compiler modifications, but even when done would cause some problems: - Unittests may use private functions / types of a module. Private functions and types are however not exported from an shared library so this would require making a lot of private functions / types public just to be able to run the unittests.

Instead of building this into the compiler you could use a tool which extracts all "unittest { }" blocks out of all source files and puts them into new .d files. Then compile these into an executable. Now the code would not even compile because private symbols would not be accessible.

Any suggestions how to fix this issue? I'm also open for implementation hints.

Kind Regards
Benjamin Thaut

Reply via email to