This behaviour seems inconsistent and unintuitive:
void main() {
int[3] a = [1,2,3];
a = [4, a[0], 6];
struct S {
int a, b, c;
}
S s = S(1,2,3);
s = S(4, s.a, 6);
assert(a == [4,1,6]);
assert(s == S(4,4,6));
}
Setting the struct writes s.a before evaluating it while the
reverse is true of the array assignment. Using DMD 2.0.60. GDC
does what I'd expect and gives both as 4,1,6.
