tor-browser

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

indices-groups-properties.js (1306B)


      1 // Copyright 2019 Ron Buckton. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 description: Properties of the groups object of indices are created with CreateDataProperty
      6 includes: [compareArray.js, propertyHelper.js]
      7 esid: sec-makeindicesarray
      8 features: [regexp-named-groups, regexp-match-indices]
      9 info: |
     10  MakeIndicesArray ( S, indices, groupNames, hasIndices )
     11    13. For each integer _i_ such that _i_ >= 0 and _i_ < _n_, do
     12      e. If _i_ > 0 and _groupNames_[_i_ - 1] is not *undefined*, then
     13        i. Perform ! CreateDataProperty(_groups_, _groupNames_[_i_ - 1], _matchIndicesArray_).
     14 ---*/
     15 
     16 
     17 // Properties created on result.groups in textual order.
     18 let groupNames = Object.getOwnPropertyNames(/(?<fst>.)|(?<snd>.)/du.exec("abcd").indices.groups);
     19 assert.compareArray(groupNames, ["fst", "snd"]);
     20 
     21 // Properties are created with Define, not Set
     22 let counter = 0;
     23 Object.defineProperty(Object.prototype, 'x', {set() { counter++; }});
     24 
     25 let indices = /(?<x>.)/d.exec('a').indices;
     26 let groups = indices.groups;
     27 assert.sameValue(counter, 0);
     28 
     29 // Properties are writable, enumerable and configurable
     30 // (from CreateDataProperty)
     31 verifyProperty(groups, 'x', {
     32    writable: true,
     33    enumerable: true,
     34    configurable: true
     35 });
     36 
     37 reportCompare(0, 0);