Impure static

Timon Gehr timon.gehr at gmx.ch
Wed Nov 9 08:34:42 PST 2011


On 11/09/2011 02:16 PM, bearophile wrote:
> This little D2 program, a pure function contains static variables initialized with calls to not pure functions:
>
>
> int foo() {
>      return 1;
> }
> pure int bar() {
>      enum int x1 = foo();
>      static immutable int x2 = foo();
>      return x1;
> }
> void main() {}
>
>
> The latest DMD gives:
>
> test.d(5): Error: pure function 'bar' cannot call impure function 'foo'
> test.d(5):        called from here: foo()
> test.d(5):        called from here: foo()
> test.d(6): Error: pure function 'bar' cannot call impure function 'foo'
> test.d(6):        called from here: foo()
> test.d(6):        called from here: foo()
>
> I think I asked a similar question in past, is it right to expect DMD to compile this program?
>

Yes. Here is the bug report:
http://d.puremagic.com/issues/show_bug.cgi?id=6169


More information about the Digitalmars-d-learn mailing list