On Tuesday, October 19, 2010 15:50:12 bearophile wrote: > Jonathan M Davis: > > 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). > > If built-in versions are inside some kind of enum or namespace, the > compiler can tell apart the built-in ones from all the other ones, so if > you write: version(std.D_Inline_Asm_X86_65) > The compiler will complain that doesn't exists among the standard ones. > > If you want to use your own ones you just don't use the "std." prefix: > version(myFoo) > > Bye, > bearophile
That would certainly help with the standard ones, and it could be a very good move to make, but it doesn't solve the problem in the general case. - Jonathan M Davis