/* REQUIRED_ARGS: -preview=systemVariables TEST_OUTPUT: --- fail_compilation/systemvariables_struct.d(31): Error: accessing `@system` field `S.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(32): Error: accessing `@system` field `S.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(33): Error: accessing `@system` field `S.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(36): Error: accessing `@system` field `S.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(37): Error: accessing `@system` field `S.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(38): Error: accessing `@system` field `S.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(54): Error: accessing `@system` field `S2.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(55): Error: accessing `@system` field `S2.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(56): Error: accessing `@system` field `S.syst` is not allowed in a `@safe` function fail_compilation/systemvariables_struct.d(57): Error: accessing `@system` field `S.syst` is not allowed in a `@safe` function --- */ // http://dlang.org/dips/1035 struct S { @system S* syst; @safe S* safe; } void aggregate() @safe { S s0; // write access s0.syst = null; __traits(getMember, s0, "syst") = null; s0.tupleof[0] = null; // read access auto a0 = s0.syst; auto a1 = __traits(getMember, s0, "syst"); auto a2 = s0.tupleof[0]; S s1; s1 = s0; // allowed } struct S2 { @system S syst; @safe S safe; } @safe S2 gs2; void aggregate2() @safe { gs2.syst.syst = null; gs2.syst.safe = null; gs2.safe.syst = null; gs2.safe.syst.safe = null; gs2.safe.safe = null; // allowed }