Breaking out of #15300. These two differ in evaluation order, even though the only difference is the introduction of the noop foo((), ...) around the a on the LHS:
fn foo(_: (), x: int) -> int { x }
fn main() {
let mut a = 2i;
println!("{}", a * foo(a = 5, a)); // 25
a = 2i;
println!("{}", foo((), a) * foo(a = 5, a)); // 10
}
http://is.gd/zVdDoh