On Friday, August 20, 2010 16:49:38 Adam Ruppe wrote: > 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.....
As I understand it, version is supposed to be set for the whole build, and you're not supposed to be able to change it, but it might be meant to be changeable on a per-module basis. Certainly, I wouldn't expect you to set it in one module and have it affect another. That would create extra dependencies, which D generally avoids as much as possible. I'd have to pull out my copy of TDPL though if I wanted to say for sure how setting version is supposed to work. - Jonathan M Davis