'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); | |
}); | |
} |