| // https://issues.dlang.org/show_bug.cgi?id=22626 |
| // REQUIRED_ARGS: -preview=nosharedaccess |
| |
| shared int k; |
| |
| class Oops |
| { |
| shared int a; |
| shared int* pa; |
| synchronized void oops() |
| { |
| // this should compile since the function is synchronized |
| // and `a` is accessed through `this`. |
| a = 2; |
| |
| // this shouldn't compile because synchronized guards |
| // only accesses to the first level of dereferencing |
| static assert (!__traits(compiles, *pa = 2)); |
| |
| // this shouldn't compile `k` is a field of class `Oops` |
| static assert (!__traits(compiles, k = 2)); |
| } |
| } |