``` struct S { int x; int getX()() { return !x ? getY() : x; } int getY()() { return !x ? -1 : getX(); } } static assert(__traits(compiles, (S s) @safe => s.getX())); // fails ``` @safety of getX() depends on getY(), and vice-versa. The compiler currently simply falls back to @system. It should probably try harder to resolve such cyclic dependencies.
*** This issue has been marked as a duplicate of issue 16528 ***