The following code
a := 1
b := 2
(a, b) = (b, a+b)
generates the incorrect result. The generated code doesn't use a temporary, and clobbers the value of 'a' before computing 'a+b'. A simpler expression, such as
(a, b) = (b, a)
does seem to work.
As a temporary solution, if a member is not variableAccess, temporary variable will be used.
Here's my code but I think it can be done better.
@zhaihj, your code doesn't look too bad :)
Closes #774 - thanks @d3zd3z for reporting & @zhaihj for the fix.