Thread overview
Version() for unittest OR debug?
Jun 10, 2014
Juanjo Alvarez
Jun 10, 2014
bearophile
Jun 10, 2014
Jacob Carlborg
Jun 11, 2014
Juanjo Alvarez
Jun 10, 2014
bearophile
Jun 11, 2014
Kagamin
Jun 12, 2014
Juanjo Alvarez
June 10, 2014
Hi,

Probably I pretty simple question, how could I mark some code to be compiled when in debug OR unittest mode? (or both, ||)

At first I tough I could do:

version(unittest, debug) {}

but this doesn't work.

Then I tried to define a new version:

version(DebugOrUnittest)
{
  version = debug;
  version = unittest;
}

But this also doesn't work.

June 10, 2014
Juanjo Alvarez:

> Probably I pretty simple question, how could I mark some code to be compiled when in debug OR unittest mode? (or both, ||)
>
> At first I tough I could do:
>
> version(unittest, debug) {}

You can define a enum boolean value in the version unittest block, and another inside the debug {} else {}. And then you can use "if (b1 || b2) { ... }".

Bye,
bearophile
June 10, 2014
On 10/06/14 16:06, bearophile wrote:

> You can define a enum boolean value in the version unittest block, and
> another inside the debug {} else {}. And then you can use "if (b1 || b2)
> { ... }".

"static if" is probably what's needed.

-- 
/Jacob Carlborg
June 10, 2014
Juanjo Alvarez:

> Probably I pretty simple question, how could I mark some code to be compiled when in debug OR unittest mode? (or both, ||)

Regarding your latest ER, Walter is usually not fond of such ideas. I have seen many similar ideas being shot down.

Bye,
bearophile
June 11, 2014
debug version = DebugOrUnittest;
else version(unittest)version = DebugOrUnittest;

version(DebugOrUnittest) { static assert(false,"DebugOrUnittest"); }
June 11, 2014
On Tuesday, 10 June 2014 at 14:06:58 UTC, bearophile wrote:
> Juanjo Alvarez:
>
>> Probably I pretty simple question, how could I mark some code to be compiled when in debug OR unittest mode? (or both, ||)
>>
>> At first I tough I could do:
>>
>> version(unittest, debug) {}
>
> You can define a enum boolean value in the version unittest block, and another inside the debug {} else {}. And then you can use "if (b1 || b2) { ... }".
>
> Bye,
> bearophile

Not pretty, but works.

Thanks!
June 12, 2014
On Wednesday, 11 June 2014 at 06:50:08 UTC, Kagamin wrote:
> debug version = DebugOrUnittest;
> else version(unittest)version = DebugOrUnittest;
>
> version(DebugOrUnittest) { static assert(false,"DebugOrUnittest"); }

I like this option more. I didn't knew you could assign to "version".

Thanks,
Juanjo