debug = x overrides command line

Gary Willoughby via Digitalmars-d digitalmars-d at puremagic.com
Tue Oct 21 12:14:18 PDT 2014


On Tuesday, 21 October 2014 at 17:25:37 UTC, Steven Schveighoffer 
wrote:
> On 10/21/14 12:02 PM, Gary Willoughby wrote:
>> On Tuesday, 21 October 2014 at 15:45:55 UTC, Steven 
>> Schveighoffer wrote:
>>> Currently, if you write something like this:
>>>
>>> debug = x;
>>
>> In code? Like this:
>>
>> void main()
>> {
>>     debug = x;
>>
>>     // now in debug mode even though not specified on the CLI?
>> }
>>
>
> Yes, but only for debug(x) statements. debug statements without 
> a symbol aren't enabled. But for those statements, purity is 
> jettisoned. e.g.:
>
> import std.stdio;
> int a;
>
> void foonotpure() { a = 5; writeln("yep, not pure");}
>
> debug = x; // note this is only allowed at module scope.
> void main() pure
> {
>    debug(x) foonotpure();
> }
>
> dmd -run foonotpure.d
> yep, not pure
>
>> If that's true, that's pretty scary. What if it's hidden in a 
>> module
>> somewhere?
>
> Yep, you can just turn off purity when it gets in the way.
>
> -Steve

Wow!


More information about the Digitalmars-d mailing list