Compiling debug missing errors
ag0aep6g via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Apr 9 13:59:26 PDT 2017
On 04/09/2017 10:49 PM, Duarte wrote:
> ---------------
>
> import std.stdio;
>
> pure void foo()
> {
> debug
> {
> stdout.writeln("1");
> }
>
> stdout.writeln("2");
> }
>
> void main(string[] args)
> {
> foo();
> }
>
> ---------------
>
> Using either '-debug' or '-release', the second stdout will give an
> error (Error: pure function 'main.foo' cannot access mutable static data
> 'stdout') which is alright by me.
>
> The question is why the first stdout doesn't throw the same error when
> compiling with the '-debug' option? Surely the issue will be the same
> and the debug-statement should be satisfied.
You're allowed to break purity in debug code.
From the spec: "As a concession to practicality, a pure function can
also [...] perform impure operations in statements that are in a
ConditionalStatement controlled by a DebugCondition"
https://dlang.org/spec/function.html#pure-functions
More information about the Digitalmars-d-learn
mailing list