mirror of https://github.com/tc39/test262.git
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-object-environment-records-setmutablebinding-n-v-s
|
|
description: >
|
|
Operator x-- calls PutValue(lhs, newValue) (formerly S11.3.2_A5_T4)
|
|
info: |
|
|
The concrete Environment Record method SetMutableBinding for object Environment
|
|
Records attempts to set the value of the Environment Record's associated binding
|
|
object's property whose name is the value of the argument N to the value of argument V.
|
|
A property named N normally already exists but if it does not or is not currently writable,
|
|
error handling is determined by the value of the Boolean argument S.
|
|
|
|
Let stillExists be ? HasProperty(bindings, N).
|
|
If stillExists is false and S is true, throw a ReferenceError exception.
|
|
flags: [noStrict]
|
|
---*/
|
|
var count = 0;
|
|
var scope = {
|
|
get x() {
|
|
delete this.x;
|
|
return 2;
|
|
}
|
|
};
|
|
|
|
with (scope) {
|
|
(function() {
|
|
"use strict";
|
|
assert.throws(ReferenceError, () => {
|
|
count++;
|
|
x--;
|
|
count++;
|
|
});
|
|
count++;
|
|
})();
|
|
}
|
|
|
|
assert.sameValue(count, 2);
|
|
assert(!('x' in scope));
|