| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/diag9148.d(19): Error: `pure` function `diag9148.test9148a.foo` cannot access mutable static data `g` |
| fail_compilation/diag9148.d(23): Error: `pure` function `diag9148.test9148a.bar` cannot access mutable static data `g` |
| fail_compilation/diag9148.d(24): Error: `immutable` function `diag9148.test9148a.bar` cannot access mutable data `x` |
| fail_compilation/diag9148.d(31): Error: `pure` function `diag9148.test9148a.S.foo` cannot access mutable static data `g` |
| fail_compilation/diag9148.d(35): Error: `pure` function `diag9148.test9148a.S.bar` cannot access mutable static data `g` |
| fail_compilation/diag9148.d(36): Error: `immutable` function `diag9148.test9148a.S.bar` cannot access mutable data `x` |
| --- |
| */ |
| void test9148a() pure |
| { |
| static int g; |
| int x; |
| |
| void foo() /+pure+/ |
| { |
| g++; |
| } |
| void bar() immutable /+pure+/ |
| { |
| g++; |
| x++; |
| } |
| |
| struct S |
| { |
| void foo() /+pure+/ |
| { |
| g++; |
| } |
| void bar() immutable /+pure+/ |
| { |
| g++; |
| x++; |
| } |
| } |
| } |
| |
| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/diag9148.d(54): Error: `static` function `diag9148.test9148b.foo` cannot access variable `x` in frame of function `diag9148.test9148b` |
| fail_compilation/diag9148.d(51): `x` declared here |
| --- |
| */ |
| |
| void test9148b() |
| { |
| int x; |
| static void foo() pure |
| { |
| int y = x; |
| } |
| } |