On 5/12/17 5:46 PM, H. S. Teoh via Digitalmars-d-learn wrote:
On Fri, May 12, 2017 at 05:23:23PM -0400, Steven Schveighoffer via 
Digitalmars-d-learn wrote:
[...]
Note, you can achieve what you want with version(unittest):

version(unittest)
{
   class A { B b; }
   class B { }
}

unittest
{
   // use A and B here
}
[...]

This advice, unfortunately, needs to be tempered with caution about
namespace pollution and accidental dependency of things outside
unittests on things inside a version(unittest) block.  There's also the
issue of library code introducing extraneous import dependencies that
are really only necessary for unittesting, but get pulled in anyway
because user code happens to compile with -unittest.

This actually already happens. Any imports count, even inside unittests.

But yes, this does mean that symbols in the version(unittest) are in the module namespace.

You could create a struct or class namespace to avoid the pollution, as long as you use really horrible names that wouldn't possibly conflict.

-Steve

Reply via email to