On Monday, 28 January 2013 at 16:50:37 UTC, Maxim Fomin wrote:
Than value of this expression (note, that evaluated expression
is not b, it is b = c) is assigned to a.
Quoting you (that was exactly part of standard I was referring
too):
"assignment expression has the value of the left operand"
Left operand for (b = c) is b. Thus (b = c) has value of b. Value
of b is b.getter(). Thus compiler is re-writing it wrong if we
copy C rules.
b.setter cannot be called prior to b.getter as in your example
#1 due to sequence rules. The example #2 would be for
expression a = c, b = c which is not a = b = c in the presence
of properties.
What sequence rules are you speaking about?