diff options
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.js | 40 |
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); |