tor-browser

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

consistent-value-function-arguments.js (1180B)


      1 // Copyright (C) 2017 Claude Pache. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 esid: sec-invariants-of-the-essential-internal-methods
      5 description: >
      6  Value of non-writable, non-configurable data property must not change
      7  ("arguments" property of a non-strict function)
      8 info: |
      9  [[GetOwnProperty]] (P)
     10  [...]
     11  - If a property P is described as a data property with Desc.[[Value]] equal
     12    to v and Desc.[[Writable]] and Desc.[[Configurable]] are both false, then
     13    the SameValue must be returned for the Desc.[[Value]] attribute of the
     14    property on all future calls to [[GetOwnProperty]] ( P ).
     15  [...]
     16  (This invariant was violated for the specific property under test by a number
     17  of implementations as of January 2017.)
     18 ---*/
     19 
     20 function f() {
     21  return Reflect.getOwnPropertyDescriptor(f, 'arguments');
     22 }
     23 
     24 Reflect.defineProperty(f, 'arguments', {
     25  writable: false,
     26  configurable: false
     27 });
     28 
     29 var desc = Reflect.getOwnPropertyDescriptor(f, 'arguments');
     30 if (desc && desc.configurable === false && desc.writable === false) {
     31  var desc2 = f();
     32  assert.sameValue(desc.value, desc2.value);
     33 }
     34 
     35 reportCompare(0, 0);