A Small Enhancement Idea

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Thu Sep 3 12:16:40 PDT 2015


On 09/02/2015 06:28 PM, Jack Stouffer wrote:
> I wanted some second opinions on an idea I had for D before I made a
> bugzilla issue.
>
> Currently in D, to have a statement run only in debug mode, you can mark
> it with the debug keyword. But, there is currently no way to mark a
> statement so that it only runs in release. So what I propose is a
> release statement like so:
>
> debug {
>      // only runs when -debug is given
> }
>
> release {
>      // only runs when -release is given
> }
>
> Or, if adding a new keyword to the language is a no go, it could be done
> like so:
>
> debug {
>      // only runs when -debug is given
> } else {
>      // only runs when -release is given
> }
>
> I have run into a need for this twice in one day, both having to do with
> unit tests in phobos. For the first one, I needed a way to make sure
> that a function is @nogc in release. For the other, the function I was
> tested had different outputs for release and debug if the input was an
> empty range, and I had no way to test both cases.
>

Its behaviour literally depended on the -release flag? How?

> I can think of several other use cases off the top of my head. One, If
> you have a GUI application that checks for a serial number on startup,
> there's no reason to do that check in a debug build. Or, if your making
> a game, there's no reason to do the opening logo crawl before the menu
> if your using debug mode.
>
> A rebuttal to this might be to just use version and pass something in
> during compilation. The problem that I have is this is not a solution
> for the phobos code that I am working on.

version(assert){}else{
     // only runs when -release is given
}


More information about the Digitalmars-d mailing list