description(
"This test checks whether various forms of assignment expression are allowed."
);
var x = 0;
var y = 0;
shouldBe('x = 1; x', '1');
shouldBe('window.x = 2; x', '2');
shouldBe('window["x"] = 3; x', '3');
shouldBe('(x) = 4; x', "4");
shouldBe('(window.x) = 5; x', '5');
shouldBe('(window["x"]) = 6; x', '6');
shouldBe('y, x = 7; x', '7');
shouldBe('((x)) = 8; x', '8');
shouldBe('((window.x)) = 9; x', '9');
shouldBe('((window["x"])) = 10; x', '10');
shouldThrow('(y, x) = "FAIL";');
shouldThrow('(true ? x : y) = "FAIL";');
shouldThrow('x++ = "FAIL";');