Version block "conditions" with logical operators

Tomer Filiba via Digitalmars-d digitalmars-d at puremagic.com
Tue May 10 05:27:59 PDT 2016


On Tuesday, 10 May 2016 at 11:48:12 UTC, Joakim wrote:
> This has been discussed multiple times in the forum, Walter is 
> against it and I agree with him:

Thanks for the pointers

> Another alternative is to put all such OS versioning logic in a 
> build script somewhere and then version on features in your D 
> code, which is probably cleanest, ie have a build script check
...
> The idea is to avoid having a bunch of such repeated 
> conditional logic for versioning spread throughout the 
> codebase, because it will be very error-prone and brittle.

It's compiler-version-dependent, or version(unittest) or 
version(assert) or version(do_extra_checks). Which means my 
checks are inherently spread around the code. I counted 53 
instances of "version.*else" in our code, which all look like

version (XXX) {} else {...}

I'm going to use my isVersion hack to avoid code duplication in 
"or", but for the rest of the code, I really think a 
version(!unittest) {...} is cleaner.

-tomer


More information about the Digitalmars-d mailing list