diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js')
-rw-r--r-- | js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js new file mode 100644 index 0000000000..54f4b7b59e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js @@ -0,0 +1,46 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Invocation of `exec` method +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 3. Let exec be Get(R, "exec"). + 4. ReturnIfAbrupt(exec). + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). +features: [Symbol.replace] +---*/ + +var r = /./; +var callCount = 0; +var arg = { + toString: function() { + return 'string form'; + } +}; +var thisValue, args; + +r.exec = function() { + thisValue = this; + args = arguments; + callCount += 1; + return null; +}; + +r[Symbol.replace](arg, ''); + +assert.sameValue(callCount, 1); +assert.sameValue(thisValue, r); +assert.sameValue(args.length, 1); +assert.sameValue(args[0], 'string form'); + +reportCompare(0, 0); |