On Friday, 19 February 2016 at 06:39:53 UTC, Walter Bright wrote:
Allow @mutable, and no more mechanical checking in D. Recall that D supports opaque types, meaning types are not fully known to the compiler.

Allow @trusted, an no more mechanical checking in D. Recall that D supports extern functions, meaning function bodies are not fully known to the compiler.

Seriously, yes, @mutable is not mechanically checkable, which is why it is @system. That's intended, and not a flaw. It is supposed to make it possible to express things that don't otherwise fit the type system, and still be reasonably safe.

Jonathan's idea of attaching @mutable to the declaration handles the problem of opaque data structures really well. We can debate whether we require that annotation every time a struct contains @mutable members (even indirectly) to make it more obvious (if so, it still needs to be inferred for templated types), or if it should only be required for opaque types.

Reply via email to