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

Reply via email to