version: multiple conditions

Joakim via Digitalmars-d digitalmars-d at puremagic.com
Sat Jun 27 20:06:18 PDT 2015


On Friday, 26 June 2015 at 06:06:09 UTC, Daniel Murphy wrote:
> Walter, how about a compromise?
>
> If we allow setting versions to boolean expression then it 
> becomes much easier to use it the way you suggest, while still 
> requiring a (hopefully) sensible name and discouraging making a 
> mess.
>
> eg
>
> version(A)
> {
>   version(B)
>   {
>   }
>   else
>   {
>      version=NeedsSomeCode;
>   }
> }
>
> becomes
>
> version NeedsSomeCode = A && !B
>
> An example from real code would be
>
> version valistIsCharPointer = (Linux && LP32) || Windows;
>
> This pattern does appear frequently in your compiler code, are 
> you for or against seeing it in D?

So you're trying to avoid writing this?

version(linux) version(D_LP32)
     version = valistIsCharPointer;
else version(Windows)
     version = valistIsCharPointer;

While your version is more concise, I actually think the current 
form is more clear.


More information about the Digitalmars-d mailing list