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

Reply via email to