I just hit something that might be a compiler bug, or might be a documentation bug. (Of course, it can't be me! :P )
I have two modules: config.d === version (clientA) {} version ( clientB ) { version = withFeatureX; } version (clientC) { version = withFeatureX; } === application.d === import config; void main() { version(withFeatureX) static assert(0); } ==== dmd application.d config.d -version=clientB This compiles, but I expect it to hit the static assert. Should it? Note that it does work correctly if I put the version= line in the actual file, but that means I can't have the nice centralized config module anymore. So is this a bug, or should the documentation be a bit more explicit about version = lines only working inside the one module? (or should I just learn how to read? :-P) I kinda miss #include here.....