summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js')
-rw-r--r--js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js
new file mode 100644
index 0000000000..1447c6170e
--- /dev/null
+++ b/js/src/tests/test262/language/expressions/compound-assignment/S11.13.2_A5.3_T3.js
@@ -0,0 +1,40 @@
+// Copyright (C) 2014 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Compound Assignment Operator calls PutValue(lref, v)
+es5id: S11.13.2_A5.3_T3
+description: >
+ Evaluating LeftHandSideExpression lref returns Reference type; Reference
+ base value is an environment record and environment record kind is
+ object environment record. PutValue(lref, v) uses the initially
+ created Reference even if the environment binding is no longer present.
+ Binding in surrounding object environment record is not changed.
+ Check operator is "x %= y".
+flags: [noStrict]
+---*/
+
+var outerScope = {
+ x: 0
+};
+var innerScope = {
+ get x() {
+ delete this.x;
+ return 5;
+ }
+};
+
+with (outerScope) {
+ with (innerScope) {
+ x %= 3;
+ }
+}
+
+if (innerScope.x !== 2) {
+ throw new Test262Error('#1: innerScope.x === 2. Actual: ' + (innerScope.x));
+}
+if (outerScope.x !== 0) {
+ throw new Test262Error('#2: outerScope.x === 0. Actual: ' + (outerScope.x));
+}
+
+reportCompare(0, 0);