You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict'; var globalThis = require('../internals/global-this'); var DESCRIPTORS = require('../internals/descriptors'); var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); var regExpFlags = require('../internals/regexp-flags'); var fails = require('../internals/fails');
// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError
var RegExp = globalThis.RegExp; var RegExpPrototype = RegExp.prototype;
var FORCED = DESCRIPTORS && fails(function () { var INDICES_SUPPORT = true; try { RegExp('.', 'd'); } catch (error) { INDICES_SUPPORT = false; }
var O = {}; // modern V8 bug
var calls = ''; var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';
var addGetter = function (key, chr) { // eslint-disable-next-line es/no-object-defineproperty -- safe
Object.defineProperty(O, key, { get: function () { calls += chr; return true; } }); };
var pairs = { dotAll: 's', global: 'g', ignoreCase: 'i', multiline: 'm', sticky: 'y' };
if (INDICES_SUPPORT) pairs.hasIndices = 'd';
for (var key in pairs) addGetter(key, pairs[key]);
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);
return result !== expected || calls !== expected; });
// `RegExp.prototype.flags` getter
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
if (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', { configurable: true, get: regExpFlags });
|