If we can make a reasonable definition of what compile time expression evaluation is, then we can make the conditions for an AliasingError more general.
Currently it states:
In Gazprea aliasing of mutable variables is illegal (the only case where any aliasing is allowed is through disjoint tuple field access.)
We want to get away from "hardcoding" the spec semantics, as using language like "the only case" tends to do. Ideally we move towards something like:
"Any locations which can be statically (ie. without evaluating any expressions at compile-time) determined to not alias should not raise an aliasing error"
If we can make a reasonable definition of what compile time expression evaluation is, then we can make the conditions for an
AliasingErrormore general.Currently it states:
We want to get away from "hardcoding" the spec semantics, as using language like "the only case" tends to do. Ideally we move towards something like: