
This fixes an issue where expressions like `a[i] = a[++i]` could evaluate `++i` before `a[i]`.
21 lines
407 B
JavaScript
21 lines
407 B
JavaScript
test("Assignment should always evaluate LHS first", () => {
|
|
function go(a) {
|
|
let i = 0;
|
|
a[i] = a[++i];
|
|
}
|
|
|
|
let a = [1, 2, 3];
|
|
go(a);
|
|
expect(a).toEqual([2, 2, 3]);
|
|
});
|
|
|
|
test("Binary assignment should always evaluate LHS first", () => {
|
|
function go(a) {
|
|
let i = 0;
|
|
a[i] |= a[++i];
|
|
}
|
|
|
|
let a = [1, 2];
|
|
go(a);
|
|
expect(a).toEqual([3, 2]);
|
|
});
|