On Monday, October 18, 2010 12:24:48 Don wrote: > And currently, you can make a typo like: > version(Linix) {} > and it compiles happily. I don't like that. Especially when we have > builtin names like D_Inline_Asm_X86_64!
The real question is how to cleanly fix that. A version is defined only if it's in use, so it can't do like variable declarations do and complain that the version wasn't declared. You could even be stupid enough to declare your own version D_Inline_Asm_X86_65, so it's not even like the compiler can necessarily complain when a version declaration uses a version which is almost the same as a correct one but not quite (since you could just not be compiling with that version declared at the moment). So, while I agree that the current situation with versions and mispelling them is problematic, I haven't a clue how you'd fix it right now. If _all_ versions had to be declared and then only the enabled ones were compiled in, _then_ we could make it work, since the entire list of versions would be known, but that would be a definite departure from how things work now and would likely make it very hard to do version = otherVersion; in your code like you can do now. - Jonathan M Davis