2 require('./es6.regexp.flags');
3 var anObject = require('./_an-object')
4 , $flags = require('./_flags')
5 , DESCRIPTORS = require('./_descriptors')
6 , TO_STRING = 'toString'
7 , $toString = /./[TO_STRING];
9 var define = function(fn){
10 require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);
13 // 21.2.5.14 RegExp.prototype.toString()
14 if(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);
20 // FF44- RegExp#toString has a wrong name
21 } else if($toString.name != TO_STRING){
22 define(function toString(){
23 return $toString.call(this);