tor-browser

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

from-regexp-like-flag-override.js (1958B)


      1 // Copyright (C) 2015 the V8 project authors. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 description: Initialization from a RegExp-like object (with flag overrides)
      6 es6id: 21.2.3.1
      7 info: |
      8    1. Let patternIsRegExp be IsRegExp(pattern).
      9    [...]
     10    6. Else if patternIsRegExp is true, then
     11       a. Let P be Get(pattern, "source").
     12       b. ReturnIfAbrupt(P).
     13       c. If flags is undefined, then
     14          [...]
     15       d. Else, let F be flags.
     16    [...]
     17    10. Return RegExpInitialize(O, P, F).
     18 features: [Symbol, Symbol.match]
     19 ---*/
     20 
     21 var obj = {
     22  source: 'source text'
     23 };
     24 var result;
     25 
     26 Object.defineProperty(obj, 'flags', {
     27  get: function() {
     28    throw new Test262Error('The `flags` property value should not be referenced.');
     29  }
     30 });
     31 
     32 obj[Symbol.match] = true;
     33 result = new RegExp(obj, 'g');
     34 assert.sameValue(
     35  result.source, 'source text', '@@match specified as a primitive boolean'
     36 );
     37 assert.sameValue(
     38  result.flags, 'g', '@@match specified as a primitive boolean'
     39 );
     40 
     41 obj[Symbol.match] = 'string';
     42 result = new RegExp(obj, 'g');
     43 assert.sameValue(
     44  result.source, 'source text', '@@match specified as a primitive string'
     45 );
     46 assert.sameValue(result.flags, 'g', '@@match specified as a primitive string');
     47 
     48 obj[Symbol.match] = [];
     49 result = new RegExp(obj, 'g');
     50 assert.sameValue(
     51  result.source, 'source text', '@@match specified as an array'
     52 );
     53 assert.sameValue(result.flags, 'g', '@@match specified as an array');
     54 
     55 obj[Symbol.match] = Symbol();
     56 result = new RegExp(obj, 'g');
     57 assert.sameValue(
     58  result.source, 'source text', '@@match specified as a Symbol'
     59 );
     60 assert.sameValue(result.flags, 'g', '@@match specified as a Symbol');
     61 
     62 obj[Symbol.match] = 86;
     63 result = new RegExp(obj, 'g');
     64 assert.sameValue(
     65  result.source, 'source text', '@@match specified as a primitive number'
     66 );
     67 assert.sameValue(result.flags, 'g', '@@match specified as a primitive number');
     68 
     69 reportCompare(0, 0);