Implement String.prototype.replaceAll (#4088)

The algorithm is based on ECMA-262 v12, 21.1.3.18

JerryScript-DCO-1.0-Signed-off-by: Adam Szilagyi aszilagy@inf.u-szeged.hu
This commit is contained in:
Szilagyi Adam
2020-08-28 10:41:11 +02:00
committed by GitHub
parent 1ec216e573
commit 2aa5f136a4
6 changed files with 411 additions and 65 deletions
-39
View File
@@ -9061,46 +9061,7 @@
https://github.com/tc39/proposal-string-replaceall
-->
<test id="annexB/built-ins/String/prototype/replaceAll/custom-replacer-emulates-undefined.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x0024.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x0026.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x0027.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x003C.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/getSubstitution-0x0024-0x0060.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/getSubstitution-0x0024.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/getSubstitution-0x0024N.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/getSubstitution-0x0024NN.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/length.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/name.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceAll.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-call-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-call-each-match-position.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-call-matching-empty.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-call-skip-no-match.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-call-tostring-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-fn-skip-toString.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-tostring-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-value-replaces-string.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/replaceValue-value-tostring.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-empty-string-this-empty-string.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-empty-string.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-flags-no-g-throws.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-flags-null-undefined-throws.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-flags-toString-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-get-flags-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-isRegExp-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-replacer-RegExp-call-fn.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-replacer-RegExp-call.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-replacer-before-tostring.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-replacer-call-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-replacer-call.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-replacer-is-null.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-replacer-method-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-tostring-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/searchValue-tostring-regexp.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/this-is-null-throws.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/this-is-undefined-throws.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/this-tostring-abrupt.js"><reason></reason></test>
<test id="built-ins/String/prototype/replaceAll/this-tostring.js"><reason></reason></test>
<!-- END - ESNext stage 4 proposal: String.prototype.replaceAll -->
<!-- ESNext stage 4 proposal: Promise.any