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