'use strict'; require('./es6.regexp.flags'); var anObject = require('./_an-object') , $flags = require('./_flags') , DESCRIPTORS = require('./_descriptors') , TO_STRING = 'toString' , $toString = /./[TO_STRING]; var define = function(fn){ require('./_redefine')(RegExp.prototype, TO_STRING, fn, true); }; // 21.2.5.14 RegExp.prototype.toString() if(require('./_fails')(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){ define(function toString(){ var R = anObject(this); return '/'.concat(R.source, '/', 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); }); // FF44- RegExp#toString has a wrong name } else if($toString.name != TO_STRING){ define(function toString(){ return $toString.call(this); }); }