'use strict'; var implementation = require('./implementation'); var supportsDescriptors = require('define-properties').supportsDescriptors; var $gOPD = Object.getOwnPropertyDescriptor; module.exports = function getPolyfill() { if (supportsDescriptors && (/a/mig).flags === 'gim') { var descriptor = $gOPD(RegExp.prototype, 'flags'); if ( descriptor && typeof descriptor.get === 'function' && typeof RegExp.prototype.dotAll === 'boolean' && typeof RegExp.prototype.hasIndices === 'boolean' ) { /* eslint getter-return: 0 */ var calls = ''; var o = {}; Object.defineProperty(o, 'hasIndices', { get: function () { calls += 'd'; } }); Object.defineProperty(o, 'sticky', { get: function () { calls += 'y'; } }); if (calls === 'dy') { return descriptor.get; } } } return implementation; };