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? Bye and thank you, bearophile