On Tuesday, 20 October 2015 at 01:49:08 UTC, Jonathan M Davis
wrote:
On Monday, 19 October 2015 at 23:37:09 UTC, Timon Gehr wrote:
This is the worst part:
class C{
int[] x=[1,2,3];
}
void main(){
auto mut=new C;
auto imm=new immutable(C);
assert(imm.x[0]==1);
mut.x[0]=2;
assert(imm.x[0]==2);
}
Oooo. Ouch. Yeah, that pushes it from being a good idea to
disallow this in order to avoid bugs to a necessity to disallow
it in order to avoid breaking the type system.
Yeah. But IMO it should still be allowed for immutable objects,
and the error/deprecation message should say so, because for
those it can actually be useful and there would be no other way
to do it.