I realize this scenario might look stupid, but I hope the underlying problem isn't. Does D define what happens in a situation like this? module a; import b; static if (!is(typeof(.b.foo))) int foo = 1; module b; import a; static if (!is(typeof(.a.foo))) int foo = 2;