[proposal] version statements with multiple arguments.
timotheecour
thelastmammoth at gmail.com
Mon Oct 22 21:26:49 PDT 2012
Indeed, having version logic has been requested many times before.
For example:
http://www.digitalmars.com/d/archives/digitalmars/D/learn/Can_I_do_an_or_in_a_version_block_33426.html
http://www.digitalmars.com/d/archives/digitalmars/D/11946.html
quote from those:
"Walter would reject it. He has stated clearly in the past that
he intended version to be simple and minimal, and that adding
anything onto it will only result in abuses."
I tend to think that not having version logic (&&,||,!) results
in greater abuse, ie people WILL come up with their own
incompatible, verbose solutions (string mixins and whatnot) to
achieve the same results;
Another point is that we are sometimes too lazy to write
statements as follows:
version (linux){ version = linuxOrBSD;}
version (BSD){ version = linuxOrBSD;}
version(linuxOrBSD){do_something;}
(that's ugly but it's the official recommended way; much more
verbose than:
version(linux || BSD){do_something;}
)
and instead we lazily duplicate code, because "do_something" is
small enough:
version (linux){ do_something;}
version (BSD){ do_something;}
Later on we (or the maintainer) update the first "do_something"
and forget to update the second. Bug follows.
Seriously who hasn't encountered that?
Might as well provide a clean standard solution so everybody uses
it. It should be easy to implement and wont' break any code.
More information about the Digitalmars-d
mailing list