| Thread overview |
|---|
April 09, 2017 Compiling debug missing errors | ||||
|---|---|---|---|---|
| ||||
Hi all,
Using the following example:
---------------
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.
Ĝis,
Duarte
| ||||
April 09, 2017 Re: Compiling debug missing errors | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Duarte | 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 | |||
April 09, 2017 Re: Compiling debug missing errors | ||||
|---|---|---|---|---|
| ||||
Posted in reply to ag0aep6g | On Sunday, 9 April 2017 at 20:59:26 UTC, ag0aep6g wrote:
> On 04/09/2017 10:49 PM, Duarte wrote:
>> [...]
>
> 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
Cheers mate!
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply