mirror of
https://github.com/tc39/test262.git
synced 2025-07-26 23:44:27 +02:00
Coverage: String.prototype.replace method calls toString on replaceValue (regexp object). Fixes gh-2797
This commit is contained in:
parent
be99a3e519
commit
82ee7a2cfb
27
test/built-ins/String/prototype/replace/replaceValue-evaluation-order-regexp-object.js
vendored
Normal file
27
test/built-ins/String/prototype/replace/replaceValue-evaluation-order-regexp-object.js
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
// Copyright (C) 2020 Rick Waldron. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-string.prototype.replace
|
||||||
|
description: >
|
||||||
|
Non-callable replaceValue is evaluated via toString
|
||||||
|
info: |
|
||||||
|
String.prototype.replace ( searchValue, replaceValue )
|
||||||
|
|
||||||
|
If functionalReplace is false, then
|
||||||
|
Set replaceValue to ? ToString(replaceValue).
|
||||||
|
---*/
|
||||||
|
|
||||||
|
let calls = 0;
|
||||||
|
let replaceValue = /$/;
|
||||||
|
let oldToString = replaceValue.toString.bind(replaceValue);
|
||||||
|
|
||||||
|
replaceValue.toString = () => {
|
||||||
|
calls += 1;
|
||||||
|
return oldToString();
|
||||||
|
};
|
||||||
|
|
||||||
|
let newString = "".replace("a", replaceValue);
|
||||||
|
assert.sameValue(newString, "");
|
||||||
|
assert.sameValue(calls, 1);
|
||||||
|
assert.sameValue("dollar".replace("dollar", /$/), "/$/");
|
Loading…
x
Reference in New Issue
Block a user