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