| 'use strict'; |
| require('./es6.regexp.flags'); |
| var anObject = require('./_an-object'); |
| var $flags = require('./_flags'); |
| var DESCRIPTORS = require('./_descriptors'); |
| var TO_STRING = 'toString'; |
| var $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); |
| }); |
| } |