And just this second I found this... but it's a few months old
and has no follow up.
http://forum.dlang.org/thread/mailman.1054.1398548687.2763.digitalmars-d-b...@puremagic.com
On Monday, 6 October 2014 at 12:17:01 UTC, Alice wrote:
Hi,
I've created a template mixin which contains a struct
definition. The template is meant to be mixed into each module
- to provide a little bit of auto generated info in each module
- generated at compile time. As soon as I reference the symbols
in any context, it starts complaining about conflicts between
the two modules.
It doesn't have to be a struct; the conflicts exist whether I
define a struct, class, function, or whatever... any symbol.
It is valid to manually define symbols with the same name in
different modules, since they each exist in a different scope,
so why does a symbol brought in by a mixin conflict?
Even defining the struct as private doesn't help. Any ideas
would be most appreciated.
Here's a very simple failing case:
// ModuleA.d
module ModuleA;
import ModuleB;
mixin MixinUsefulStuff;
pragma(msg, "a = ", SomeData.a); // Error:
ModuleB.MixinUsefulStuff!().SomeData at ModuleB.d(5) conflicts
with ModuleA.MixinUsefulStuff!().SomeData at ModuleB.d(5)
// ModuleB.d
module ModuleB;
mixin template MixinUsefulStuff()
{
struct SomeData
{
enum a = 123;
}
}
mixin MixinUsefulStuff;