tor-browser

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

constructor-option-read-order.js (1250B)


      1 // Copyright 2023 the V8 project authors. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-initializepluralrules
      6 description: Checks the order of option read.
      7 features: [Intl.NumberFormat-v3]
      8 includes: [compareArray.js]
      9 ---*/
     10 
     11 let optionKeys = [
     12    // Inside InitializePluralRules
     13    "localeMatcher",
     14    "type",
     15    "notation",
     16    // Inside SetNumberFormatDigitOptions
     17        "minimumIntegerDigits",
     18        "minimumFractionDigits",
     19        "maximumFractionDigits",
     20        "minimumSignificantDigits",
     21        "maximumSignificantDigits",
     22        "roundingIncrement",
     23        "roundingMode",
     24        "roundingPriority",
     25        "trailingZeroDisplay",
     26    // End of SetNumberFormatDigitOptions
     27 ];
     28 
     29 // Use getters to track the order of reading known properties.
     30 // TODO: Should we use a Proxy to detect *unexpected* property reads?
     31 let reads = new Array();
     32 let options = {};
     33 optionKeys.forEach((key) => {
     34    Object.defineProperty(options, key, {
     35        get() {
     36            reads.push(key);
     37            return undefined;
     38        },
     39    });
     40 });
     41 new Intl.PluralRules(undefined, options);
     42 assert.compareArray(reads, optionKeys, "Intl.PluralRules options read order");
     43 
     44 reportCompare(0, 0);