On Friday, June 14, 2013 02:02:23 David Nadlinger wrote: > On Thursday, 13 June 2013 at 23:25:42 UTC, Jonathan M Davis wrote: > > Walter has expressed a desire in the past to make it so that D > > requires that > > the evaluation order of arguments be left-to-right in order to > > avoid bugs, and > > while these aren't exactly function arguments, … > > Actually, behind the scenes all three are arguments to *one* > function call: the druntime array op implementation. > > Anyway, my question was mainly about the assignment operator, > which is obviously not expected to behave lexically left-to-right > by that test case.
I don't see how the assignment operator could possibly work left-to-right, though I could see how there might be a question with regards to whether what's on the left of the assignment operator would be evaluated before what's on the right when what's on the left is an expression rather than a variable. Personally, I would expect it to fully evaluate the right-hand side of an assignment expression before evaluating anything on the left, and I'd expect the same of any operator which is right-associative, but I'm not aware of anything official on the matter. All the discussions on the matter that I'm aware of have referred specifically to function arguments being left-to-right and said nothing about operators. - Jonathan M Davis