tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

set-mutable-binding-binding-deleted-in-get-unscopables.js (1041B)


      1 // Copyright (C) 2024 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-object-environment-records-setmutablebinding-n-v-s
      6 description: >
      7  Binding deleted when retrieving unscopables.
      8 info: |
      9  9.1.1.2.5 SetMutableBinding ( N, V, S )
     10 
     11  1. Let bindingObject be envRec.[[BindingObject]].
     12  2. Let stillExists be ? HasProperty(bindingObject, N).
     13  3. If stillExists is false and S is true, throw a ReferenceError exception.
     14  4. Perform ? Set(bindingObject, N, V, S).
     15  ...
     16 
     17 flags: [noStrict]
     18 features: [Symbol.unscopables]
     19 includes: [propertyHelper.js]
     20 ---*/
     21 
     22 var unscopablesCalled = 0;
     23 
     24 var env = {
     25  binding: 0,
     26  get [Symbol.unscopables]() {
     27    unscopablesCalled++;
     28    delete env.binding;
     29    return null;
     30  }
     31 };
     32 
     33 with (env) {
     34  binding = 123;
     35 }
     36 
     37 assert.sameValue(unscopablesCalled, 1, "get [Symbol.unscopables] called once");
     38 
     39 verifyProperty(env, "binding", {
     40  value: 123,
     41  writable: true,
     42  enumerable: true,
     43  configurable: true,
     44 });
     45 
     46 reportCompare(0, 0);