1'use strict'; 2require('./es6.regexp.flags'); 3var anObject = require('./_an-object'); 4var $flags = require('./_flags'); 5var DESCRIPTORS = require('./_descriptors'); 6var TO_STRING = 'toString'; 7var $toString = /./[TO_STRING]; 8 9var define = function (fn) { 10 require('./_redefine')(RegExp.prototype, TO_STRING, fn, true); 11}; 12 13// 21.2.5.14 RegExp.prototype.toString() 14if (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { 15 define(function toString() { 16 var R = anObject(this); 17 return '/'.concat(R.source, '/', 18 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); 19 }); 20// FF44- RegExp#toString has a wrong name 21} else if ($toString.name != TO_STRING) { 22 define(function toString() { 23 return $toString.call(this); 24 }); 25} 26