Don <nos...@nospam.com> wrote:
My opinion (a significant departure from the current situation,
unfortunately):
It should be possible to define version identifiers with booleans.
version EnableFeatureX = !Lite && !Demo;
This looks nice to me, except that the rhs looks like normal code. It
gives me the feeling that version foo = sqrt(bar) should work.
Perhaps version foo = version( bar && !baz ); is better. I'm not sure.
Possibly:
* make it illegal to define a version identifier from inside a version
{} block.
This would break existing code, and it feels logical to write code like
this:
version( foo ) {
// quite a few lines of dependent code
version = bar;
}
Of course, the result is cleaner:
version( foo ) {
// quite a few lines of dependent code
}
version bar = foo;
So I'm a bit torn. Wait, getting a brain wave again....
Ahh. Make that a ++votes.
* disallow duplicate version definitions.
Absolutely.
* require declarations for all version identifiers. Versions which are
set from the command line should be explicitly declared, eg:
version Lite = extern;
version Demo = extern;
That would make creating a bird's nest impossible.
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!
This is an awesome idea. ++votes
--
Simen