1
1
'use strict' ;
2
2
var fixRegExpWellKnownSymbolLogic = require ( '../internals/fix-regexp-well-known-symbol-logic' ) ;
3
+ var fails = require ( '../internals/fails' ) ;
3
4
var anObject = require ( '../internals/an-object' ) ;
4
5
var toLength = require ( '../internals/to-length' ) ;
5
6
var toInteger = require ( '../internals/to-integer' ) ;
@@ -8,7 +9,6 @@ var advanceStringIndex = require('../internals/advance-string-index');
8
9
var getSubstitution = require ( '../internals/get-substitution' ) ;
9
10
var regExpExec = require ( '../internals/regexp-exec-abstract' ) ;
10
11
var wellKnownSymbol = require ( '../internals/well-known-symbol' ) ;
11
- var UNSUPPORTED_NCG = require ( '../internals/regexp-unsupported-ncg' ) ;
12
12
13
13
var REPLACE = wellKnownSymbol ( 'replace' ) ;
14
14
var max = Math . max ;
@@ -33,6 +33,16 @@ var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
33
33
return false ;
34
34
} ) ( ) ;
35
35
36
+ var REPLACE_SUPPORTS_NAMED_GROUPS = ! fails ( function ( ) {
37
+ var re = / ./ ;
38
+ re . exec = function ( ) {
39
+ var result = [ ] ;
40
+ result . groups = { a : '7' } ;
41
+ return result ;
42
+ } ;
43
+ return '' . replace ( re , '$<a>' ) !== '7' ;
44
+ } ) ;
45
+
36
46
// @@replace logic
37
47
fixRegExpWellKnownSymbolLogic ( 'replace' , function ( _ , nativeReplace , maybeCallNative ) {
38
48
var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0' ;
@@ -112,4 +122,4 @@ fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNa
112
122
return accumulatedResult + S . slice ( nextSourcePosition ) ;
113
123
}
114
124
] ;
115
- } , UNSUPPORTED_NCG || ! REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ) ;
125
+ } , ! REPLACE_SUPPORTS_NAMED_GROUPS || ! REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ) ;
0 commit comments