From 46871db0c236c5464fa9c971b53381081d1d86d5 Mon Sep 17 00:00:00 2001 From: Cam Tenny Date: Wed, 21 Dec 2022 16:28:37 -0800 Subject: [PATCH 01/59] Add feature for regular expression modifiers --- features.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/features.txt b/features.txt index 6004cca4bf8..81e64d71e68 100644 --- a/features.txt +++ b/features.txt @@ -93,6 +93,10 @@ String.prototype.toWellFormed # https://github.com/tc39/proposal-json-parse-with-source json-parse-with-source +# Regular expression modifiers +# https://github.com/tc39/proposal-regexp-modifiers +regexp-modifiers + # Iterator Helpers # https://github.com/tc39/proposal-iterator-helpers iterator-helpers From 49a58a4716beb6dbb3620604634bb74a2fc89a31 Mon Sep 17 00:00:00 2001 From: Cam Tenny Date: Mon, 26 Dec 2022 16:02:01 -0800 Subject: [PATCH 02/59] Adds syntax tests for the RegExp modifiers proposal Based on PR #3807 which had generated these tests from templates, but was stuck due to issue #3808. Co-Authored-By: Guillaume Emont Co-Authored-By: Ioanna M. Dimitriou H --- ...rly-err-modifiers-code-point-repeat-i-1.js | 16 +++++++++++++++ ...rly-err-modifiers-code-point-repeat-i-2.js | 16 +++++++++++++++ ...rr-modifiers-other-code-point-arbitrary.js | 16 +++++++++++++++ ...-modifiers-other-code-point-combining-i.js | 16 +++++++++++++++ ...-modifiers-other-code-point-combining-m.js | 16 +++++++++++++++ ...-modifiers-other-code-point-combining-s.js | 16 +++++++++++++++ .../early-err-modifiers-other-code-point-d.js | 16 +++++++++++++++ .../early-err-modifiers-other-code-point-g.js | 16 +++++++++++++++ ...odifiers-other-code-point-non-display-1.js | Bin 0 -> 778 bytes ...odifiers-other-code-point-non-display-2.js | 16 +++++++++++++++ ...err-modifiers-other-code-point-non-flag.js | 16 +++++++++++++++ .../early-err-modifiers-other-code-point-u.js | 16 +++++++++++++++ .../early-err-modifiers-other-code-point-y.js | 16 +++++++++++++++ ...arly-err-modifiers-other-code-point-zwj.js | 16 +++++++++++++++ ...y-err-modifiers-other-code-point-zwnbsp.js | 16 +++++++++++++++ ...rly-err-modifiers-other-code-point-zwnj.js | 16 +++++++++++++++ ...ly-err-modifiers-should-not-case-fold-i.js | 16 +++++++++++++++ ...ly-err-modifiers-should-not-case-fold-m.js | 16 +++++++++++++++ ...ly-err-modifiers-should-not-case-fold-s.js | 16 +++++++++++++++ ...odifiers-should-not-unicode-case-fold-i.js | 16 +++++++++++++++ ...odifiers-should-not-unicode-case-fold-s.js | 16 +++++++++++++++ ...x-err-arithmetic-modifiers-add-remove-i.js | 16 +++++++++++++++ ...x-err-arithmetic-modifiers-add-remove-m.js | 16 +++++++++++++++ ...ic-modifiers-add-remove-multi-duplicate.js | 16 +++++++++++++++ ...rithmetic-modifiers-add-remove-s-escape.js | 16 +++++++++++++++ ...x-err-arithmetic-modifiers-add-remove-s.js | 16 +++++++++++++++ ...tax-err-arithmetic-modifiers-both-empty.js | 16 +++++++++++++++ ...thmetic-modifiers-code-point-repeat-i-1.js | 16 +++++++++++++++ ...thmetic-modifiers-code-point-repeat-i-2.js | 16 +++++++++++++++ ...ic-modifiers-other-code-point-arbitrary.js | 16 +++++++++++++++ ...-modifiers-other-code-point-combining-i.js | 16 +++++++++++++++ ...-modifiers-other-code-point-combining-m.js | 16 +++++++++++++++ ...-modifiers-other-code-point-combining-s.js | 16 +++++++++++++++ ...arithmetic-modifiers-other-code-point-d.js | 16 +++++++++++++++ ...arithmetic-modifiers-other-code-point-g.js | 16 +++++++++++++++ ...odifiers-other-code-point-non-display-1.js | Bin 0 -> 641 bytes ...odifiers-other-code-point-non-display-2.js | 16 +++++++++++++++ ...tic-modifiers-other-code-point-non-flag.js | 16 +++++++++++++++ ...arithmetic-modifiers-other-code-point-u.js | 16 +++++++++++++++ ...arithmetic-modifiers-other-code-point-y.js | 16 +++++++++++++++ ...ithmetic-modifiers-other-code-point-zwj.js | 16 +++++++++++++++ ...metic-modifiers-other-code-point-zwnbsp.js | 16 +++++++++++++++ ...thmetic-modifiers-other-code-point-zwnj.js | 16 +++++++++++++++ ...ithmetic-modifiers-reverse-add-remove-i.js | 16 +++++++++++++++ ...ithmetic-modifiers-reverse-add-remove-m.js | 16 +++++++++++++++ ...iers-reverse-add-remove-multi-duplicate.js | 16 +++++++++++++++ ...c-modifiers-reverse-add-remove-s-escape.js | 16 +++++++++++++++ ...ithmetic-modifiers-reverse-add-remove-s.js | 16 +++++++++++++++ ...modifiers-reverse-code-point-repeat-i-1.js | 16 +++++++++++++++ ...modifiers-reverse-code-point-repeat-i-2.js | 16 +++++++++++++++ ...iers-reverse-other-code-point-arbitrary.js | 16 +++++++++++++++ ...rs-reverse-other-code-point-combining-i.js | 16 +++++++++++++++ ...rs-reverse-other-code-point-combining-m.js | 16 +++++++++++++++ ...rs-reverse-other-code-point-combining-s.js | 16 +++++++++++++++ ...ic-modifiers-reverse-other-code-point-d.js | 16 +++++++++++++++ ...ic-modifiers-reverse-other-code-point-g.js | 16 +++++++++++++++ ...-reverse-other-code-point-non-display-1.js | Bin 0 -> 641 bytes ...-reverse-other-code-point-non-display-2.js | 16 +++++++++++++++ ...fiers-reverse-other-code-point-non-flag.js | 16 +++++++++++++++ ...ic-modifiers-reverse-other-code-point-u.js | 16 +++++++++++++++ ...ic-modifiers-reverse-other-code-point-y.js | 16 +++++++++++++++ ...-modifiers-reverse-other-code-point-zwj.js | 16 +++++++++++++++ ...difiers-reverse-other-code-point-zwnbsp.js | 16 +++++++++++++++ ...modifiers-reverse-other-code-point-zwnj.js | 16 +++++++++++++++ ...odifiers-reverse-should-not-case-fold-i.js | 16 +++++++++++++++ ...odifiers-reverse-should-not-case-fold-m.js | 16 +++++++++++++++ ...odifiers-reverse-should-not-case-fold-s.js | 16 +++++++++++++++ ...-reverse-should-not-unicode-case-fold-i.js | 16 +++++++++++++++ ...-reverse-should-not-unicode-case-fold-s.js | 16 +++++++++++++++ ...hmetic-modifiers-should-not-case-fold-i.js | 16 +++++++++++++++ ...hmetic-modifiers-should-not-case-fold-m.js | 16 +++++++++++++++ ...hmetic-modifiers-should-not-case-fold-s.js | 16 +++++++++++++++ ...odifiers-should-not-unicode-case-fold-i.js | 16 +++++++++++++++ ...odifiers-should-not-unicode-case-fold-s.js | 16 +++++++++++++++ ...y-err-arithmetic-modifiers-add-remove-i.js | 19 ++++++++++++++++++ ...y-err-arithmetic-modifiers-add-remove-m.js | 19 ++++++++++++++++++ ...ic-modifiers-add-remove-multi-duplicate.js | 19 ++++++++++++++++++ ...rithmetic-modifiers-add-remove-s-escape.js | 19 ++++++++++++++++++ ...y-err-arithmetic-modifiers-add-remove-s.js | 19 ++++++++++++++++++ ...rly-err-arithmetic-modifiers-both-empty.js | 19 ++++++++++++++++++ ...thmetic-modifiers-code-point-repeat-i-1.js | 19 ++++++++++++++++++ ...thmetic-modifiers-code-point-repeat-i-2.js | 19 ++++++++++++++++++ ...rly-err-arithmetic-modifiers-no-colon-1.js | 18 +++++++++++++++++ ...rly-err-arithmetic-modifiers-no-colon-2.js | 18 +++++++++++++++++ ...rly-err-arithmetic-modifiers-no-colon-3.js | 18 +++++++++++++++++ ...ic-modifiers-other-code-point-arbitrary.js | 19 ++++++++++++++++++ ...-modifiers-other-code-point-combining-i.js | 19 ++++++++++++++++++ ...-modifiers-other-code-point-combining-m.js | 19 ++++++++++++++++++ ...-modifiers-other-code-point-combining-s.js | 19 ++++++++++++++++++ ...arithmetic-modifiers-other-code-point-d.js | 19 ++++++++++++++++++ ...arithmetic-modifiers-other-code-point-g.js | 19 ++++++++++++++++++ ...odifiers-other-code-point-non-display-1.js | Bin 0 -> 642 bytes ...odifiers-other-code-point-non-display-2.js | 19 ++++++++++++++++++ ...tic-modifiers-other-code-point-non-flag.js | 19 ++++++++++++++++++ ...arithmetic-modifiers-other-code-point-u.js | 19 ++++++++++++++++++ ...arithmetic-modifiers-other-code-point-y.js | 19 ++++++++++++++++++ ...ithmetic-modifiers-other-code-point-zwj.js | 19 ++++++++++++++++++ ...metic-modifiers-other-code-point-zwnbsp.js | 19 ++++++++++++++++++ ...thmetic-modifiers-other-code-point-zwnj.js | 19 ++++++++++++++++++ ...ithmetic-modifiers-reverse-add-remove-i.js | 19 ++++++++++++++++++ ...ithmetic-modifiers-reverse-add-remove-m.js | 19 ++++++++++++++++++ ...iers-reverse-add-remove-multi-duplicate.js | 19 ++++++++++++++++++ ...c-modifiers-reverse-add-remove-s-escape.js | 19 ++++++++++++++++++ ...ithmetic-modifiers-reverse-add-remove-s.js | 19 ++++++++++++++++++ ...modifiers-reverse-code-point-repeat-i-1.js | 19 ++++++++++++++++++ ...modifiers-reverse-code-point-repeat-i-2.js | 19 ++++++++++++++++++ ...iers-reverse-other-code-point-arbitrary.js | 19 ++++++++++++++++++ ...rs-reverse-other-code-point-combining-i.js | 19 ++++++++++++++++++ ...rs-reverse-other-code-point-combining-m.js | 19 ++++++++++++++++++ ...rs-reverse-other-code-point-combining-s.js | 19 ++++++++++++++++++ ...ic-modifiers-reverse-other-code-point-d.js | 19 ++++++++++++++++++ ...ic-modifiers-reverse-other-code-point-g.js | 19 ++++++++++++++++++ ...-reverse-other-code-point-non-display-1.js | Bin 0 -> 642 bytes ...-reverse-other-code-point-non-display-2.js | 19 ++++++++++++++++++ ...fiers-reverse-other-code-point-non-flag.js | 19 ++++++++++++++++++ ...ic-modifiers-reverse-other-code-point-u.js | 19 ++++++++++++++++++ ...ic-modifiers-reverse-other-code-point-y.js | 19 ++++++++++++++++++ ...-modifiers-reverse-other-code-point-zwj.js | 19 ++++++++++++++++++ ...difiers-reverse-other-code-point-zwnbsp.js | 19 ++++++++++++++++++ ...modifiers-reverse-other-code-point-zwnj.js | 19 ++++++++++++++++++ ...odifiers-reverse-should-not-case-fold-i.js | 19 ++++++++++++++++++ ...odifiers-reverse-should-not-case-fold-m.js | 19 ++++++++++++++++++ ...odifiers-reverse-should-not-case-fold-s.js | 19 ++++++++++++++++++ ...-reverse-should-not-unicode-case-fold-i.js | 19 ++++++++++++++++++ ...-reverse-should-not-unicode-case-fold-s.js | 19 ++++++++++++++++++ ...hmetic-modifiers-should-not-case-fold-i.js | 19 ++++++++++++++++++ ...hmetic-modifiers-should-not-case-fold-m.js | 19 ++++++++++++++++++ ...hmetic-modifiers-should-not-case-fold-s.js | 19 ++++++++++++++++++ ...odifiers-should-not-unicode-case-fold-i.js | 19 ++++++++++++++++++ ...odifiers-should-not-unicode-case-fold-s.js | 19 ++++++++++++++++++ ...rly-err-modifiers-code-point-repeat-i-1.js | 19 ++++++++++++++++++ ...rly-err-modifiers-code-point-repeat-i-2.js | 19 ++++++++++++++++++ ...rr-modifiers-other-code-point-arbitrary.js | 19 ++++++++++++++++++ ...-modifiers-other-code-point-combining-i.js | 19 ++++++++++++++++++ ...-modifiers-other-code-point-combining-m.js | 19 ++++++++++++++++++ ...-modifiers-other-code-point-combining-s.js | 19 ++++++++++++++++++ .../early-err-modifiers-other-code-point-d.js | 19 ++++++++++++++++++ .../early-err-modifiers-other-code-point-g.js | 19 ++++++++++++++++++ ...odifiers-other-code-point-non-display-1.js | Bin 0 -> 780 bytes ...odifiers-other-code-point-non-display-2.js | 19 ++++++++++++++++++ ...err-modifiers-other-code-point-non-flag.js | 19 ++++++++++++++++++ .../early-err-modifiers-other-code-point-u.js | 19 ++++++++++++++++++ .../early-err-modifiers-other-code-point-y.js | 19 ++++++++++++++++++ ...arly-err-modifiers-other-code-point-zwj.js | 19 ++++++++++++++++++ ...y-err-modifiers-other-code-point-zwnbsp.js | 19 ++++++++++++++++++ ...rly-err-modifiers-other-code-point-zwnj.js | 19 ++++++++++++++++++ ...ly-err-modifiers-should-not-case-fold-i.js | 19 ++++++++++++++++++ ...ly-err-modifiers-should-not-case-fold-m.js | 19 ++++++++++++++++++ ...ly-err-modifiers-should-not-case-fold-s.js | 19 ++++++++++++++++++ ...odifiers-should-not-unicode-case-fold-i.js | 19 ++++++++++++++++++ ...odifiers-should-not-unicode-case-fold-s.js | 19 ++++++++++++++++++ 151 files changed, 2539 insertions(+) create mode 100644 test/built-ins/RegExp/early-err-modifiers-code-point-repeat-i-1.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-code-point-repeat-i-2.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-arbitrary.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-i.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-m.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-s.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-d.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-g.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-non-display-1.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-non-display-2.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-non-flag.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-u.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-y.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-zwj.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-zwnbsp.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-zwnj.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-should-not-case-fold-i.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-should-not-case-fold-m.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-should-not-case-fold-s.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-should-not-unicode-case-fold-i.js create mode 100644 test/built-ins/RegExp/early-err-modifiers-should-not-unicode-case-fold-s.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-add-remove-i.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-add-remove-m.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-add-remove-multi-duplicate.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-add-remove-s-escape.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-add-remove-s.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-both-empty.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-code-point-repeat-i-1.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-code-point-repeat-i-2.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-arbitrary.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-combining-i.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-combining-m.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-combining-s.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-d.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-g.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-display-1.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-display-2.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-flag.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-u.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-y.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwj.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwnbsp.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwnj.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-i.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-m.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-s-escape.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-s.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-d.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-g.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-u.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-y.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwj.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-i.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-m.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-s.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-i.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-m.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-multi-duplicate.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s-escape.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-both-empty.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-1.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-2.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-1.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-2.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-3.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-arbitrary.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-i.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-m.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-s.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-d.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-g.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-1.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-2.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-flag.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-u.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-y.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwj.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnbsp.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnj.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-i.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-m.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s-escape.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-d.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-g.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-u.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-y.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwj.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-i.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-m.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-s.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js create mode 100644 test/language/literals/regexp/early-err-modifiers-code-point-repeat-i-1.js create mode 100644 test/language/literals/regexp/early-err-modifiers-code-point-repeat-i-2.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-arbitrary.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-combining-i.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-combining-m.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-combining-s.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-d.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-g.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-non-display-1.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-non-display-2.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-non-flag.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-u.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-y.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-zwj.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-zwnbsp.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-zwnj.js create mode 100644 test/language/literals/regexp/early-err-modifiers-should-not-case-fold-i.js create mode 100644 test/language/literals/regexp/early-err-modifiers-should-not-case-fold-m.js create mode 100644 test/language/literals/regexp/early-err-modifiers-should-not-case-fold-s.js create mode 100644 test/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-i.js create mode 100644 test/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-s.js diff --git a/test/built-ins/RegExp/early-err-modifiers-code-point-repeat-i-1.js b/test/built-ins/RegExp/early-err-modifiers-code-point-repeat-i-1.js new file mode 100644 index 00000000000..3227f270fd1 --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-code-point-repeat-i-1.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?ii:a)", ""); +}, 'RegExp("(?ii:a)", ""): '); diff --git a/test/built-ins/RegExp/early-err-modifiers-code-point-repeat-i-2.js b/test/built-ins/RegExp/early-err-modifiers-code-point-repeat-i-2.js new file mode 100644 index 00000000000..9cde021d29d --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-code-point-repeat-i-2.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?imsi:a)", ""); +}, 'RegExp("(?imsi:a)", ""): '); diff --git a/test/built-ins/RegExp/early-err-modifiers-other-code-point-arbitrary.js b/test/built-ins/RegExp/early-err-modifiers-other-code-point-arbitrary.js new file mode 100644 index 00000000000..9b138c52902 --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-other-code-point-arbitrary.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?1:a)", ""); +}, 'RegExp("(?1:a)", ""): '); diff --git a/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-i.js b/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-i.js new file mode 100644 index 00000000000..2db823b79c4 --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-i.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?iͥ:a)", ""); +}, 'RegExp("(?iͥ:a)", ""): '); diff --git a/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-m.js b/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-m.js new file mode 100644 index 00000000000..b11663f2514 --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-m.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?mͫ:a)", ""); +}, 'RegExp("(?mͫ:a)", ""): '); diff --git a/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-s.js b/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-s.js new file mode 100644 index 00000000000..fba7384464e --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-other-code-point-combining-s.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?s̀:a)", ""); +}, 'RegExp("(?s̀:a)", ""): '); diff --git a/test/built-ins/RegExp/early-err-modifiers-other-code-point-d.js b/test/built-ins/RegExp/early-err-modifiers-other-code-point-d.js new file mode 100644 index 00000000000..9908cc2027f --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-other-code-point-d.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?d:a)", ""); +}, 'RegExp("(?d:a)", ""): '); diff --git a/test/built-ins/RegExp/early-err-modifiers-other-code-point-g.js b/test/built-ins/RegExp/early-err-modifiers-other-code-point-g.js new file mode 100644 index 00000000000..c7d51ff8135 --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-other-code-point-g.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?g:a)", ""); +}, 'RegExp("(?g:a)", ""): '); diff --git a/test/built-ins/RegExp/early-err-modifiers-other-code-point-non-display-1.js b/test/built-ins/RegExp/early-err-modifiers-other-code-point-non-display-1.js new file mode 100644 index 0000000000000000000000000000000000000000..d15f9c8408c55260c5f71065a1e92d3b622139f2 GIT binary patch literal 778 zcmcIiJ8#rL5T@Q=@ySi>$PW}znIa08Lpmv<;OG#=Vvp@X_U>tC9nJ#&J7b>$L876+ z#n{s5dwQx0JAYaN_d`Uw%W(7Z<`oXT9ognMmJcQF#u3|I5J)IIQd^p;!iRwcjc*D1 z?)@VLM=d@thy&rx@g5^LtRgh=Oz$;M{5D88qD9&Om4PwG&VvJYG38JJ*`~^H{Eb_ah@I#;c=ACFtXS_FDv^eZIOvx;x>Y_iB;3{zYKoJM zQTvfXqK(`XLX&m+AqCkmE(NV2#dKujtPyH_R8}P{Cf{<$6y%d(*ZCUX4fMH-enMR% z#V!5_&+-($#y!iI*)?mc$Trx2uU4LSn{bjNnbsjXE`RYK>orF2A&(+v zK@u3u?CeZcVH>7%_rrh{7eo?@FVvQ%s_?02K@(bn zzQ^!F(Nl{rXQZC+aCpSP4S6ASVfHQ9ufWrOyZdn1q2qx{W2$Rwt!YV`$W!9rYwXh^ z=x{ju`!lr$=_lALm^(CEB=#FC4{+0wGFn2ubUb(H%s!!SG}^-TC|kw$`~iwcPdjK!#Bw;g{*xP=zg=Z i9N(3wqc#3)ligW)Q@eaqV6(|@&Cdc?|Ho=vDgFyz(9`<> literal 0 HcmV?d00001 diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-display-2.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-display-2.js new file mode 100644 index 00000000000..a999fe41c46 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-display-2.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-s‎:a)", ""); +}, 'RegExp("(?-s‎:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-flag.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-flag.js new file mode 100644 index 00000000000..aed56329420 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-non-flag.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-Q:a)", ""); +}, 'RegExp("(?-Q:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-u.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-u.js new file mode 100644 index 00000000000..91bf17f80b3 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-u.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-u:a)", ""); +}, 'RegExp("(?-u:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-y.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-y.js new file mode 100644 index 00000000000..0d68ab21b73 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-y.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-y:a)", ""); +}, 'RegExp("(?-y:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwj.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwj.js new file mode 100644 index 00000000000..dbb8fed6b10 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwj.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-s‍:a)", ""); +}, 'RegExp("(?-s‍:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwnbsp.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwnbsp.js new file mode 100644 index 00000000000..e8a3d0ea7fa --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwnbsp.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-s:a)", ""); +}, 'RegExp("(?-s:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwnj.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwnj.js new file mode 100644 index 00000000000..f74be128e09 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-zwnj.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-s‌:a)", ""); +}, 'RegExp("(?-s‌:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-i.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-i.js new file mode 100644 index 00000000000..7f06459d96e --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-i.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?i-i:a)", ""); +}, 'RegExp("(?i-i:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-m.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-m.js new file mode 100644 index 00000000000..339cfab683a --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-m.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?m-m:a)", ""); +}, 'RegExp("(?m-m:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js new file mode 100644 index 00000000000..500c07eea88 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?m-ims:a)", ""); +}, 'RegExp("(?m-ims:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-s-escape.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-s-escape.js new file mode 100644 index 00000000000..0ca3761ccf1 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-s-escape.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?s-\u{0073}:a)", ""); +}, 'RegExp("(?s-\u{0073}:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-s.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-s.js new file mode 100644 index 00000000000..c3bd0d89b49 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-add-remove-s.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?s-s:a)", ""); +}, 'RegExp("(?s-s:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js new file mode 100644 index 00000000000..56619aa615a --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?ii-:a)", ""); +}, 'RegExp("(?ii-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js new file mode 100644 index 00000000000..f6940a463ed --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?imsi-:a)", ""); +}, 'RegExp("(?imsi-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js new file mode 100644 index 00000000000..a4e4934fb20 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?1-:a)", ""); +}, 'RegExp("(?1-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js new file mode 100644 index 00000000000..9a2300b4aa6 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?iͥ-:a)", ""); +}, 'RegExp("(?iͥ-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js new file mode 100644 index 00000000000..6ded6b09ef2 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?mͫ-:a)", ""); +}, 'RegExp("(?mͫ-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js new file mode 100644 index 00000000000..e29679d5b3e --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?s̀-:a)", ""); +}, 'RegExp("(?s̀-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-d.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-d.js new file mode 100644 index 00000000000..ab1bca67ebb --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-d.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?d-:a)", ""); +}, 'RegExp("(?d-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-g.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-g.js new file mode 100644 index 00000000000..9189083cb73 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-g.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?g-:a)", ""); +}, 'RegExp("(?g-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js new file mode 100644 index 0000000000000000000000000000000000000000..12c46aedba765ff947917b6dad37125e0a090998 GIT binary patch literal 641 zcmZ`$yKdYt5KPUl7+hn?5T(FKB^QQ$z5oXpDRSuo7mTzzZ6J{XmvZiqA&(+v zK@u3u?CeZcVH>7%_rrh{7eo?@FVvQ%s_?02K@(bn zzQ^!F(Nl{rXQZC+aCpSP4S6ASVfHQ9ufWrOyZdn1q2qx{W2$Rwt!YV`$W!9rYwXh^ z=x{ju`!lr$=_lALm^(CEB=#FC4{+0wGFn2ubUb(H%s!!SG}^-TC|kw$`~iwcPdjK!#Bw;g{*xP=zg=Z i9N(3wqc#3)likT1Tf2NyV6(|@&Cdc?|Ho=vDgFy!0@M2d literal 0 HcmV?d00001 diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js new file mode 100644 index 00000000000..5fcc2aa6bef --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?s‎-:a)", ""); +}, 'RegExp("(?s‎-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js new file mode 100644 index 00000000000..6eb30880b23 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?Q-:a)", ""); +}, 'RegExp("(?Q-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-u.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-u.js new file mode 100644 index 00000000000..2b20cac8361 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-u.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?u-:a)", ""); +}, 'RegExp("(?u-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-y.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-y.js new file mode 100644 index 00000000000..6761a044cfa --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-y.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?y-:a)", ""); +}, 'RegExp("(?y-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwj.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwj.js new file mode 100644 index 00000000000..63c3dc3bc1f --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwj.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?s‍-:a)", ""); +}, 'RegExp("(?s‍-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js new file mode 100644 index 00000000000..3d54ed4ef67 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?s-:a)", ""); +}, 'RegExp("(?s-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js new file mode 100644 index 00000000000..e9d2f7d6db7 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?s‌-:a)", ""); +}, 'RegExp("(?s‌-:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js new file mode 100644 index 00000000000..40e56a0a7a4 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?I-:a)", "i"); +}, 'RegExp("(?I-:a)", "i"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js new file mode 100644 index 00000000000..f1d7e2cc74b --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?M-:a)", "i"); +}, 'RegExp("(?M-:a)", "i"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js new file mode 100644 index 00000000000..078cb9b5aea --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?S-:a)", "i"); +}, 'RegExp("(?S-:a)", "i"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js new file mode 100644 index 00000000000..e24b56327a5 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?İ-:a)", "iu"); +}, 'RegExp("(?İ-:a)", "iu"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js new file mode 100644 index 00000000000..eab04eb6b73 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?ſ-:a)", "u"); +}, 'RegExp("(?ſ-:a)", "u"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-i.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-i.js new file mode 100644 index 00000000000..f0f044ad681 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-i.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-I:a)", "i"); +}, 'RegExp("(?-I:a)", "i"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-m.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-m.js new file mode 100644 index 00000000000..e07b0997ca7 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-m.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-M:a)", "i"); +}, 'RegExp("(?-M:a)", "i"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-s.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-s.js new file mode 100644 index 00000000000..10d3aba3b44 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-case-fold-s.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-S:a)", "i"); +}, 'RegExp("(?-S:a)", "i"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js new file mode 100644 index 00000000000..110a66448f2 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-İ:a)", "iu"); +}, 'RegExp("(?-İ:a)", "iu"): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js new file mode 100644 index 00000000000..adf4f325ea5 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-ſ:a)", "u"); +}, 'RegExp("(?-ſ:a)", "u"): '); diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-i.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-i.js new file mode 100644 index 00000000000..ec9451c9de8 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?i-i:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-m.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-m.js new file mode 100644 index 00000000000..cd21baa13c0 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?m-m:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-multi-duplicate.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-multi-duplicate.js new file mode 100644 index 00000000000..1380146f052 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-multi-duplicate.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?ims-m:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s-escape.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s-escape.js new file mode 100644 index 00000000000..de7a50ec732 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s-escape.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?\u{0073}-s:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s.js new file mode 100644 index 00000000000..b4ad3a4382f --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-add-remove-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?s-s:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-both-empty.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-both-empty.js new file mode 100644 index 00000000000..7beb7d9a042 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-both-empty.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by the first RegularExpressionFlags and the source text matched by the second RegularExpressionFlags are both empty. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-1.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-1.js new file mode 100644 index 00000000000..c5dd23326c6 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-1.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-ii:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-2.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-2.js new file mode 100644 index 00000000000..3779db063b7 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-code-point-repeat-i-2.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-imsi:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-1.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-1.js new file mode 100644 index 00000000000..a506febbb11 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-1.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Regular expression modifiers should not parse without the colon. +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... +---*/ + +$DONOTEVALUATE(); + +/(?ms-i)/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-2.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-2.js new file mode 100644 index 00000000000..890fb235a8c --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-2.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Regular expression modifiers should not parse without the colon. +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... +---*/ + +$DONOTEVALUATE(); + +/(?-s)/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-3.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-3.js new file mode 100644 index 00000000000..21cac0fdc4a --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-no-colon-3.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Regular expression modifiers should not parse without the colon. +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... +---*/ + +$DONOTEVALUATE(); + +/(?i-)/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-arbitrary.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-arbitrary.js new file mode 100644 index 00000000000..74d91a7d434 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-arbitrary.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-1:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-i.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-i.js new file mode 100644 index 00000000000..15ea531f65b --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-iͥ:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-m.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-m.js new file mode 100644 index 00000000000..5fd580b277e --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-mͫ:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-s.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-s.js new file mode 100644 index 00000000000..cb2743e0956 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-combining-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-s̀:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-d.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-d.js new file mode 100644 index 00000000000..475ddfef8d5 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-d.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-d:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-g.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-g.js new file mode 100644 index 00000000000..899a2c23a93 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-g.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-g:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-1.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-1.js new file mode 100644 index 0000000000000000000000000000000000000000..bcf7d7ddd9b147ecffde4745c0d2a35a8e189926 GIT binary patch literal 642 zcmZ`$O>5gg6zq9_#Tl z*$;-9H#0BGu=B$dY|}<0yA|#}-F?QPF`YFVoYG^8ZP#JJ8G)F>g{o9#8P2U`l)fU! z-S`UyM-^Ts#Fp^ov`1%4a!jcG=qgyZ0LR0wcsdoRZAYn6*;;F@D&jKOAzJTp9O5i! zaGG2+R}>-m09!9?_G2gsk**QFiDi46_?4QmGoiQ+;*dqaqjO(t}cra3RGnoJxeO^zR;DuTNAm8~rW{;3=_!o5(g zfT1-^IR+D$Xdc0&+%I@U>kjpJV$~Dyi=Nf56H2%{5raFUK3V}UYg1d xWrOQXsgL{Tr{{C=eS7@2Jr~L9UbdS&X#S9!RhF%Pq3QgK>E3eS&pNwTe*wR#*6siR literal 0 HcmV?d00001 diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-2.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-2.js new file mode 100644 index 00000000000..33e73f9f0ee --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-display-2.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-s‎:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-flag.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-flag.js new file mode 100644 index 00000000000..c0ca48145a1 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-non-flag.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-Q:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-u.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-u.js new file mode 100644 index 00000000000..48827116fd9 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-u.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-u:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-y.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-y.js new file mode 100644 index 00000000000..04e47aab628 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-y.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-y:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwj.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwj.js new file mode 100644 index 00000000000..b16e6367bb7 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwj.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-s‍:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnbsp.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnbsp.js new file mode 100644 index 00000000000..c5ed9f15c71 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnbsp.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-s:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnj.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnj.js new file mode 100644 index 00000000000..068894fd9b8 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-zwnj.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-s‌:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-i.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-i.js new file mode 100644 index 00000000000..ec9451c9de8 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?i-i:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-m.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-m.js new file mode 100644 index 00000000000..cd21baa13c0 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?m-m:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js new file mode 100644 index 00000000000..2f129ed8694 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-multi-duplicate.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?m-ims:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s-escape.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s-escape.js new file mode 100644 index 00000000000..baf393b70db --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s-escape.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?s-\u{0073}:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s.js new file mode 100644 index 00000000000..b4ad3a4382f --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-add-remove-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the any code point in the source text matched by the first RegularExpressionFlags is also contained in the source text matched by the second RegularExpressionFlags. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?s-s:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js new file mode 100644 index 00000000000..87ed3784054 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-1.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?ii-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js new file mode 100644 index 00000000000..5677224bb4a --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-code-point-repeat-i-2.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?imsi-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js new file mode 100644 index 00000000000..d36e8c9cccf --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-arbitrary.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?1-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js new file mode 100644 index 00000000000..6107b05c1bc --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?iͥ-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js new file mode 100644 index 00000000000..34f0e20d9c4 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?mͫ-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js new file mode 100644 index 00000000000..00b69cdbbc2 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-combining-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?s̀-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-d.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-d.js new file mode 100644 index 00000000000..5b40223d6dc --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-d.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?d-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-g.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-g.js new file mode 100644 index 00000000000..59588f6ad8d --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-g.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?g-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-1.js new file mode 100644 index 0000000000000000000000000000000000000000..be6937a6772a1e86ac15db9261ad270515c0c946 GIT binary patch literal 642 zcmZ`$O>5gg6zq9_#Tl z*$;-9H#0BGu=B$dY|}<0yA|#}-F?QPF`YFVoYG^8ZP#JJ8G)F>g{o9#8P2U`l)fU! z-S`UyM-^Ts#Fp^ov`1%4a!jcG=qgyZ0LR0wcsdoRZAYn6*;;F@D&jKOAzJTp9O5i! zaGG2+R}>-m09!9?_G2gsk**QFiDi46_?4QmGoiQ+;*dqaqjO(t}cra3RGnoJxeO^zR;DuTNAm8~rW{;3=_!o5(g zfT1-^IR+D$Xdc0&+%I@U>kjpJV$~Dyi=Nf56H2%{5raFUK3V}UYg1d xWrOQXsgL{Tr{{C=eS7@2Jr~L9UbdS&@CTinRhF%Pq3QgK>E3eS&pNwTe*wS3*6siR literal 0 HcmV?d00001 diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js new file mode 100644 index 00000000000..2c7e79681bf --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-display-2.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?s‎-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js new file mode 100644 index 00000000000..6a155c358e1 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-non-flag.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?Q-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-u.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-u.js new file mode 100644 index 00000000000..7547a55e9dd --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-u.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?u-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-y.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-y.js new file mode 100644 index 00000000000..717e5d3bb5d --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-y.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?y-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwj.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwj.js new file mode 100644 index 00000000000..c6ea84d5a76 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwj.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?s‍-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js new file mode 100644 index 00000000000..3e24656e13a --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnbsp.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?s-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js new file mode 100644 index 00000000000..d6bf3a8dd8b --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-zwnj.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?s‌-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js new file mode 100644 index 00000000000..2dfbef0f315 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?I-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js new file mode 100644 index 00000000000..22f58a54b00 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?M-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js new file mode 100644 index 00000000000..a5a41be57b1 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-case-fold-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?S-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js new file mode 100644 index 00000000000..9bfa2e26bb5 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?İ-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js new file mode 100644 index 00000000000..216d1a1d1eb --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-should-not-unicode-case-fold-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?ſ-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-i.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-i.js new file mode 100644 index 00000000000..70861ad8c0a --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-I:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-m.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-m.js new file mode 100644 index 00000000000..4a39c339462 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-M:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-s.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-s.js new file mode 100644 index 00000000000..1616aa96383 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-case-fold-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-S:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js new file mode 100644 index 00000000000..75bcec6c1c4 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-İ:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js new file mode 100644 index 00000000000..eb60a15f6a7 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-should-not-unicode-case-fold-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-ſ:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-code-point-repeat-i-1.js b/test/language/literals/regexp/early-err-modifiers-code-point-repeat-i-1.js new file mode 100644 index 00000000000..055cebc72a9 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-code-point-repeat-i-1.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?ii:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-code-point-repeat-i-2.js b/test/language/literals/regexp/early-err-modifiers-code-point-repeat-i-2.js new file mode 100644 index 00000000000..b84dc7bfc33 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-code-point-repeat-i-2.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?imsi:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-arbitrary.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-arbitrary.js new file mode 100644 index 00000000000..8eda84761f5 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-arbitrary.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?1:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-i.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-i.js new file mode 100644 index 00000000000..4cf9b166456 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?iͥ:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-m.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-m.js new file mode 100644 index 00000000000..ca5f47647de --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?mͫ:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-s.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-s.js new file mode 100644 index 00000000000..edd6ba0b068 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-combining-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?s̀:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-d.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-d.js new file mode 100644 index 00000000000..0e4994a3dbd --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-d.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?d:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-g.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-g.js new file mode 100644 index 00000000000..2139eef7448 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-g.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?g:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-non-display-1.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-non-display-1.js new file mode 100644 index 0000000000000000000000000000000000000000..6879864eb795f41aa38e30960c60848e3bf9d86f GIT binary patch literal 780 zcmcIiO>5gg5bb$?#l!Sq8_O!8C*=@aTLptjpmusGIc%hnJVn|SJ8NUn_P=)|(HpD8#h@!TUG37_^GG+dAqLgi1c1iP`Z+phEbeU6G7S{jqilO!=ENfEe<>|KU! z90)D;y^HpOJOm%W)rb~<3I!q3C8D*lI9?UMP^cvjypaur4cLgmm4Oel{Uv*T2{LGMWnL(&X zIvb+~WC+0gU}4MU2l$i|b7kl~xMDq+(4k}IYlPsUNL*fV7Y=#Ew> zLuZ4KK4ahM>l)aYmtj}=3_rC8tfFs`Wtid)|0KooC#eh@mhUH53@gBFg#GtD$m>N+ zc(TBx9g1kVuKbO=Fh)PqJT>P1=HdR~kbhn69#@BaI=j`6HocQ~nVqHS{0HjBKilRd KT>P4+x8^rt*asf~ literal 0 HcmV?d00001 diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-non-display-2.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-non-display-2.js new file mode 100644 index 00000000000..17f1d722861 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-non-display-2.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?s‎:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-non-flag.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-non-flag.js new file mode 100644 index 00000000000..75d28616f9e --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-non-flag.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?Q:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-u.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-u.js new file mode 100644 index 00000000000..f207d8cbf79 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-u.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?u:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-y.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-y.js new file mode 100644 index 00000000000..d43c8c5a6d3 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-y.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?y:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-zwj.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-zwj.js new file mode 100644 index 00000000000..085d7887e6f --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-zwj.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?s‍:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-zwnbsp.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-zwnbsp.js new file mode 100644 index 00000000000..3d9b27c379b --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-zwnbsp.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?s:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-zwnj.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-zwnj.js new file mode 100644 index 00000000000..529f8718b04 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-zwnj.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?s‌:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-i.js b/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-i.js new file mode 100644 index 00000000000..1b281ff9c48 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?I:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-m.js b/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-m.js new file mode 100644 index 00000000000..ce1be053079 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?M:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-s.js b/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-s.js new file mode 100644 index 00000000000..89e471ee53c --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-should-not-case-fold-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case folded to "i", "m", or "s" (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?S:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-i.js b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-i.js new file mode 100644 index 00000000000..d81c10e574f --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?İ:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-s.js b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-s.js new file mode 100644 index 00000000000..8e6823feb21 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-case-fold-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Code points other than "i", "m", "s" should not be case-folded to "i", "m", or "s" (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?ſ:a)//*{ global-modifiers }*/; From 229a27bcbca0bf03e0500848b069e0830011bbb2 Mon Sep 17 00:00:00 2001 From: Guillaume Emont Date: Fri, 31 Mar 2023 22:09:49 +0200 Subject: [PATCH 03/59] Added new generated tests with uppercase I Co-Authored-By: Ioanna M. Dimitriou H --- ...-modifiers-other-code-point-uppercase-I.js | 16 ++++++++++++++++ ...-modifiers-other-code-point-uppercase-I.js | 16 ++++++++++++++++ ...rs-reverse-other-code-point-uppercase-I.js | 16 ++++++++++++++++ ...-modifiers-other-code-point-uppercase-I.js | 19 +++++++++++++++++++ ...rs-reverse-other-code-point-uppercase-I.js | 19 +++++++++++++++++++ ...-modifiers-other-code-point-uppercase-I.js | 19 +++++++++++++++++++ 6 files changed, 105 insertions(+) create mode 100644 test/built-ins/RegExp/early-err-modifiers-other-code-point-uppercase-I.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-uppercase-I.js create mode 100644 test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-uppercase-I.js create mode 100644 test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js create mode 100644 test/language/literals/regexp/early-err-modifiers-other-code-point-uppercase-I.js diff --git a/test/built-ins/RegExp/early-err-modifiers-other-code-point-uppercase-I.js b/test/built-ins/RegExp/early-err-modifiers-other-code-point-uppercase-I.js new file mode 100644 index 00000000000..c9194dcdbc7 --- /dev/null +++ b/test/built-ins/RegExp/early-err-modifiers-other-code-point-uppercase-I.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?I:a)", ""); +}, 'RegExp("(?I:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-uppercase-I.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-uppercase-I.js new file mode 100644 index 00000000000..3e3c9d0fba7 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-other-code-point-uppercase-I.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?-I:a)", ""); +}, 'RegExp("(?-I:a)", ""): '); diff --git a/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js new file mode 100644 index 00000000000..8cb165ad805 --- /dev/null +++ b/test/built-ins/RegExp/syntax-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +assert.throws(SyntaxError, function () { + RegExp("(?I-:a)", ""); +}, 'RegExp("(?I-:a)", ""): '); diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-uppercase-I.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-uppercase-I.js new file mode 100644 index 00000000000..768777f6a1c --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-other-code-point-uppercase-I.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?-I:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js new file mode 100644 index 00000000000..43a9748d6c4 --- /dev/null +++ b/test/language/literals/regexp/early-err-arithmetic-modifiers-reverse-other-code-point-uppercase-I.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (arithmetic regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpressionFlags - RegularExpressionFlags : Disjunction ) + ... + +---*/ + +$DONOTEVALUATE(); + +/(?I-:a)//*{ global-modifiers }*/; diff --git a/test/language/literals/regexp/early-err-modifiers-other-code-point-uppercase-I.js b/test/language/literals/regexp/early-err-modifiers-other-code-point-uppercase-I.js new file mode 100644 index 00000000000..73474568d97 --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-other-code-point-uppercase-I.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code point other than i, m, or s, or if it contains the same code point more than once. (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?I:a)//*{ global-modifiers }*/; From 9e03c403e73341658d8d485a673798ae61f6f94a Mon Sep 17 00:00:00 2001 From: "Ioanna M. Dimitriou H" Date: Thu, 29 Feb 2024 23:28:28 +0100 Subject: [PATCH 04/59] Test parsing error when using unicode escape sequences to express i, m, s As suggested in https://github.com/tc39/test262/pull/3960#issuecomment-1966827213 --- ...r-modifiers-should-not-unicode-escape-i.js | 19 +++++++++++++++++++ ...r-modifiers-should-not-unicode-escape-m.js | 19 +++++++++++++++++++ ...r-modifiers-should-not-unicode-escape-s.js | 19 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-i.js create mode 100644 test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-m.js create mode 100644 test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-s.js diff --git a/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-i.js b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-i.js new file mode 100644 index 00000000000..10e1883996f --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-i.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Source text cannot use unicode escape sequences to express code points "i", "m", "s" (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?\u0069:a)/u /* i */; diff --git a/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-m.js b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-m.js new file mode 100644 index 00000000000..4916997fbfa --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-m.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Source text cannot use unicode escape sequences to express code points "i", "m", "s" (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?\u006D:a)/u /* m */; diff --git a/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-s.js b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-s.js new file mode 100644 index 00000000000..4e91d5bb51b --- /dev/null +++ b/test/language/literals/regexp/early-err-modifiers-should-not-unicode-escape-s.js @@ -0,0 +1,19 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Source text cannot use unicode escape sequences to express code points "i", "m", "s" (regular expression flags) +esid: sec-patterns-static-semantics-early-errors +features: [regexp-modifiers] +negative: + phase: parse + type: SyntaxError +info: | + Atom :: ( ? RegularExpresisonFlags : Disjunction ) + It is a Syntax Error if the source text matched by RegularExpressionFlags contains any code points other than "i", "m", "s", or if it contains the same code point more than once. + +---*/ + +$DONOTEVALUATE(); + +/(?\u0073:a)/u /* s */; From 46fc2814306c75f671924c6830346bf76b3ac30b Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Wed, 15 Nov 2023 14:37:13 -0500 Subject: [PATCH 05/59] Add tests for RegExp modifiers --- ...-dotAll-does-not-affect-dotAll-property.js | 46 ++++++++ ...-dotAll-does-not-affect-ignoreCase-flag.js | 64 +++++++++++ ...d-dotAll-does-not-affect-multiline-flag.js | 56 ++++++++++ .../RegExp/regexp-modifiers/add-dotAll.js | 102 ++++++++++++++++++ .../add-ignoreCase-affects-backreferences.js | 52 +++++++++ ...add-ignoreCase-affects-characterClasses.js | 64 +++++++++++ ...add-ignoreCase-affects-characterEscapes.js | 64 +++++++++++ .../add-ignoreCase-affects-slash-lower-b.js | 74 +++++++++++++ .../add-ignoreCase-affects-slash-lower-p.js | 58 ++++++++++ .../add-ignoreCase-affects-slash-lower-w.js | 74 +++++++++++++ .../add-ignoreCase-affects-slash-upper-b.js | 54 ++++++++++ .../add-ignoreCase-affects-slash-upper-p.js | 60 +++++++++++ .../add-ignoreCase-affects-slash-upper-w.js | 54 ++++++++++ ...-ignoreCase-does-not-affect-dotAll-flag.js | 64 +++++++++++ ...ase-does-not-affect-ignoreCase-property.js | 52 +++++++++ ...noreCase-does-not-affect-multiline-flag.js | 64 +++++++++++ .../RegExp/regexp-modifiers/add-ignoreCase.js | 44 ++++++++ ...d-multiline-does-not-affect-dotAll-flag.js | 56 ++++++++++ ...ltiline-does-not-affect-ignoreCase-flag.js | 64 +++++++++++ ...line-does-not-affect-multiline-property.js | 46 ++++++++ .../RegExp/regexp-modifiers/add-multiline.js | 46 ++++++++ .../regexp-modifiers/add-remove-modifiers.js | 42 ++++++++ ...ll-flag-does-not-affect-dotAll-modifier.js | 74 +++++++++++++ ...lag-does-not-affect-ignoreCase-modifier.js | 52 +++++++++ ...flag-does-not-affect-multiline-modifier.js | 48 +++++++++ .../nested-add-remove-modifiers.js | 42 ++++++++ ...nesting-add-dotAll-within-remove-dotAll.js | 68 ++++++++++++ ...add-ignoreCase-within-remove-ignoreCase.js | 42 ++++++++ ...g-add-multiline-within-remove-multiline.js | 44 ++++++++ ...nesting-remove-dotAll-within-add-dotAll.js | 68 ++++++++++++ ...remove-ignoreCase-within-add-ignoreCase.js | 42 ++++++++ ...g-remove-multiline-within-add-multiline.js | 44 ++++++++ ...-dotAll-does-not-affect-dotAll-property.js | 40 +++++++ ...-dotAll-does-not-affect-ignoreCase-flag.js | 46 ++++++++ ...e-dotAll-does-not-affect-multiline-flag.js | 46 ++++++++ .../RegExp/regexp-modifiers/remove-dotAll.js | 68 ++++++++++++ ...emove-ignoreCase-affects-backreferences.js | 40 +++++++ ...ove-ignoreCase-affects-characterClasses.js | 52 +++++++++ ...ove-ignoreCase-affects-characterEscapes.js | 49 +++++++++ ...remove-ignoreCase-affects-slash-lower-b.js | 50 +++++++++ ...remove-ignoreCase-affects-slash-lower-p.js | 52 +++++++++ ...remove-ignoreCase-affects-slash-lower-w.js | 50 +++++++++ ...remove-ignoreCase-affects-slash-upper-b.js | 50 +++++++++ ...remove-ignoreCase-affects-slash-upper-p.js | 53 +++++++++ ...remove-ignoreCase-affects-slash-upper-w.js | 50 +++++++++ ...-ignoreCase-does-not-affect-dotAll-flag.js | 46 ++++++++ ...ase-does-not-affect-ignoreCase-property.js | 46 ++++++++ ...noreCase-does-not-affect-multiline-flag.js | 46 ++++++++ .../regexp-modifiers/remove-ignoreCase.js | 46 ++++++++ ...e-multiline-does-not-affect-dotAll-flag.js | 46 ++++++++ ...ltiline-does-not-affect-ignoreCase-flag.js | 46 ++++++++ ...line-does-not-affect-multiline-property.js | 40 +++++++ .../regexp-modifiers/remove-multiline.js | 42 ++++++++ ...difiers-can-have-empty-remove-modifiers.js | 65 +++++++++++ .../syntax/valid/add-and-remove-modifiers.js | 71 ++++++++++++ .../syntax/valid/add-modifiers-when-nested.js | 41 +++++++ .../add-modifiers-when-not-set-as-flags.js | 65 +++++++++++ .../valid/add-modifiers-when-set-as-flags.js | 43 ++++++++ .../valid/remove-modifiers-when-nested.js | 41 +++++++ .../remove-modifiers-when-not-set-as-flags.js | 65 +++++++++++ .../remove-modifiers-when-set-as-flags.js | 65 +++++++++++ 61 files changed, 3284 insertions(+) create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-dotAll-property.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-ignoreCase-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-multiline-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-dotAll.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-backreferences.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-characterClasses.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-characterEscapes.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-b.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-p.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-w.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-b.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-p.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-w.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-dotAll-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-ignoreCase-property.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-multiline-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-ignoreCase.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-dotAll-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-ignoreCase-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-multiline-property.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-multiline.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/add-remove-modifiers.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/changing-dotAll-flag-does-not-affect-dotAll-modifier.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/changing-ignoreCase-flag-does-not-affect-ignoreCase-modifier.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/changing-multiline-flag-does-not-affect-multiline-modifier.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/nested-add-remove-modifiers.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/nesting-add-dotAll-within-remove-dotAll.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/nesting-add-ignoreCase-within-remove-ignoreCase.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/nesting-add-multiline-within-remove-multiline.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/nesting-remove-dotAll-within-add-dotAll.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/nesting-remove-ignoreCase-within-add-ignoreCase.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/nesting-remove-multiline-within-add-multiline.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-dotAll-property.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-ignoreCase-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-multiline-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-dotAll.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-backreferences.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-characterClasses.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-characterEscapes.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-b.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-p.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-w.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-b.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-p.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-w.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-dotAll-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-ignoreCase-property.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-multiline-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-dotAll-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-ignoreCase-flag.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-multiline-property.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/remove-multiline.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-and-remove-modifiers-can-have-empty-remove-modifiers.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-and-remove-modifiers.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-nested.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-not-set-as-flags.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-set-as-flags.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-nested.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-not-set-as-flags.js create mode 100644 test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-set-as-flags.js diff --git a/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-dotAll-property.js b/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-dotAll-property.js new file mode 100644 index 00000000000..68f67c0333d --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-dotAll-property.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding dotAll (`s`) modifier does not affect RegExp instance `dotAll` property. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?s:)/; +assert(!re1.dotAll, "RegExp instance dotAll flag should not be set"); + +var re2 = new RegExp("(?s:)"); +assert(!re2.dotAll, "RegExp instance dotAll flag should not be set"); + +var re3 = /(?s-:)/; +assert(!re3.dotAll, "RegExp instance dotAll flag should not be set"); + +var re4 = new RegExp("(?s-:)"); +assert(!re4.dotAll, "RegExp instance dotAll flag should not be set"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-ignoreCase-flag.js b/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-ignoreCase-flag.js new file mode 100644 index 00000000000..d9e8aa6c325 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-ignoreCase-flag.js @@ -0,0 +1,64 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding dotAll (`s`) modifier in group should not affect ignoreCase (`i`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?s:.es)/; +assert(re1.test("aes"), "s should match s in modified group"); +assert(re1.test("\nes"), "s should match s in modified group"); +assert(!re1.test("aeS"), "s should not match S in modified group"); +assert(!re1.test("\neS"), "s should not match S in modified group"); + +var re2 = /(?s:.es)/i; +assert(re2.test("aes"), "s should match s in modified group"); +assert(re2.test("aeS"), "s should match S in modified group"); +assert(re2.test("\nes"), "s should match s in modified group"); +assert(re2.test("\neS"), "s should match S in modified group"); + +var re3 = /(?s-:.es)/; +assert(re3.test("aes"), "s should match s in modified group"); +assert(re3.test("\nes"), "s should match s in modified group"); +assert(!re3.test("aeS"), "s should not match S in modified group"); +assert(!re3.test("\neS"), "s should not match S in modified group"); + +var re4 = /(?s-:.es)/i; +assert(re4.test("aes"), "s should match s in modified group"); +assert(re4.test("aeS"), "s should match S in modified group"); +assert(re4.test("\nes"), "s should match s in modified group"); +assert(re4.test("\neS"), "s should match S in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-multiline-flag.js b/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-multiline-flag.js new file mode 100644 index 00000000000..923a2268c4d --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-dotAll-does-not-affect-multiline-flag.js @@ -0,0 +1,56 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding dotAll (`s`) modifier in group should not affect multiline (`m`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?s:.es$)/; +assert(re1.test("\nes"), ". should match newline in modified group"); +assert(!re1.test("\nes\nz"), "$ should not match newline in modified group"); + +var re2 = /(?s:.es$)/m; +assert(re2.test("\nes"), ". should match newline in modified group"); +assert(re2.test("\nes\nz"), "$ should match newline in modified group"); + +var re3 = /(?s-:.es$)/; +assert(re3.test("\nes"), ". should match newline in modified group"); +assert(!re3.test("\nes\nz"), "$ should not match newline in modified group"); + +var re4 = /(?s-:.es$)/m; +assert(re4.test("\nes"), ". should match newline in modified group"); +assert(re4.test("\nes\nz"), "$ should match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-dotAll.js b/test/built-ins/RegExp/regexp-modifiers/add-dotAll.js new file mode 100644 index 00000000000..d0ca4fb20ac --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-dotAll.js @@ -0,0 +1,102 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + dotAll (`s`) modifier can be added via `(?s:)` or `(?s-:)`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?s:^.$)/; +assert(re1.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re1.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re1.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re1.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(re1.test("\n"), "Pattern character '.' should match line terminators in modified group"); +assert(re1.test("\r"), "Pattern character '.' should match line terminators in modified group"); +assert(re1.test("\u2028"), "Pattern character '.' should match line terminators in modified group"); +assert(re1.test("\u2029"), "Pattern character '.' should match line terminators in modified group"); +assert(re1.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); + +var re2 = new RegExp("(?s:^.$)"); +assert(re2.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re2.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re2.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re2.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(re2.test("\n"), "Pattern character '.' should match line terminators in modified group"); +assert(re2.test("\r"), "Pattern character '.' should match line terminators in modified group"); +assert(re2.test("\u2028"), "Pattern character '.' should match line terminators in modified group"); +assert(re2.test("\u2029"), "Pattern character '.' should match line terminators in modified group"); +assert(re2.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); + +var re3 = /(?s-:^.$)/; +assert(re3.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re3.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re3.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re3.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re3.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re3.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re3.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re3.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re3.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(re3.test("\n"), "Pattern character '.' should match line terminators in modified group"); +assert(re3.test("\r"), "Pattern character '.' should match line terminators in modified group"); +assert(re3.test("\u2028"), "Pattern character '.' should match line terminators in modified group"); +assert(re3.test("\u2029"), "Pattern character '.' should match line terminators in modified group"); +assert(re3.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re3.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); + +var re4 = new RegExp("(?s-:^.$)"); +assert(re4.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re4.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re4.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re4.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re4.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re4.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re4.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re4.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re4.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(re4.test("\n"), "Pattern character '.' should match line terminators in modified group"); +assert(re4.test("\r"), "Pattern character '.' should match line terminators in modified group"); +assert(re4.test("\u2028"), "Pattern character '.' should match line terminators in modified group"); +assert(re4.test("\u2029"), "Pattern character '.' should match line terminators in modified group"); +assert(re4.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re4.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-backreferences.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-backreferences.js new file mode 100644 index 00000000000..d94620a362b --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-backreferences.js @@ -0,0 +1,52 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier in group affects backreferences in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(a)(?i:\1)/; +assert(!re1.test("AA"), "a should not match first A"); +assert(!re1.test("Aa"), "a should not match A"); +assert(re1.test("aa"), "a matches first a, so \\1 should match second a"); +assert(re1.test("aA"), "a matches a, so \\1 should match A (ignores case)"); + +var re2 = /(a)(?i-:\1)/; +assert(!re2.test("AA"), "a should not match first A"); +assert(!re2.test("Aa"), "a should not match A"); +assert(re2.test("aa"), "a matches first a, so \\1 should match second a"); +assert(re2.test("aA"), "a matches a, so \\1 should match A (ignores case)"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-characterClasses.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-characterClasses.js new file mode 100644 index 00000000000..066f95adab6 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-characterClasses.js @@ -0,0 +1,64 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier in group affects character classes in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:[ab])c/; +assert(re1.test("ac"), "[ab] should match a"); +assert(re1.test("Ac"), "[ab] should match A"); +assert(re1.test("bc"), "[ab] should match b"); +assert(re1.test("Bc"), "[ab] should match B"); + +var re2 = /(?i-:[ab])c/; +assert(re2.test("ac"), "[ab] should match a"); +assert(re2.test("Ac"), "[ab] should match A"); +assert(re2.test("bc"), "[ab] should match b"); +assert(re2.test("Bc"), "[ab] should match B"); + +var re3 = /(?i:[^ab])c/; +assert(!re3.test("ac"), "[^ab] should not match a"); +assert(!re3.test("Ac"), "[^ab] should not match A"); +assert(!re3.test("bc"), "[^ab] should not match b"); +assert(!re3.test("Bc"), "[^ab] should not match B"); + +var re4 = /(?i-:[^ab])c/; +assert(!re4.test("ac"), "[^ab] should not match a"); +assert(!re4.test("Ac"), "[^ab] should not match A"); +assert(!re4.test("bc"), "[^ab] should not match b"); +assert(!re4.test("Bc"), "[^ab] should not match B"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-characterEscapes.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-characterEscapes.js new file mode 100644 index 00000000000..ad17f7c5b0b --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-characterEscapes.js @@ -0,0 +1,64 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier in group affects character escapes in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:\x61)b/; +assert(re1.test("ab"), "\\x61 should match a"); +assert(re1.test("Ab"), "\\x61 should match A"); + +var re2 = /(?i:\u0061)b/; +assert(re2.test("ab"), "\\u0061 should match a"); +assert(re2.test("Ab"), "\\u0061 should match A"); + +var re3 = /(?i:\u{0061})b/u; +assert(re3.test("ab"), "\\u0061 should match a"); +assert(re3.test("Ab"), "\\u0061 should match A"); + +var re4 = /(?i-:\x61)b/; +assert(re4.test("ab"), "\\x61 should match a"); +assert(re4.test("Ab"), "\\x61 should match A"); + +var re5 = /(?i-:\u0061)b/; +assert(re5.test("ab"), "\\u0061 should match a"); +assert(re5.test("Ab"), "\\u0061 should match A"); + +var re6 = /(?i-:\u{0061})b/u; +assert(re6.test("ab"), "\\u0061 should match a"); +assert(re6.test("Ab"), "\\u0061 should match A"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-b.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-b.js new file mode 100644 index 00000000000..f30a9ba52de --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-b.js @@ -0,0 +1,74 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier affects matching for `\b`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:\b)/; +assert(re1.test("A"), "\\b should match after A"); +assert(re1.test("a"), "\\b should match after a"); +assert(re1.test("z"), "\\b should match after z"); +assert(re1.test("Z"), "\\b should match after Z"); + +var re2 = /(?i:\b)/u; +assert(re2.test("A"), "\\b should match after A"); +assert(re2.test("a"), "\\b should match after a"); +assert(re2.test("z"), "\\b should match after z"); +assert(re2.test("Z"), "\\b should match after Z"); +assert(re2.test("\u017f"), "\\b should match after \u017f"); +assert(re2.test("\u212a"), "\\b should match after \u212a"); + +var re3 = /(?i-:\b)/; +assert(re3.test("A"), "\\b should match after A"); +assert(re3.test("a"), "\\b should match after a"); +assert(re3.test("z"), "\\b should match after z"); +assert(re3.test("Z"), "\\b should match after Z"); + +var re4 = /(?i-:\b)/u; +assert(re4.test("A"), "\\b should match after A"); +assert(re4.test("a"), "\\b should match after a"); +assert(re4.test("z"), "\\b should match after z"); +assert(re4.test("Z"), "\\b should match after Z"); +assert(re4.test("\u017f"), "\\b should match after \u017f"); +assert(re4.test("\u212a"), "\\b should match after \u212a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-p.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-p.js new file mode 100644 index 00000000000..93659260aa0 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-p.js @@ -0,0 +1,58 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier affects matching for `\p{}`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:\p{Lu})/u; +assert(re1.test("A"), "\\p{Lu} should match A"); +assert(re1.test("a"), "\\p{Lu} should match a (ignores case)"); +assert(re1.test("Z"), "\\p{Lu} should match Z"); +assert(re1.test("z"), "\\p{Lu} should match z (ignores case)"); + +var re2 = /(?i-:\p{Lu})/u; +assert(re2.test("A"), "\\p{Lu} should match A"); +assert(re2.test("a"), "\\p{Lu} should match a (ignores case)"); +assert(re2.test("Z"), "\\p{Lu} should match Z"); +assert(re2.test("z"), "\\p{Lu} should match z (ignores case)"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-w.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-w.js new file mode 100644 index 00000000000..8fb247db36b --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-lower-w.js @@ -0,0 +1,74 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier affects matching for `\w`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:\w)/; +assert(re1.test("A"), "\\w should match A"); +assert(re1.test("a"), "\\w should match a"); +assert(re1.test("z"), "\\w should match z"); +assert(re1.test("Z"), "\\w should match Z"); + +var re2 = /(?i:\w)/u; +assert(re2.test("A"), "\\w should match A"); +assert(re2.test("a"), "\\w should match a"); +assert(re2.test("z"), "\\w should match z"); +assert(re2.test("Z"), "\\w should match Z"); +assert(re2.test("\u017f"), "\\w should match \u017f"); +assert(re2.test("\u212a"), "\\w should match \u212a"); + +var re3 = /(?i-:\w)/; +assert(re3.test("A"), "\\w should match A"); +assert(re3.test("a"), "\\w should match a"); +assert(re3.test("z"), "\\w should match z"); +assert(re3.test("Z"), "\\w should match Z"); + +var re4 = /(?i-:\w)/u; +assert(re4.test("A"), "\\w should match A"); +assert(re4.test("a"), "\\w should match a"); +assert(re4.test("z"), "\\w should match z"); +assert(re4.test("Z"), "\\w should match Z"); +assert(re4.test("\u017f"), "\\w should match \u017f"); +assert(re4.test("\u212a"), "\\w should match \u212a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-b.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-b.js new file mode 100644 index 00000000000..0e92561fda2 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-b.js @@ -0,0 +1,54 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier affects matching for `\B`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:Z\B)/u; +assert(re1.test("Z\u017f"), "\\B should match between Z and \u017f"); +assert(re1.test("Z\u212a"), "\\B should match between Z and \u212a"); + +var re2 = /(?i-:Z\B)/u; +assert(re2.test("Z\u017f"), "\\B should match between Z and \u017f"); +assert(re2.test("Z\u212a"), "\\B should match between Z and \u212a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-p.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-p.js new file mode 100644 index 00000000000..845b7b8913c --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-p.js @@ -0,0 +1,60 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier affects matching for `\P{}`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:\P{Lu})/u; +assert(re1.test("A"), "\\P{Lu} should match A (ignores case)"); +assert(re1.test("a"), "\\P{Lu} should match a"); +assert(re1.test("Z"), "\\P{Lu} should match Z (ignores case)"); +assert(re1.test("z"), "\\P{Lu} should match z"); +assert(re1.test("0"), "\\P{Lu} should match 0"); + +var re2 = /(?i-:\P{Lu})/u; +assert(re2.test("A"), "\\P{Lu} should match A (ignores case)"); +assert(re2.test("a"), "\\P{Lu} should match a"); +assert(re2.test("Z"), "\\P{Lu} should match Z (ignores case)"); +assert(re2.test("z"), "\\P{Lu} should match z"); +assert(re2.test("0"), "\\P{Lu} should match 0"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-w.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-w.js new file mode 100644 index 00000000000..144a9773218 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-affects-slash-upper-w.js @@ -0,0 +1,54 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier affects matching for `\W`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:\W)/u; +assert(!re1.test("\u017f"), "\\W should not match \u017f"); +assert(!re1.test("\u212a"), "\\W should not match \u212a"); + +var re2 = /(?i-:\W)/u; +assert(!re2.test("\u017f"), "\\W should not match \u017f"); +assert(!re2.test("\u212a"), "\\W should not match \u212a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-dotAll-flag.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-dotAll-flag.js new file mode 100644 index 00000000000..c6e52fc617c --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-dotAll-flag.js @@ -0,0 +1,64 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier in group should not affect dotAll (`s`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:.es)/; +assert(re1.test("aes"), ". should match a in modified group"); +assert(re1.test("aeS"), ". should match a in modified group"); +assert(!re1.test("\nes"), ". should not match newline in modified group"); +assert(!re1.test("\neS"), ". should not match newline in modified group"); + +var re2 = /(?i:.es)/s; +assert(re2.test("aes"), ". should match a in modified group"); +assert(re2.test("aeS"), ". should match a in modified group"); +assert(re2.test("\nes"), ". should match newline in modified group"); +assert(re2.test("\neS"), ". should match newline in modified group"); + +var re3 = /(?i-:.es)/; +assert(re3.test("aes"), ". should match a in modified group"); +assert(re3.test("aeS"), ". should match a in modified group"); +assert(!re3.test("\nes"), ". should not match newline in modified group"); +assert(!re3.test("\neS"), ". should not match newline in modified group"); + +var re4 = /(?i-:.es)/s; +assert(re4.test("aes"), ". should match a in modified group"); +assert(re4.test("aeS"), ". should match a in modified group"); +assert(re4.test("\nes"), ". should match newline in modified group"); +assert(re4.test("\neS"), ". should match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-ignoreCase-property.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-ignoreCase-property.js new file mode 100644 index 00000000000..01d02130247 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-ignoreCase-property.js @@ -0,0 +1,52 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier does not affect RegExp instance `ignoreCase` property. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:)/; +assert(!re1.ignoreCase, "RegExp instance ignoreCase property should not be set"); + +var re2 = new RegExp("(?i:)"); +assert(!re2.ignoreCase, "RegExp instance ignoreCase property should not be set"); + +var re3 = /(?i-:)/; +assert(!re3.ignoreCase, "RegExp instance ignoreCase property should not be set"); + +var re4 = new RegExp("(?i-:)"); +assert(!re4.ignoreCase, "RegExp instance ignoreCase property should not be set"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-multiline-flag.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-multiline-flag.js new file mode 100644 index 00000000000..9a3077b1e13 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase-does-not-affect-multiline-flag.js @@ -0,0 +1,64 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding ignoreCase (`i`) modifier in group should not affect multiline (`m`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:es$)/; +assert(re1.test("es"), "s should match s in modified group"); +assert(re1.test("eS"), "s should match S in modified group"); +assert(!re1.test("es\nz"), "$ should not match newline in modified group"); +assert(!re1.test("eS\nz"), "$ should not match newline in modified group"); + +var re2 = /(?i:es$)/m; +assert(re2.test("es"), "s should match s in modified group"); +assert(re2.test("eS"), "s should match S in modified group"); +assert(re2.test("es\nz"), "$ should match newline in modified group"); +assert(re2.test("eS\nz"), "$ should match newline in modified group"); + +var re3 = /(?i-:es$)/; +assert(re3.test("es"), "s should match s in modified group"); +assert(re3.test("eS"), "s should match S in modified group"); +assert(!re3.test("es\nz"), "$ should not match newline in modified group"); +assert(!re3.test("eS\nz"), "$ should not match newline in modified group"); + +var re4 = /(?i-:es$)/m; +assert(re4.test("es"), "s should match s in modified group"); +assert(re4.test("eS"), "s should match S in modified group"); +assert(re4.test("es\nz"), "$ should match newline in modified group"); +assert(re4.test("eS\nz"), "$ should match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase.js b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase.js new file mode 100644 index 00000000000..3f71a5dde0a --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-ignoreCase.js @@ -0,0 +1,44 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + ignoreCase (`i`) modifier can be added via `(?i:)` or `(?i-:)`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?i:a)b/; +assert(!re1.test("AB"), "b should not match B in AB"); +assert(re1.test("Ab"), "a should match A in AB"); +assert(re1.test("ab"), "should match AB"); + +var re2 = new RegExp("(?i:a)b"); +assert(!re2.test("AB"), "b should not match B in AB"); +assert(re2.test("Ab"), "a should match A in AB"); +assert(re2.test("ab"), "should match AB"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-dotAll-flag.js b/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-dotAll-flag.js new file mode 100644 index 00000000000..15c754ae71f --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-dotAll-flag.js @@ -0,0 +1,56 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding multiline (`m`) modifier in group should not affect dotAll (`s`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?m:es.$)/; +assert(re1.test("esz\n"), "$ should match newline in modified group"); +assert(!re1.test("es\n\n"), ". should not match newline in modified group"); + +var re2 = /(?m:es.$)/s; +assert(re2.test("esz\n"), "$ should match newline in modified group"); +assert(re2.test("es\n\n"), ". should match newline in modified group"); + +var re3 = /(?m-:es.$)/; +assert(re3.test("esz\n"), "$ should match newline in modified group"); +assert(!re3.test("es\n\n"), ". should not match newline in modified group"); + +var re4 = /(?m-:es.$)/s; +assert(re4.test("esz\n"), "$ should match newline in modified group"); +assert(re4.test("es\n\n"), ". should match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-ignoreCase-flag.js b/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-ignoreCase-flag.js new file mode 100644 index 00000000000..8bd97f97f3e --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-ignoreCase-flag.js @@ -0,0 +1,64 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding multiline (`m`) modifier in group should not affect ignoreCase (`i`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?m:es$)/; +assert(re1.test("es"), "s should match s in modified group"); +assert(!re1.test("eS"), "s should not match S in modified group"); +assert(re1.test("es\nz"), "$ should match newline in modified group"); +assert(!re1.test("eS\nz"), "s should not match S in modified group"); + +var re2 = /(?m:es$)/i; +assert(re2.test("es"), "s should match s in modified group"); +assert(re2.test("eS"), "s should match S in modified group"); +assert(re2.test("es\nz"), "$ should match newline in modified group"); +assert(re2.test("eS\nz"), "$ should match newline in modified group"); + +var re3 = /(?m-:es$)/; +assert(re3.test("es"), "s should match s in modified group"); +assert(!re3.test("eS"), "s should not match S in modified group"); +assert(re3.test("es\nz"), "$ should match newline in modified group"); +assert(!re3.test("eS\nz"), "s should not match S in modified group"); + +var re4 = /(?m-:es$)/i; +assert(re4.test("es"), "s should match s in modified group"); +assert(re4.test("eS"), "s should match S in modified group"); +assert(re4.test("es\nz"), "$ should match newline in modified group"); +assert(re4.test("eS\nz"), "$ should match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-multiline-property.js b/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-multiline-property.js new file mode 100644 index 00000000000..6709fe3dcb7 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-multiline-does-not-affect-multiline-property.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Adding multiline (`m`) modifier does not affect RegExp instance `multiline` property. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?m:)/; +assert(!re1.multiline, "RegExp instance multiline flag should not be set"); + +var re2 = new RegExp("(?m:)"); +assert(!re2.multiline, "RegExp instance multiline flag should not be set"); + +var re3 = /(?m-:)/; +assert(!re3.multiline, "RegExp instance multiline flag should not be set"); + +var re4 = new RegExp("(?m-:)"); +assert(!re4.multiline, "RegExp instance multiline flag should not be set"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-multiline.js b/test/built-ins/RegExp/regexp-modifiers/add-multiline.js new file mode 100644 index 00000000000..faf922138f3 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-multiline.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + multiline (`m`) modifier can be added via `(?m:)` or `(?m-:)`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?m:es$)/; +assert(re1.test("es\ns"), "$ should match newline in modified group"); + +var re2 = new RegExp("(?m:es$)"); +assert(re2.test("es\ns"), "$ should match newline in modified group"); + +var re3 = /(?m-:es$)/; +assert(re3.test("es\ns"), "$ should match newline in modified group"); + +var re4 = new RegExp("(?m-:es$)"); +assert(re4.test("es\ns"), "$ should match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/add-remove-modifiers.js b/test/built-ins/RegExp/regexp-modifiers/add-remove-modifiers.js new file mode 100644 index 00000000000..962513106f9 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/add-remove-modifiers.js @@ -0,0 +1,42 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers can be both added and removed via `(?ims-ims:)`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?m-i:^a$)/i; +assert(!re1.test("A\n"), "Should not match 'A\\n'"); +assert(re1.test("a\n"), "Should match 'a\\n'"); + +var re2 = new RegExp("(?m-i:^a$)", "i"); +assert(!re2.test("A\n"), "Should not match 'A\\n'"); +assert(re2.test("a\n"), "Should match 'a\\n'"); diff --git a/test/built-ins/RegExp/regexp-modifiers/changing-dotAll-flag-does-not-affect-dotAll-modifier.js b/test/built-ins/RegExp/regexp-modifiers/changing-dotAll-flag-does-not-affect-dotAll-modifier.js new file mode 100644 index 00000000000..f6a72222c76 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/changing-dotAll-flag-does-not-affect-dotAll-modifier.js @@ -0,0 +1,74 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + New dotAll (`s`) flag from RegExp constructor does not affect dotAll modifier in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = new RegExp(/(?s:^.$)/s, ""); +assert(re1.test("a"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re1.test("3"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re1.test("π"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re1.test("\u2027"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re1.test("\u0085"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re1.test("\v"), "Pattern character '.' still should match mon-line terminators in modified group"); +assert(re1.test("\f"), "Pattern character '.' still should match mon-line terminators in modified group"); +assert(re1.test("\u180E"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(!re1.test("\u{10300}"), "Supplementary plane still not matched by a single ."); +assert(re1.test("\n"), "Pattern character '.' still should match line terminators in modified group"); +assert(re1.test("\r"), "Pattern character '.' still should match line terminators in modified group"); +assert(re1.test("\u2028"), "Pattern character '.' still should match line terminators in modified group"); +assert(re1.test("\u2029"), "Pattern character '.' still should match line terminators in modified group"); +assert(re1.test("\uD800"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re1.test("\uDFFF"), "Pattern character '.' still should match non-line terminators in modified group"); + +var re2 = new RegExp(/(?-s:^.$)/, "s"); +assert(re2.test("a"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re2.test("3"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re2.test("π"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re2.test("\u2027"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re2.test("\u0085"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re2.test("\v"), "Pattern character '.' still should match mon-line terminators in modified group"); +assert(re2.test("\f"), "Pattern character '.' still should match mon-line terminators in modified group"); +assert(re2.test("\u180E"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(!re2.test("\u{10300}"), "Supplementary plane still not matched by a single ."); +assert(!re2.test("\n"), "Pattern character '.' still should not match '\\n' in modified group"); +assert(!re2.test("\r"), "Pattern character '.' still should not match '\\r' in modified group"); +assert(!re2.test("\u2028"), "Pattern character '.' still should not match '\\u2028' in modified group"); +assert(!re2.test("\u2029"), "Pattern character '.' still should not match '\\u2029' in modified group"); +assert(re2.test("\uD800"), "Pattern character '.' still should match non-line terminators in modified group"); +assert(re2.test("\uDFFF"), "Pattern character '.' still should match non-line terminators in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/changing-ignoreCase-flag-does-not-affect-ignoreCase-modifier.js b/test/built-ins/RegExp/regexp-modifiers/changing-ignoreCase-flag-does-not-affect-ignoreCase-modifier.js new file mode 100644 index 00000000000..283325d393a --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/changing-ignoreCase-flag-does-not-affect-ignoreCase-modifier.js @@ -0,0 +1,52 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + New ignoreCase (`i`) flag from RegExp constructor does not affect ignoreCase modifier in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = new RegExp(/(?i:aB)/i, ""); +assert(re1.test("AB"), "still should ignore case in modified group"); +assert(re1.test("Ab"), "still should ignore case in modified group"); +assert(re1.test("aB"), "still should ignore case in modified group"); +assert(re1.test("ab"), "still should ignore case in modified group"); + +var re2 = new RegExp(/(?-i:aB)/, "i"); +assert(!re2.test("AB"), "still should preserve case in modified group"); +assert(!re2.test("Ab"), "still should preserve case in modified group"); +assert(!re2.test("ab"), "still should preserve case in modified group"); +assert(re2.test("aB"), "still should preserve case in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/changing-multiline-flag-does-not-affect-multiline-modifier.js b/test/built-ins/RegExp/regexp-modifiers/changing-multiline-flag-does-not-affect-multiline-modifier.js new file mode 100644 index 00000000000..80952993fdc --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/changing-multiline-flag-does-not-affect-multiline-modifier.js @@ -0,0 +1,48 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + New multiline (`m`) flag from RegExp constructor does not affect multiline modifier in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = new RegExp(/(?m:es$)/m, ""); +assert(re1.test("es"), "$ still should match end of input in modified group"); +assert(re1.test("es\ns"), "$ still should match newline in modified group"); + +var re2 = new RegExp(/^(?-m:es$)/, "m"); +assert(re2.test("es"), "$ still should match end of input in modified group"); +assert(!re2.test("es\ns"), "$ still should not match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/nested-add-remove-modifiers.js b/test/built-ins/RegExp/regexp-modifiers/nested-add-remove-modifiers.js new file mode 100644 index 00000000000..3608c089afb --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/nested-add-remove-modifiers.js @@ -0,0 +1,42 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers can be nested. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?m:^(?-i:a)$)/i; +assert(!re1.test("A\n"), "Should not match 'A\\n'"); +assert(re1.test("a\n"), "Should match 'a\\n'"); + +var re2 = new RegExp("(?m:^(?-i:a)$)", "i"); +assert(!re2.test("A\n"), "Should not match 'A\\n'"); +assert(re2.test("a\n"), "Should match 'a\\n'"); diff --git a/test/built-ins/RegExp/regexp-modifiers/nesting-add-dotAll-within-remove-dotAll.js b/test/built-ins/RegExp/regexp-modifiers/nesting-add-dotAll-within-remove-dotAll.js new file mode 100644 index 00000000000..764c233d6db --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/nesting-add-dotAll-within-remove-dotAll.js @@ -0,0 +1,68 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Can add multiline (`m`) modifier for group nested within a group that removes multiline modifier. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-s:(?s:^.$))/s; +assert(re1.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re1.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re1.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re1.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(re1.test("\n"), "Pattern character '.' should match line terminators in modified group"); +assert(re1.test("\r"), "Pattern character '.' should match line terminators in modified group"); +assert(re1.test("\u2028"), "Pattern character '.' should match line terminators in modified group"); +assert(re1.test("\u2029"), "Pattern character '.' should match line terminators in modified group"); +assert(re1.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); + +var re2 = /(?-s:(?s-:^.$))/s; +assert(re2.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re2.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re2.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re2.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(re2.test("\n"), "Pattern character '.' should match line terminators in modified group"); +assert(re2.test("\r"), "Pattern character '.' should match line terminators in modified group"); +assert(re2.test("\u2028"), "Pattern character '.' should match line terminators in modified group"); +assert(re2.test("\u2029"), "Pattern character '.' should match line terminators in modified group"); +assert(re2.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/nesting-add-ignoreCase-within-remove-ignoreCase.js b/test/built-ins/RegExp/regexp-modifiers/nesting-add-ignoreCase-within-remove-ignoreCase.js new file mode 100644 index 00000000000..90800d1f229 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/nesting-add-ignoreCase-within-remove-ignoreCase.js @@ -0,0 +1,42 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Can add ignoreCase (`i`) modifier for group nested within a group that removes ignoreCase modifier. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:a(?i:b))c/i; +assert(!re1.test("ABC"), "a should not match A in ABC"); +assert(!re1.test("ABc"), "a should not match A in ABc"); +assert(!re1.test("Abc"), "a should not match A in Abc"); +assert(re1.test("aBc"), "b should match B in aBc"); +assert(re1.test("abC"), "c should match C in abC"); +assert(re1.test("abc"), "should match abc"); diff --git a/test/built-ins/RegExp/regexp-modifiers/nesting-add-multiline-within-remove-multiline.js b/test/built-ins/RegExp/regexp-modifiers/nesting-add-multiline-within-remove-multiline.js new file mode 100644 index 00000000000..6adba61b382 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/nesting-add-multiline-within-remove-multiline.js @@ -0,0 +1,44 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Can add multiline (`m`) modifier for group nested within a group that removes multiline modifier. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-m:es(?m:$)|js$)/m; +assert(re1.test("es\ns"), "$ should match newline in modified group"); +assert(re1.test("js"), "$ should match end of input in nested modified group"); +assert(!re1.test("js\ns"), "$ should not match newline in nested modified group"); + +var re2 = /(?-m:es(?m-:$)|js$)/m; +assert(re2.test("es\ns"), "$ should match newline in modified group"); +assert(re2.test("js"), "$ should match end of input in nested modified group"); +assert(!re2.test("js\ns"), "$ should not match newline in nested modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/nesting-remove-dotAll-within-add-dotAll.js b/test/built-ins/RegExp/regexp-modifiers/nesting-remove-dotAll-within-add-dotAll.js new file mode 100644 index 00000000000..3f60168d13f --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/nesting-remove-dotAll-within-add-dotAll.js @@ -0,0 +1,68 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Can remove multiline (`m`) modifier for group nested within a group that adds multiline modifier. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?s:(?-s:^.$))/; +assert(re1.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re1.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re1.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re1.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(!re1.test("\n"), "Pattern character '.' should not match '\\n' in modified group"); +assert(!re1.test("\r"), "Pattern character '.' should not match '\\r' in modified group"); +assert(!re1.test("\u2028"), "Pattern character '.' should not match '\\u2028' in modified group"); +assert(!re1.test("\u2029"), "Pattern character '.' should not match '\\u2029' in modified group"); +assert(re1.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); + +var re2 = /(?s-:(?-s:^.$))/; +assert(re2.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re2.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re2.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re2.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(!re2.test("\n"), "Pattern character '.' should not match '\\n' in modified group"); +assert(!re2.test("\r"), "Pattern character '.' should not match '\\r' in modified group"); +assert(!re2.test("\u2028"), "Pattern character '.' should not match '\\u2028' in modified group"); +assert(!re2.test("\u2029"), "Pattern character '.' should not match '\\u2029' in modified group"); +assert(re2.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/nesting-remove-ignoreCase-within-add-ignoreCase.js b/test/built-ins/RegExp/regexp-modifiers/nesting-remove-ignoreCase-within-add-ignoreCase.js new file mode 100644 index 00000000000..9bc50da4e88 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/nesting-remove-ignoreCase-within-add-ignoreCase.js @@ -0,0 +1,42 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Can remove ignoreCase (`i`) modifier for group nested within a group that adds ignoreCase modifier. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:a(?i:b))c/i; +assert(!re1.test("ABC"), "a should not match A in ABC"); +assert(!re1.test("ABc"), "a should not match A in ABc"); +assert(!re1.test("Abc"), "a should not match A in Abc"); +assert(re1.test("aBc"), "b should match B in aBc"); +assert(re1.test("abC"), "c should match C in abC"); +assert(re1.test("abc"), "should match abc"); diff --git a/test/built-ins/RegExp/regexp-modifiers/nesting-remove-multiline-within-add-multiline.js b/test/built-ins/RegExp/regexp-modifiers/nesting-remove-multiline-within-add-multiline.js new file mode 100644 index 00000000000..a0bd7f99c9d --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/nesting-remove-multiline-within-add-multiline.js @@ -0,0 +1,44 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Can remove multiline (`m`) modifier for group nested within a group that adds multiline modifier. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?m:es$|(?-m:js$))/; +assert(re1.test("es\ns"), "first $ should match newline in modified group"); +assert(re1.test("js"), "second $ should match end of input in nested modified group"); +assert(!re1.test("js\ns"), "second $ should not match newline in nested modified group"); + +var re2 = /(?m-:es$|(?-m:js$))/; +assert(re2.test("es\ns"), "first $ should match newline in modified group"); +assert(re2.test("js"), "second $ should match end of input in nested modified group"); +assert(!re2.test("js\ns"), "second $ should not match newline in nested modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-dotAll-property.js b/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-dotAll-property.js new file mode 100644 index 00000000000..4ada894fe1b --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-dotAll-property.js @@ -0,0 +1,40 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing dotAll (`s`) modifier does not affect RegExp instance `dotAll` property. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-s:^.$)/s; +assert(re1.dotAll, "RegExp instance dotAll flag should still be set"); + +var re2 = new RegExp("(?-s:^.$)", "s"); +assert(re2.dotAll, "RegExp instance dotAll flag should still be set"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-ignoreCase-flag.js b/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-ignoreCase-flag.js new file mode 100644 index 00000000000..bfb1df3d757 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-ignoreCase-flag.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing dotAll (`s`) modifier in group should not affect ignoreCase (`i`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-s:.es)/s; +assert(re1.test("aes"), "s should match s in modified group"); +assert(!re1.test("aeS"), "s should not match S in modified group"); +assert(!re1.test("\nes"), ". should not match newline in modified group"); +assert(!re1.test("\neS"), ". should not match newline in modified group"); + +var re2 = /(?-s:.es)/si; +assert(re2.test("aes"), "s should match s in modified group"); +assert(re2.test("aeS"), "s should match S in modified group"); +assert(!re2.test("\nes"), ". should not match newline in modified group"); +assert(!re2.test("\neS"), ". should not match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-multiline-flag.js b/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-multiline-flag.js new file mode 100644 index 00000000000..d91882bdc30 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-dotAll-does-not-affect-multiline-flag.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing dotAll (`s`) modifier in group should not affect multiline (`m`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-s:.es$)/s; +assert(re1.test("aes"), ". should match a in modified group"); +assert(!re1.test("aes\nz"), "$ should not match newline in modified group"); +assert(!re1.test("\nes"), ". should not match newline in modified group"); +assert(!re1.test("\nes\nz"), "$ should not match newline in modified group"); + +var re2 = /(?-s:.es$)/sm; +assert(re2.test("aes"), ". should match a in modified group"); +assert(re2.test("aes\nz"), "$ should match newline in modified group"); +assert(!re2.test("\nes"), ". should not match newline in modified group"); +assert(!re2.test("\nes\nz"), ". should not match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-dotAll.js b/test/built-ins/RegExp/regexp-modifiers/remove-dotAll.js new file mode 100644 index 00000000000..2534c3292aa --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-dotAll.js @@ -0,0 +1,68 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + dotAll (`s`) modifier can be added via `(?s:)` or `(?s-:)`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-s:^.$)/s; +assert(re1.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re1.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re1.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re1.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(!re1.test("\n"), "Pattern character '.' should not match '\\n' in modified group"); +assert(!re1.test("\r"), "Pattern character '.' should not match '\\r' in modified group"); +assert(!re1.test("\u2028"), "Pattern character '.' should not match '\\u2028' in modified group"); +assert(!re1.test("\u2029"), "Pattern character '.' should not match '\\u2029' in modified group"); +assert(re1.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re1.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); + +var re2 = new RegExp("(?-s:^.$)", "s"); +assert(re2.test("a"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("3"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("π"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\u2027"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\u0085"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\v"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re2.test("\f"), "Pattern character '.' should match mon-line terminators in modified group"); +assert(re2.test("\u180E"), "Pattern character '.' should match non-line terminators in modified group"); +assert(!re2.test("\u{10300}"), "Supplementary plane not matched by a single ."); +assert(!re2.test("\n"), "Pattern character '.' should not match '\\n' in modified group"); +assert(!re2.test("\r"), "Pattern character '.' should not match '\\r' in modified group"); +assert(!re2.test("\u2028"), "Pattern character '.' should not match '\\u2028' in modified group"); +assert(!re2.test("\u2029"), "Pattern character '.' should not match '\\u2029' in modified group"); +assert(re2.test("\uD800"), "Pattern character '.' should match non-line terminators in modified group"); +assert(re2.test("\uDFFF"), "Pattern character '.' should match non-line terminators in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-backreferences.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-backreferences.js new file mode 100644 index 00000000000..ebe0768c461 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-backreferences.js @@ -0,0 +1,40 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier in group affects backreferences in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(a)(?-i:\1)/i; +assert(re1.test("AA"), "a matches first A, so \\1 should match second A"); +assert(!re1.test("aA"), "a matches a, so \\1 should not match A (preserves case)"); +assert(!re1.test("Aa"), "a matches A, so \\1 should not match a (preserves case)"); +assert(re1.test("aa"), "a matches first a, so \\1 should match second a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-characterClasses.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-characterClasses.js new file mode 100644 index 00000000000..09cf1fe71c9 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-characterClasses.js @@ -0,0 +1,52 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier in group affects character classes in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:[ab])c/i; +assert(re1.test("ac"), "[ab] should match a"); +assert(!re1.test("Ac"), "[ab] should not match A"); +assert(re1.test("bc"), "[ab] should match b"); +assert(!re1.test("Bc"), "[ab] should not match B"); + +var re2 = /(?-i:[^ab])c/i; +assert(!re2.test("ac"), "[^ab] should not match a"); +assert(re2.test("Ac"), "[^ab] should match A"); +assert(!re2.test("bc"), "[^ab] should not match b"); +assert(re2.test("Bc"), "[^ab] should match B"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-characterEscapes.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-characterEscapes.js new file mode 100644 index 00000000000..e278c9a05f4 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-characterEscapes.js @@ -0,0 +1,49 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier in group affects character escapes in group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:\x61)b/i; +assert(re1.test("ab"), "\\x61 should match a"); +assert(re1.test("aB"), "b should match B"); +assert(!re1.test("Ab"), "\\x61 should not match A"); + +var re2 = /(?-i:\u0061)b/i; +assert(re2.test("ab"), "\\u0061 should match a"); +assert(re2.test("aB"), "b should match B"); +assert(!re2.test("Ab"), "\\u0061 should not match A"); + +var re3 = /(?-i:\u{0061})b/iu; +assert(re3.test("ab"), "\\u0061 should match a"); +assert(re3.test("aB"), "b should match B"); +assert(!re3.test("Ab"), "\\u0061 should not match A"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-b.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-b.js new file mode 100644 index 00000000000..2916e5f42ec --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-b.js @@ -0,0 +1,50 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier affects matching for `\b`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:\b)/ui; +assert(!re1.test("\u017f"), "\\b should not match after \u017f"); +assert(!re1.test("\u212a"), "\\b should not match after \u212a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-p.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-p.js new file mode 100644 index 00000000000..d1e24336cc8 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-p.js @@ -0,0 +1,52 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier affects matching for `\p{}`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:\p{Lu})/ui; +assert(re1.test("A"), "\\p{Lu} should match A"); +assert(!re1.test("a"), "\\p{Lu} should not match a"); +assert(re1.test("Z"), "\\p{Lu} should match Z"); +assert(!re1.test("z"), "\\p{Lu} should not match z"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-w.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-w.js new file mode 100644 index 00000000000..7d0b52e4c6f --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-lower-w.js @@ -0,0 +1,50 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier affects matching for `\w`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:\w)/ui; +assert(!re1.test("\u017f"), "\\w should not match \u017f"); +assert(!re1.test("\u212a"), "\\w should not match \u212a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-b.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-b.js new file mode 100644 index 00000000000..ba0096de7c8 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-b.js @@ -0,0 +1,50 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier affects matching for `\B`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:Z\B)/ui; +assert(!re1.test("Z\u017f"), "\\B should not match between Z and \u017f"); +assert(!re1.test("Z\u212a"), "\\B should not match between Z and \u212a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-p.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-p.js new file mode 100644 index 00000000000..d6cf94b7553 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-p.js @@ -0,0 +1,53 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier affects matching for `\P{}`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:\P{Lu})/ui; +assert(!re1.test("A"), "\\P{Lu} should not match A"); +assert(re1.test("a"), "\\P{Lu} should match a"); +assert(!re1.test("Z"), "\\P{Lu} should not match Z"); +assert(re1.test("z"), "\\P{Lu} should match z"); +assert(re1.test("0"), "\\P{Lu} should match 0"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-w.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-w.js new file mode 100644 index 00000000000..8bf586cdc4e --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-affects-slash-upper-w.js @@ -0,0 +1,50 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier affects matching for `\W`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + + GetWordCharacters ( modifiers ) + The abstract operation GetWordCharacters takes argument modifiers (a Modifiers Record) and returns a CharSet. It performs the following steps when called: + + 1. Let wordCharacters be the mathematical set that is the union of all sixty-three characters in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_" (letters, numbers, and U+005F (LOW LINE) in the Unicode Basic Latin block) and all characters c for which c is not in that set but Canonicalize(c, modifiers) is. + 2. Return wordCharacters. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:\W)/ui; +assert(re1.test("\u017f"), "\\W should match \u017f"); +assert(re1.test("\u212a"), "\\W should match \u212a"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-dotAll-flag.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-dotAll-flag.js new file mode 100644 index 00000000000..2e125fb8eb9 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-dotAll-flag.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier in group should not affect dotAll (`s`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:.es)/i; +assert(re1.test("aes"), "s should match s in modified group"); +assert(!re1.test("aeS"), "s should not match S in modified group"); +assert(!re1.test("\nes"), ". should not match newline in modified group"); +assert(!re1.test("\neS"), ". should not match newline in modified group"); + +var re2 = /(?-i:.es)/is; +assert(re2.test("aes"), "s should match s in modified group"); +assert(!re2.test("aeS"), "s should not match S in modified group"); +assert(re2.test("\nes"), ". should match newline in modified group"); +assert(!re2.test("\neS"), "s should not match S in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-ignoreCase-property.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-ignoreCase-property.js new file mode 100644 index 00000000000..343129c1c82 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-ignoreCase-property.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier does not affect RegExp instance `ignoreCase` property. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:)/i; +assert(re1.ignoreCase, "RegExp instance ignoreCase property should still be set"); + +var re2 = new RegExp("(?-i:)", "i"); +assert(re2.ignoreCase, "RegExp instance ignoreCase property should still be set"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-multiline-flag.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-multiline-flag.js new file mode 100644 index 00000000000..4a0c920c45f --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase-does-not-affect-multiline-flag.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing ignoreCase (`i`) modifier in group should not affect multiline (`m`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:es$)/i; +assert(re1.test("es"), "s should match s in modified group"); +assert(!re1.test("eS"), "s should not match S in modified group"); +assert(!re1.test("es\nz"), "$ should not match newline in modified group"); +assert(!re1.test("eS\nz"), "s should not match S in modified group"); + +var re2 = /(?-i:es$)/im; +assert(re2.test("es"), "s should match s in modified group"); +assert(!re2.test("eS"), "s should not match S in modified group"); +assert(re2.test("es\nz"), "$ should match newline in modified group"); +assert(!re2.test("eS\nz"), "s should not match S in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase.js b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase.js new file mode 100644 index 00000000000..65f6885c77a --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-ignoreCase.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + ignoreCase (`i`) modifier can be removed via `(?i:)` or `(?i-:)`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-i:fo)o/i; +assert(!re1.test("FOO"), "Pattern should not match as modified group does not ignore case"); +assert(!re1.test("FOo"), "Pattern should not match as modified group does not ignore case"); +assert(re1.test("foo"), "Pattern should not ignore case in modified group"); +assert(re1.test("foO"), "Pattern should not ignore case in modified group"); + +var re2 = new RegExp("(?-i:fo)o", "i"); +assert(!re2.test("FOO"), "Pattern should not match as modified group does not ignore case"); +assert(!re2.test("FOo"), "Pattern should not match as modified group does not ignore case"); +assert(re2.test("foo"), "Pattern should not ignore case in modified group"); +assert(re2.test("foO"), "Pattern should not ignore case in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-dotAll-flag.js b/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-dotAll-flag.js new file mode 100644 index 00000000000..819bec3cd75 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-dotAll-flag.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing multiline (`m`) modifier in group should not affect dotAll (`s`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-m:es.$)/m; +assert(re1.test("esz"), ". should match z in modified group"); +assert(!re1.test("es\n"), ". should not match newline in modified group"); +assert(!re1.test("esz\n"), "$ should not match newline in modified group"); +assert(!re1.test("es\n\n"), "$ should not match newline in modified group"); + +var re2 = /(?-m:es.$)/ms; +assert(re2.test("esz"), ". should match z in modified group"); +assert(re2.test("es\n"), ". should match newline in modified group"); +assert(!re2.test("esz\n"), "$ should not match newline in modified group"); +assert(!re2.test("es\n\n"), "$ should not match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-ignoreCase-flag.js b/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-ignoreCase-flag.js new file mode 100644 index 00000000000..8bf46f647da --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-ignoreCase-flag.js @@ -0,0 +1,46 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing multiline (`m`) modifier in group should not affect ignoreCase (`i`) flag. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-m:es$)/m; +assert(re1.test("es"), "s should match s in modified group"); +assert(!re1.test("eS"), "s should not match S in modified group"); +assert(!re1.test("es\nz"), "$ should not match newline in modified group"); +assert(!re1.test("eS\nz"), "s should not match S in modified group"); + +var re2 = /(?-m:es$)/mi; +assert(re2.test("es"), "s should match s in modified group"); +assert(re2.test("eS"), "s should match S in modified group"); +assert(!re2.test("es\nz"), "$ should not match newline in modified group"); +assert(!re2.test("eS\nz"), "$ should not match newline in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-multiline-property.js b/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-multiline-property.js new file mode 100644 index 00000000000..69de01ef1cb --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-multiline-does-not-affect-multiline-property.js @@ -0,0 +1,40 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Removing multiline (`m`) modifier does not affect RegExp instance `multiline` property. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /(?-m:)/m; +assert(re1.multiline, "RegExp instance multiline flag should still be set"); + +var re2 = new RegExp("(?-m:)", "m"); +assert(re2.multiline, "RegExp instance multiline flag should still be set"); diff --git a/test/built-ins/RegExp/regexp-modifiers/remove-multiline.js b/test/built-ins/RegExp/regexp-modifiers/remove-multiline.js new file mode 100644 index 00000000000..1c414c252f6 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/remove-multiline.js @@ -0,0 +1,42 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + multiline (`m`) modifier can be removed via `(?-m:)`. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +var re1 = /^(?-m:es$)/m; +assert(!re1.test("\nes\ns"), "$ should not match newline in modified group"); +assert(re1.test("\nes"), "$ should match end of input in modified group"); + +var re2 = new RegExp("^(?-m:es$)", "m"); +assert(!re2.test("\nes\ns"), "$ should not match newline in modified group"); +assert(re2.test("\nes"), "$ should match end of input in modified group"); diff --git a/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-and-remove-modifiers-can-have-empty-remove-modifiers.js b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-and-remove-modifiers-can-have-empty-remove-modifiers.js new file mode 100644 index 00000000000..99fe980dee2 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-and-remove-modifiers-can-have-empty-remove-modifiers.js @@ -0,0 +1,65 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers syntax `(?ims-:)` is legal. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +/(?i-:)/; +/(?is-:)/; +/(?im-:)/; +/(?s-:)/; +/(?si-:)/; +/(?sm-:)/; +/(?m-:)/; +/(?mi-:)/; +/(?ms-:)/; +/(?ims-:)/; +/(?ism-:)/; +/(?sim-:)/; +/(?smi-:)/; +/(?mis-:)/; +/(?msi-:)/; +new RegExp("(?i-:)"); +new RegExp("(?is-:)"); +new RegExp("(?im-:)"); +new RegExp("(?s-:)"); +new RegExp("(?si-:)"); +new RegExp("(?sm-:)"); +new RegExp("(?m-:)"); +new RegExp("(?mi-:)"); +new RegExp("(?ms-:)"); +new RegExp("(?ims-:)"); +new RegExp("(?ism-:)"); +new RegExp("(?sim-:)"); +new RegExp("(?smi-:)"); +new RegExp("(?mis-:)"); +new RegExp("(?msi-:)"); diff --git a/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-and-remove-modifiers.js b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-and-remove-modifiers.js new file mode 100644 index 00000000000..0975ddbccd7 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-and-remove-modifiers.js @@ -0,0 +1,71 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers syntax `(?im-s:)` (and similar) is legal, as long as they do not overlap. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +/(?i-s:)/; +/(?i-sm:)/; +/(?i-m:)/; +/(?i-ms:)/; +/(?s-i:)/; +/(?s-im:)/; +/(?s-m:)/; +/(?s-mi:)/; +/(?m-i:)/; +/(?m-is:)/; +/(?m-s:)/; +/(?m-si:)/; +/(?is-m:)/; +/(?im-s:)/; +/(?si-m:)/; +/(?sm-i:)/; +/(?mi-s:)/; +/(?ms-i:)/; +new RegExp("(?i-s:)"); +new RegExp("(?i-sm:)"); +new RegExp("(?i-m:)"); +new RegExp("(?i-ms:)"); +new RegExp("(?s-i:)"); +new RegExp("(?s-im:)"); +new RegExp("(?s-m:)"); +new RegExp("(?s-mi:)"); +new RegExp("(?m-i:)"); +new RegExp("(?m-is:)"); +new RegExp("(?m-s:)"); +new RegExp("(?m-si:)"); +new RegExp("(?is-m:)"); +new RegExp("(?im-s:)"); +new RegExp("(?si-m:)"); +new RegExp("(?sm-i:)"); +new RegExp("(?mi-s:)"); +new RegExp("(?ms-i:)"); diff --git a/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-nested.js b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-nested.js new file mode 100644 index 00000000000..4dc2dcc8640 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-nested.js @@ -0,0 +1,41 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers syntax `(?ims:)` is legal, even when modifiers are already set via an outer non-capturing group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +/(?i:(?i:))/; +/(?s:(?s:))/; +/(?m:(?m:))/; +new RegExp("(?i:(?i:))"); +new RegExp("(?s:(?s:))"); +new RegExp("(?m:(?m:))"); diff --git a/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-not-set-as-flags.js b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-not-set-as-flags.js new file mode 100644 index 00000000000..2e15e6abc48 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-not-set-as-flags.js @@ -0,0 +1,65 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers syntax `(?ims:)` is legal. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +/(?i:)/; +/(?is:)/; +/(?im:)/; +/(?s:)/; +/(?si:)/; +/(?sm:)/; +/(?m:)/; +/(?mi:)/; +/(?ms:)/; +/(?ims:)/; +/(?ism:)/; +/(?sim:)/; +/(?smi:)/; +/(?mis:)/; +/(?msi:)/; +new RegExp("(?i:)"); +new RegExp("(?is:)"); +new RegExp("(?im:)"); +new RegExp("(?s:)"); +new RegExp("(?si:)"); +new RegExp("(?sm:)"); +new RegExp("(?m:)"); +new RegExp("(?mi:)"); +new RegExp("(?ms:)"); +new RegExp("(?ims:)"); +new RegExp("(?ism:)"); +new RegExp("(?sim:)"); +new RegExp("(?smi:)"); +new RegExp("(?mis:)"); +new RegExp("(?msi:)"); diff --git a/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-set-as-flags.js b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-set-as-flags.js new file mode 100644 index 00000000000..b0a79827d97 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/add-modifiers-when-set-as-flags.js @@ -0,0 +1,43 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers syntax `(?ims:)` is legal, even when modifiers are already set via flags. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by RegularExpressionFlags. + 2. Let removeModifiers be the empty String. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), removeModifiers). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +/(?i:)/i; +/(?s:)/s; +/(?m:)/m; +/(?ims:)/ims; +new RegExp("(?i:)", "i"); +new RegExp("(?s:)", "s"); +new RegExp("(?m:)", "m"); +new RegExp("(?ims:)", "ims"); diff --git a/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-nested.js b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-nested.js new file mode 100644 index 00000000000..c95bb09fe35 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-nested.js @@ -0,0 +1,41 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers syntax `(?-ims:)` is legal, even when modifiers are already cleared via an outer non-capturing group. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +/(?-i:(?-i:))/; +/(?-s:(?-s:))/; +/(?-m:(?-m:))/; +new RegExp("(?-i:(?-i:))"); +new RegExp("(?-s:(?-s:))"); +new RegExp("(?-m:(?-m:))"); diff --git a/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-not-set-as-flags.js b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-not-set-as-flags.js new file mode 100644 index 00000000000..6610703ce92 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-not-set-as-flags.js @@ -0,0 +1,65 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers syntax `(?-ims:)` is legal, even when not set as flags. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +/(?-i:)/; +/(?-is:)/; +/(?-im:)/; +/(?-s:)/; +/(?-si:)/; +/(?-sm:)/; +/(?-m:)/; +/(?-mi:)/; +/(?-ms:)/; +/(?-ims:)/; +/(?-ism:)/; +/(?-smi:)/; +/(?-sim:)/; +/(?-mis:)/; +/(?-msi:)/; +new RegExp("(?-i:)"); +new RegExp("(?-is:)"); +new RegExp("(?-im:)"); +new RegExp("(?-s:)"); +new RegExp("(?-si:)"); +new RegExp("(?-sm:)"); +new RegExp("(?-m:)"); +new RegExp("(?-mi:)"); +new RegExp("(?-ms:)"); +new RegExp("(?-ims:)"); +new RegExp("(?-ism:)"); +new RegExp("(?-smi:)"); +new RegExp("(?-sim:)"); +new RegExp("(?-mis:)"); +new RegExp("(?-msi:)"); diff --git a/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-set-as-flags.js b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-set-as-flags.js new file mode 100644 index 00000000000..0f968f01bd0 --- /dev/null +++ b/test/built-ins/RegExp/regexp-modifiers/syntax/valid/remove-modifiers-when-set-as-flags.js @@ -0,0 +1,65 @@ +// Copyright 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Ron Buckton +description: > + Modifiers syntax `(?-ims:)` is legal. +info: | + Runtime Semantics: CompileAtom + The syntax-directed operation CompileAtom takes arguments direction (forward or backward) and modifiers (a Modifiers Record) and returns a Matcher. + + Atom :: `(` `?` RegularExpressionFlags `-` RegularExpressionFlags `:` Disjunction `)` + 1. Let addModifiers be the source text matched by the first RegularExpressionFlags. + 2. Let removeModifiers be the source text matched by the second RegularExpressionFlags. + 3. Let newModifiers be UpdateModifiers(modifiers, CodePointsToString(addModifiers), CodePointsToString(removeModifiers)). + 4. Return CompileSubpattern of Disjunction with arguments direction and newModifiers. + + UpdateModifiers ( modifiers, add, remove ) + The abstract operation UpdateModifiers takes arguments modifiers (a Modifiers Record), add (a String), and remove (a String) and returns a Modifiers. It performs the following steps when called: + + 1. Let dotAll be modifiers.[[DotAll]]. + 2. Let ignoreCase be modifiers.[[IgnoreCase]]. + 3. Let multiline be modifiers.[[Multiline]]. + 4. If add contains "s", set dotAll to true. + 5. If add contains "i", set ignoreCase to true. + 6. If add contains "m", set multiline to true. + 7. If remove contains "s", set dotAll to false. + 8. If remove contains "i", set ignoreCase to false. + 9. If remove contains "m", set multiline to false. + 10. Return the Modifiers Record { [[DotAll]]: dotAll, [[IgnoreCase]]: ignoreCase, [[Multiline]]: multiline }. + +esid: sec-compileatom +features: [regexp-modifiers] +---*/ + +/(?-i:)/i; +/(?-is:)/is; +/(?-im:)/im; +/(?-s:)/s; +/(?-si:)/si; +/(?-sm:)/sm; +/(?-m:)/m; +/(?-mi:)/mi; +/(?-ms:)/ms; +/(?-ims:)/ims; +/(?-ism:)/ism; +/(?-sim:)/sim; +/(?-smi:)/smi; +/(?-mis:)/mis; +/(?-msi:)/msi; +new RegExp("(?-i:)", "i"); +new RegExp("(?-is:)", "is"); +new RegExp("(?-im:)", "im"); +new RegExp("(?-s:)", "s"); +new RegExp("(?-si:)", "si"); +new RegExp("(?-sm:)", "sm"); +new RegExp("(?-m:)", "m"); +new RegExp("(?-mi:)", "mi"); +new RegExp("(?-ms:)", "ms"); +new RegExp("(?-ims:)", "ims"); +new RegExp("(?-ism:)", "ism"); +new RegExp("(?-sim:)", "sim"); +new RegExp("(?-smi:)", "smi"); +new RegExp("(?-mis:)", "mis"); +new RegExp("(?-msi:)", "msi"); From 263ed65292870251b0fad54bccad507b1aa96e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Thu, 9 Nov 2023 13:44:05 +0100 Subject: [PATCH 06/59] Remove locales with explicit u-hc Unicode extension The tests are passing an explicit `hour12` option, which disables any `hourCycle` option and any `u-hc` Unicode extension. Therefore passing input locales with `u-hc` is invalid. ```js let locale = "en-u-hc-h24"; let hcDefault = new Intl.DateTimeFormat(locale, { hour: "numeric" }).resolvedOptions().hourCycle; assert.sameValue(hcDefault, "h24", "hour-cycle through Unicode extension"); let hc24 = new Intl.DateTimeFormat(locale, { hour: "numeric", hour12: false }).resolvedOptions().hourCycle; // Incorrect assertion, because |hc24| uses |hour12|, which disables any // hour-cycle option and the hour-cycle is determined from the locale "en". // That means |hc24| will be "h23". assert.sameValue(hc24, hcDefault); ``` --- .../resolvedOptions/hourCycle-default.js | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-default.js b/test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-default.js index 2d8a38e7042..3262be5ea97 100644 --- a/test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-default.js +++ b/test/intl402/DateTimeFormat/prototype/resolvedOptions/hourCycle-default.js @@ -21,25 +21,33 @@ info: | c. If hc is null, set hc to dataLocaleData.[[hourCycle]]. 27. Set dateTimeFormat.[[HourCycle]] to hc. -locale: [en, fr, it, ja, zh, ko, ar, hi, en-u-hc-h24] +locale: [en, fr, it, ja, zh, ko, ar, hi] ---*/ -let locales = ["en", "fr", "it", "ja", "ja-u-hc-h11", "zh", "ko", "ar", "hi", "en-u-hc-h24"]; +let locales = ["en", "fr", "it", "ja", "zh", "ko", "ar", "hi"]; -locales.forEach(function(locale) { - let hcDefault = new Intl.DateTimeFormat(locale, { hour: "numeric" }).resolvedOptions().hourCycle; - if (hcDefault === "h11" || hcDefault === "h12") { - assert.sameValue(new Intl.DateTimeFormat(locale, { hour: "numeric", hour12: true }).resolvedOptions().hourCycle, hcDefault); +for (let locale of locales) { + let hcDefault = new Intl.DateTimeFormat(locale, {hour: "numeric"}).resolvedOptions().hourCycle; + assert( + hcDefault === "h11" || hcDefault === "h12" || hcDefault === "h23" || hcDefault === "h24", + "hcDefault is one of [h11, h12, h23, h24]" + ); - // no locale has "h24" as a default. see https://github.com/tc39/ecma402/pull/758#issue-1622377292 - assert.sameValue(new Intl.DateTimeFormat(locale, { hour: "numeric", hour12: false }).resolvedOptions().hourCycle, "h23"); - } + let hour12 = new Intl.DateTimeFormat(locale, {hour: "numeric", hour12: true}).resolvedOptions().hourCycle; + assert(hour12 === "h11" || hour12 === "h12", "hour12 is one of [h11, h12]"); + + let hour24 = new Intl.DateTimeFormat(locale, {hour: "numeric", hour12: false}).resolvedOptions().hourCycle; + assert(hour24 === "h23" || hour24 === "h24", "hour24 is one of [h23, h24]"); - // however, "h24" can be set via locale extension. - if (hcDefault === "h23" || hcDefault === "h24") { - assert.sameValue(new Intl.DateTimeFormat(locale, { hour: "numeric", hour12: false }).resolvedOptions().hourCycle, hcDefault); + if (hcDefault === "h11" || hcDefault === "h12") { + assert.sameValue(hour12, hcDefault, "hour12 matches hcDefault"); + } else { + assert.sameValue(hour24, hcDefault, "hour24 matches hcDefault"); } - let hcHour12 = new Intl.DateTimeFormat(locale, { hour: "numeric", hour12: true }).resolvedOptions().hourCycle; - assert(hcHour12 === "h11" || hcHour12 === "h12", "Expected `hourCycle`: " + hcHour12 + " to be in [\"h11\", \"h12\"]"); -}); + // 24-hour clock uses the "h23" format in all locales. + assert.sameValue(hour24, "h23"); + + // 12-hour clock uses the "h12" format in all locales except "ja". + assert.sameValue(hour12, locale === "ja" ? "h11" : "h12"); +} From af3890a10a41904de7f57900f36af910a21a8686 Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Tue, 12 Mar 2024 16:19:26 -0700 Subject: [PATCH 07/59] update to reflect numeric minutes handling after https://github.com/tc39/proposal-intl-duration-format/pull/180 --- ...r-with-zero-minutes-and-non-zero-seconds.js | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/test/intl402/DurationFormat/prototype/format/numeric-hour-with-zero-minutes-and-non-zero-seconds.js b/test/intl402/DurationFormat/prototype/format/numeric-hour-with-zero-minutes-and-non-zero-seconds.js index 81546854eb0..5280e485225 100644 --- a/test/intl402/DurationFormat/prototype/format/numeric-hour-with-zero-minutes-and-non-zero-seconds.js +++ b/test/intl402/DurationFormat/prototype/format/numeric-hour-with-zero-minutes-and-non-zero-seconds.js @@ -4,7 +4,7 @@ /*--- esid: sec-Intl.DurationFormat.prototype.format description: > - The correct separator is used for numeric hours with zero minutes and non-zero seconds. + Minutes with numeric or 2-digit style are included in the output when between displayed hours and seconds, even when the minutes value is zero. locale: [en-US] features: [Intl.DurationFormat] ---*/ @@ -14,28 +14,16 @@ const df = new Intl.DurationFormat("en", { hours: "numeric", }); -const lf = new Intl.ListFormat("en", { - type: "unit", - style: "short", -}); - const duration = { hours: 1, - - // Minutes is omitted from the output when its value is zero. minutes: 0, - - // Either seconds or sub-seconds must be non-zero. seconds: 3, }; -const expected = lf.format([ - new Intl.NumberFormat("en", {minimumIntegerDigits: 1}).format(duration.hours), - new Intl.NumberFormat("en", {minimumIntegerDigits: 2}).format(duration.seconds), -]); +const expected = "1:00:03" assert.sameValue( df.format(duration), expected, - `No time separator is used when minutes is zero` + `Minutes always displayed when between displayed hours and seconds, even if minutes is 0` ); From 0b1abd5ee70867311bea78e851bd609ad842011a Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Fri, 15 Mar 2024 01:35:47 -0700 Subject: [PATCH 08/59] Two tests previously assumed 'en' as locale for DurationFormat, assumption now made explicit (#4019) --- ...gits.js => style-digital-fractionalDigits-en.js} | 13 +++++++------ ... style-digital-fractionalDigits-undefined-en.js} | 3 ++- 2 files changed, 9 insertions(+), 7 deletions(-) rename test/intl402/DurationFormat/prototype/format/{style-digital-fractionalDigits.js => style-digital-fractionalDigits-en.js} (79%) rename test/intl402/DurationFormat/prototype/format/{style-digital-fractionalDigits-undefined.js => style-digital-fractionalDigits-undefined-en.js} (96%) diff --git a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits.js b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-en.js similarity index 79% rename from test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits.js rename to test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-en.js index ae54bdf172b..775883f2419 100644 --- a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits.js +++ b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-en.js @@ -13,6 +13,7 @@ info: | 5. Else, a. Perform ! CreateDataPropertyOrThrow(nfOpts, "maximumFractionDigits", durationFormat.[[FractionalDigits]]). b. Perform ! CreateDataPropertyOrThrow(nfOpts, "minimumFractionDigits", durationFormat.[[FractionalDigits]]). +locale: [en-US] features: [Intl.DurationFormat] ---*/ @@ -27,12 +28,12 @@ const duration = { const style = "digital"; -const df = new Intl.DurationFormat(undefined, {style, fractionalDigits: 0}); -const dfMilli = new Intl.DurationFormat(undefined, {style, fractionalDigits: 3}); -const dfFourDigits = new Intl.DurationFormat(undefined, {style, fractionalDigits: 4}); -const dfMicro = new Intl.DurationFormat(undefined, {style, fractionalDigits: 6}); -const dfEightDigits = new Intl.DurationFormat(undefined, {style, fractionalDigits: 8}); -const dfNano = new Intl.DurationFormat(undefined, {style, fractionalDigits: 9}); +const df = new Intl.DurationFormat("en", {style, fractionalDigits: 0}); +const dfMilli = new Intl.DurationFormat("en", {style, fractionalDigits: 3}); +const dfFourDigits = new Intl.DurationFormat("en", {style, fractionalDigits: 4}); +const dfMicro = new Intl.DurationFormat("en", {style, fractionalDigits: 6}); +const dfEightDigits = new Intl.DurationFormat("en", {style, fractionalDigits: 8}); +const dfNano = new Intl.DurationFormat("en", {style, fractionalDigits: 9}); assert.sameValue(df.format(duration), "1:22:33", `format output without sub-second digits using ${style} style option`); diff --git a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined.js b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js similarity index 96% rename from test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined.js rename to test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js index 26e449586e1..78afb358ec8 100644 --- a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined.js +++ b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js @@ -13,6 +13,7 @@ info: | 5. Else, a. Perform ! CreateDataPropertyOrThrow(nfOpts, "maximumFractionDigits", durationFormat.[[FractionalDigits]]). b. Perform ! CreateDataPropertyOrThrow(nfOpts, "minimumFractionDigits", durationFormat.[[FractionalDigits]]). +locale: [en-US] features: [Intl.DurationFormat] ---*/ @@ -57,7 +58,7 @@ const durationSevenFractional = { }; const style = "digital"; -const df = new Intl.DurationFormat(undefined, {style, fractionalDigits: undefined}); +const df = new Intl.DurationFormat("en", {style, fractionalDigits: undefined}); assert.sameValue(df.format(durationNano), "1:22:33.111222333", `format output with nanosecond digits and fractionalDigits: undefined using ${style} style option`); assert.sameValue(df.format(durationMicro), "1:22:33.111222", `format output with microsecond digits and fractionalDigits: undefined using ${style} style option`); From 5424d7e8346efb7055153f93ec43059f744a5ea8 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Fri, 22 Mar 2024 17:48:56 -0700 Subject: [PATCH 09/59] rewrite tests to use verifyProperty --- test/built-ins/Array/Symbol.species/length.js | 11 ++++++----- .../Array/Symbol.species/symbol-species-name.js | 14 ++++++-------- test/built-ins/Array/from/Array.from-name.js | 15 ++++++--------- test/built-ins/Array/from/Array.from_arity.js | 11 ++++++----- test/built-ins/Array/isArray/name.js | 11 ++++++----- test/built-ins/Array/length.js | 11 ++++++----- test/built-ins/Array/name.js | 11 ++++++----- test/built-ins/Array/of/length.js | 14 ++++++-------- test/built-ins/Array/of/name.js | 14 ++++++-------- test/built-ins/Array/prototype/at/length.js | 14 ++++++-------- test/built-ins/Array/prototype/concat/length.js | 11 ++++++----- test/built-ins/Array/prototype/concat/name.js | 15 ++++++--------- .../Array/prototype/copyWithin/length.js | 14 ++++++-------- test/built-ins/Array/prototype/copyWithin/name.js | 14 ++++++-------- test/built-ins/Array/prototype/entries/length.js | 14 ++++++-------- test/built-ins/Array/prototype/entries/name.js | 14 ++++++-------- test/built-ins/Array/prototype/every/length.js | 14 ++++++-------- test/built-ins/Array/prototype/every/name.js | 11 ++++++----- test/built-ins/Array/prototype/fill/length.js | 14 ++++++-------- test/built-ins/Array/prototype/fill/name.js | 14 ++++++-------- test/built-ins/Array/prototype/filter/length.js | 11 ++++++----- test/built-ins/Array/prototype/filter/name.js | 11 ++++++----- test/built-ins/Array/prototype/find/length.js | 14 ++++++-------- test/built-ins/Array/prototype/find/name.js | 14 ++++++-------- .../built-ins/Array/prototype/findIndex/length.js | 14 ++++++-------- test/built-ins/Array/prototype/findIndex/name.js | 14 ++++++-------- test/built-ins/Array/prototype/forEach/length.js | 11 ++++++----- test/built-ins/Array/prototype/forEach/name.js | 11 ++++++----- test/built-ins/Array/prototype/includes/length.js | 11 ++++++----- test/built-ins/Array/prototype/includes/name.js | 11 ++++++----- test/built-ins/Array/prototype/indexOf/length.js | 11 ++++++----- test/built-ins/Array/prototype/indexOf/name.js | 11 ++++++----- test/built-ins/Array/prototype/join/length.js | 11 ++++++----- test/built-ins/Array/prototype/join/name.js | 11 ++++++----- test/built-ins/Array/prototype/keys/length.js | 14 ++++++-------- test/built-ins/Array/prototype/keys/name.js | 14 ++++++-------- .../Array/prototype/lastIndexOf/length.js | 11 ++++++----- .../built-ins/Array/prototype/lastIndexOf/name.js | 11 ++++++----- test/built-ins/Array/prototype/map/length.js | 11 ++++++----- test/built-ins/Array/prototype/map/name.js | 11 ++++++----- test/built-ins/Array/prototype/pop/length.js | 11 ++++++----- test/built-ins/Array/prototype/pop/name.js | 11 ++++++----- test/built-ins/Array/prototype/push/length.js | 11 ++++++----- test/built-ins/Array/prototype/push/name.js | 11 ++++++----- test/built-ins/Array/prototype/reduce/length.js | 11 ++++++----- test/built-ins/Array/prototype/reduce/name.js | 11 ++++++----- .../Array/prototype/reduceRight/length.js | 11 ++++++----- .../built-ins/Array/prototype/reduceRight/name.js | 11 ++++++----- test/built-ins/Array/prototype/reverse/length.js | 11 ++++++----- test/built-ins/Array/prototype/reverse/name.js | 11 ++++++----- test/built-ins/Array/prototype/shift/length.js | 11 ++++++----- test/built-ins/Array/prototype/shift/name.js | 11 ++++++----- test/built-ins/Array/prototype/slice/length.js | 11 ++++++----- test/built-ins/Array/prototype/slice/name.js | 11 ++++++----- test/built-ins/Array/prototype/some/length.js | 11 ++++++----- test/built-ins/Array/prototype/some/name.js | 11 ++++++----- test/built-ins/Array/prototype/sort/length.js | 11 ++++++----- test/built-ins/Array/prototype/sort/name.js | 11 ++++++----- test/built-ins/Array/prototype/splice/length.js | 11 ++++++----- test/built-ins/Array/prototype/splice/name.js | 11 ++++++----- .../Array/prototype/toLocaleString/length.js | 11 ++++++----- .../Array/prototype/toLocaleString/name.js | 11 ++++++----- test/built-ins/Array/prototype/toString/length.js | 11 ++++++----- test/built-ins/Array/prototype/toString/name.js | 11 ++++++----- test/built-ins/Array/prototype/unshift/length.js | 11 ++++++----- test/built-ins/Array/prototype/unshift/name.js | 11 ++++++----- test/built-ins/Array/prototype/values/length.js | 11 ++++++----- test/built-ins/Array/prototype/values/name.js | 11 ++++++----- .../ArrayBuffer/Symbol.species/length.js | 11 ++++++----- .../Symbol.species/symbol-species-name.js | 14 ++++++-------- test/built-ins/ArrayBuffer/isView/length.js | 11 ++++++----- test/built-ins/ArrayBuffer/isView/name.js | 11 ++++++----- .../ArrayBuffer/prototype/byteLength/length.js | 11 ++++++----- .../ArrayBuffer/prototype/byteLength/name.js | 14 ++++++-------- .../ArrayBuffer/prototype/slice/length.js | 11 ++++++----- .../built-ins/ArrayBuffer/prototype/slice/name.js | 11 ++++++----- .../ArrayIteratorPrototype/next/length.js | 11 ++++++----- .../built-ins/ArrayIteratorPrototype/next/name.js | 11 ++++++----- .../AsyncFunction/AsyncFunction-length.js | 10 ++++++---- .../built-ins/AsyncFunction/AsyncFunction-name.js | 10 ++++++---- test/built-ins/AsyncFunction/instance-has-name.js | 10 ++++++---- .../Boolean/prototype/toString/length.js | 11 ++++++----- test/built-ins/Boolean/prototype/toString/name.js | 11 ++++++----- .../built-ins/Boolean/prototype/valueOf/length.js | 11 ++++++----- test/built-ins/Boolean/prototype/valueOf/name.js | 11 ++++++----- test/built-ins/DataView/name.js | 11 ++++++----- .../built-ins/DataView/prototype/buffer/length.js | 11 ++++++----- test/built-ins/DataView/prototype/buffer/name.js | 14 ++++++-------- .../DataView/prototype/byteLength/length.js | 11 ++++++----- .../DataView/prototype/byteLength/name.js | 14 ++++++-------- .../DataView/prototype/byteOffset/length.js | 11 ++++++----- .../DataView/prototype/byteOffset/name.js | 14 ++++++-------- .../DataView/prototype/getFloat32/length.js | 11 ++++++----- .../DataView/prototype/getFloat32/name.js | 11 ++++++----- .../DataView/prototype/getFloat64/length.js | 11 ++++++----- .../DataView/prototype/getFloat64/name.js | 11 ++++++----- .../DataView/prototype/getInt16/length.js | 11 ++++++----- .../built-ins/DataView/prototype/getInt16/name.js | 11 ++++++----- .../DataView/prototype/getInt32/length.js | 11 ++++++----- .../built-ins/DataView/prototype/getInt32/name.js | 11 ++++++----- .../DataView/prototype/getInt8/length.js | 11 ++++++----- test/built-ins/DataView/prototype/getInt8/name.js | 11 ++++++----- .../DataView/prototype/getUint16/length.js | 11 ++++++----- .../DataView/prototype/getUint16/name.js | 11 ++++++----- .../DataView/prototype/getUint32/length.js | 11 ++++++----- .../DataView/prototype/getUint32/name.js | 11 ++++++----- .../DataView/prototype/getUint8/length.js | 11 ++++++----- .../built-ins/DataView/prototype/getUint8/name.js | 11 ++++++----- .../DataView/prototype/setFloat32/length.js | 11 ++++++----- .../DataView/prototype/setFloat32/name.js | 11 ++++++----- .../DataView/prototype/setFloat64/length.js | 11 ++++++----- .../DataView/prototype/setFloat64/name.js | 11 ++++++----- .../DataView/prototype/setInt16/length.js | 11 ++++++----- .../built-ins/DataView/prototype/setInt16/name.js | 11 ++++++----- .../DataView/prototype/setInt32/length.js | 11 ++++++----- .../built-ins/DataView/prototype/setInt32/name.js | 11 ++++++----- .../DataView/prototype/setInt8/length.js | 11 ++++++----- test/built-ins/DataView/prototype/setInt8/name.js | 11 ++++++----- .../DataView/prototype/setUint16/length.js | 11 ++++++----- .../DataView/prototype/setUint16/name.js | 11 ++++++----- .../DataView/prototype/setUint32/length.js | 11 ++++++----- .../DataView/prototype/setUint32/name.js | 11 ++++++----- .../DataView/prototype/setUint8/length.js | 11 ++++++----- .../built-ins/DataView/prototype/setUint8/name.js | 11 ++++++----- test/built-ins/Date/UTC/name.js | 11 ++++++----- test/built-ins/Date/name.js | 11 ++++++----- test/built-ins/Date/now/name.js | 11 ++++++----- test/built-ins/Date/parse/name.js | 11 ++++++----- .../Date/prototype/Symbol.toPrimitive/length.js | 11 ++++++----- .../Date/prototype/Symbol.toPrimitive/name.js | 13 ++++++------- test/built-ins/Date/prototype/getDate/name.js | 11 ++++++----- test/built-ins/Date/prototype/getDay/name.js | 11 ++++++----- test/built-ins/Date/prototype/getFullYear/name.js | 11 ++++++----- test/built-ins/Date/prototype/getHours/name.js | 11 ++++++----- .../Date/prototype/getMilliseconds/name.js | 11 ++++++----- test/built-ins/Date/prototype/getMinutes/name.js | 11 ++++++----- test/built-ins/Date/prototype/getMonth/name.js | 11 ++++++----- test/built-ins/Date/prototype/getSeconds/name.js | 11 ++++++----- test/built-ins/Date/prototype/getTime/name.js | 11 ++++++----- .../Date/prototype/getTimezoneOffset/name.js | 11 ++++++----- test/built-ins/Date/prototype/getUTCDate/name.js | 11 ++++++----- test/built-ins/Date/prototype/getUTCDay/name.js | 11 ++++++----- .../Date/prototype/getUTCFullYear/name.js | 11 ++++++----- test/built-ins/Date/prototype/getUTCHours/name.js | 11 ++++++----- .../Date/prototype/getUTCMilliseconds/name.js | 11 ++++++----- .../Date/prototype/getUTCMinutes/name.js | 11 ++++++----- test/built-ins/Date/prototype/getUTCMonth/name.js | 11 ++++++----- .../Date/prototype/getUTCSeconds/name.js | 11 ++++++----- test/built-ins/Date/prototype/setDate/name.js | 11 ++++++----- test/built-ins/Date/prototype/setFullYear/name.js | 11 ++++++----- test/built-ins/Date/prototype/setHours/name.js | 11 ++++++----- .../Date/prototype/setMilliseconds/name.js | 11 ++++++----- test/built-ins/Date/prototype/setMinutes/name.js | 11 ++++++----- test/built-ins/Date/prototype/setMonth/name.js | 11 ++++++----- test/built-ins/Date/prototype/setSeconds/name.js | 11 ++++++----- test/built-ins/Date/prototype/setTime/name.js | 11 ++++++----- test/built-ins/Date/prototype/setUTCDate/name.js | 11 ++++++----- .../Date/prototype/setUTCFullYear/name.js | 11 ++++++----- test/built-ins/Date/prototype/setUTCHours/name.js | 11 ++++++----- .../Date/prototype/setUTCMilliseconds/name.js | 11 ++++++----- .../Date/prototype/setUTCMinutes/name.js | 11 ++++++----- test/built-ins/Date/prototype/setUTCMonth/name.js | 11 ++++++----- .../Date/prototype/setUTCSeconds/name.js | 11 ++++++----- .../built-ins/Date/prototype/toDateString/name.js | 11 ++++++----- test/built-ins/Date/prototype/toISOString/name.js | 11 ++++++----- .../Date/prototype/toLocaleDateString/name.js | 11 ++++++----- .../Date/prototype/toLocaleString/name.js | 11 ++++++----- .../Date/prototype/toLocaleTimeString/name.js | 11 ++++++----- test/built-ins/Date/prototype/toString/name.js | 11 ++++++----- .../built-ins/Date/prototype/toTimeString/name.js | 11 ++++++----- test/built-ins/Date/prototype/toUTCString/name.js | 11 ++++++----- test/built-ins/Date/prototype/valueOf/name.js | 11 ++++++----- test/built-ins/Error/prototype/toString/length.js | 11 ++++++----- test/built-ins/Error/prototype/toString/name.js | 11 ++++++----- .../prototype/Symbol.hasInstance/length.js | 11 ++++++----- .../Function/prototype/Symbol.hasInstance/name.js | 13 ++++++------- test/built-ins/Function/prototype/apply/name.js | 11 ++++++----- test/built-ins/Function/prototype/bind/name.js | 11 ++++++----- test/built-ins/Function/prototype/call/name.js | 11 ++++++----- test/built-ins/Function/prototype/name.js | 10 ++++++---- .../built-ins/Function/prototype/toString/name.js | 11 ++++++----- test/built-ins/GeneratorFunction/length.js | 11 ++++++----- test/built-ins/GeneratorFunction/name.js | 11 ++++++----- test/built-ins/GeneratorPrototype/next/length.js | 11 ++++++----- test/built-ins/GeneratorPrototype/next/name.js | 11 ++++++----- .../built-ins/GeneratorPrototype/return/length.js | 11 ++++++----- test/built-ins/GeneratorPrototype/return/name.js | 11 ++++++----- test/built-ins/GeneratorPrototype/throw/length.js | 11 ++++++----- test/built-ins/GeneratorPrototype/throw/name.js | 11 ++++++----- test/built-ins/Map/Symbol.species/length.js | 11 ++++++----- test/built-ins/Map/length.js | 11 ++++++----- test/built-ins/Map/name.js | 11 ++++++----- test/built-ins/Map/prototype/clear/length.js | 14 ++++++-------- test/built-ins/Map/prototype/clear/name.js | 14 ++++++-------- test/built-ins/Map/prototype/delete/length.js | 14 ++++++-------- test/built-ins/Map/prototype/delete/name.js | 14 ++++++-------- test/built-ins/Map/prototype/entries/length.js | 14 ++++++-------- test/built-ins/Map/prototype/entries/name.js | 14 ++++++-------- test/built-ins/Map/prototype/forEach/length.js | 14 ++++++-------- test/built-ins/Map/prototype/forEach/name.js | 14 ++++++-------- test/built-ins/Map/prototype/get/length.js | 14 ++++++-------- test/built-ins/Map/prototype/get/name.js | 14 ++++++-------- test/built-ins/Map/prototype/has/length.js | 14 ++++++-------- test/built-ins/Map/prototype/has/name.js | 14 ++++++-------- test/built-ins/Map/prototype/keys/length.js | 14 ++++++-------- test/built-ins/Map/prototype/keys/name.js | 14 ++++++-------- test/built-ins/Map/prototype/set/length.js | 14 ++++++-------- test/built-ins/Map/prototype/set/name.js | 14 ++++++-------- test/built-ins/Map/prototype/size/length.js | 14 ++++++-------- test/built-ins/Map/prototype/size/name.js | 14 ++++++-------- test/built-ins/Map/prototype/values/length.js | 14 ++++++-------- test/built-ins/Map/prototype/values/name.js | 14 ++++++-------- .../built-ins/MapIteratorPrototype/next/length.js | 11 ++++++----- test/built-ins/MapIteratorPrototype/next/name.js | 11 ++++++----- test/built-ins/Math/abs/length.js | 11 ++++++----- test/built-ins/Math/abs/name.js | 11 ++++++----- test/built-ins/Math/acos/length.js | 11 ++++++----- test/built-ins/Math/acos/name.js | 11 ++++++----- test/built-ins/Math/acosh/length.js | 11 ++++++----- test/built-ins/Math/acosh/name.js | 11 ++++++----- test/built-ins/Math/asin/length.js | 11 ++++++----- test/built-ins/Math/asin/name.js | 11 ++++++----- test/built-ins/Math/asinh/length.js | 11 ++++++----- test/built-ins/Math/asinh/name.js | 11 ++++++----- test/built-ins/Math/atan/length.js | 11 ++++++----- test/built-ins/Math/atan/name.js | 11 ++++++----- test/built-ins/Math/atan2/length.js | 11 ++++++----- test/built-ins/Math/atan2/name.js | 11 ++++++----- test/built-ins/Math/atanh/length.js | 11 ++++++----- test/built-ins/Math/atanh/name.js | 11 ++++++----- test/built-ins/Math/cbrt/length.js | 11 ++++++----- test/built-ins/Math/cbrt/name.js | 11 ++++++----- test/built-ins/Math/ceil/length.js | 11 ++++++----- test/built-ins/Math/ceil/name.js | 11 ++++++----- test/built-ins/Math/clz32/length.js | 11 ++++++----- test/built-ins/Math/clz32/name.js | 11 ++++++----- test/built-ins/Math/cos/length.js | 11 ++++++----- test/built-ins/Math/cos/name.js | 11 ++++++----- test/built-ins/Math/cosh/length.js | 11 ++++++----- test/built-ins/Math/cosh/name.js | 11 ++++++----- test/built-ins/Math/exp/length.js | 11 ++++++----- test/built-ins/Math/exp/name.js | 11 ++++++----- test/built-ins/Math/expm1/length.js | 11 ++++++----- test/built-ins/Math/expm1/name.js | 11 ++++++----- test/built-ins/Math/floor/length.js | 11 ++++++----- test/built-ins/Math/floor/name.js | 11 ++++++----- test/built-ins/Math/fround/length.js | 11 ++++++----- test/built-ins/Math/fround/name.js | 11 ++++++----- test/built-ins/Math/hypot/length.js | 11 ++++++----- test/built-ins/Math/hypot/name.js | 11 ++++++----- test/built-ins/Math/imul/length.js | 11 ++++++----- test/built-ins/Math/imul/name.js | 11 ++++++----- test/built-ins/Math/log/length.js | 11 ++++++----- test/built-ins/Math/log/name.js | 11 ++++++----- test/built-ins/Math/log10/length.js | 11 ++++++----- test/built-ins/Math/log10/name.js | 11 ++++++----- test/built-ins/Math/log1p/length.js | 11 ++++++----- test/built-ins/Math/log1p/name.js | 11 ++++++----- test/built-ins/Math/log2/length.js | 11 ++++++----- test/built-ins/Math/log2/name.js | 11 ++++++----- test/built-ins/Math/max/length.js | 11 ++++++----- test/built-ins/Math/max/name.js | 11 ++++++----- test/built-ins/Math/min/length.js | 11 ++++++----- test/built-ins/Math/min/name.js | 11 ++++++----- test/built-ins/Math/pow/length.js | 11 ++++++----- test/built-ins/Math/pow/name.js | 11 ++++++----- test/built-ins/Math/random/length.js | 11 ++++++----- test/built-ins/Math/random/name.js | 11 ++++++----- test/built-ins/Math/round/length.js | 11 ++++++----- test/built-ins/Math/round/name.js | 11 ++++++----- test/built-ins/Math/sign/length.js | 11 ++++++----- test/built-ins/Math/sign/name.js | 11 ++++++----- test/built-ins/Math/sin/length.js | 11 ++++++----- test/built-ins/Math/sin/name.js | 11 ++++++----- test/built-ins/Math/sinh/length.js | 11 ++++++----- test/built-ins/Math/sinh/name.js | 11 ++++++----- test/built-ins/Math/sqrt/length.js | 11 ++++++----- test/built-ins/Math/sqrt/name.js | 11 ++++++----- test/built-ins/Math/tan/length.js | 11 ++++++----- test/built-ins/Math/tan/name.js | 11 ++++++----- test/built-ins/Math/tanh/length.js | 11 ++++++----- test/built-ins/Math/tanh/name.js | 11 ++++++----- test/built-ins/Math/trunc/length.js | 11 ++++++----- test/built-ins/Math/trunc/name.js | 11 ++++++----- test/built-ins/NativeErrors/EvalError/length.js | 11 ++++++----- test/built-ins/NativeErrors/EvalError/name.js | 11 ++++++----- .../NativeErrors/EvalError/prototype/name.js | 11 ++++++----- test/built-ins/NativeErrors/RangeError/length.js | 11 ++++++----- test/built-ins/NativeErrors/RangeError/name.js | 11 ++++++----- .../NativeErrors/RangeError/prototype/name.js | 11 ++++++----- .../NativeErrors/ReferenceError/length.js | 11 ++++++----- .../built-ins/NativeErrors/ReferenceError/name.js | 11 ++++++----- .../NativeErrors/ReferenceError/prototype/name.js | 11 ++++++----- test/built-ins/NativeErrors/SyntaxError/length.js | 11 ++++++----- test/built-ins/NativeErrors/SyntaxError/name.js | 11 ++++++----- .../NativeErrors/SyntaxError/prototype/name.js | 11 ++++++----- test/built-ins/NativeErrors/TypeError/length.js | 11 ++++++----- test/built-ins/NativeErrors/TypeError/name.js | 11 ++++++----- .../NativeErrors/TypeError/prototype/name.js | 11 ++++++----- test/built-ins/NativeErrors/URIError/length.js | 11 ++++++----- test/built-ins/NativeErrors/URIError/name.js | 11 ++++++----- .../NativeErrors/URIError/prototype/name.js | 11 ++++++----- test/built-ins/Number/isFinite/length.js | 11 ++++++----- test/built-ins/Number/isFinite/name.js | 11 ++++++----- test/built-ins/Number/isInteger/length.js | 11 ++++++----- test/built-ins/Number/isInteger/name.js | 11 ++++++----- test/built-ins/Number/isNaN/length.js | 11 ++++++----- test/built-ins/Number/isNaN/name.js | 11 ++++++----- test/built-ins/Number/isSafeInteger/length.js | 11 ++++++----- test/built-ins/Number/isSafeInteger/name.js | 11 ++++++----- .../Number/prototype/toExponential/length.js | 11 ++++++----- .../Number/prototype/toExponential/name.js | 11 ++++++----- test/built-ins/Number/prototype/toFixed/length.js | 11 ++++++----- test/built-ins/Number/prototype/toFixed/name.js | 11 ++++++----- .../Number/prototype/toLocaleString/length.js | 11 ++++++----- .../Number/prototype/toLocaleString/name.js | 11 ++++++----- .../Number/prototype/toPrecision/length.js | 11 ++++++----- .../Number/prototype/toPrecision/name.js | 11 ++++++----- .../built-ins/Number/prototype/toString/length.js | 11 ++++++----- test/built-ins/Number/prototype/toString/name.js | 11 ++++++----- test/built-ins/Number/prototype/valueOf/length.js | 11 ++++++----- test/built-ins/Number/prototype/valueOf/name.js | 11 ++++++----- test/built-ins/Promise/Symbol.species/length.js | 11 ++++++----- test/built-ins/Promise/all/length.js | 11 ++++++----- test/built-ins/Promise/all/name.js | 11 ++++++----- .../all/resolve-element-function-length.js | 11 ++++++----- .../built-ins/Promise/executor-function-length.js | 11 ++++++----- test/built-ins/Promise/length.js | 11 ++++++----- test/built-ins/Promise/name.js | 11 ++++++----- test/built-ins/Promise/prototype/catch/length.js | 11 ++++++----- test/built-ins/Promise/prototype/catch/name.js | 11 ++++++----- test/built-ins/Promise/prototype/finally/name.js | 11 ++++++----- test/built-ins/Promise/prototype/then/length.js | 11 ++++++----- test/built-ins/Promise/prototype/then/name.js | 11 ++++++----- test/built-ins/Promise/race/length.js | 11 ++++++----- test/built-ins/Promise/race/name.js | 11 ++++++----- test/built-ins/Promise/reject-function-length.js | 11 ++++++----- test/built-ins/Promise/reject/length.js | 11 ++++++----- test/built-ins/Promise/reject/name.js | 11 ++++++----- test/built-ins/Promise/resolve-function-length.js | 11 ++++++----- test/built-ins/Promise/resolve/length.js | 11 ++++++----- test/built-ins/Promise/resolve/name.js | 11 ++++++----- test/built-ins/Proxy/length.js | 11 ++++++----- test/built-ins/Proxy/name.js | 11 ++++++----- test/built-ins/Proxy/revocable/length.js | 11 ++++++----- test/built-ins/Proxy/revocable/name.js | 11 ++++++----- .../Proxy/revocable/revocation-function-length.js | 11 ++++++----- test/built-ins/Reflect/apply/length.js | 14 ++++++-------- test/built-ins/Reflect/apply/name.js | 14 ++++++-------- test/built-ins/Reflect/construct/length.js | 14 ++++++-------- test/built-ins/Reflect/construct/name.js | 14 ++++++-------- test/built-ins/Reflect/defineProperty/length.js | 14 ++++++-------- test/built-ins/Reflect/defineProperty/name.js | 14 ++++++-------- test/built-ins/Reflect/deleteProperty/length.js | 14 ++++++-------- test/built-ins/Reflect/deleteProperty/name.js | 14 ++++++-------- test/built-ins/Reflect/get/length.js | 14 ++++++-------- test/built-ins/Reflect/get/name.js | 14 ++++++-------- .../Reflect/getOwnPropertyDescriptor/length.js | 14 ++++++-------- .../Reflect/getOwnPropertyDescriptor/name.js | 14 ++++++-------- test/built-ins/Reflect/getPrototypeOf/length.js | 14 ++++++-------- test/built-ins/Reflect/getPrototypeOf/name.js | 14 ++++++-------- test/built-ins/Reflect/has/length.js | 14 ++++++-------- test/built-ins/Reflect/has/name.js | 14 ++++++-------- test/built-ins/Reflect/isExtensible/length.js | 14 ++++++-------- test/built-ins/Reflect/isExtensible/name.js | 14 ++++++-------- test/built-ins/Reflect/ownKeys/length.js | 14 ++++++-------- test/built-ins/Reflect/ownKeys/name.js | 14 ++++++-------- .../built-ins/Reflect/preventExtensions/length.js | 14 ++++++-------- test/built-ins/Reflect/preventExtensions/name.js | 14 ++++++-------- test/built-ins/Reflect/set/length.js | 14 ++++++-------- test/built-ins/Reflect/set/name.js | 14 ++++++-------- test/built-ins/Reflect/setPrototypeOf/length.js | 14 ++++++-------- test/built-ins/Reflect/setPrototypeOf/name.js | 14 ++++++-------- test/built-ins/RegExp/Symbol.species/length.js | 11 ++++++----- .../RegExp/Symbol.species/symbol-species-name.js | 14 ++++++-------- .../RegExp/prototype/Symbol.match/length.js | 11 ++++++----- .../RegExp/prototype/Symbol.match/name.js | 11 ++++++----- .../RegExp/prototype/Symbol.matchAll/length.js | 11 ++++++----- .../RegExp/prototype/Symbol.matchAll/name.js | 11 ++++++----- .../RegExp/prototype/Symbol.replace/length.js | 11 ++++++----- .../RegExp/prototype/Symbol.replace/name.js | 11 ++++++----- .../RegExp/prototype/Symbol.search/length.js | 11 ++++++----- .../RegExp/prototype/Symbol.search/name.js | 11 ++++++----- .../RegExp/prototype/Symbol.split/length.js | 11 ++++++----- .../RegExp/prototype/Symbol.split/name.js | 11 ++++++----- test/built-ins/RegExp/prototype/exec/name.js | 11 ++++++----- test/built-ins/RegExp/prototype/global/length.js | 11 ++++++----- test/built-ins/RegExp/prototype/global/name.js | 14 ++++++-------- .../RegExp/prototype/ignoreCase/length.js | 11 ++++++----- .../built-ins/RegExp/prototype/ignoreCase/name.js | 14 ++++++-------- .../RegExp/prototype/multiline/length.js | 11 ++++++----- test/built-ins/RegExp/prototype/multiline/name.js | 14 ++++++-------- test/built-ins/RegExp/prototype/sticky/length.js | 11 ++++++----- test/built-ins/RegExp/prototype/sticky/name.js | 14 ++++++-------- test/built-ins/RegExp/prototype/test/name.js | 11 ++++++----- test/built-ins/RegExp/prototype/toString/name.js | 11 ++++++----- test/built-ins/RegExp/prototype/unicode/length.js | 11 ++++++----- test/built-ins/RegExp/prototype/unicode/name.js | 11 ++++++----- .../RegExpStringIteratorPrototype/next/length.js | 11 ++++++----- .../RegExpStringIteratorPrototype/next/name.js | 11 ++++++----- test/built-ins/Set/Symbol.species/length.js | 11 ++++++----- test/built-ins/Set/length.js | 11 ++++++----- test/built-ins/Set/name.js | 11 ++++++----- test/built-ins/Set/prototype/add/length.js | 11 ++++++----- test/built-ins/Set/prototype/add/name.js | 11 ++++++----- test/built-ins/Set/prototype/clear/length.js | 11 ++++++----- test/built-ins/Set/prototype/clear/name.js | 11 ++++++----- test/built-ins/Set/prototype/delete/length.js | 11 ++++++----- test/built-ins/Set/prototype/delete/name.js | 11 ++++++----- test/built-ins/Set/prototype/entries/length.js | 11 ++++++----- test/built-ins/Set/prototype/entries/name.js | 11 ++++++----- test/built-ins/Set/prototype/forEach/length.js | 11 ++++++----- test/built-ins/Set/prototype/forEach/name.js | 11 ++++++----- test/built-ins/Set/prototype/has/length.js | 11 ++++++----- test/built-ins/Set/prototype/has/name.js | 11 ++++++----- test/built-ins/Set/prototype/size/length.js | 11 ++++++----- test/built-ins/Set/prototype/size/name.js | 11 ++++++----- test/built-ins/Set/prototype/values/length.js | 11 ++++++----- test/built-ins/Set/prototype/values/name.js | 11 ++++++----- .../built-ins/SetIteratorPrototype/next/length.js | 11 ++++++----- test/built-ins/SetIteratorPrototype/next/name.js | 11 ++++++----- .../prototype/byteLength/length.js | 11 ++++++----- .../prototype/byteLength/name.js | 14 ++++++-------- .../SharedArrayBuffer/prototype/slice/length.js | 11 ++++++----- .../SharedArrayBuffer/prototype/slice/name.js | 11 ++++++----- test/built-ins/String/fromCharCode/name.js | 11 ++++++----- test/built-ins/String/fromCodePoint/length.js | 14 ++++++-------- test/built-ins/String/fromCodePoint/name.js | 14 ++++++-------- .../String/prototype/Symbol.iterator/length.js | 11 ++++++----- .../String/prototype/Symbol.iterator/name.js | 11 ++++++----- test/built-ins/String/prototype/at/length.js | 14 ++++++-------- test/built-ins/String/prototype/charAt/name.js | 11 ++++++----- .../built-ins/String/prototype/charCodeAt/name.js | 11 ++++++----- .../String/prototype/codePointAt/length.js | 14 ++++++-------- .../String/prototype/codePointAt/name.js | 14 ++++++-------- test/built-ins/String/prototype/concat/name.js | 11 ++++++----- .../built-ins/String/prototype/endsWith/length.js | 14 ++++++-------- test/built-ins/String/prototype/endsWith/name.js | 14 ++++++-------- .../built-ins/String/prototype/includes/length.js | 14 ++++++-------- test/built-ins/String/prototype/includes/name.js | 14 ++++++-------- test/built-ins/String/prototype/indexOf/name.js | 11 ++++++----- .../String/prototype/lastIndexOf/name.js | 11 ++++++----- .../String/prototype/localeCompare/name.js | 11 ++++++----- test/built-ins/String/prototype/match/name.js | 11 ++++++----- .../built-ins/String/prototype/matchAll/length.js | 11 ++++++----- test/built-ins/String/prototype/matchAll/name.js | 11 ++++++----- .../String/prototype/normalize/length.js | 14 ++++++-------- test/built-ins/String/prototype/normalize/name.js | 14 ++++++-------- .../String/prototype/padEnd/function-length.js | 11 ++++++----- .../String/prototype/padEnd/function-name.js | 15 ++++++--------- .../String/prototype/padStart/function-length.js | 11 ++++++----- .../String/prototype/padStart/function-name.js | 15 ++++++--------- test/built-ins/String/prototype/repeat/length.js | 14 ++++++-------- test/built-ins/String/prototype/repeat/name.js | 14 ++++++-------- test/built-ins/String/prototype/replace/name.js | 11 ++++++----- test/built-ins/String/prototype/search/name.js | 11 ++++++----- test/built-ins/String/prototype/slice/name.js | 11 ++++++----- test/built-ins/String/prototype/split/name.js | 11 ++++++----- .../String/prototype/startsWith/length.js | 14 ++++++-------- .../built-ins/String/prototype/startsWith/name.js | 14 ++++++-------- test/built-ins/String/prototype/substring/name.js | 11 ++++++----- .../String/prototype/toLocaleLowerCase/name.js | 11 ++++++----- .../String/prototype/toLocaleUpperCase/name.js | 11 ++++++----- .../String/prototype/toLowerCase/name.js | 11 ++++++----- .../String/prototype/toUpperCase/name.js | 11 ++++++----- test/built-ins/String/prototype/trim/name.js | 11 ++++++----- test/built-ins/String/raw/length.js | 14 ++++++-------- test/built-ins/String/raw/name.js | 14 ++++++-------- .../StringIteratorPrototype/next/length.js | 11 ++++++----- .../StringIteratorPrototype/next/name.js | 11 ++++++----- test/built-ins/Symbol/for/length.js | 11 ++++++----- test/built-ins/Symbol/for/name.js | 11 ++++++----- test/built-ins/Symbol/keyFor/length.js | 11 ++++++----- test/built-ins/Symbol/keyFor/name.js | 11 ++++++----- test/built-ins/Symbol/length.js | 11 ++++++----- test/built-ins/Symbol/name.js | 11 ++++++----- .../Symbol/prototype/Symbol.toPrimitive/length.js | 11 ++++++----- .../Symbol/prototype/Symbol.toPrimitive/name.js | 13 ++++++------- .../built-ins/Symbol/prototype/toString/length.js | 11 ++++++----- test/built-ins/Symbol/prototype/toString/name.js | 11 ++++++----- test/built-ins/Symbol/prototype/valueOf/length.js | 11 ++++++----- test/built-ins/Symbol/prototype/valueOf/name.js | 11 ++++++----- test/built-ins/ThrowTypeError/length.js | 11 ++++++----- .../built-ins/TypedArray/Symbol.species/length.js | 11 ++++++----- test/built-ins/TypedArray/Symbol.species/name.js | 11 ++++++----- test/built-ins/TypedArray/from/length.js | 11 ++++++----- test/built-ins/TypedArray/from/name.js | 11 ++++++----- test/built-ins/TypedArray/name.js | 11 ++++++----- test/built-ins/TypedArray/of/length.js | 11 ++++++----- test/built-ins/TypedArray/of/name.js | 11 ++++++----- .../prototype/Symbol.toStringTag/BigInt/length.js | 11 ++++++----- .../prototype/Symbol.toStringTag/BigInt/name.js | 11 ++++++----- .../prototype/Symbol.toStringTag/length.js | 11 ++++++----- .../prototype/Symbol.toStringTag/name.js | 11 ++++++----- test/built-ins/TypedArray/prototype/at/length.js | 14 ++++++-------- .../TypedArray/prototype/buffer/length.js | 11 ++++++----- .../built-ins/TypedArray/prototype/buffer/name.js | 11 ++++++----- .../TypedArray/prototype/byteLength/length.js | 11 ++++++----- .../TypedArray/prototype/byteLength/name.js | 11 ++++++----- .../TypedArray/prototype/byteOffset/length.js | 11 ++++++----- .../TypedArray/prototype/byteOffset/name.js | 11 ++++++----- .../TypedArray/prototype/copyWithin/length.js | 11 ++++++----- .../TypedArray/prototype/copyWithin/name.js | 11 ++++++----- .../TypedArray/prototype/entries/length.js | 11 ++++++----- .../TypedArray/prototype/entries/name.js | 11 ++++++----- .../TypedArray/prototype/every/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/every/name.js | 11 ++++++----- .../built-ins/TypedArray/prototype/fill/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/fill/name.js | 11 ++++++----- .../TypedArray/prototype/filter/length.js | 11 ++++++----- .../built-ins/TypedArray/prototype/filter/name.js | 11 ++++++----- .../built-ins/TypedArray/prototype/find/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/find/name.js | 11 ++++++----- .../TypedArray/prototype/findIndex/length.js | 11 ++++++----- .../TypedArray/prototype/findIndex/name.js | 11 ++++++----- .../TypedArray/prototype/forEach/length.js | 11 ++++++----- .../TypedArray/prototype/forEach/name.js | 11 ++++++----- .../TypedArray/prototype/includes/length.js | 11 ++++++----- .../TypedArray/prototype/includes/name.js | 11 ++++++----- .../TypedArray/prototype/indexOf/length.js | 11 ++++++----- .../TypedArray/prototype/indexOf/name.js | 11 ++++++----- .../built-ins/TypedArray/prototype/join/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/join/name.js | 11 ++++++----- .../built-ins/TypedArray/prototype/keys/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/keys/name.js | 11 ++++++----- .../TypedArray/prototype/lastIndexOf/length.js | 11 ++++++----- .../TypedArray/prototype/lastIndexOf/name.js | 11 ++++++----- .../TypedArray/prototype/length/length.js | 11 ++++++----- .../built-ins/TypedArray/prototype/length/name.js | 11 ++++++----- test/built-ins/TypedArray/prototype/map/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/map/name.js | 11 ++++++----- .../TypedArray/prototype/reduce/length.js | 11 ++++++----- .../built-ins/TypedArray/prototype/reduce/name.js | 11 ++++++----- .../TypedArray/prototype/reduceRight/length.js | 11 ++++++----- .../TypedArray/prototype/reduceRight/name.js | 11 ++++++----- .../TypedArray/prototype/reverse/length.js | 11 ++++++----- .../TypedArray/prototype/reverse/name.js | 11 ++++++----- test/built-ins/TypedArray/prototype/set/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/set/name.js | 11 ++++++----- .../TypedArray/prototype/slice/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/slice/name.js | 11 ++++++----- .../built-ins/TypedArray/prototype/some/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/some/name.js | 11 ++++++----- .../built-ins/TypedArray/prototype/sort/length.js | 11 ++++++----- test/built-ins/TypedArray/prototype/sort/name.js | 11 ++++++----- .../TypedArray/prototype/subarray/length.js | 11 ++++++----- .../TypedArray/prototype/subarray/name.js | 11 ++++++----- .../TypedArray/prototype/toLocaleString/length.js | 11 ++++++----- .../TypedArray/prototype/toLocaleString/name.js | 11 ++++++----- .../TypedArray/prototype/values/length.js | 11 ++++++----- .../built-ins/TypedArray/prototype/values/name.js | 11 ++++++----- .../TypedArrayConstructors/Float32Array/name.js | 11 ++++++----- .../TypedArrayConstructors/Float64Array/name.js | 11 ++++++----- .../TypedArrayConstructors/Int16Array/name.js | 11 ++++++----- .../TypedArrayConstructors/Int32Array/name.js | 11 ++++++----- .../TypedArrayConstructors/Int8Array/name.js | 11 ++++++----- .../TypedArrayConstructors/Uint16Array/name.js | 11 ++++++----- .../TypedArrayConstructors/Uint32Array/name.js | 11 ++++++----- .../TypedArrayConstructors/Uint8Array/name.js | 11 ++++++----- .../Uint8ClampedArray/name.js | 11 ++++++----- test/built-ins/WeakMap/length.js | 11 ++++++----- test/built-ins/WeakMap/name.js | 14 ++++++-------- test/built-ins/WeakMap/prototype/delete/length.js | 14 ++++++-------- test/built-ins/WeakMap/prototype/delete/name.js | 14 ++++++-------- test/built-ins/WeakMap/prototype/get/length.js | 14 ++++++-------- test/built-ins/WeakMap/prototype/get/name.js | 14 ++++++-------- test/built-ins/WeakMap/prototype/has/length.js | 14 ++++++-------- test/built-ins/WeakMap/prototype/has/name.js | 14 ++++++-------- test/built-ins/WeakMap/prototype/set/length.js | 14 ++++++-------- test/built-ins/WeakMap/prototype/set/name.js | 14 ++++++-------- test/built-ins/WeakSet/length.js | 11 ++++++----- test/built-ins/WeakSet/name.js | 14 ++++++-------- test/built-ins/WeakSet/prototype/add/length.js | 14 ++++++-------- test/built-ins/WeakSet/prototype/add/name.js | 14 ++++++-------- test/built-ins/WeakSet/prototype/delete/length.js | 14 ++++++-------- test/built-ins/WeakSet/prototype/delete/name.js | 14 ++++++-------- test/built-ins/WeakSet/prototype/has/length.js | 14 ++++++-------- test/built-ins/WeakSet/prototype/has/name.js | 14 ++++++-------- test/built-ins/decodeURI/name.js | 11 ++++++----- test/built-ins/decodeURIComponent/name.js | 11 ++++++----- test/built-ins/encodeURI/name.js | 11 ++++++----- test/built-ins/encodeURIComponent/name.js | 11 ++++++----- test/built-ins/eval/name.js | 11 ++++++----- test/built-ins/isFinite/length.js | 11 ++++++----- test/built-ins/isFinite/name.js | 11 ++++++----- test/built-ins/isNaN/length.js | 11 ++++++----- test/built-ins/isNaN/name.js | 11 ++++++----- test/built-ins/parseFloat/name.js | 11 ++++++----- test/built-ins/parseInt/name.js | 11 ++++++----- 589 files changed, 3534 insertions(+), 3287 deletions(-) diff --git a/test/built-ins/Array/Symbol.species/length.js b/test/built-ins/Array/Symbol.species/length.js index 5e37f1d65cd..1b5e760a1b9 100644 --- a/test/built-ins/Array/Symbol.species/length.js +++ b/test/built-ins/Array/Symbol.species/length.js @@ -25,8 +25,9 @@ features: [Symbol.species] var desc = Object.getOwnPropertyDescriptor(Array, Symbol.species); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/Symbol.species/symbol-species-name.js b/test/built-ins/Array/Symbol.species/symbol-species-name.js index 26d6aa5146e..18bd9b77f74 100644 --- a/test/built-ins/Array/Symbol.species/symbol-species-name.js +++ b/test/built-ins/Array/Symbol.species/symbol-species-name.js @@ -15,11 +15,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(Array, Symbol.species); -assert.sameValue( - descriptor.get.name, - 'get [Symbol.species]' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get [Symbol.species]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/from/Array.from-name.js b/test/built-ins/Array/from/Array.from-name.js index 75795bd73d5..13e1b953788 100644 --- a/test/built-ins/Array/from/Array.from-name.js +++ b/test/built-ins/Array/from/Array.from-name.js @@ -19,12 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.from.name, - 'from', - 'The value of Array.from.name is expected to be "from"' -); - -verifyNotEnumerable(Array.from, 'name'); -verifyNotWritable(Array.from, 'name'); -verifyConfigurable(Array.from, 'name'); +verifyProperty(Array.from, "name", { + value: "from", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/from/Array.from_arity.js b/test/built-ins/Array/from/Array.from_arity.js index 2aa04a0ebd4..a2d31e691d6 100644 --- a/test/built-ins/Array/from/Array.from_arity.js +++ b/test/built-ins/Array/from/Array.from_arity.js @@ -14,8 +14,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.from.length, 1, 'The value of Array.from.length is expected to be 1'); - -verifyNotEnumerable(Array.from, 'length'); -verifyNotWritable(Array.from, 'length'); -verifyConfigurable(Array.from, 'length'); +verifyProperty(Array.from, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/isArray/name.js b/test/built-ins/Array/isArray/name.js index ed23a4a8752..17da793af85 100644 --- a/test/built-ins/Array/isArray/name.js +++ b/test/built-ins/Array/isArray/name.js @@ -20,8 +20,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.isArray.name, "isArray", 'The value of Array.isArray.name is expected to be "isArray"'); - -verifyNotEnumerable(Array.isArray, "name"); -verifyNotWritable(Array.isArray, "name"); -verifyConfigurable(Array.isArray, "name"); +verifyProperty(Array.isArray, "name", { + value: "isArray", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/length.js b/test/built-ins/Array/length.js index 81d052603ec..f3933178cd6 100644 --- a/test/built-ins/Array/length.js +++ b/test/built-ins/Array/length.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.length, 1, 'The value of Array.length is expected to be 1'); - -verifyNotEnumerable(Array, 'length'); -verifyNotWritable(Array, 'length'); -verifyConfigurable(Array, 'length'); +verifyProperty(Array, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/name.js b/test/built-ins/Array/name.js index 1b56828736b..c30eeb598fe 100644 --- a/test/built-ins/Array/name.js +++ b/test/built-ins/Array/name.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.name, 'Array', 'The value of Array.name is expected to be "Array"'); - -verifyNotEnumerable(Array, 'name'); -verifyNotWritable(Array, 'name'); -verifyConfigurable(Array, 'name'); +verifyProperty(Array, "name", { + value: "Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/of/length.js b/test/built-ins/Array/of/length.js index 754d3e67294..f4a1d3fc02a 100644 --- a/test/built-ins/Array/of/length.js +++ b/test/built-ins/Array/of/length.js @@ -11,11 +11,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.of.length, 0, - 'The value of Array.of.length is expected to be 0' -); - -verifyNotEnumerable(Array.of, 'length'); -verifyNotWritable(Array.of, 'length'); -verifyConfigurable(Array.of, 'length'); +verifyProperty(Array.of, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/of/name.js b/test/built-ins/Array/of/name.js index 1377a540971..0bcd72a2303 100644 --- a/test/built-ins/Array/of/name.js +++ b/test/built-ins/Array/of/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.of.name, 'of', - 'The value of Array.of.name is expected to be "of"' -); - -verifyNotEnumerable(Array.of, 'name'); -verifyNotWritable(Array.of, 'name'); -verifyConfigurable(Array.of, 'name'); +verifyProperty(Array.of, "name", { + value: "of", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/at/length.js b/test/built-ins/Array/prototype/at/length.js index 417084d50ed..818c02b76b9 100644 --- a/test/built-ins/Array/prototype/at/length.js +++ b/test/built-ins/Array/prototype/at/length.js @@ -18,11 +18,9 @@ assert.sameValue( 'The value of `typeof Array.prototype.at` is expected to be "function"' ); -assert.sameValue( - Array.prototype.at.length, 1, - 'The value of Array.prototype.at.length is expected to be 1' -); - -verifyNotEnumerable(Array.prototype.at, 'length'); -verifyNotWritable(Array.prototype.at, 'length'); -verifyConfigurable(Array.prototype.at, 'length'); +verifyProperty(Array.prototype.at, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/concat/length.js b/test/built-ins/Array/prototype/concat/length.js index 92fa5299aaf..f75b42ebdaf 100644 --- a/test/built-ins/Array/prototype/concat/length.js +++ b/test/built-ins/Array/prototype/concat/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.concat.length, 1, 'The value of Array.prototype.concat.length is expected to be 1'); - -verifyNotEnumerable(Array.prototype.concat, 'length'); -verifyNotWritable(Array.prototype.concat, 'length'); -verifyConfigurable(Array.prototype.concat, 'length'); +verifyProperty(Array.prototype.concat, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/concat/name.js b/test/built-ins/Array/prototype/concat/name.js index 90bc748d09a..a0a42c9b359 100644 --- a/test/built-ins/Array/prototype/concat/name.js +++ b/test/built-ins/Array/prototype/concat/name.js @@ -19,12 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.concat.name, - "concat", - 'The value of Array.prototype.concat.name is expected to be "concat"' -); - -verifyNotEnumerable(Array.prototype.concat, "name"); -verifyNotWritable(Array.prototype.concat, "name"); -verifyConfigurable(Array.prototype.concat, "name"); +verifyProperty(Array.prototype.concat, "name", { + value: "concat", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/copyWithin/length.js b/test/built-ins/Array/prototype/copyWithin/length.js index a48b43da25b..b4797f76932 100644 --- a/test/built-ins/Array/prototype/copyWithin/length.js +++ b/test/built-ins/Array/prototype/copyWithin/length.js @@ -10,11 +10,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.copyWithin.length, 2, - 'The value of `Array.prototype.copyWithin.length` is `2`' -); - -verifyNotEnumerable(Array.prototype.copyWithin, 'length'); -verifyNotWritable(Array.prototype.copyWithin, 'length'); -verifyConfigurable(Array.prototype.copyWithin, 'length'); +verifyProperty(Array.prototype.copyWithin, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/copyWithin/name.js b/test/built-ins/Array/prototype/copyWithin/name.js index 07f0ce08c29..44670e45644 100644 --- a/test/built-ins/Array/prototype/copyWithin/name.js +++ b/test/built-ins/Array/prototype/copyWithin/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.copyWithin.name, 'copyWithin', - 'The value of `Array.prototype.copyWithin.name` is `"copyWithin"`' -); - -verifyNotEnumerable(Array.prototype.copyWithin, 'name'); -verifyNotWritable(Array.prototype.copyWithin, 'name'); -verifyConfigurable(Array.prototype.copyWithin, 'name'); +verifyProperty(Array.prototype.copyWithin, "name", { + value: "copyWithin", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/entries/length.js b/test/built-ins/Array/prototype/entries/length.js index c1590f6aec1..096df9bca23 100644 --- a/test/built-ins/Array/prototype/entries/length.js +++ b/test/built-ins/Array/prototype/entries/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.entries.length, 0, - 'The value of `Array.prototype.entries.length` is `0`' -); - -verifyNotEnumerable(Array.prototype.entries, 'length'); -verifyNotWritable(Array.prototype.entries, 'length'); -verifyConfigurable(Array.prototype.entries, 'length'); +verifyProperty(Array.prototype.entries, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/entries/name.js b/test/built-ins/Array/prototype/entries/name.js index e940872aafe..0562354cca5 100644 --- a/test/built-ins/Array/prototype/entries/name.js +++ b/test/built-ins/Array/prototype/entries/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.entries.name, 'entries', - 'The value of `Array.prototype.entries.name` is `"entries"`' -); - -verifyNotEnumerable(Array.prototype.entries, 'name'); -verifyNotWritable(Array.prototype.entries, 'name'); -verifyConfigurable(Array.prototype.entries, 'name'); +verifyProperty(Array.prototype.entries, "name", { + value: "entries", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/every/length.js b/test/built-ins/Array/prototype/every/length.js index 78fbadbf73c..d0f1a40247d 100644 --- a/test/built-ins/Array/prototype/every/length.js +++ b/test/built-ins/Array/prototype/every/length.js @@ -11,11 +11,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.every.length, 1, - 'The value of `Array.prototype.every.length` is `1`' -); - -verifyNotEnumerable(Array.prototype.every, 'length'); -verifyNotWritable(Array.prototype.every, 'length'); -verifyConfigurable(Array.prototype.every, 'length'); +verifyProperty(Array.prototype.every, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/every/name.js b/test/built-ins/Array/prototype/every/name.js index 058bce25581..b100954a329 100644 --- a/test/built-ins/Array/prototype/every/name.js +++ b/test/built-ins/Array/prototype/every/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.every.name, "every"); - -verifyNotEnumerable(Array.prototype.every, "name"); -verifyNotWritable(Array.prototype.every, "name"); -verifyConfigurable(Array.prototype.every, "name"); +verifyProperty(Array.prototype.every, "name", { + value: "every", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/fill/length.js b/test/built-ins/Array/prototype/fill/length.js index ce500d5f665..0f027c0bca7 100644 --- a/test/built-ins/Array/prototype/fill/length.js +++ b/test/built-ins/Array/prototype/fill/length.js @@ -8,11 +8,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.fill.length, 1, - 'The value of `Array.prototype.fill.length` is `1`' -); - -verifyNotEnumerable(Array.prototype.fill, 'length'); -verifyNotWritable(Array.prototype.fill, 'length'); -verifyConfigurable(Array.prototype.fill, 'length'); +verifyProperty(Array.prototype.fill, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/fill/name.js b/test/built-ins/Array/prototype/fill/name.js index 409f1c3588a..2a69f0a8dad 100644 --- a/test/built-ins/Array/prototype/fill/name.js +++ b/test/built-ins/Array/prototype/fill/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.fill.name, 'fill', - 'The value of `Array.prototype.fill.name` is `"fill"`' -); - -verifyNotEnumerable(Array.prototype.fill, 'name'); -verifyNotWritable(Array.prototype.fill, 'name'); -verifyConfigurable(Array.prototype.fill, 'name'); +verifyProperty(Array.prototype.fill, "name", { + value: "fill", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/filter/length.js b/test/built-ins/Array/prototype/filter/length.js index 49c132c33ce..99eb51a0954 100644 --- a/test/built-ins/Array/prototype/filter/length.js +++ b/test/built-ins/Array/prototype/filter/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.filter.length, 1); - -verifyNotEnumerable(Array.prototype.filter, 'length'); -verifyNotWritable(Array.prototype.filter, 'length'); -verifyConfigurable(Array.prototype.filter, 'length'); +verifyProperty(Array.prototype.filter, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/filter/name.js b/test/built-ins/Array/prototype/filter/name.js index db6c40655c5..c15f90a7386 100644 --- a/test/built-ins/Array/prototype/filter/name.js +++ b/test/built-ins/Array/prototype/filter/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.filter.name, "filter"); - -verifyNotEnumerable(Array.prototype.filter, "name"); -verifyNotWritable(Array.prototype.filter, "name"); -verifyConfigurable(Array.prototype.filter, "name"); +verifyProperty(Array.prototype.filter, "name", { + value: "filter", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/find/length.js b/test/built-ins/Array/prototype/find/length.js index 6885d76de28..ddc57d90f4f 100644 --- a/test/built-ins/Array/prototype/find/length.js +++ b/test/built-ins/Array/prototype/find/length.js @@ -8,11 +8,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.find.length, 1, - 'The value of `Array.prototype.find.length` is `1`' -); - -verifyNotEnumerable(Array.prototype.find, 'length'); -verifyNotWritable(Array.prototype.find, 'length'); -verifyConfigurable(Array.prototype.find, 'length'); +verifyProperty(Array.prototype.find, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/find/name.js b/test/built-ins/Array/prototype/find/name.js index 2aa50956c0a..c868d551529 100644 --- a/test/built-ins/Array/prototype/find/name.js +++ b/test/built-ins/Array/prototype/find/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.find.name, 'find', - 'The value of `Array.prototype.find.name` is `"find"`' -); - -verifyNotEnumerable(Array.prototype.find, 'name'); -verifyNotWritable(Array.prototype.find, 'name'); -verifyConfigurable(Array.prototype.find, 'name'); +verifyProperty(Array.prototype.find, "name", { + value: "find", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/findIndex/length.js b/test/built-ins/Array/prototype/findIndex/length.js index bdea62eed0a..666d6403332 100644 --- a/test/built-ins/Array/prototype/findIndex/length.js +++ b/test/built-ins/Array/prototype/findIndex/length.js @@ -8,11 +8,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.findIndex.length, 1, - 'The value of `Array.prototype.findIndex.length` is `1`' -); - -verifyNotEnumerable(Array.prototype.findIndex, 'length'); -verifyNotWritable(Array.prototype.findIndex, 'length'); -verifyConfigurable(Array.prototype.findIndex, 'length'); +verifyProperty(Array.prototype.findIndex, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/findIndex/name.js b/test/built-ins/Array/prototype/findIndex/name.js index 7e0db6412d8..2c8be7e2a91 100644 --- a/test/built-ins/Array/prototype/findIndex/name.js +++ b/test/built-ins/Array/prototype/findIndex/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.findIndex.name, 'findIndex', - 'The value of `Array.prototype.findIndex.name` is `"findIndex"`' -); - -verifyNotEnumerable(Array.prototype.findIndex, 'name'); -verifyNotWritable(Array.prototype.findIndex, 'name'); -verifyConfigurable(Array.prototype.findIndex, 'name'); +verifyProperty(Array.prototype.findIndex, "name", { + value: "findIndex", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/forEach/length.js b/test/built-ins/Array/prototype/forEach/length.js index a58372f27ca..eba9afb5335 100644 --- a/test/built-ins/Array/prototype/forEach/length.js +++ b/test/built-ins/Array/prototype/forEach/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.forEach.length, 1); - -verifyNotEnumerable(Array.prototype.forEach, 'length'); -verifyNotWritable(Array.prototype.forEach, 'length'); -verifyConfigurable(Array.prototype.forEach, 'length'); +verifyProperty(Array.prototype.forEach, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/forEach/name.js b/test/built-ins/Array/prototype/forEach/name.js index 9423bd4eac8..d97260b1f72 100644 --- a/test/built-ins/Array/prototype/forEach/name.js +++ b/test/built-ins/Array/prototype/forEach/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.forEach.name, "forEach"); - -verifyNotEnumerable(Array.prototype.forEach, "name"); -verifyNotWritable(Array.prototype.forEach, "name"); -verifyConfigurable(Array.prototype.forEach, "name"); +verifyProperty(Array.prototype.forEach, "name", { + value: "forEach", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/includes/length.js b/test/built-ins/Array/prototype/includes/length.js index 259555a2ef5..30636439731 100644 --- a/test/built-ins/Array/prototype/includes/length.js +++ b/test/built-ins/Array/prototype/includes/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [Array.prototype.includes] ---*/ -assert.sameValue(Array.prototype.includes.length, 1); - -verifyNotEnumerable(Array.prototype.includes, "length"); -verifyNotWritable(Array.prototype.includes, "length"); -verifyConfigurable(Array.prototype.includes, "length"); +verifyProperty(Array.prototype.includes, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/includes/name.js b/test/built-ins/Array/prototype/includes/name.js index daf17197181..9be2f48f0c6 100644 --- a/test/built-ins/Array/prototype/includes/name.js +++ b/test/built-ins/Array/prototype/includes/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js] features: [Array.prototype.includes] ---*/ -assert.sameValue(Array.prototype.includes.name, "includes"); - -verifyNotEnumerable(Array.prototype.includes, "name"); -verifyNotWritable(Array.prototype.includes, "name"); -verifyConfigurable(Array.prototype.includes, "name"); +verifyProperty(Array.prototype.includes, "name", { + value: "includes", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/indexOf/length.js b/test/built-ins/Array/prototype/indexOf/length.js index c0bc818491e..a098fafd90e 100644 --- a/test/built-ins/Array/prototype/indexOf/length.js +++ b/test/built-ins/Array/prototype/indexOf/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.indexOf.length, 1); - -verifyNotEnumerable(Array.prototype.indexOf, 'length'); -verifyNotWritable(Array.prototype.indexOf, 'length'); -verifyConfigurable(Array.prototype.indexOf, 'length'); +verifyProperty(Array.prototype.indexOf, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/indexOf/name.js b/test/built-ins/Array/prototype/indexOf/name.js index 7bb5854c9ff..a010d906077 100644 --- a/test/built-ins/Array/prototype/indexOf/name.js +++ b/test/built-ins/Array/prototype/indexOf/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.indexOf.name, "indexOf"); - -verifyNotEnumerable(Array.prototype.indexOf, "name"); -verifyNotWritable(Array.prototype.indexOf, "name"); -verifyConfigurable(Array.prototype.indexOf, "name"); +verifyProperty(Array.prototype.indexOf, "name", { + value: "indexOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/join/length.js b/test/built-ins/Array/prototype/join/length.js index a8fa14f253b..3478f0d3414 100644 --- a/test/built-ins/Array/prototype/join/length.js +++ b/test/built-ins/Array/prototype/join/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.join.length, 1); - -verifyNotEnumerable(Array.prototype.join, 'length'); -verifyNotWritable(Array.prototype.join, 'length'); -verifyConfigurable(Array.prototype.join, 'length'); +verifyProperty(Array.prototype.join, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/join/name.js b/test/built-ins/Array/prototype/join/name.js index e1bf9fda328..722e744c00a 100644 --- a/test/built-ins/Array/prototype/join/name.js +++ b/test/built-ins/Array/prototype/join/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.join.name, "join"); - -verifyNotEnumerable(Array.prototype.join, "name"); -verifyNotWritable(Array.prototype.join, "name"); -verifyConfigurable(Array.prototype.join, "name"); +verifyProperty(Array.prototype.join, "name", { + value: "join", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/keys/length.js b/test/built-ins/Array/prototype/keys/length.js index a9f8f508f03..cfdb9f63002 100644 --- a/test/built-ins/Array/prototype/keys/length.js +++ b/test/built-ins/Array/prototype/keys/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.keys.length, 0, - 'The value of `Array.prototype.keys.length` is `0`' -); - -verifyNotEnumerable(Array.prototype.keys, 'length'); -verifyNotWritable(Array.prototype.keys, 'length'); -verifyConfigurable(Array.prototype.keys, 'length'); +verifyProperty(Array.prototype.keys, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/keys/name.js b/test/built-ins/Array/prototype/keys/name.js index 5c58cdf364c..66fdff46889 100644 --- a/test/built-ins/Array/prototype/keys/name.js +++ b/test/built-ins/Array/prototype/keys/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Array.prototype.keys.name, 'keys', - 'The value of `Array.prototype.keys.name` is `"keys"`' -); - -verifyNotEnumerable(Array.prototype.keys, 'name'); -verifyNotWritable(Array.prototype.keys, 'name'); -verifyConfigurable(Array.prototype.keys, 'name'); +verifyProperty(Array.prototype.keys, "name", { + value: "keys", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/lastIndexOf/length.js b/test/built-ins/Array/prototype/lastIndexOf/length.js index 6084d8482c4..d05e5c79928 100644 --- a/test/built-ins/Array/prototype/lastIndexOf/length.js +++ b/test/built-ins/Array/prototype/lastIndexOf/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.lastIndexOf.length, 1); - -verifyNotEnumerable(Array.prototype.lastIndexOf, 'length'); -verifyNotWritable(Array.prototype.lastIndexOf, 'length'); -verifyConfigurable(Array.prototype.lastIndexOf, 'length'); +verifyProperty(Array.prototype.lastIndexOf, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/lastIndexOf/name.js b/test/built-ins/Array/prototype/lastIndexOf/name.js index e105d7c89e8..639a4ae5497 100644 --- a/test/built-ins/Array/prototype/lastIndexOf/name.js +++ b/test/built-ins/Array/prototype/lastIndexOf/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.lastIndexOf.name, "lastIndexOf"); - -verifyNotEnumerable(Array.prototype.lastIndexOf, "name"); -verifyNotWritable(Array.prototype.lastIndexOf, "name"); -verifyConfigurable(Array.prototype.lastIndexOf, "name"); +verifyProperty(Array.prototype.lastIndexOf, "name", { + value: "lastIndexOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/map/length.js b/test/built-ins/Array/prototype/map/length.js index af037e98b56..ed545a14fc9 100644 --- a/test/built-ins/Array/prototype/map/length.js +++ b/test/built-ins/Array/prototype/map/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.map.length, 1); - -verifyNotEnumerable(Array.prototype.map, 'length'); -verifyNotWritable(Array.prototype.map, 'length'); -verifyConfigurable(Array.prototype.map, 'length'); +verifyProperty(Array.prototype.map, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/map/name.js b/test/built-ins/Array/prototype/map/name.js index 0756461ccdf..1ba32039bbb 100644 --- a/test/built-ins/Array/prototype/map/name.js +++ b/test/built-ins/Array/prototype/map/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.map.name, "map"); - -verifyNotEnumerable(Array.prototype.map, "name"); -verifyNotWritable(Array.prototype.map, "name"); -verifyConfigurable(Array.prototype.map, "name"); +verifyProperty(Array.prototype.map, "name", { + value: "map", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/pop/length.js b/test/built-ins/Array/prototype/pop/length.js index d406ade4977..6a5673b5e5b 100644 --- a/test/built-ins/Array/prototype/pop/length.js +++ b/test/built-ins/Array/prototype/pop/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.pop.length, 0); - -verifyNotEnumerable(Array.prototype.pop, 'length'); -verifyNotWritable(Array.prototype.pop, 'length'); -verifyConfigurable(Array.prototype.pop, 'length'); +verifyProperty(Array.prototype.pop, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/pop/name.js b/test/built-ins/Array/prototype/pop/name.js index 0ee7934045c..d89d6ad0cd5 100644 --- a/test/built-ins/Array/prototype/pop/name.js +++ b/test/built-ins/Array/prototype/pop/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.pop.name, "pop"); - -verifyNotEnumerable(Array.prototype.pop, "name"); -verifyNotWritable(Array.prototype.pop, "name"); -verifyConfigurable(Array.prototype.pop, "name"); +verifyProperty(Array.prototype.pop, "name", { + value: "pop", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/push/length.js b/test/built-ins/Array/prototype/push/length.js index 33d43ba2686..6ffc6684db4 100644 --- a/test/built-ins/Array/prototype/push/length.js +++ b/test/built-ins/Array/prototype/push/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.push.length, 1); - -verifyNotEnumerable(Array.prototype.push, 'length'); -verifyNotWritable(Array.prototype.push, 'length'); -verifyConfigurable(Array.prototype.push, 'length'); +verifyProperty(Array.prototype.push, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/push/name.js b/test/built-ins/Array/prototype/push/name.js index 166083d5151..3ba9403e96d 100644 --- a/test/built-ins/Array/prototype/push/name.js +++ b/test/built-ins/Array/prototype/push/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.push.name, "push"); - -verifyNotEnumerable(Array.prototype.push, "name"); -verifyNotWritable(Array.prototype.push, "name"); -verifyConfigurable(Array.prototype.push, "name"); +verifyProperty(Array.prototype.push, "name", { + value: "push", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/reduce/length.js b/test/built-ins/Array/prototype/reduce/length.js index afc2b80eeb3..8e1feb798a9 100644 --- a/test/built-ins/Array/prototype/reduce/length.js +++ b/test/built-ins/Array/prototype/reduce/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.reduce.length, 1); - -verifyNotEnumerable(Array.prototype.reduce, 'length'); -verifyNotWritable(Array.prototype.reduce, 'length'); -verifyConfigurable(Array.prototype.reduce, 'length'); +verifyProperty(Array.prototype.reduce, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/reduce/name.js b/test/built-ins/Array/prototype/reduce/name.js index 978fbc950a6..8342f4eee3f 100644 --- a/test/built-ins/Array/prototype/reduce/name.js +++ b/test/built-ins/Array/prototype/reduce/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.reduce.name, "reduce"); - -verifyNotEnumerable(Array.prototype.reduce, "name"); -verifyNotWritable(Array.prototype.reduce, "name"); -verifyConfigurable(Array.prototype.reduce, "name"); +verifyProperty(Array.prototype.reduce, "name", { + value: "reduce", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/reduceRight/length.js b/test/built-ins/Array/prototype/reduceRight/length.js index a74578c096f..002704ea4f4 100644 --- a/test/built-ins/Array/prototype/reduceRight/length.js +++ b/test/built-ins/Array/prototype/reduceRight/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.reduceRight.length, 1); - -verifyNotEnumerable(Array.prototype.reduceRight, 'length'); -verifyNotWritable(Array.prototype.reduceRight, 'length'); -verifyConfigurable(Array.prototype.reduceRight, 'length'); +verifyProperty(Array.prototype.reduceRight, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/reduceRight/name.js b/test/built-ins/Array/prototype/reduceRight/name.js index 010dfd0b1bb..65134e2458a 100644 --- a/test/built-ins/Array/prototype/reduceRight/name.js +++ b/test/built-ins/Array/prototype/reduceRight/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.reduceRight.name, "reduceRight"); - -verifyNotEnumerable(Array.prototype.reduceRight, "name"); -verifyNotWritable(Array.prototype.reduceRight, "name"); -verifyConfigurable(Array.prototype.reduceRight, "name"); +verifyProperty(Array.prototype.reduceRight, "name", { + value: "reduceRight", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/reverse/length.js b/test/built-ins/Array/prototype/reverse/length.js index d969a5ff723..dc9d92ab8ad 100644 --- a/test/built-ins/Array/prototype/reverse/length.js +++ b/test/built-ins/Array/prototype/reverse/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.reverse.length, 0); - -verifyNotEnumerable(Array.prototype.reverse, 'length'); -verifyNotWritable(Array.prototype.reverse, 'length'); -verifyConfigurable(Array.prototype.reverse, 'length'); +verifyProperty(Array.prototype.reverse, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/reverse/name.js b/test/built-ins/Array/prototype/reverse/name.js index 35770b38f69..80bf4684fac 100644 --- a/test/built-ins/Array/prototype/reverse/name.js +++ b/test/built-ins/Array/prototype/reverse/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.reverse.name, "reverse"); - -verifyNotEnumerable(Array.prototype.reverse, "name"); -verifyNotWritable(Array.prototype.reverse, "name"); -verifyConfigurable(Array.prototype.reverse, "name"); +verifyProperty(Array.prototype.reverse, "name", { + value: "reverse", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/shift/length.js b/test/built-ins/Array/prototype/shift/length.js index 7f8a08a3dfd..68aae015568 100644 --- a/test/built-ins/Array/prototype/shift/length.js +++ b/test/built-ins/Array/prototype/shift/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.shift.length, 0); - -verifyNotEnumerable(Array.prototype.shift, 'length'); -verifyNotWritable(Array.prototype.shift, 'length'); -verifyConfigurable(Array.prototype.shift, 'length'); +verifyProperty(Array.prototype.shift, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/shift/name.js b/test/built-ins/Array/prototype/shift/name.js index 77c18ea51a7..0f5969cdf06 100644 --- a/test/built-ins/Array/prototype/shift/name.js +++ b/test/built-ins/Array/prototype/shift/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.shift.name, "shift"); - -verifyNotEnumerable(Array.prototype.shift, "name"); -verifyNotWritable(Array.prototype.shift, "name"); -verifyConfigurable(Array.prototype.shift, "name"); +verifyProperty(Array.prototype.shift, "name", { + value: "shift", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/slice/length.js b/test/built-ins/Array/prototype/slice/length.js index 314fc6964e8..bdc58bd4213 100644 --- a/test/built-ins/Array/prototype/slice/length.js +++ b/test/built-ins/Array/prototype/slice/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.slice.length, 2); - -verifyNotEnumerable(Array.prototype.slice, 'length'); -verifyNotWritable(Array.prototype.slice, 'length'); -verifyConfigurable(Array.prototype.slice, 'length'); +verifyProperty(Array.prototype.slice, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/slice/name.js b/test/built-ins/Array/prototype/slice/name.js index 29163790eec..56bfb75422b 100644 --- a/test/built-ins/Array/prototype/slice/name.js +++ b/test/built-ins/Array/prototype/slice/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.slice.name, "slice"); - -verifyNotEnumerable(Array.prototype.slice, "name"); -verifyNotWritable(Array.prototype.slice, "name"); -verifyConfigurable(Array.prototype.slice, "name"); +verifyProperty(Array.prototype.slice, "name", { + value: "slice", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/some/length.js b/test/built-ins/Array/prototype/some/length.js index e52105a07a1..1f03a989555 100644 --- a/test/built-ins/Array/prototype/some/length.js +++ b/test/built-ins/Array/prototype/some/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.some.length, 1); - -verifyNotEnumerable(Array.prototype.some, 'length'); -verifyNotWritable(Array.prototype.some, 'length'); -verifyConfigurable(Array.prototype.some, 'length'); +verifyProperty(Array.prototype.some, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/some/name.js b/test/built-ins/Array/prototype/some/name.js index dafb1347b27..b02f9293f9d 100644 --- a/test/built-ins/Array/prototype/some/name.js +++ b/test/built-ins/Array/prototype/some/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.some.name, "some"); - -verifyNotEnumerable(Array.prototype.some, "name"); -verifyNotWritable(Array.prototype.some, "name"); -verifyConfigurable(Array.prototype.some, "name"); +verifyProperty(Array.prototype.some, "name", { + value: "some", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/sort/length.js b/test/built-ins/Array/prototype/sort/length.js index 6fe160963a8..2ef9f19eb7a 100644 --- a/test/built-ins/Array/prototype/sort/length.js +++ b/test/built-ins/Array/prototype/sort/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.sort.length, 1); - -verifyNotEnumerable(Array.prototype.sort, 'length'); -verifyNotWritable(Array.prototype.sort, 'length'); -verifyConfigurable(Array.prototype.sort, 'length'); +verifyProperty(Array.prototype.sort, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/sort/name.js b/test/built-ins/Array/prototype/sort/name.js index a1dba0e6963..16d4df5ebdc 100644 --- a/test/built-ins/Array/prototype/sort/name.js +++ b/test/built-ins/Array/prototype/sort/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.sort.name, "sort"); - -verifyNotEnumerable(Array.prototype.sort, "name"); -verifyNotWritable(Array.prototype.sort, "name"); -verifyConfigurable(Array.prototype.sort, "name"); +verifyProperty(Array.prototype.sort, "name", { + value: "sort", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/splice/length.js b/test/built-ins/Array/prototype/splice/length.js index c77eb7eca41..72c2ca546cc 100644 --- a/test/built-ins/Array/prototype/splice/length.js +++ b/test/built-ins/Array/prototype/splice/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.splice.length, 2); - -verifyNotEnumerable(Array.prototype.splice, 'length'); -verifyNotWritable(Array.prototype.splice, 'length'); -verifyConfigurable(Array.prototype.splice, 'length'); +verifyProperty(Array.prototype.splice, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/splice/name.js b/test/built-ins/Array/prototype/splice/name.js index 7d102ad0d2d..87dbe3bd64b 100644 --- a/test/built-ins/Array/prototype/splice/name.js +++ b/test/built-ins/Array/prototype/splice/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.splice.name, "splice"); - -verifyNotEnumerable(Array.prototype.splice, "name"); -verifyNotWritable(Array.prototype.splice, "name"); -verifyConfigurable(Array.prototype.splice, "name"); +verifyProperty(Array.prototype.splice, "name", { + value: "splice", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/toLocaleString/length.js b/test/built-ins/Array/prototype/toLocaleString/length.js index c96a608209e..5704d764862 100644 --- a/test/built-ins/Array/prototype/toLocaleString/length.js +++ b/test/built-ins/Array/prototype/toLocaleString/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.toLocaleString.length, 0); - -verifyNotEnumerable(Array.prototype.toLocaleString, 'length'); -verifyNotWritable(Array.prototype.toLocaleString, 'length'); -verifyConfigurable(Array.prototype.toLocaleString, 'length'); +verifyProperty(Array.prototype.toLocaleString, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/toLocaleString/name.js b/test/built-ins/Array/prototype/toLocaleString/name.js index effd39260db..f96cdf2caa6 100644 --- a/test/built-ins/Array/prototype/toLocaleString/name.js +++ b/test/built-ins/Array/prototype/toLocaleString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.toLocaleString.name, "toLocaleString"); - -verifyNotEnumerable(Array.prototype.toLocaleString, "name"); -verifyNotWritable(Array.prototype.toLocaleString, "name"); -verifyConfigurable(Array.prototype.toLocaleString, "name"); +verifyProperty(Array.prototype.toLocaleString, "name", { + value: "toLocaleString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/toString/length.js b/test/built-ins/Array/prototype/toString/length.js index 23223133896..afa57a44ef0 100644 --- a/test/built-ins/Array/prototype/toString/length.js +++ b/test/built-ins/Array/prototype/toString/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.toString.length, 0); - -verifyNotEnumerable(Array.prototype.toString, "length"); -verifyNotWritable(Array.prototype.toString, "length"); -verifyConfigurable(Array.prototype.toString, "length"); +verifyProperty(Array.prototype.toString, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/toString/name.js b/test/built-ins/Array/prototype/toString/name.js index 62e92865d5b..82da5862d4e 100644 --- a/test/built-ins/Array/prototype/toString/name.js +++ b/test/built-ins/Array/prototype/toString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.toString.name, "toString"); - -verifyNotEnumerable(Array.prototype.toString, "name"); -verifyNotWritable(Array.prototype.toString, "name"); -verifyConfigurable(Array.prototype.toString, "name"); +verifyProperty(Array.prototype.toString, "name", { + value: "toString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/unshift/length.js b/test/built-ins/Array/prototype/unshift/length.js index 05305348ec8..791ce31bdbe 100644 --- a/test/built-ins/Array/prototype/unshift/length.js +++ b/test/built-ins/Array/prototype/unshift/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.unshift.length, 1); - -verifyNotEnumerable(Array.prototype.unshift, 'length'); -verifyNotWritable(Array.prototype.unshift, 'length'); -verifyConfigurable(Array.prototype.unshift, 'length'); +verifyProperty(Array.prototype.unshift, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/unshift/name.js b/test/built-ins/Array/prototype/unshift/name.js index e912248e95a..82a917fe39c 100644 --- a/test/built-ins/Array/prototype/unshift/name.js +++ b/test/built-ins/Array/prototype/unshift/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.unshift.name, "unshift"); - -verifyNotEnumerable(Array.prototype.unshift, "name"); -verifyNotWritable(Array.prototype.unshift, "name"); -verifyConfigurable(Array.prototype.unshift, "name"); +verifyProperty(Array.prototype.unshift, "name", { + value: "unshift", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/values/length.js b/test/built-ins/Array/prototype/values/length.js index a6411787265..e0a8be96beb 100644 --- a/test/built-ins/Array/prototype/values/length.js +++ b/test/built-ins/Array/prototype/values/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.values.length, 0); - -verifyNotEnumerable(Array.prototype.values, 'length'); -verifyNotWritable(Array.prototype.values, 'length'); -verifyConfigurable(Array.prototype.values, 'length'); +verifyProperty(Array.prototype.values, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Array/prototype/values/name.js b/test/built-ins/Array/prototype/values/name.js index 0618b508135..381d3fe2b08 100644 --- a/test/built-ins/Array/prototype/values/name.js +++ b/test/built-ins/Array/prototype/values/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Array.prototype.values.name, 'values'); - -verifyNotEnumerable(Array.prototype.values, 'name'); -verifyNotWritable(Array.prototype.values, 'name'); -verifyConfigurable(Array.prototype.values, 'name'); +verifyProperty(Array.prototype.values, "name", { + value: "values", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayBuffer/Symbol.species/length.js b/test/built-ins/ArrayBuffer/Symbol.species/length.js index 9443da03b52..dcca96b3f2f 100644 --- a/test/built-ins/ArrayBuffer/Symbol.species/length.js +++ b/test/built-ins/ArrayBuffer/Symbol.species/length.js @@ -25,8 +25,9 @@ features: [Symbol.species] var desc = Object.getOwnPropertyDescriptor(ArrayBuffer, Symbol.species); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayBuffer/Symbol.species/symbol-species-name.js b/test/built-ins/ArrayBuffer/Symbol.species/symbol-species-name.js index 87e13511897..151725eaa4e 100644 --- a/test/built-ins/ArrayBuffer/Symbol.species/symbol-species-name.js +++ b/test/built-ins/ArrayBuffer/Symbol.species/symbol-species-name.js @@ -15,11 +15,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(ArrayBuffer, Symbol.species); -assert.sameValue( - descriptor.get.name, - 'get [Symbol.species]' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get [Symbol.species]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayBuffer/isView/length.js b/test/built-ins/ArrayBuffer/isView/length.js index 2c2408c1d26..8670244d7d8 100644 --- a/test/built-ins/ArrayBuffer/isView/length.js +++ b/test/built-ins/ArrayBuffer/isView/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(ArrayBuffer.isView.length, 1); - -verifyNotEnumerable(ArrayBuffer.isView, "length"); -verifyNotWritable(ArrayBuffer.isView, "length"); -verifyConfigurable(ArrayBuffer.isView, "length"); +verifyProperty(ArrayBuffer.isView, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayBuffer/isView/name.js b/test/built-ins/ArrayBuffer/isView/name.js index de8d7902f37..46d167274f6 100644 --- a/test/built-ins/ArrayBuffer/isView/name.js +++ b/test/built-ins/ArrayBuffer/isView/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(ArrayBuffer.isView.name, "isView"); - -verifyNotEnumerable(ArrayBuffer.isView, "name"); -verifyNotWritable(ArrayBuffer.isView, "name"); -verifyConfigurable(ArrayBuffer.isView, "name"); +verifyProperty(ArrayBuffer.isView, "name", { + value: "isView", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayBuffer/prototype/byteLength/length.js b/test/built-ins/ArrayBuffer/prototype/byteLength/length.js index 8c0d4e50d86..1e0d188ab43 100644 --- a/test/built-ins/ArrayBuffer/prototype/byteLength/length.js +++ b/test/built-ins/ArrayBuffer/prototype/byteLength/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var desc = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayBuffer/prototype/byteLength/name.js b/test/built-ins/ArrayBuffer/prototype/byteLength/name.js index 76e77087058..11377d7014f 100644 --- a/test/built-ins/ArrayBuffer/prototype/byteLength/name.js +++ b/test/built-ins/ArrayBuffer/prototype/byteLength/name.js @@ -17,11 +17,9 @@ var descriptor = Object.getOwnPropertyDescriptor( ArrayBuffer.prototype, 'byteLength' ); -assert.sameValue( - descriptor.get.name, 'get byteLength', - 'The value of `descriptor.get.name` is `"get byteLength"`' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get byteLength", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayBuffer/prototype/slice/length.js b/test/built-ins/ArrayBuffer/prototype/slice/length.js index 3c09fe0ae6c..0689d53380b 100644 --- a/test/built-ins/ArrayBuffer/prototype/slice/length.js +++ b/test/built-ins/ArrayBuffer/prototype/slice/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(ArrayBuffer.prototype.slice.length, 2); - -verifyNotEnumerable(ArrayBuffer.prototype.slice, "length"); -verifyNotWritable(ArrayBuffer.prototype.slice, "length"); -verifyConfigurable(ArrayBuffer.prototype.slice, "length"); +verifyProperty(ArrayBuffer.prototype.slice, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayBuffer/prototype/slice/name.js b/test/built-ins/ArrayBuffer/prototype/slice/name.js index 475b909faad..d50c740928f 100644 --- a/test/built-ins/ArrayBuffer/prototype/slice/name.js +++ b/test/built-ins/ArrayBuffer/prototype/slice/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(ArrayBuffer.prototype.slice.name, "slice"); - -verifyNotEnumerable(ArrayBuffer.prototype.slice, "name"); -verifyNotWritable(ArrayBuffer.prototype.slice, "name"); -verifyConfigurable(ArrayBuffer.prototype.slice, "name"); +verifyProperty(ArrayBuffer.prototype.slice, "name", { + value: "slice", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayIteratorPrototype/next/length.js b/test/built-ins/ArrayIteratorPrototype/next/length.js index 69e81cb004c..6a7c5d4c33c 100644 --- a/test/built-ins/ArrayIteratorPrototype/next/length.js +++ b/test/built-ins/ArrayIteratorPrototype/next/length.js @@ -25,8 +25,9 @@ features: [Symbol.iterator] var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]()); -assert.sameValue(ArrayIteratorProto.next.length, 0); - -verifyNotEnumerable(ArrayIteratorProto.next, "length"); -verifyNotWritable(ArrayIteratorProto.next, "length"); -verifyConfigurable(ArrayIteratorProto.next, "length"); +verifyProperty(ArrayIteratorProto.next, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ArrayIteratorPrototype/next/name.js b/test/built-ins/ArrayIteratorPrototype/next/name.js index 01815558bff..d2df288b40b 100644 --- a/test/built-ins/ArrayIteratorPrototype/next/name.js +++ b/test/built-ins/ArrayIteratorPrototype/next/name.js @@ -22,8 +22,9 @@ features: [Symbol.iterator] var ArrayIteratorProto = Object.getPrototypeOf([][Symbol.iterator]()); -assert.sameValue(ArrayIteratorProto.next.name, "next"); - -verifyNotEnumerable(ArrayIteratorProto.next, "name"); -verifyNotWritable(ArrayIteratorProto.next, "name"); -verifyConfigurable(ArrayIteratorProto.next, "name"); +verifyProperty(ArrayIteratorProto.next, "name", { + value: "next", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/AsyncFunction/AsyncFunction-length.js b/test/built-ins/AsyncFunction/AsyncFunction-length.js index c6ba9360eb7..29b152bfe15 100644 --- a/test/built-ins/AsyncFunction/AsyncFunction-length.js +++ b/test/built-ins/AsyncFunction/AsyncFunction-length.js @@ -10,7 +10,9 @@ includes: [propertyHelper.js] ---*/ var AsyncFunction = async function foo() {}.constructor; -assert.sameValue(AsyncFunction.length, 1); -verifyNotWritable(AsyncFunction, 'length'); -verifyNotEnumerable(AsyncFunction, 'length'); -verifyConfigurable(AsyncFunction, 'length'); +verifyProperty(AsyncFunction, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/AsyncFunction/AsyncFunction-name.js b/test/built-ins/AsyncFunction/AsyncFunction-name.js index 637d1ece14a..0b4e48ae071 100644 --- a/test/built-ins/AsyncFunction/AsyncFunction-name.js +++ b/test/built-ins/AsyncFunction/AsyncFunction-name.js @@ -10,7 +10,9 @@ includes: [propertyHelper.js] ---*/ var AsyncFunction = async function foo() {}.constructor; -assert.sameValue(AsyncFunction.name, "AsyncFunction"); -verifyNotWritable(AsyncFunction, "name"); -verifyNotEnumerable(AsyncFunction, "name"); -verifyConfigurable(AsyncFunction, "name"); +verifyProperty(AsyncFunction, "name", { + value: "AsyncFunction", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/AsyncFunction/instance-has-name.js b/test/built-ins/AsyncFunction/instance-has-name.js index 1def25c8817..b5f693d4129 100644 --- a/test/built-ins/AsyncFunction/instance-has-name.js +++ b/test/built-ins/AsyncFunction/instance-has-name.js @@ -10,7 +10,9 @@ includes: [propertyHelper.js] async function foo() {}; -assert.sameValue(foo.name, "foo"); -verifyNotWritable(foo, "name"); -verifyNotEnumerable(foo, "name"); -verifyConfigurable(foo, "name"); +verifyProperty(foo, "name", { + value: "foo", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Boolean/prototype/toString/length.js b/test/built-ins/Boolean/prototype/toString/length.js index 4e5e4f415eb..f166f0ead8f 100644 --- a/test/built-ins/Boolean/prototype/toString/length.js +++ b/test/built-ins/Boolean/prototype/toString/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Boolean.prototype.toString.length, 0); - -verifyNotEnumerable(Boolean.prototype.toString, "length"); -verifyNotWritable(Boolean.prototype.toString, "length"); -verifyConfigurable(Boolean.prototype.toString, "length"); +verifyProperty(Boolean.prototype.toString, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Boolean/prototype/toString/name.js b/test/built-ins/Boolean/prototype/toString/name.js index cce5f027854..534e2b3d600 100644 --- a/test/built-ins/Boolean/prototype/toString/name.js +++ b/test/built-ins/Boolean/prototype/toString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Boolean.prototype.toString.name, "toString"); - -verifyNotEnumerable(Boolean.prototype.toString, "name"); -verifyNotWritable(Boolean.prototype.toString, "name"); -verifyConfigurable(Boolean.prototype.toString, "name"); +verifyProperty(Boolean.prototype.toString, "name", { + value: "toString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Boolean/prototype/valueOf/length.js b/test/built-ins/Boolean/prototype/valueOf/length.js index f87fc20c8be..e037d903b09 100644 --- a/test/built-ins/Boolean/prototype/valueOf/length.js +++ b/test/built-ins/Boolean/prototype/valueOf/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Boolean.prototype.valueOf.length, 0); - -verifyNotEnumerable(Boolean.prototype.valueOf, "length"); -verifyNotWritable(Boolean.prototype.valueOf, "length"); -verifyConfigurable(Boolean.prototype.valueOf, "length"); +verifyProperty(Boolean.prototype.valueOf, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Boolean/prototype/valueOf/name.js b/test/built-ins/Boolean/prototype/valueOf/name.js index afe244119e9..bde6e6d9846 100644 --- a/test/built-ins/Boolean/prototype/valueOf/name.js +++ b/test/built-ins/Boolean/prototype/valueOf/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Boolean.prototype.valueOf.name, "valueOf"); - -verifyNotEnumerable(Boolean.prototype.valueOf, "name"); -verifyNotWritable(Boolean.prototype.valueOf, "name"); -verifyConfigurable(Boolean.prototype.valueOf, "name"); +verifyProperty(Boolean.prototype.valueOf, "name", { + value: "valueOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/name.js b/test/built-ins/DataView/name.js index 750f343e62d..39e18632643 100644 --- a/test/built-ins/DataView/name.js +++ b/test/built-ins/DataView/name.js @@ -8,8 +8,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.name, "DataView", "The value of `DataView.name` is `'DataView'`"); - -verifyNotEnumerable(DataView, "name"); -verifyNotWritable(DataView, "name"); -verifyConfigurable(DataView, "name"); +verifyProperty(DataView, "name", { + value: "DataView", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/buffer/length.js b/test/built-ins/DataView/prototype/buffer/length.js index 8535518a13c..8293eb0792c 100644 --- a/test/built-ins/DataView/prototype/buffer/length.js +++ b/test/built-ins/DataView/prototype/buffer/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var desc = Object.getOwnPropertyDescriptor(DataView.prototype, "buffer"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/buffer/name.js b/test/built-ins/DataView/prototype/buffer/name.js index cd2f20b1140..e7094ebd3a0 100644 --- a/test/built-ins/DataView/prototype/buffer/name.js +++ b/test/built-ins/DataView/prototype/buffer/name.js @@ -17,11 +17,9 @@ var descriptor = Object.getOwnPropertyDescriptor( DataView.prototype, 'buffer' ); -assert.sameValue( - descriptor.get.name, 'get buffer', - 'The value of `descriptor.get.name` is `"get buffer"`' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get buffer", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/byteLength/length.js b/test/built-ins/DataView/prototype/byteLength/length.js index ec6b247d28d..01486294364 100644 --- a/test/built-ins/DataView/prototype/byteLength/length.js +++ b/test/built-ins/DataView/prototype/byteLength/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var desc = Object.getOwnPropertyDescriptor(DataView.prototype, "byteLength"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/byteLength/name.js b/test/built-ins/DataView/prototype/byteLength/name.js index bbdd2a59d9b..459fcec50cd 100644 --- a/test/built-ins/DataView/prototype/byteLength/name.js +++ b/test/built-ins/DataView/prototype/byteLength/name.js @@ -17,11 +17,9 @@ var descriptor = Object.getOwnPropertyDescriptor( DataView.prototype, 'byteLength' ); -assert.sameValue( - descriptor.get.name, 'get byteLength', - 'The value of `descriptor.get.name` is `"get byteLength"`' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get byteLength", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/byteOffset/length.js b/test/built-ins/DataView/prototype/byteOffset/length.js index ede61c2d894..d99a7c06cd3 100644 --- a/test/built-ins/DataView/prototype/byteOffset/length.js +++ b/test/built-ins/DataView/prototype/byteOffset/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var desc = Object.getOwnPropertyDescriptor(DataView.prototype, "byteOffset"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/byteOffset/name.js b/test/built-ins/DataView/prototype/byteOffset/name.js index a2d6d2ca957..04c859e7255 100644 --- a/test/built-ins/DataView/prototype/byteOffset/name.js +++ b/test/built-ins/DataView/prototype/byteOffset/name.js @@ -17,11 +17,9 @@ var descriptor = Object.getOwnPropertyDescriptor( DataView.prototype, 'byteOffset' ); -assert.sameValue( - descriptor.get.name, 'get byteOffset', - 'The value of `descriptor.get.name` is `"get byteOffset"`' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get byteOffset", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getFloat32/length.js b/test/built-ins/DataView/prototype/getFloat32/length.js index fa353212ace..2248077fd7d 100644 --- a/test/built-ins/DataView/prototype/getFloat32/length.js +++ b/test/built-ins/DataView/prototype/getFloat32/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getFloat32.length, 1); - -verifyNotEnumerable(DataView.prototype.getFloat32, "length"); -verifyNotWritable(DataView.prototype.getFloat32, "length"); -verifyConfigurable(DataView.prototype.getFloat32, "length"); +verifyProperty(DataView.prototype.getFloat32, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getFloat32/name.js b/test/built-ins/DataView/prototype/getFloat32/name.js index d247c1d99a1..1ca7fff6eaa 100644 --- a/test/built-ins/DataView/prototype/getFloat32/name.js +++ b/test/built-ins/DataView/prototype/getFloat32/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getFloat32.name, "getFloat32"); - -verifyNotEnumerable(DataView.prototype.getFloat32, "name"); -verifyNotWritable(DataView.prototype.getFloat32, "name"); -verifyConfigurable(DataView.prototype.getFloat32, "name"); +verifyProperty(DataView.prototype.getFloat32, "name", { + value: "getFloat32", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getFloat64/length.js b/test/built-ins/DataView/prototype/getFloat64/length.js index 5e3688e588b..a11465ac515 100644 --- a/test/built-ins/DataView/prototype/getFloat64/length.js +++ b/test/built-ins/DataView/prototype/getFloat64/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getFloat64.length, 1); - -verifyNotEnumerable(DataView.prototype.getFloat64, "length"); -verifyNotWritable(DataView.prototype.getFloat64, "length"); -verifyConfigurable(DataView.prototype.getFloat64, "length"); +verifyProperty(DataView.prototype.getFloat64, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getFloat64/name.js b/test/built-ins/DataView/prototype/getFloat64/name.js index 74361047ff3..70ff1ea919c 100644 --- a/test/built-ins/DataView/prototype/getFloat64/name.js +++ b/test/built-ins/DataView/prototype/getFloat64/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getFloat64.name, "getFloat64"); - -verifyNotEnumerable(DataView.prototype.getFloat64, "name"); -verifyNotWritable(DataView.prototype.getFloat64, "name"); -verifyConfigurable(DataView.prototype.getFloat64, "name"); +verifyProperty(DataView.prototype.getFloat64, "name", { + value: "getFloat64", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getInt16/length.js b/test/built-ins/DataView/prototype/getInt16/length.js index 062651e6485..129946e6cd2 100644 --- a/test/built-ins/DataView/prototype/getInt16/length.js +++ b/test/built-ins/DataView/prototype/getInt16/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getInt16.length, 1); - -verifyNotEnumerable(DataView.prototype.getInt16, "length"); -verifyNotWritable(DataView.prototype.getInt16, "length"); -verifyConfigurable(DataView.prototype.getInt16, "length"); +verifyProperty(DataView.prototype.getInt16, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getInt16/name.js b/test/built-ins/DataView/prototype/getInt16/name.js index 2aaa1a8efe4..05f153de0bc 100644 --- a/test/built-ins/DataView/prototype/getInt16/name.js +++ b/test/built-ins/DataView/prototype/getInt16/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getInt16.name, "getInt16"); - -verifyNotEnumerable(DataView.prototype.getInt16, "name"); -verifyNotWritable(DataView.prototype.getInt16, "name"); -verifyConfigurable(DataView.prototype.getInt16, "name"); +verifyProperty(DataView.prototype.getInt16, "name", { + value: "getInt16", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getInt32/length.js b/test/built-ins/DataView/prototype/getInt32/length.js index 8d6f458eafe..7b8977cb926 100644 --- a/test/built-ins/DataView/prototype/getInt32/length.js +++ b/test/built-ins/DataView/prototype/getInt32/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getInt32.length, 1); - -verifyNotEnumerable(DataView.prototype.getInt32, "length"); -verifyNotWritable(DataView.prototype.getInt32, "length"); -verifyConfigurable(DataView.prototype.getInt32, "length"); +verifyProperty(DataView.prototype.getInt32, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getInt32/name.js b/test/built-ins/DataView/prototype/getInt32/name.js index 884fb05c74b..5fc4d761cdf 100644 --- a/test/built-ins/DataView/prototype/getInt32/name.js +++ b/test/built-ins/DataView/prototype/getInt32/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getInt32.name, "getInt32"); - -verifyNotEnumerable(DataView.prototype.getInt32, "name"); -verifyNotWritable(DataView.prototype.getInt32, "name"); -verifyConfigurable(DataView.prototype.getInt32, "name"); +verifyProperty(DataView.prototype.getInt32, "name", { + value: "getInt32", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getInt8/length.js b/test/built-ins/DataView/prototype/getInt8/length.js index a219c50e29e..d633916b9b5 100644 --- a/test/built-ins/DataView/prototype/getInt8/length.js +++ b/test/built-ins/DataView/prototype/getInt8/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getInt8.length, 1); - -verifyNotEnumerable(DataView.prototype.getInt8, "length"); -verifyNotWritable(DataView.prototype.getInt8, "length"); -verifyConfigurable(DataView.prototype.getInt8, "length"); +verifyProperty(DataView.prototype.getInt8, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getInt8/name.js b/test/built-ins/DataView/prototype/getInt8/name.js index 3b2933f7971..4ad7420c9ee 100644 --- a/test/built-ins/DataView/prototype/getInt8/name.js +++ b/test/built-ins/DataView/prototype/getInt8/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getInt8.name, "getInt8"); - -verifyNotEnumerable(DataView.prototype.getInt8, "name"); -verifyNotWritable(DataView.prototype.getInt8, "name"); -verifyConfigurable(DataView.prototype.getInt8, "name"); +verifyProperty(DataView.prototype.getInt8, "name", { + value: "getInt8", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getUint16/length.js b/test/built-ins/DataView/prototype/getUint16/length.js index b6308c0a5c5..f3955f0b62e 100644 --- a/test/built-ins/DataView/prototype/getUint16/length.js +++ b/test/built-ins/DataView/prototype/getUint16/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getUint16.length, 1); - -verifyNotEnumerable(DataView.prototype.getUint16, "length"); -verifyNotWritable(DataView.prototype.getUint16, "length"); -verifyConfigurable(DataView.prototype.getUint16, "length"); +verifyProperty(DataView.prototype.getUint16, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getUint16/name.js b/test/built-ins/DataView/prototype/getUint16/name.js index 25621c10410..4888762b60a 100644 --- a/test/built-ins/DataView/prototype/getUint16/name.js +++ b/test/built-ins/DataView/prototype/getUint16/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getUint16.name, "getUint16"); - -verifyNotEnumerable(DataView.prototype.getUint16, "name"); -verifyNotWritable(DataView.prototype.getUint16, "name"); -verifyConfigurable(DataView.prototype.getUint16, "name"); +verifyProperty(DataView.prototype.getUint16, "name", { + value: "getUint16", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getUint32/length.js b/test/built-ins/DataView/prototype/getUint32/length.js index 3633b8f7fbe..1a94d7fcf54 100644 --- a/test/built-ins/DataView/prototype/getUint32/length.js +++ b/test/built-ins/DataView/prototype/getUint32/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getUint32.length, 1); - -verifyNotEnumerable(DataView.prototype.getUint32, "length"); -verifyNotWritable(DataView.prototype.getUint32, "length"); -verifyConfigurable(DataView.prototype.getUint32, "length"); +verifyProperty(DataView.prototype.getUint32, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getUint32/name.js b/test/built-ins/DataView/prototype/getUint32/name.js index b452f2706b0..531a9f6fc94 100644 --- a/test/built-ins/DataView/prototype/getUint32/name.js +++ b/test/built-ins/DataView/prototype/getUint32/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getUint32.name, "getUint32"); - -verifyNotEnumerable(DataView.prototype.getUint32, "name"); -verifyNotWritable(DataView.prototype.getUint32, "name"); -verifyConfigurable(DataView.prototype.getUint32, "name"); +verifyProperty(DataView.prototype.getUint32, "name", { + value: "getUint32", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getUint8/length.js b/test/built-ins/DataView/prototype/getUint8/length.js index 57133896986..526b09a23f8 100644 --- a/test/built-ins/DataView/prototype/getUint8/length.js +++ b/test/built-ins/DataView/prototype/getUint8/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getUint8.length, 1); - -verifyNotEnumerable(DataView.prototype.getUint8, "length"); -verifyNotWritable(DataView.prototype.getUint8, "length"); -verifyConfigurable(DataView.prototype.getUint8, "length"); +verifyProperty(DataView.prototype.getUint8, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getUint8/name.js b/test/built-ins/DataView/prototype/getUint8/name.js index f4e06aca7a6..d16deed2e45 100644 --- a/test/built-ins/DataView/prototype/getUint8/name.js +++ b/test/built-ins/DataView/prototype/getUint8/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getUint8.name, "getUint8"); - -verifyNotEnumerable(DataView.prototype.getUint8, "name"); -verifyNotWritable(DataView.prototype.getUint8, "name"); -verifyConfigurable(DataView.prototype.getUint8, "name"); +verifyProperty(DataView.prototype.getUint8, "name", { + value: "getUint8", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setFloat32/length.js b/test/built-ins/DataView/prototype/setFloat32/length.js index 1726c2bb4f1..2a1f3443996 100644 --- a/test/built-ins/DataView/prototype/setFloat32/length.js +++ b/test/built-ins/DataView/prototype/setFloat32/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setFloat32.length, 2); - -verifyNotEnumerable(DataView.prototype.setFloat32, "length"); -verifyNotWritable(DataView.prototype.setFloat32, "length"); -verifyConfigurable(DataView.prototype.setFloat32, "length"); +verifyProperty(DataView.prototype.setFloat32, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setFloat32/name.js b/test/built-ins/DataView/prototype/setFloat32/name.js index 339a80438ac..ec777e243b9 100644 --- a/test/built-ins/DataView/prototype/setFloat32/name.js +++ b/test/built-ins/DataView/prototype/setFloat32/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setFloat32.name, "setFloat32"); - -verifyNotEnumerable(DataView.prototype.setFloat32, "name"); -verifyNotWritable(DataView.prototype.setFloat32, "name"); -verifyConfigurable(DataView.prototype.setFloat32, "name"); +verifyProperty(DataView.prototype.setFloat32, "name", { + value: "setFloat32", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setFloat64/length.js b/test/built-ins/DataView/prototype/setFloat64/length.js index fea45e315f0..397794beb57 100644 --- a/test/built-ins/DataView/prototype/setFloat64/length.js +++ b/test/built-ins/DataView/prototype/setFloat64/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setFloat64.length, 2); - -verifyNotEnumerable(DataView.prototype.setFloat64, "length"); -verifyNotWritable(DataView.prototype.setFloat64, "length"); -verifyConfigurable(DataView.prototype.setFloat64, "length"); +verifyProperty(DataView.prototype.setFloat64, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setFloat64/name.js b/test/built-ins/DataView/prototype/setFloat64/name.js index a054f5d947f..7a965528ff1 100644 --- a/test/built-ins/DataView/prototype/setFloat64/name.js +++ b/test/built-ins/DataView/prototype/setFloat64/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setFloat64.name, "setFloat64"); - -verifyNotEnumerable(DataView.prototype.setFloat64, "name"); -verifyNotWritable(DataView.prototype.setFloat64, "name"); -verifyConfigurable(DataView.prototype.setFloat64, "name"); +verifyProperty(DataView.prototype.setFloat64, "name", { + value: "setFloat64", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setInt16/length.js b/test/built-ins/DataView/prototype/setInt16/length.js index 423ad648821..7b7d1969139 100644 --- a/test/built-ins/DataView/prototype/setInt16/length.js +++ b/test/built-ins/DataView/prototype/setInt16/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setInt16.length, 2); - -verifyNotEnumerable(DataView.prototype.setInt16, "length"); -verifyNotWritable(DataView.prototype.setInt16, "length"); -verifyConfigurable(DataView.prototype.setInt16, "length"); +verifyProperty(DataView.prototype.setInt16, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setInt16/name.js b/test/built-ins/DataView/prototype/setInt16/name.js index 3a3b2d02279..f19316313e3 100644 --- a/test/built-ins/DataView/prototype/setInt16/name.js +++ b/test/built-ins/DataView/prototype/setInt16/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setInt16.name, "setInt16"); - -verifyNotEnumerable(DataView.prototype.setInt16, "name"); -verifyNotWritable(DataView.prototype.setInt16, "name"); -verifyConfigurable(DataView.prototype.setInt16, "name"); +verifyProperty(DataView.prototype.setInt16, "name", { + value: "setInt16", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setInt32/length.js b/test/built-ins/DataView/prototype/setInt32/length.js index 466562ccaf7..20f478191b1 100644 --- a/test/built-ins/DataView/prototype/setInt32/length.js +++ b/test/built-ins/DataView/prototype/setInt32/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setInt32.length, 2); - -verifyNotEnumerable(DataView.prototype.setInt32, "length"); -verifyNotWritable(DataView.prototype.setInt32, "length"); -verifyConfigurable(DataView.prototype.setInt32, "length"); +verifyProperty(DataView.prototype.setInt32, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setInt32/name.js b/test/built-ins/DataView/prototype/setInt32/name.js index aae55451435..07370fac0cc 100644 --- a/test/built-ins/DataView/prototype/setInt32/name.js +++ b/test/built-ins/DataView/prototype/setInt32/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setInt32.name, "setInt32"); - -verifyNotEnumerable(DataView.prototype.setInt32, "name"); -verifyNotWritable(DataView.prototype.setInt32, "name"); -verifyConfigurable(DataView.prototype.setInt32, "name"); +verifyProperty(DataView.prototype.setInt32, "name", { + value: "setInt32", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setInt8/length.js b/test/built-ins/DataView/prototype/setInt8/length.js index 78df74eaaa8..003da6d4ffe 100644 --- a/test/built-ins/DataView/prototype/setInt8/length.js +++ b/test/built-ins/DataView/prototype/setInt8/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setInt8.length, 2); - -verifyNotEnumerable(DataView.prototype.setInt8, "length"); -verifyNotWritable(DataView.prototype.setInt8, "length"); -verifyConfigurable(DataView.prototype.setInt8, "length"); +verifyProperty(DataView.prototype.setInt8, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setInt8/name.js b/test/built-ins/DataView/prototype/setInt8/name.js index fbc3cc2c8f1..bbda93cf3d7 100644 --- a/test/built-ins/DataView/prototype/setInt8/name.js +++ b/test/built-ins/DataView/prototype/setInt8/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setInt8.name, "setInt8"); - -verifyNotEnumerable(DataView.prototype.setInt8, "name"); -verifyNotWritable(DataView.prototype.setInt8, "name"); -verifyConfigurable(DataView.prototype.setInt8, "name"); +verifyProperty(DataView.prototype.setInt8, "name", { + value: "setInt8", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setUint16/length.js b/test/built-ins/DataView/prototype/setUint16/length.js index 083c1784684..6539f109013 100644 --- a/test/built-ins/DataView/prototype/setUint16/length.js +++ b/test/built-ins/DataView/prototype/setUint16/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setUint16.length, 2); - -verifyNotEnumerable(DataView.prototype.setUint16, "length"); -verifyNotWritable(DataView.prototype.setUint16, "length"); -verifyConfigurable(DataView.prototype.setUint16, "length"); +verifyProperty(DataView.prototype.setUint16, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setUint16/name.js b/test/built-ins/DataView/prototype/setUint16/name.js index 8b2710092e4..d24cc704a41 100644 --- a/test/built-ins/DataView/prototype/setUint16/name.js +++ b/test/built-ins/DataView/prototype/setUint16/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setUint16.name, "setUint16"); - -verifyNotEnumerable(DataView.prototype.setUint16, "name"); -verifyNotWritable(DataView.prototype.setUint16, "name"); -verifyConfigurable(DataView.prototype.setUint16, "name"); +verifyProperty(DataView.prototype.setUint16, "name", { + value: "setUint16", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setUint32/length.js b/test/built-ins/DataView/prototype/setUint32/length.js index 1f4c6186c4a..1878258cb46 100644 --- a/test/built-ins/DataView/prototype/setUint32/length.js +++ b/test/built-ins/DataView/prototype/setUint32/length.js @@ -23,8 +23,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setUint32.length, 2); - -verifyNotEnumerable(DataView.prototype.setUint32, "length"); -verifyNotWritable(DataView.prototype.setUint32, "length"); -verifyConfigurable(DataView.prototype.setUint32, "length"); +verifyProperty(DataView.prototype.setUint32, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setUint32/name.js b/test/built-ins/DataView/prototype/setUint32/name.js index ec64e64b2ab..12d31497d55 100644 --- a/test/built-ins/DataView/prototype/setUint32/name.js +++ b/test/built-ins/DataView/prototype/setUint32/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setUint32.name, "setUint32"); - -verifyNotEnumerable(DataView.prototype.setUint32, "name"); -verifyNotWritable(DataView.prototype.setUint32, "name"); -verifyConfigurable(DataView.prototype.setUint32, "name"); +verifyProperty(DataView.prototype.setUint32, "name", { + value: "setUint32", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setUint8/length.js b/test/built-ins/DataView/prototype/setUint8/length.js index 58bbf425cb2..f0b60cc3744 100644 --- a/test/built-ins/DataView/prototype/setUint8/length.js +++ b/test/built-ins/DataView/prototype/setUint8/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setUint8.length, 2); - -verifyNotEnumerable(DataView.prototype.setUint8, "length"); -verifyNotWritable(DataView.prototype.setUint8, "length"); -verifyConfigurable(DataView.prototype.setUint8, "length"); +verifyProperty(DataView.prototype.setUint8, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setUint8/name.js b/test/built-ins/DataView/prototype/setUint8/name.js index 7576f4f5ba7..91fc8b20eca 100644 --- a/test/built-ins/DataView/prototype/setUint8/name.js +++ b/test/built-ins/DataView/prototype/setUint8/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setUint8.name, "setUint8"); - -verifyNotEnumerable(DataView.prototype.setUint8, "name"); -verifyNotWritable(DataView.prototype.setUint8, "name"); -verifyConfigurable(DataView.prototype.setUint8, "name"); +verifyProperty(DataView.prototype.setUint8, "name", { + value: "setUint8", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/UTC/name.js b/test/built-ins/Date/UTC/name.js index 52fcbc2d6e0..3c7dfe9dfb3 100644 --- a/test/built-ins/Date/UTC/name.js +++ b/test/built-ins/Date/UTC/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.UTC.name, "UTC"); - -verifyNotEnumerable(Date.UTC, "name"); -verifyNotWritable(Date.UTC, "name"); -verifyConfigurable(Date.UTC, "name"); +verifyProperty(Date.UTC, "name", { + value: "UTC", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/name.js b/test/built-ins/Date/name.js index 751d0542596..077f9cff725 100644 --- a/test/built-ins/Date/name.js +++ b/test/built-ins/Date/name.js @@ -16,8 +16,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.name, "Date"); - -verifyNotEnumerable(Date, "name"); -verifyNotWritable(Date, "name"); -verifyConfigurable(Date, "name"); +verifyProperty(Date, "name", { + value: "Date", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/now/name.js b/test/built-ins/Date/now/name.js index 6250e89a7bf..dac70784661 100644 --- a/test/built-ins/Date/now/name.js +++ b/test/built-ins/Date/now/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.now.name, "now"); - -verifyNotEnumerable(Date.now, "name"); -verifyNotWritable(Date.now, "name"); -verifyConfigurable(Date.now, "name"); +verifyProperty(Date.now, "name", { + value: "now", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/parse/name.js b/test/built-ins/Date/parse/name.js index a99a75d203e..83e5f996c72 100644 --- a/test/built-ins/Date/parse/name.js +++ b/test/built-ins/Date/parse/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.parse.name, "parse"); - -verifyNotEnumerable(Date.parse, "name"); -verifyNotWritable(Date.parse, "name"); -verifyConfigurable(Date.parse, "name"); +verifyProperty(Date.parse, "name", { + value: "parse", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/Symbol.toPrimitive/length.js b/test/built-ins/Date/prototype/Symbol.toPrimitive/length.js index 3e8c04f918d..c48e89b5dfe 100644 --- a/test/built-ins/Date/prototype/Symbol.toPrimitive/length.js +++ b/test/built-ins/Date/prototype/Symbol.toPrimitive/length.js @@ -20,8 +20,9 @@ features: [Symbol.toPrimitive] includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype[Symbol.toPrimitive].length, 1); - -verifyNotEnumerable(Date.prototype[Symbol.toPrimitive], 'length'); -verifyNotWritable(Date.prototype[Symbol.toPrimitive], 'length'); -verifyConfigurable(Date.prototype[Symbol.toPrimitive], 'length'); +verifyProperty(Date.prototype[Symbol.toPrimitive], "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/Symbol.toPrimitive/name.js b/test/built-ins/Date/prototype/Symbol.toPrimitive/name.js index e34567470f5..51f7989ca0a 100644 --- a/test/built-ins/Date/prototype/Symbol.toPrimitive/name.js +++ b/test/built-ins/Date/prototype/Symbol.toPrimitive/name.js @@ -17,10 +17,9 @@ features: [Symbol.toPrimitive] includes: [propertyHelper.js] ---*/ -assert.sameValue( - Date.prototype[Symbol.toPrimitive].name, '[Symbol.toPrimitive]' -); - -verifyNotEnumerable(Date.prototype[Symbol.toPrimitive], 'name'); -verifyNotWritable(Date.prototype[Symbol.toPrimitive], 'name'); -verifyConfigurable(Date.prototype[Symbol.toPrimitive], 'name'); +verifyProperty(Date.prototype[Symbol.toPrimitive], "name", { + value: "[Symbol.toPrimitive]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getDate/name.js b/test/built-ins/Date/prototype/getDate/name.js index c2e6cc963c6..60d077621b9 100644 --- a/test/built-ins/Date/prototype/getDate/name.js +++ b/test/built-ins/Date/prototype/getDate/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getDate.name, "getDate"); - -verifyNotEnumerable(Date.prototype.getDate, "name"); -verifyNotWritable(Date.prototype.getDate, "name"); -verifyConfigurable(Date.prototype.getDate, "name"); +verifyProperty(Date.prototype.getDate, "name", { + value: "getDate", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getDay/name.js b/test/built-ins/Date/prototype/getDay/name.js index 6dbaa33c5d6..a309bc97626 100644 --- a/test/built-ins/Date/prototype/getDay/name.js +++ b/test/built-ins/Date/prototype/getDay/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getDay.name, "getDay"); - -verifyNotEnumerable(Date.prototype.getDay, "name"); -verifyNotWritable(Date.prototype.getDay, "name"); -verifyConfigurable(Date.prototype.getDay, "name"); +verifyProperty(Date.prototype.getDay, "name", { + value: "getDay", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getFullYear/name.js b/test/built-ins/Date/prototype/getFullYear/name.js index 25c08183056..b7626b074f9 100644 --- a/test/built-ins/Date/prototype/getFullYear/name.js +++ b/test/built-ins/Date/prototype/getFullYear/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getFullYear.name, "getFullYear"); - -verifyNotEnumerable(Date.prototype.getFullYear, "name"); -verifyNotWritable(Date.prototype.getFullYear, "name"); -verifyConfigurable(Date.prototype.getFullYear, "name"); +verifyProperty(Date.prototype.getFullYear, "name", { + value: "getFullYear", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getHours/name.js b/test/built-ins/Date/prototype/getHours/name.js index a874d0d8754..44ec54680ec 100644 --- a/test/built-ins/Date/prototype/getHours/name.js +++ b/test/built-ins/Date/prototype/getHours/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getHours.name, "getHours"); - -verifyNotEnumerable(Date.prototype.getHours, "name"); -verifyNotWritable(Date.prototype.getHours, "name"); -verifyConfigurable(Date.prototype.getHours, "name"); +verifyProperty(Date.prototype.getHours, "name", { + value: "getHours", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getMilliseconds/name.js b/test/built-ins/Date/prototype/getMilliseconds/name.js index 9e79072fed7..2c27e3554c1 100644 --- a/test/built-ins/Date/prototype/getMilliseconds/name.js +++ b/test/built-ins/Date/prototype/getMilliseconds/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getMilliseconds.name, "getMilliseconds"); - -verifyNotEnumerable(Date.prototype.getMilliseconds, "name"); -verifyNotWritable(Date.prototype.getMilliseconds, "name"); -verifyConfigurable(Date.prototype.getMilliseconds, "name"); +verifyProperty(Date.prototype.getMilliseconds, "name", { + value: "getMilliseconds", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getMinutes/name.js b/test/built-ins/Date/prototype/getMinutes/name.js index 6896f9fbf7a..42b98c82d09 100644 --- a/test/built-ins/Date/prototype/getMinutes/name.js +++ b/test/built-ins/Date/prototype/getMinutes/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getMinutes.name, "getMinutes"); - -verifyNotEnumerable(Date.prototype.getMinutes, "name"); -verifyNotWritable(Date.prototype.getMinutes, "name"); -verifyConfigurable(Date.prototype.getMinutes, "name"); +verifyProperty(Date.prototype.getMinutes, "name", { + value: "getMinutes", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getMonth/name.js b/test/built-ins/Date/prototype/getMonth/name.js index 27f2e5083cf..6ab51831c8f 100644 --- a/test/built-ins/Date/prototype/getMonth/name.js +++ b/test/built-ins/Date/prototype/getMonth/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getMonth.name, "getMonth"); - -verifyNotEnumerable(Date.prototype.getMonth, "name"); -verifyNotWritable(Date.prototype.getMonth, "name"); -verifyConfigurable(Date.prototype.getMonth, "name"); +verifyProperty(Date.prototype.getMonth, "name", { + value: "getMonth", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getSeconds/name.js b/test/built-ins/Date/prototype/getSeconds/name.js index a188372184d..d455db3b045 100644 --- a/test/built-ins/Date/prototype/getSeconds/name.js +++ b/test/built-ins/Date/prototype/getSeconds/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getSeconds.name, "getSeconds"); - -verifyNotEnumerable(Date.prototype.getSeconds, "name"); -verifyNotWritable(Date.prototype.getSeconds, "name"); -verifyConfigurable(Date.prototype.getSeconds, "name"); +verifyProperty(Date.prototype.getSeconds, "name", { + value: "getSeconds", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getTime/name.js b/test/built-ins/Date/prototype/getTime/name.js index 989901d103c..90716e30e02 100644 --- a/test/built-ins/Date/prototype/getTime/name.js +++ b/test/built-ins/Date/prototype/getTime/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getTime.name, "getTime"); - -verifyNotEnumerable(Date.prototype.getTime, "name"); -verifyNotWritable(Date.prototype.getTime, "name"); -verifyConfigurable(Date.prototype.getTime, "name"); +verifyProperty(Date.prototype.getTime, "name", { + value: "getTime", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getTimezoneOffset/name.js b/test/built-ins/Date/prototype/getTimezoneOffset/name.js index 99e7843be84..11f2df38991 100644 --- a/test/built-ins/Date/prototype/getTimezoneOffset/name.js +++ b/test/built-ins/Date/prototype/getTimezoneOffset/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getTimezoneOffset.name, "getTimezoneOffset"); - -verifyNotEnumerable(Date.prototype.getTimezoneOffset, "name"); -verifyNotWritable(Date.prototype.getTimezoneOffset, "name"); -verifyConfigurable(Date.prototype.getTimezoneOffset, "name"); +verifyProperty(Date.prototype.getTimezoneOffset, "name", { + value: "getTimezoneOffset", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getUTCDate/name.js b/test/built-ins/Date/prototype/getUTCDate/name.js index 804bda510ec..d850e4e515a 100644 --- a/test/built-ins/Date/prototype/getUTCDate/name.js +++ b/test/built-ins/Date/prototype/getUTCDate/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getUTCDate.name, "getUTCDate"); - -verifyNotEnumerable(Date.prototype.getUTCDate, "name"); -verifyNotWritable(Date.prototype.getUTCDate, "name"); -verifyConfigurable(Date.prototype.getUTCDate, "name"); +verifyProperty(Date.prototype.getUTCDate, "name", { + value: "getUTCDate", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getUTCDay/name.js b/test/built-ins/Date/prototype/getUTCDay/name.js index e2eb61d5b24..59ca2f24e16 100644 --- a/test/built-ins/Date/prototype/getUTCDay/name.js +++ b/test/built-ins/Date/prototype/getUTCDay/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getUTCDay.name, "getUTCDay"); - -verifyNotEnumerable(Date.prototype.getUTCDay, "name"); -verifyNotWritable(Date.prototype.getUTCDay, "name"); -verifyConfigurable(Date.prototype.getUTCDay, "name"); +verifyProperty(Date.prototype.getUTCDay, "name", { + value: "getUTCDay", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getUTCFullYear/name.js b/test/built-ins/Date/prototype/getUTCFullYear/name.js index 5e82db33e0b..5a9b67db5e1 100644 --- a/test/built-ins/Date/prototype/getUTCFullYear/name.js +++ b/test/built-ins/Date/prototype/getUTCFullYear/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getUTCFullYear.name, "getUTCFullYear"); - -verifyNotEnumerable(Date.prototype.getUTCFullYear, "name"); -verifyNotWritable(Date.prototype.getUTCFullYear, "name"); -verifyConfigurable(Date.prototype.getUTCFullYear, "name"); +verifyProperty(Date.prototype.getUTCFullYear, "name", { + value: "getUTCFullYear", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getUTCHours/name.js b/test/built-ins/Date/prototype/getUTCHours/name.js index 0edd4136d1c..018b2d672c5 100644 --- a/test/built-ins/Date/prototype/getUTCHours/name.js +++ b/test/built-ins/Date/prototype/getUTCHours/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getUTCHours.name, "getUTCHours"); - -verifyNotEnumerable(Date.prototype.getUTCHours, "name"); -verifyNotWritable(Date.prototype.getUTCHours, "name"); -verifyConfigurable(Date.prototype.getUTCHours, "name"); +verifyProperty(Date.prototype.getUTCHours, "name", { + value: "getUTCHours", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getUTCMilliseconds/name.js b/test/built-ins/Date/prototype/getUTCMilliseconds/name.js index 0b0628feb5a..3edf4d2d550 100644 --- a/test/built-ins/Date/prototype/getUTCMilliseconds/name.js +++ b/test/built-ins/Date/prototype/getUTCMilliseconds/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getUTCMilliseconds.name, "getUTCMilliseconds"); - -verifyNotEnumerable(Date.prototype.getUTCMilliseconds, "name"); -verifyNotWritable(Date.prototype.getUTCMilliseconds, "name"); -verifyConfigurable(Date.prototype.getUTCMilliseconds, "name"); +verifyProperty(Date.prototype.getUTCMilliseconds, "name", { + value: "getUTCMilliseconds", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getUTCMinutes/name.js b/test/built-ins/Date/prototype/getUTCMinutes/name.js index 96b1751b9b7..34574727171 100644 --- a/test/built-ins/Date/prototype/getUTCMinutes/name.js +++ b/test/built-ins/Date/prototype/getUTCMinutes/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getUTCMinutes.name, "getUTCMinutes"); - -verifyNotEnumerable(Date.prototype.getUTCMinutes, "name"); -verifyNotWritable(Date.prototype.getUTCMinutes, "name"); -verifyConfigurable(Date.prototype.getUTCMinutes, "name"); +verifyProperty(Date.prototype.getUTCMinutes, "name", { + value: "getUTCMinutes", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getUTCMonth/name.js b/test/built-ins/Date/prototype/getUTCMonth/name.js index 557d38976f4..926f48f0a1c 100644 --- a/test/built-ins/Date/prototype/getUTCMonth/name.js +++ b/test/built-ins/Date/prototype/getUTCMonth/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getUTCMonth.name, "getUTCMonth"); - -verifyNotEnumerable(Date.prototype.getUTCMonth, "name"); -verifyNotWritable(Date.prototype.getUTCMonth, "name"); -verifyConfigurable(Date.prototype.getUTCMonth, "name"); +verifyProperty(Date.prototype.getUTCMonth, "name", { + value: "getUTCMonth", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/getUTCSeconds/name.js b/test/built-ins/Date/prototype/getUTCSeconds/name.js index aba5e98e62a..6c900bcb37a 100644 --- a/test/built-ins/Date/prototype/getUTCSeconds/name.js +++ b/test/built-ins/Date/prototype/getUTCSeconds/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.getUTCSeconds.name, "getUTCSeconds"); - -verifyNotEnumerable(Date.prototype.getUTCSeconds, "name"); -verifyNotWritable(Date.prototype.getUTCSeconds, "name"); -verifyConfigurable(Date.prototype.getUTCSeconds, "name"); +verifyProperty(Date.prototype.getUTCSeconds, "name", { + value: "getUTCSeconds", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setDate/name.js b/test/built-ins/Date/prototype/setDate/name.js index 34fb2189d67..31be60bd736 100644 --- a/test/built-ins/Date/prototype/setDate/name.js +++ b/test/built-ins/Date/prototype/setDate/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setDate.name, "setDate"); - -verifyNotEnumerable(Date.prototype.setDate, "name"); -verifyNotWritable(Date.prototype.setDate, "name"); -verifyConfigurable(Date.prototype.setDate, "name"); +verifyProperty(Date.prototype.setDate, "name", { + value: "setDate", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setFullYear/name.js b/test/built-ins/Date/prototype/setFullYear/name.js index bf794497325..d1224e15539 100644 --- a/test/built-ins/Date/prototype/setFullYear/name.js +++ b/test/built-ins/Date/prototype/setFullYear/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setFullYear.name, "setFullYear"); - -verifyNotEnumerable(Date.prototype.setFullYear, "name"); -verifyNotWritable(Date.prototype.setFullYear, "name"); -verifyConfigurable(Date.prototype.setFullYear, "name"); +verifyProperty(Date.prototype.setFullYear, "name", { + value: "setFullYear", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setHours/name.js b/test/built-ins/Date/prototype/setHours/name.js index 56399ec6113..7d80c850179 100644 --- a/test/built-ins/Date/prototype/setHours/name.js +++ b/test/built-ins/Date/prototype/setHours/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setHours.name, "setHours"); - -verifyNotEnumerable(Date.prototype.setHours, "name"); -verifyNotWritable(Date.prototype.setHours, "name"); -verifyConfigurable(Date.prototype.setHours, "name"); +verifyProperty(Date.prototype.setHours, "name", { + value: "setHours", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setMilliseconds/name.js b/test/built-ins/Date/prototype/setMilliseconds/name.js index a5f4df85ba5..4580a5d4564 100644 --- a/test/built-ins/Date/prototype/setMilliseconds/name.js +++ b/test/built-ins/Date/prototype/setMilliseconds/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setMilliseconds.name, "setMilliseconds"); - -verifyNotEnumerable(Date.prototype.setMilliseconds, "name"); -verifyNotWritable(Date.prototype.setMilliseconds, "name"); -verifyConfigurable(Date.prototype.setMilliseconds, "name"); +verifyProperty(Date.prototype.setMilliseconds, "name", { + value: "setMilliseconds", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setMinutes/name.js b/test/built-ins/Date/prototype/setMinutes/name.js index f8032bfd1d9..6ea5b28b965 100644 --- a/test/built-ins/Date/prototype/setMinutes/name.js +++ b/test/built-ins/Date/prototype/setMinutes/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setMinutes.name, "setMinutes"); - -verifyNotEnumerable(Date.prototype.setMinutes, "name"); -verifyNotWritable(Date.prototype.setMinutes, "name"); -verifyConfigurable(Date.prototype.setMinutes, "name"); +verifyProperty(Date.prototype.setMinutes, "name", { + value: "setMinutes", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setMonth/name.js b/test/built-ins/Date/prototype/setMonth/name.js index f2ea94ddd6b..f50e3d5dde0 100644 --- a/test/built-ins/Date/prototype/setMonth/name.js +++ b/test/built-ins/Date/prototype/setMonth/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setMonth.name, "setMonth"); - -verifyNotEnumerable(Date.prototype.setMonth, "name"); -verifyNotWritable(Date.prototype.setMonth, "name"); -verifyConfigurable(Date.prototype.setMonth, "name"); +verifyProperty(Date.prototype.setMonth, "name", { + value: "setMonth", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setSeconds/name.js b/test/built-ins/Date/prototype/setSeconds/name.js index 4b8555d2f41..ddf604549c3 100644 --- a/test/built-ins/Date/prototype/setSeconds/name.js +++ b/test/built-ins/Date/prototype/setSeconds/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setSeconds.name, "setSeconds"); - -verifyNotEnumerable(Date.prototype.setSeconds, "name"); -verifyNotWritable(Date.prototype.setSeconds, "name"); -verifyConfigurable(Date.prototype.setSeconds, "name"); +verifyProperty(Date.prototype.setSeconds, "name", { + value: "setSeconds", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setTime/name.js b/test/built-ins/Date/prototype/setTime/name.js index a36bd861088..42b96f3184f 100644 --- a/test/built-ins/Date/prototype/setTime/name.js +++ b/test/built-ins/Date/prototype/setTime/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setTime.name, "setTime"); - -verifyNotEnumerable(Date.prototype.setTime, "name"); -verifyNotWritable(Date.prototype.setTime, "name"); -verifyConfigurable(Date.prototype.setTime, "name"); +verifyProperty(Date.prototype.setTime, "name", { + value: "setTime", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setUTCDate/name.js b/test/built-ins/Date/prototype/setUTCDate/name.js index 66c97f94710..2066acd642a 100644 --- a/test/built-ins/Date/prototype/setUTCDate/name.js +++ b/test/built-ins/Date/prototype/setUTCDate/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setUTCDate.name, "setUTCDate"); - -verifyNotEnumerable(Date.prototype.setUTCDate, "name"); -verifyNotWritable(Date.prototype.setUTCDate, "name"); -verifyConfigurable(Date.prototype.setUTCDate, "name"); +verifyProperty(Date.prototype.setUTCDate, "name", { + value: "setUTCDate", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setUTCFullYear/name.js b/test/built-ins/Date/prototype/setUTCFullYear/name.js index a0410593f24..0bab04e948e 100644 --- a/test/built-ins/Date/prototype/setUTCFullYear/name.js +++ b/test/built-ins/Date/prototype/setUTCFullYear/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setUTCFullYear.name, "setUTCFullYear"); - -verifyNotEnumerable(Date.prototype.setUTCFullYear, "name"); -verifyNotWritable(Date.prototype.setUTCFullYear, "name"); -verifyConfigurable(Date.prototype.setUTCFullYear, "name"); +verifyProperty(Date.prototype.setUTCFullYear, "name", { + value: "setUTCFullYear", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setUTCHours/name.js b/test/built-ins/Date/prototype/setUTCHours/name.js index 943e57a55c1..346aa9299a9 100644 --- a/test/built-ins/Date/prototype/setUTCHours/name.js +++ b/test/built-ins/Date/prototype/setUTCHours/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setUTCHours.name, "setUTCHours"); - -verifyNotEnumerable(Date.prototype.setUTCHours, "name"); -verifyNotWritable(Date.prototype.setUTCHours, "name"); -verifyConfigurable(Date.prototype.setUTCHours, "name"); +verifyProperty(Date.prototype.setUTCHours, "name", { + value: "setUTCHours", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setUTCMilliseconds/name.js b/test/built-ins/Date/prototype/setUTCMilliseconds/name.js index abbe9fbdde5..3c349b386e2 100644 --- a/test/built-ins/Date/prototype/setUTCMilliseconds/name.js +++ b/test/built-ins/Date/prototype/setUTCMilliseconds/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setUTCMilliseconds.name, "setUTCMilliseconds"); - -verifyNotEnumerable(Date.prototype.setUTCMilliseconds, "name"); -verifyNotWritable(Date.prototype.setUTCMilliseconds, "name"); -verifyConfigurable(Date.prototype.setUTCMilliseconds, "name"); +verifyProperty(Date.prototype.setUTCMilliseconds, "name", { + value: "setUTCMilliseconds", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setUTCMinutes/name.js b/test/built-ins/Date/prototype/setUTCMinutes/name.js index 39859762106..0a454d177b2 100644 --- a/test/built-ins/Date/prototype/setUTCMinutes/name.js +++ b/test/built-ins/Date/prototype/setUTCMinutes/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setUTCMinutes.name, "setUTCMinutes"); - -verifyNotEnumerable(Date.prototype.setUTCMinutes, "name"); -verifyNotWritable(Date.prototype.setUTCMinutes, "name"); -verifyConfigurable(Date.prototype.setUTCMinutes, "name"); +verifyProperty(Date.prototype.setUTCMinutes, "name", { + value: "setUTCMinutes", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setUTCMonth/name.js b/test/built-ins/Date/prototype/setUTCMonth/name.js index 7231b241d02..9c51109f0ff 100644 --- a/test/built-ins/Date/prototype/setUTCMonth/name.js +++ b/test/built-ins/Date/prototype/setUTCMonth/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setUTCMonth.name, "setUTCMonth"); - -verifyNotEnumerable(Date.prototype.setUTCMonth, "name"); -verifyNotWritable(Date.prototype.setUTCMonth, "name"); -verifyConfigurable(Date.prototype.setUTCMonth, "name"); +verifyProperty(Date.prototype.setUTCMonth, "name", { + value: "setUTCMonth", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/setUTCSeconds/name.js b/test/built-ins/Date/prototype/setUTCSeconds/name.js index 7eeb7c5be6f..caf3a73a623 100644 --- a/test/built-ins/Date/prototype/setUTCSeconds/name.js +++ b/test/built-ins/Date/prototype/setUTCSeconds/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.setUTCSeconds.name, "setUTCSeconds"); - -verifyNotEnumerable(Date.prototype.setUTCSeconds, "name"); -verifyNotWritable(Date.prototype.setUTCSeconds, "name"); -verifyConfigurable(Date.prototype.setUTCSeconds, "name"); +verifyProperty(Date.prototype.setUTCSeconds, "name", { + value: "setUTCSeconds", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/toDateString/name.js b/test/built-ins/Date/prototype/toDateString/name.js index 5ecc7ef1be6..84f9b858faf 100644 --- a/test/built-ins/Date/prototype/toDateString/name.js +++ b/test/built-ins/Date/prototype/toDateString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.toDateString.name, "toDateString"); - -verifyNotEnumerable(Date.prototype.toDateString, "name"); -verifyNotWritable(Date.prototype.toDateString, "name"); -verifyConfigurable(Date.prototype.toDateString, "name"); +verifyProperty(Date.prototype.toDateString, "name", { + value: "toDateString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/toISOString/name.js b/test/built-ins/Date/prototype/toISOString/name.js index 5a8fd4a87dc..7d2848187d7 100644 --- a/test/built-ins/Date/prototype/toISOString/name.js +++ b/test/built-ins/Date/prototype/toISOString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.toISOString.name, "toISOString"); - -verifyNotEnumerable(Date.prototype.toISOString, "name"); -verifyNotWritable(Date.prototype.toISOString, "name"); -verifyConfigurable(Date.prototype.toISOString, "name"); +verifyProperty(Date.prototype.toISOString, "name", { + value: "toISOString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/toLocaleDateString/name.js b/test/built-ins/Date/prototype/toLocaleDateString/name.js index c1281afc83d..9dc02515200 100644 --- a/test/built-ins/Date/prototype/toLocaleDateString/name.js +++ b/test/built-ins/Date/prototype/toLocaleDateString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.toLocaleDateString.name, "toLocaleDateString"); - -verifyNotEnumerable(Date.prototype.toLocaleDateString, "name"); -verifyNotWritable(Date.prototype.toLocaleDateString, "name"); -verifyConfigurable(Date.prototype.toLocaleDateString, "name"); +verifyProperty(Date.prototype.toLocaleDateString, "name", { + value: "toLocaleDateString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/toLocaleString/name.js b/test/built-ins/Date/prototype/toLocaleString/name.js index bb80091f599..f12238058fd 100644 --- a/test/built-ins/Date/prototype/toLocaleString/name.js +++ b/test/built-ins/Date/prototype/toLocaleString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.toLocaleString.name, "toLocaleString"); - -verifyNotEnumerable(Date.prototype.toLocaleString, "name"); -verifyNotWritable(Date.prototype.toLocaleString, "name"); -verifyConfigurable(Date.prototype.toLocaleString, "name"); +verifyProperty(Date.prototype.toLocaleString, "name", { + value: "toLocaleString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/toLocaleTimeString/name.js b/test/built-ins/Date/prototype/toLocaleTimeString/name.js index 58655987d0c..e70fcda3084 100644 --- a/test/built-ins/Date/prototype/toLocaleTimeString/name.js +++ b/test/built-ins/Date/prototype/toLocaleTimeString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.toLocaleTimeString.name, "toLocaleTimeString"); - -verifyNotEnumerable(Date.prototype.toLocaleTimeString, "name"); -verifyNotWritable(Date.prototype.toLocaleTimeString, "name"); -verifyConfigurable(Date.prototype.toLocaleTimeString, "name"); +verifyProperty(Date.prototype.toLocaleTimeString, "name", { + value: "toLocaleTimeString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/toString/name.js b/test/built-ins/Date/prototype/toString/name.js index fd9838ef687..a79cdb5c804 100644 --- a/test/built-ins/Date/prototype/toString/name.js +++ b/test/built-ins/Date/prototype/toString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.toString.name, "toString"); - -verifyNotEnumerable(Date.prototype.toString, "name"); -verifyNotWritable(Date.prototype.toString, "name"); -verifyConfigurable(Date.prototype.toString, "name"); +verifyProperty(Date.prototype.toString, "name", { + value: "toString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/toTimeString/name.js b/test/built-ins/Date/prototype/toTimeString/name.js index 6c1101b6838..d4f9b171e87 100644 --- a/test/built-ins/Date/prototype/toTimeString/name.js +++ b/test/built-ins/Date/prototype/toTimeString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.toTimeString.name, "toTimeString"); - -verifyNotEnumerable(Date.prototype.toTimeString, "name"); -verifyNotWritable(Date.prototype.toTimeString, "name"); -verifyConfigurable(Date.prototype.toTimeString, "name"); +verifyProperty(Date.prototype.toTimeString, "name", { + value: "toTimeString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/toUTCString/name.js b/test/built-ins/Date/prototype/toUTCString/name.js index c61f625dd4d..b766ec671ae 100644 --- a/test/built-ins/Date/prototype/toUTCString/name.js +++ b/test/built-ins/Date/prototype/toUTCString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.toUTCString.name, "toUTCString"); - -verifyNotEnumerable(Date.prototype.toUTCString, "name"); -verifyNotWritable(Date.prototype.toUTCString, "name"); -verifyConfigurable(Date.prototype.toUTCString, "name"); +verifyProperty(Date.prototype.toUTCString, "name", { + value: "toUTCString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Date/prototype/valueOf/name.js b/test/built-ins/Date/prototype/valueOf/name.js index bc0c7f8b52c..c8e785553d1 100644 --- a/test/built-ins/Date/prototype/valueOf/name.js +++ b/test/built-ins/Date/prototype/valueOf/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Date.prototype.valueOf.name, "valueOf"); - -verifyNotEnumerable(Date.prototype.valueOf, "name"); -verifyNotWritable(Date.prototype.valueOf, "name"); -verifyConfigurable(Date.prototype.valueOf, "name"); +verifyProperty(Date.prototype.valueOf, "name", { + value: "valueOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Error/prototype/toString/length.js b/test/built-ins/Error/prototype/toString/length.js index c7279a4e522..81a5cab0d7a 100644 --- a/test/built-ins/Error/prototype/toString/length.js +++ b/test/built-ins/Error/prototype/toString/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Error.prototype.toString.length, 0); - -verifyNotEnumerable(Error.prototype.toString, "length"); -verifyNotWritable(Error.prototype.toString, "length"); -verifyConfigurable(Error.prototype.toString, "length"); +verifyProperty(Error.prototype.toString, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Error/prototype/toString/name.js b/test/built-ins/Error/prototype/toString/name.js index ff39ffe9244..618bad1b264 100644 --- a/test/built-ins/Error/prototype/toString/name.js +++ b/test/built-ins/Error/prototype/toString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Error.prototype.toString.name, "toString"); - -verifyNotEnumerable(Error.prototype.toString, "name"); -verifyNotWritable(Error.prototype.toString, "name"); -verifyConfigurable(Error.prototype.toString, "name"); +verifyProperty(Error.prototype.toString, "name", { + value: "toString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Function/prototype/Symbol.hasInstance/length.js b/test/built-ins/Function/prototype/Symbol.hasInstance/length.js index a45648e8b9a..3b9130bad2e 100644 --- a/test/built-ins/Function/prototype/Symbol.hasInstance/length.js +++ b/test/built-ins/Function/prototype/Symbol.hasInstance/length.js @@ -19,8 +19,9 @@ features: [Symbol.hasInstance] includes: [propertyHelper.js] ---*/ -assert.sameValue(Function.prototype[Symbol.hasInstance].length, 1); - -verifyNotEnumerable(Function.prototype[Symbol.hasInstance], 'length'); -verifyNotWritable(Function.prototype[Symbol.hasInstance], 'length'); -verifyConfigurable(Function.prototype[Symbol.hasInstance], 'length'); +verifyProperty(Function.prototype[Symbol.hasInstance], "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Function/prototype/Symbol.hasInstance/name.js b/test/built-ins/Function/prototype/Symbol.hasInstance/name.js index 3a809af577e..7ebf59d329a 100644 --- a/test/built-ins/Function/prototype/Symbol.hasInstance/name.js +++ b/test/built-ins/Function/prototype/Symbol.hasInstance/name.js @@ -10,10 +10,9 @@ features: [Symbol.hasInstance] includes: [propertyHelper.js] ---*/ -assert.sameValue( - Function.prototype[Symbol.hasInstance].name, '[Symbol.hasInstance]' -); - -verifyNotEnumerable(Function.prototype[Symbol.hasInstance], 'name'); -verifyNotWritable(Function.prototype[Symbol.hasInstance], 'name'); -verifyConfigurable(Function.prototype[Symbol.hasInstance], 'name'); +verifyProperty(Function.prototype[Symbol.hasInstance], "name", { + value: "[Symbol.hasInstance]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Function/prototype/apply/name.js b/test/built-ins/Function/prototype/apply/name.js index 3af31a104a8..3ada0789e38 100644 --- a/test/built-ins/Function/prototype/apply/name.js +++ b/test/built-ins/Function/prototype/apply/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Function.prototype.apply.name, "apply"); - -verifyNotEnumerable(Function.prototype.apply, "name"); -verifyNotWritable(Function.prototype.apply, "name"); -verifyConfigurable(Function.prototype.apply, "name"); +verifyProperty(Function.prototype.apply, "name", { + value: "apply", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Function/prototype/bind/name.js b/test/built-ins/Function/prototype/bind/name.js index 2d9bcc74fed..8c49dbb2a56 100644 --- a/test/built-ins/Function/prototype/bind/name.js +++ b/test/built-ins/Function/prototype/bind/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Function.prototype.bind.name, "bind"); - -verifyNotEnumerable(Function.prototype.bind, "name"); -verifyNotWritable(Function.prototype.bind, "name"); -verifyConfigurable(Function.prototype.bind, "name"); +verifyProperty(Function.prototype.bind, "name", { + value: "bind", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Function/prototype/call/name.js b/test/built-ins/Function/prototype/call/name.js index 348c0b4e325..40c7ace39ce 100644 --- a/test/built-ins/Function/prototype/call/name.js +++ b/test/built-ins/Function/prototype/call/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Function.prototype.call.name, "call"); - -verifyNotEnumerable(Function.prototype.call, "name"); -verifyNotWritable(Function.prototype.call, "name"); -verifyConfigurable(Function.prototype.call, "name"); +verifyProperty(Function.prototype.call, "name", { + value: "call", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Function/prototype/name.js b/test/built-ins/Function/prototype/name.js index 7f60f4b0071..85176634d3e 100644 --- a/test/built-ins/Function/prototype/name.js +++ b/test/built-ins/Function/prototype/name.js @@ -16,7 +16,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Function.prototype.name, ''); -verifyNotEnumerable(Function.prototype, 'name'); -verifyNotWritable(Function.prototype, 'name'); -verifyConfigurable(Function.prototype, 'name'); +verifyProperty(Function.prototype, "name", { + value: "", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Function/prototype/toString/name.js b/test/built-ins/Function/prototype/toString/name.js index 939b8ae265b..c1fef0bd401 100644 --- a/test/built-ins/Function/prototype/toString/name.js +++ b/test/built-ins/Function/prototype/toString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Function.prototype.toString.name, "toString"); - -verifyNotEnumerable(Function.prototype.toString, "name"); -verifyNotWritable(Function.prototype.toString, "name"); -verifyConfigurable(Function.prototype.toString, "name"); +verifyProperty(Function.prototype.toString, "name", { + value: "toString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/GeneratorFunction/length.js b/test/built-ins/GeneratorFunction/length.js index bd1c48f15dd..bda74465687 100644 --- a/test/built-ins/GeneratorFunction/length.js +++ b/test/built-ins/GeneratorFunction/length.js @@ -11,8 +11,9 @@ features: [generators] var GeneratorFunction = Object.getPrototypeOf(function*() {}).constructor; -assert.sameValue(GeneratorFunction.length, 1); - -verifyNotEnumerable(GeneratorFunction, 'length'); -verifyNotWritable(GeneratorFunction, 'length'); -verifyConfigurable(GeneratorFunction, 'length'); +verifyProperty(GeneratorFunction, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/GeneratorFunction/name.js b/test/built-ins/GeneratorFunction/name.js index 52f19a66dde..19fd4f2e119 100644 --- a/test/built-ins/GeneratorFunction/name.js +++ b/test/built-ins/GeneratorFunction/name.js @@ -21,8 +21,9 @@ features: [generators] var GeneratorFunction = Object.getPrototypeOf(function*() {}).constructor; -assert.sameValue(GeneratorFunction.name, 'GeneratorFunction'); - -verifyNotEnumerable(GeneratorFunction, 'name'); -verifyNotWritable(GeneratorFunction, 'name'); -verifyConfigurable(GeneratorFunction, 'name'); +verifyProperty(GeneratorFunction, "name", { + value: "GeneratorFunction", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/GeneratorPrototype/next/length.js b/test/built-ins/GeneratorPrototype/next/length.js index 94630b564db..c096c5fe619 100644 --- a/test/built-ins/GeneratorPrototype/next/length.js +++ b/test/built-ins/GeneratorPrototype/next/length.js @@ -26,8 +26,9 @@ features: [generators] function* g() {} var GeneratorPrototype = Object.getPrototypeOf(g).prototype; -assert.sameValue(GeneratorPrototype.next.length, 1); - -verifyNotEnumerable(GeneratorPrototype.next, "length"); -verifyNotWritable(GeneratorPrototype.next, "length"); -verifyConfigurable(GeneratorPrototype.next, "length"); +verifyProperty(GeneratorPrototype.next, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/GeneratorPrototype/next/name.js b/test/built-ins/GeneratorPrototype/next/name.js index 68ec5b1e40f..239ca12398f 100644 --- a/test/built-ins/GeneratorPrototype/next/name.js +++ b/test/built-ins/GeneratorPrototype/next/name.js @@ -23,8 +23,9 @@ features: [generators] function* g() {} var GeneratorPrototype = Object.getPrototypeOf(g).prototype; -assert.sameValue(GeneratorPrototype.next.name, "next"); - -verifyNotEnumerable(GeneratorPrototype.next, "name"); -verifyNotWritable(GeneratorPrototype.next, "name"); -verifyConfigurable(GeneratorPrototype.next, "name"); +verifyProperty(GeneratorPrototype.next, "name", { + value: "next", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/GeneratorPrototype/return/length.js b/test/built-ins/GeneratorPrototype/return/length.js index f1565ffe2ff..0cd4f033d65 100644 --- a/test/built-ins/GeneratorPrototype/return/length.js +++ b/test/built-ins/GeneratorPrototype/return/length.js @@ -26,8 +26,9 @@ features: [generators] function* g() {} var GeneratorPrototype = Object.getPrototypeOf(g).prototype; -assert.sameValue(GeneratorPrototype.return.length, 1); - -verifyNotEnumerable(GeneratorPrototype.return, "length"); -verifyNotWritable(GeneratorPrototype.return, "length"); -verifyConfigurable(GeneratorPrototype.return, "length"); +verifyProperty(GeneratorPrototype.return, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/GeneratorPrototype/return/name.js b/test/built-ins/GeneratorPrototype/return/name.js index 09464c64c4a..3c958bf5143 100644 --- a/test/built-ins/GeneratorPrototype/return/name.js +++ b/test/built-ins/GeneratorPrototype/return/name.js @@ -23,8 +23,9 @@ features: [generators] function* g() {} var GeneratorPrototype = Object.getPrototypeOf(g).prototype; -assert.sameValue(GeneratorPrototype.return.name, "return"); - -verifyNotEnumerable(GeneratorPrototype.return, "name"); -verifyNotWritable(GeneratorPrototype.return, "name"); -verifyConfigurable(GeneratorPrototype.return, "name"); +verifyProperty(GeneratorPrototype.return, "name", { + value: "return", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/GeneratorPrototype/throw/length.js b/test/built-ins/GeneratorPrototype/throw/length.js index 74dfa51e810..d57375a4bea 100644 --- a/test/built-ins/GeneratorPrototype/throw/length.js +++ b/test/built-ins/GeneratorPrototype/throw/length.js @@ -26,8 +26,9 @@ features: [generators] function* g() {} var GeneratorPrototype = Object.getPrototypeOf(g).prototype; -assert.sameValue(GeneratorPrototype.throw.length, 1); - -verifyNotEnumerable(GeneratorPrototype.throw, "length"); -verifyNotWritable(GeneratorPrototype.throw, "length"); -verifyConfigurable(GeneratorPrototype.throw, "length"); +verifyProperty(GeneratorPrototype.throw, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/GeneratorPrototype/throw/name.js b/test/built-ins/GeneratorPrototype/throw/name.js index c2ed4464717..2f7b630f954 100644 --- a/test/built-ins/GeneratorPrototype/throw/name.js +++ b/test/built-ins/GeneratorPrototype/throw/name.js @@ -23,8 +23,9 @@ features: [generators] function* g() {} var GeneratorPrototype = Object.getPrototypeOf(g).prototype; -assert.sameValue(GeneratorPrototype.throw.name, "throw"); - -verifyNotEnumerable(GeneratorPrototype.throw, "name"); -verifyNotWritable(GeneratorPrototype.throw, "name"); -verifyConfigurable(GeneratorPrototype.throw, "name"); +verifyProperty(GeneratorPrototype.throw, "name", { + value: "throw", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/Symbol.species/length.js b/test/built-ins/Map/Symbol.species/length.js index 9838ef984b5..3913fa7e3de 100644 --- a/test/built-ins/Map/Symbol.species/length.js +++ b/test/built-ins/Map/Symbol.species/length.js @@ -25,8 +25,9 @@ features: [Symbol.species] var desc = Object.getOwnPropertyDescriptor(Map, Symbol.species); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/length.js b/test/built-ins/Map/length.js index 351b02e79b1..334a0f7681a 100644 --- a/test/built-ins/Map/length.js +++ b/test/built-ins/Map/length.js @@ -10,8 +10,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Map.length, 0, 'The value of Map.length is 0'); - -verifyNotEnumerable(Map, 'length'); -verifyNotWritable(Map, 'length'); -verifyConfigurable(Map, 'length'); +verifyProperty(Map, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/name.js b/test/built-ins/Map/name.js index d966ca8fd11..c41c5554b62 100644 --- a/test/built-ins/Map/name.js +++ b/test/built-ins/Map/name.js @@ -11,8 +11,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Map.name, 'Map', 'The value of Map.name is "Map"'); - -verifyNotEnumerable(Map, 'name'); -verifyNotWritable(Map, 'name'); -verifyConfigurable(Map, 'name'); +verifyProperty(Map, "name", { + value: "Map", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/clear/length.js b/test/built-ins/Map/prototype/clear/length.js index c23d92afcb7..0e585740b7f 100644 --- a/test/built-ins/Map/prototype/clear/length.js +++ b/test/built-ins/Map/prototype/clear/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.clear.length, 0, - 'The value of `Map.prototype.clear.length` is `0`' -); - -verifyNotEnumerable(Map.prototype.clear, 'length'); -verifyNotWritable(Map.prototype.clear, 'length'); -verifyConfigurable(Map.prototype.clear, 'length'); +verifyProperty(Map.prototype.clear, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/clear/name.js b/test/built-ins/Map/prototype/clear/name.js index 2c85af18f0a..cfe81b7c373 100644 --- a/test/built-ins/Map/prototype/clear/name.js +++ b/test/built-ins/Map/prototype/clear/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.clear.name, 'clear', - 'The value of `Map.prototype.clear.name` is `"clear"`' -); - -verifyNotEnumerable(Map.prototype.clear, 'name'); -verifyNotWritable(Map.prototype.clear, 'name'); -verifyConfigurable(Map.prototype.clear, 'name'); +verifyProperty(Map.prototype.clear, "name", { + value: "clear", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/delete/length.js b/test/built-ins/Map/prototype/delete/length.js index d30bb9e2723..9ffd2fa83d4 100644 --- a/test/built-ins/Map/prototype/delete/length.js +++ b/test/built-ins/Map/prototype/delete/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.delete.length, 1, - 'The value of `Map.prototype.delete.length` is `1`' -); - -verifyNotEnumerable(Map.prototype.delete, 'length'); -verifyNotWritable(Map.prototype.delete, 'length'); -verifyConfigurable(Map.prototype.delete, 'length'); +verifyProperty(Map.prototype.delete, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/delete/name.js b/test/built-ins/Map/prototype/delete/name.js index 0a756693f8f..5874b20b0cc 100644 --- a/test/built-ins/Map/prototype/delete/name.js +++ b/test/built-ins/Map/prototype/delete/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.delete.name, 'delete', - 'The value of `Map.prototype.delete.name` is `"delete"`' -); - -verifyNotEnumerable(Map.prototype.delete, 'name'); -verifyNotWritable(Map.prototype.delete, 'name'); -verifyConfigurable(Map.prototype.delete, 'name'); +verifyProperty(Map.prototype.delete, "name", { + value: "delete", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/entries/length.js b/test/built-ins/Map/prototype/entries/length.js index 5428e6cd8cb..27ec8f16545 100644 --- a/test/built-ins/Map/prototype/entries/length.js +++ b/test/built-ins/Map/prototype/entries/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.entries.length, 0, - 'The value of `Map.prototype.entries.length` is `0`' -); - -verifyNotEnumerable(Map.prototype.entries, 'length'); -verifyNotWritable(Map.prototype.entries, 'length'); -verifyConfigurable(Map.prototype.entries, 'length'); +verifyProperty(Map.prototype.entries, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/entries/name.js b/test/built-ins/Map/prototype/entries/name.js index 30608b2ad1e..1cf92fd8d2e 100644 --- a/test/built-ins/Map/prototype/entries/name.js +++ b/test/built-ins/Map/prototype/entries/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.entries.name, 'entries', - 'The value of `Map.prototype.entries.name` is `"entries"`' -); - -verifyNotEnumerable(Map.prototype.entries, 'name'); -verifyNotWritable(Map.prototype.entries, 'name'); -verifyConfigurable(Map.prototype.entries, 'name'); +verifyProperty(Map.prototype.entries, "name", { + value: "entries", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/forEach/length.js b/test/built-ins/Map/prototype/forEach/length.js index 87378bc6bf8..1e0dc5c6349 100644 --- a/test/built-ins/Map/prototype/forEach/length.js +++ b/test/built-ins/Map/prototype/forEach/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.forEach.length, 1, - 'The value of `Map.prototype.forEach.length` is `1`' -); - -verifyNotEnumerable(Map.prototype.forEach, 'length'); -verifyNotWritable(Map.prototype.forEach, 'length'); -verifyConfigurable(Map.prototype.forEach, 'length'); +verifyProperty(Map.prototype.forEach, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/forEach/name.js b/test/built-ins/Map/prototype/forEach/name.js index 438dcffe55c..585f311eb7d 100644 --- a/test/built-ins/Map/prototype/forEach/name.js +++ b/test/built-ins/Map/prototype/forEach/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.forEach.name, 'forEach', - 'The value of `Map.prototype.forEach.name` is `"forEach"`' -); - -verifyNotEnumerable(Map.prototype.forEach, 'name'); -verifyNotWritable(Map.prototype.forEach, 'name'); -verifyConfigurable(Map.prototype.forEach, 'name'); +verifyProperty(Map.prototype.forEach, "name", { + value: "forEach", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/get/length.js b/test/built-ins/Map/prototype/get/length.js index d71eaddd23a..2f51096ed43 100644 --- a/test/built-ins/Map/prototype/get/length.js +++ b/test/built-ins/Map/prototype/get/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.get.length, 1, - 'The value of `Map.prototype.get.length` is `1`' -); - -verifyNotEnumerable(Map.prototype.get, 'length'); -verifyNotWritable(Map.prototype.get, 'length'); -verifyConfigurable(Map.prototype.get, 'length'); +verifyProperty(Map.prototype.get, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/get/name.js b/test/built-ins/Map/prototype/get/name.js index f4354b606c3..9afe88b1086 100644 --- a/test/built-ins/Map/prototype/get/name.js +++ b/test/built-ins/Map/prototype/get/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.get.name, 'get', - 'The value of `Map.prototype.get.name` is `"get"`' -); - -verifyNotEnumerable(Map.prototype.get, 'name'); -verifyNotWritable(Map.prototype.get, 'name'); -verifyConfigurable(Map.prototype.get, 'name'); +verifyProperty(Map.prototype.get, "name", { + value: "get", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/has/length.js b/test/built-ins/Map/prototype/has/length.js index 3302c772ef3..08b805d4107 100644 --- a/test/built-ins/Map/prototype/has/length.js +++ b/test/built-ins/Map/prototype/has/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.has.length, 1, - 'The value of `Map.prototype.has.length` is `1`' -); - -verifyNotEnumerable(Map.prototype.has, 'length'); -verifyNotWritable(Map.prototype.has, 'length'); -verifyConfigurable(Map.prototype.has, 'length'); +verifyProperty(Map.prototype.has, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/has/name.js b/test/built-ins/Map/prototype/has/name.js index 1df76c209df..1aa35b33780 100644 --- a/test/built-ins/Map/prototype/has/name.js +++ b/test/built-ins/Map/prototype/has/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.has.name, 'has', - 'The value of `Map.prototype.has.name` is `"has"`' -); - -verifyNotEnumerable(Map.prototype.has, 'name'); -verifyNotWritable(Map.prototype.has, 'name'); -verifyConfigurable(Map.prototype.has, 'name'); +verifyProperty(Map.prototype.has, "name", { + value: "has", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/keys/length.js b/test/built-ins/Map/prototype/keys/length.js index 8dc6055bcf1..3a052a9bb59 100644 --- a/test/built-ins/Map/prototype/keys/length.js +++ b/test/built-ins/Map/prototype/keys/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.keys.length, 0, - 'The value of `Map.prototype.keys.length` is `0`' -); - -verifyNotEnumerable(Map.prototype.keys, 'length'); -verifyNotWritable(Map.prototype.keys, 'length'); -verifyConfigurable(Map.prototype.keys, 'length'); +verifyProperty(Map.prototype.keys, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/keys/name.js b/test/built-ins/Map/prototype/keys/name.js index 34b1cb6a150..fa6e0773a97 100644 --- a/test/built-ins/Map/prototype/keys/name.js +++ b/test/built-ins/Map/prototype/keys/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.keys.name, 'keys', - 'The value of `Map.prototype.keys.name` is `"keys"`' -); - -verifyNotEnumerable(Map.prototype.keys, 'name'); -verifyNotWritable(Map.prototype.keys, 'name'); -verifyConfigurable(Map.prototype.keys, 'name'); +verifyProperty(Map.prototype.keys, "name", { + value: "keys", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/set/length.js b/test/built-ins/Map/prototype/set/length.js index b67f5747d02..bf01f918f81 100644 --- a/test/built-ins/Map/prototype/set/length.js +++ b/test/built-ins/Map/prototype/set/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.set.length, 2, - 'The value of `Map.prototype.set.length` is `2`' -); - -verifyNotEnumerable(Map.prototype.set, 'length'); -verifyNotWritable(Map.prototype.set, 'length'); -verifyConfigurable(Map.prototype.set, 'length'); +verifyProperty(Map.prototype.set, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/set/name.js b/test/built-ins/Map/prototype/set/name.js index 43cfd03bc40..04b05e86fa7 100644 --- a/test/built-ins/Map/prototype/set/name.js +++ b/test/built-ins/Map/prototype/set/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.set.name, 'set', - 'The value of `Map.prototype.set.name` is `"set"`' -); - -verifyNotEnumerable(Map.prototype.set, 'name'); -verifyNotWritable(Map.prototype.set, 'name'); -verifyConfigurable(Map.prototype.set, 'name'); +verifyProperty(Map.prototype.set, "name", { + value: "set", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/size/length.js b/test/built-ins/Map/prototype/size/length.js index c92a3d6008a..a59ca884176 100644 --- a/test/built-ins/Map/prototype/size/length.js +++ b/test/built-ins/Map/prototype/size/length.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(Map.prototype, 'size'); -assert.sameValue( - descriptor.get.length, 0, - 'The value of `Map.prototype.size.length` is `0`' -); - -verifyNotEnumerable(descriptor.get, 'length'); -verifyNotWritable(descriptor.get, 'length'); -verifyConfigurable(descriptor.get, 'length'); +verifyProperty(descriptor.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/size/name.js b/test/built-ins/Map/prototype/size/name.js index f59936a771f..4a27a50567a 100644 --- a/test/built-ins/Map/prototype/size/name.js +++ b/test/built-ins/Map/prototype/size/name.js @@ -17,11 +17,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(Map.prototype, 'size'); -assert.sameValue(descriptor.get.name, - 'get size', - 'The value of `descriptor.get.name` is `get size`' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get size", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/values/length.js b/test/built-ins/Map/prototype/values/length.js index dafa1e06dde..dfe32bd0131 100644 --- a/test/built-ins/Map/prototype/values/length.js +++ b/test/built-ins/Map/prototype/values/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.values.length, 0, - 'The value of `Map.prototype.values.length` is `0`' -); - -verifyNotEnumerable(Map.prototype.values, 'length'); -verifyNotWritable(Map.prototype.values, 'length'); -verifyConfigurable(Map.prototype.values, 'length'); +verifyProperty(Map.prototype.values, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Map/prototype/values/name.js b/test/built-ins/Map/prototype/values/name.js index 03aca25e719..906229b82d8 100644 --- a/test/built-ins/Map/prototype/values/name.js +++ b/test/built-ins/Map/prototype/values/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - Map.prototype.values.name, 'values', - 'The value of `Map.prototype.values.name` is `"values"`' -); - -verifyNotEnumerable(Map.prototype.values, 'name'); -verifyNotWritable(Map.prototype.values, 'name'); -verifyConfigurable(Map.prototype.values, 'name'); +verifyProperty(Map.prototype.values, "name", { + value: "values", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/MapIteratorPrototype/next/length.js b/test/built-ins/MapIteratorPrototype/next/length.js index 25b61c1463d..704e0bcf9ab 100644 --- a/test/built-ins/MapIteratorPrototype/next/length.js +++ b/test/built-ins/MapIteratorPrototype/next/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var MapIteratorProto = Object.getPrototypeOf(new Map().values()); -assert.sameValue(MapIteratorProto.next.length, 0); - -verifyNotEnumerable(MapIteratorProto.next, "length"); -verifyNotWritable(MapIteratorProto.next, "length"); -verifyConfigurable(MapIteratorProto.next, "length"); +verifyProperty(MapIteratorProto.next, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/MapIteratorPrototype/next/name.js b/test/built-ins/MapIteratorPrototype/next/name.js index ea491f8c64d..d55baf5ae7a 100644 --- a/test/built-ins/MapIteratorPrototype/next/name.js +++ b/test/built-ins/MapIteratorPrototype/next/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] var MapIteratorProto = Object.getPrototypeOf(new Map().values()); -assert.sameValue(MapIteratorProto.next.name, "next"); - -verifyNotEnumerable(MapIteratorProto.next, "name"); -verifyNotWritable(MapIteratorProto.next, "name"); -verifyConfigurable(MapIteratorProto.next, "name"); +verifyProperty(MapIteratorProto.next, "name", { + value: "next", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/abs/length.js b/test/built-ins/Math/abs/length.js index 6b0e1933cd1..1521a7acc90 100644 --- a/test/built-ins/Math/abs/length.js +++ b/test/built-ins/Math/abs/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.abs.length, 1); - -verifyNotEnumerable(Math.abs, "length"); -verifyNotWritable(Math.abs, "length"); -verifyConfigurable(Math.abs, "length"); +verifyProperty(Math.abs, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/abs/name.js b/test/built-ins/Math/abs/name.js index e62c68d4c51..d6ee637a9a5 100644 --- a/test/built-ins/Math/abs/name.js +++ b/test/built-ins/Math/abs/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.abs.name, "abs"); - -verifyNotEnumerable(Math.abs, "name"); -verifyNotWritable(Math.abs, "name"); -verifyConfigurable(Math.abs, "name"); +verifyProperty(Math.abs, "name", { + value: "abs", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/acos/length.js b/test/built-ins/Math/acos/length.js index 69df3dc2119..472e10bb779 100644 --- a/test/built-ins/Math/acos/length.js +++ b/test/built-ins/Math/acos/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.acos.length, 1); - -verifyNotEnumerable(Math.acos, "length"); -verifyNotWritable(Math.acos, "length"); -verifyConfigurable(Math.acos, "length"); +verifyProperty(Math.acos, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/acos/name.js b/test/built-ins/Math/acos/name.js index 778c7c8f72c..7532df9b442 100644 --- a/test/built-ins/Math/acos/name.js +++ b/test/built-ins/Math/acos/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.acos.name, "acos"); - -verifyNotEnumerable(Math.acos, "name"); -verifyNotWritable(Math.acos, "name"); -verifyConfigurable(Math.acos, "name"); +verifyProperty(Math.acos, "name", { + value: "acos", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/acosh/length.js b/test/built-ins/Math/acosh/length.js index 4e489483c68..49d5fe7ff8c 100644 --- a/test/built-ins/Math/acosh/length.js +++ b/test/built-ins/Math/acosh/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.acosh.length, 1); - -verifyNotEnumerable(Math.acosh, "length"); -verifyNotWritable(Math.acosh, "length"); -verifyConfigurable(Math.acosh, "length"); +verifyProperty(Math.acosh, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/acosh/name.js b/test/built-ins/Math/acosh/name.js index bcfe22bd63c..3f76b0e0970 100644 --- a/test/built-ins/Math/acosh/name.js +++ b/test/built-ins/Math/acosh/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.acosh.name, "acosh"); - -verifyNotEnumerable(Math.acosh, "name"); -verifyNotWritable(Math.acosh, "name"); -verifyConfigurable(Math.acosh, "name"); +verifyProperty(Math.acosh, "name", { + value: "acosh", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/asin/length.js b/test/built-ins/Math/asin/length.js index c54f814395e..7264a7153c4 100644 --- a/test/built-ins/Math/asin/length.js +++ b/test/built-ins/Math/asin/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.asin.length, 1); - -verifyNotEnumerable(Math.asin, "length"); -verifyNotWritable(Math.asin, "length"); -verifyConfigurable(Math.asin, "length"); +verifyProperty(Math.asin, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/asin/name.js b/test/built-ins/Math/asin/name.js index d8763feb712..af2cf567824 100644 --- a/test/built-ins/Math/asin/name.js +++ b/test/built-ins/Math/asin/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.asin.name, "asin"); - -verifyNotEnumerable(Math.asin, "name"); -verifyNotWritable(Math.asin, "name"); -verifyConfigurable(Math.asin, "name"); +verifyProperty(Math.asin, "name", { + value: "asin", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/asinh/length.js b/test/built-ins/Math/asinh/length.js index 3310cfdacfe..776eba23afb 100644 --- a/test/built-ins/Math/asinh/length.js +++ b/test/built-ins/Math/asinh/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.asinh.length, 1); - -verifyNotEnumerable(Math.asinh, "length"); -verifyNotWritable(Math.asinh, "length"); -verifyConfigurable(Math.asinh, "length"); +verifyProperty(Math.asinh, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/asinh/name.js b/test/built-ins/Math/asinh/name.js index a3d41a9484c..01a7a95f076 100644 --- a/test/built-ins/Math/asinh/name.js +++ b/test/built-ins/Math/asinh/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.asinh.name, "asinh"); - -verifyNotEnumerable(Math.asinh, "name"); -verifyNotWritable(Math.asinh, "name"); -verifyConfigurable(Math.asinh, "name"); +verifyProperty(Math.asinh, "name", { + value: "asinh", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/atan/length.js b/test/built-ins/Math/atan/length.js index aee3c48125a..5d204fea38b 100644 --- a/test/built-ins/Math/atan/length.js +++ b/test/built-ins/Math/atan/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.atan.length, 1); - -verifyNotEnumerable(Math.atan, "length"); -verifyNotWritable(Math.atan, "length"); -verifyConfigurable(Math.atan, "length"); +verifyProperty(Math.atan, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/atan/name.js b/test/built-ins/Math/atan/name.js index c6a5c6b76c9..f2d97cbe02f 100644 --- a/test/built-ins/Math/atan/name.js +++ b/test/built-ins/Math/atan/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.atan.name, "atan"); - -verifyNotEnumerable(Math.atan, "name"); -verifyNotWritable(Math.atan, "name"); -verifyConfigurable(Math.atan, "name"); +verifyProperty(Math.atan, "name", { + value: "atan", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/atan2/length.js b/test/built-ins/Math/atan2/length.js index f8ff6ad2fe2..2b11fd79da6 100644 --- a/test/built-ins/Math/atan2/length.js +++ b/test/built-ins/Math/atan2/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.atan2.length, 2); - -verifyNotEnumerable(Math.atan2, "length"); -verifyNotWritable(Math.atan2, "length"); -verifyConfigurable(Math.atan2, "length"); +verifyProperty(Math.atan2, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/atan2/name.js b/test/built-ins/Math/atan2/name.js index 7333a9a9ba5..e7f7b31afd0 100644 --- a/test/built-ins/Math/atan2/name.js +++ b/test/built-ins/Math/atan2/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.atan2.name, "atan2"); - -verifyNotEnumerable(Math.atan2, "name"); -verifyNotWritable(Math.atan2, "name"); -verifyConfigurable(Math.atan2, "name"); +verifyProperty(Math.atan2, "name", { + value: "atan2", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/atanh/length.js b/test/built-ins/Math/atanh/length.js index b9c4257c119..f9ae520f4d7 100644 --- a/test/built-ins/Math/atanh/length.js +++ b/test/built-ins/Math/atanh/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.atanh.length, 1); - -verifyNotEnumerable(Math.atanh, "length"); -verifyNotWritable(Math.atanh, "length"); -verifyConfigurable(Math.atanh, "length"); +verifyProperty(Math.atanh, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/atanh/name.js b/test/built-ins/Math/atanh/name.js index 17fd9adb29f..f112860a14e 100644 --- a/test/built-ins/Math/atanh/name.js +++ b/test/built-ins/Math/atanh/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.atanh.name, "atanh"); - -verifyNotEnumerable(Math.atanh, "name"); -verifyNotWritable(Math.atanh, "name"); -verifyConfigurable(Math.atanh, "name"); +verifyProperty(Math.atanh, "name", { + value: "atanh", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/cbrt/length.js b/test/built-ins/Math/cbrt/length.js index f5bdf335669..445f7dd9620 100644 --- a/test/built-ins/Math/cbrt/length.js +++ b/test/built-ins/Math/cbrt/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.cbrt.length, 1); - -verifyNotEnumerable(Math.cbrt, "length"); -verifyNotWritable(Math.cbrt, "length"); -verifyConfigurable(Math.cbrt, "length"); +verifyProperty(Math.cbrt, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/cbrt/name.js b/test/built-ins/Math/cbrt/name.js index ffb4050be0b..b7d2db4aee6 100644 --- a/test/built-ins/Math/cbrt/name.js +++ b/test/built-ins/Math/cbrt/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.cbrt.name, "cbrt"); - -verifyNotEnumerable(Math.cbrt, "name"); -verifyNotWritable(Math.cbrt, "name"); -verifyConfigurable(Math.cbrt, "name"); +verifyProperty(Math.cbrt, "name", { + value: "cbrt", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/ceil/length.js b/test/built-ins/Math/ceil/length.js index 94774cfae78..dc73a2197c1 100644 --- a/test/built-ins/Math/ceil/length.js +++ b/test/built-ins/Math/ceil/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.ceil.length, 1); - -verifyNotEnumerable(Math.ceil, "length"); -verifyNotWritable(Math.ceil, "length"); -verifyConfigurable(Math.ceil, "length"); +verifyProperty(Math.ceil, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/ceil/name.js b/test/built-ins/Math/ceil/name.js index 55eb5755dac..7fb4a099a0c 100644 --- a/test/built-ins/Math/ceil/name.js +++ b/test/built-ins/Math/ceil/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.ceil.name, "ceil"); - -verifyNotEnumerable(Math.ceil, "name"); -verifyNotWritable(Math.ceil, "name"); -verifyConfigurable(Math.ceil, "name"); +verifyProperty(Math.ceil, "name", { + value: "ceil", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/clz32/length.js b/test/built-ins/Math/clz32/length.js index e9ae5dd03e8..d0384fb703e 100644 --- a/test/built-ins/Math/clz32/length.js +++ b/test/built-ins/Math/clz32/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.clz32.length, 1); - -verifyNotEnumerable(Math.clz32, "length"); -verifyNotWritable(Math.clz32, "length"); -verifyConfigurable(Math.clz32, "length"); +verifyProperty(Math.clz32, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/clz32/name.js b/test/built-ins/Math/clz32/name.js index d7f9c5260f2..15f5e8151d4 100644 --- a/test/built-ins/Math/clz32/name.js +++ b/test/built-ins/Math/clz32/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.clz32.name, "clz32"); - -verifyNotEnumerable(Math.clz32, "name"); -verifyNotWritable(Math.clz32, "name"); -verifyConfigurable(Math.clz32, "name"); +verifyProperty(Math.clz32, "name", { + value: "clz32", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/cos/length.js b/test/built-ins/Math/cos/length.js index ecb08345661..73be243b765 100644 --- a/test/built-ins/Math/cos/length.js +++ b/test/built-ins/Math/cos/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.cos.length, 1); - -verifyNotEnumerable(Math.cos, "length"); -verifyNotWritable(Math.cos, "length"); -verifyConfigurable(Math.cos, "length"); +verifyProperty(Math.cos, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/cos/name.js b/test/built-ins/Math/cos/name.js index 475dca02aa1..7b793f0be73 100644 --- a/test/built-ins/Math/cos/name.js +++ b/test/built-ins/Math/cos/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.cos.name, "cos"); - -verifyNotEnumerable(Math.cos, "name"); -verifyNotWritable(Math.cos, "name"); -verifyConfigurable(Math.cos, "name"); +verifyProperty(Math.cos, "name", { + value: "cos", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/cosh/length.js b/test/built-ins/Math/cosh/length.js index 5c6340a199d..0190197e757 100644 --- a/test/built-ins/Math/cosh/length.js +++ b/test/built-ins/Math/cosh/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.cosh.length, 1); - -verifyNotEnumerable(Math.cosh, "length"); -verifyNotWritable(Math.cosh, "length"); -verifyConfigurable(Math.cosh, "length"); +verifyProperty(Math.cosh, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/cosh/name.js b/test/built-ins/Math/cosh/name.js index 969131060f1..1c750c8a937 100644 --- a/test/built-ins/Math/cosh/name.js +++ b/test/built-ins/Math/cosh/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.cosh.name, "cosh"); - -verifyNotEnumerable(Math.cosh, "name"); -verifyNotWritable(Math.cosh, "name"); -verifyConfigurable(Math.cosh, "name"); +verifyProperty(Math.cosh, "name", { + value: "cosh", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/exp/length.js b/test/built-ins/Math/exp/length.js index 03a434b255b..ca524851e06 100644 --- a/test/built-ins/Math/exp/length.js +++ b/test/built-ins/Math/exp/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.exp.length, 1); - -verifyNotEnumerable(Math.exp, "length"); -verifyNotWritable(Math.exp, "length"); -verifyConfigurable(Math.exp, "length"); +verifyProperty(Math.exp, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/exp/name.js b/test/built-ins/Math/exp/name.js index e0b6037a1d5..a15a8a32626 100644 --- a/test/built-ins/Math/exp/name.js +++ b/test/built-ins/Math/exp/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.exp.name, "exp"); - -verifyNotEnumerable(Math.exp, "name"); -verifyNotWritable(Math.exp, "name"); -verifyConfigurable(Math.exp, "name"); +verifyProperty(Math.exp, "name", { + value: "exp", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/expm1/length.js b/test/built-ins/Math/expm1/length.js index cad17cb458e..b7eeef729ea 100644 --- a/test/built-ins/Math/expm1/length.js +++ b/test/built-ins/Math/expm1/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.expm1.length, 1); - -verifyNotEnumerable(Math.expm1, "length"); -verifyNotWritable(Math.expm1, "length"); -verifyConfigurable(Math.expm1, "length"); +verifyProperty(Math.expm1, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/expm1/name.js b/test/built-ins/Math/expm1/name.js index b71059a83bf..6afa7bb78d6 100644 --- a/test/built-ins/Math/expm1/name.js +++ b/test/built-ins/Math/expm1/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.expm1.name, "expm1"); - -verifyNotEnumerable(Math.expm1, "name"); -verifyNotWritable(Math.expm1, "name"); -verifyConfigurable(Math.expm1, "name"); +verifyProperty(Math.expm1, "name", { + value: "expm1", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/floor/length.js b/test/built-ins/Math/floor/length.js index e729db3a1c8..741ba83f4b1 100644 --- a/test/built-ins/Math/floor/length.js +++ b/test/built-ins/Math/floor/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.floor.length, 1); - -verifyNotEnumerable(Math.floor, "length"); -verifyNotWritable(Math.floor, "length"); -verifyConfigurable(Math.floor, "length"); +verifyProperty(Math.floor, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/floor/name.js b/test/built-ins/Math/floor/name.js index 5acdff4ada4..6bf6daa6147 100644 --- a/test/built-ins/Math/floor/name.js +++ b/test/built-ins/Math/floor/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.floor.name, "floor"); - -verifyNotEnumerable(Math.floor, "name"); -verifyNotWritable(Math.floor, "name"); -verifyConfigurable(Math.floor, "name"); +verifyProperty(Math.floor, "name", { + value: "floor", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/fround/length.js b/test/built-ins/Math/fround/length.js index 0bbe7d0152c..4c15264d29e 100644 --- a/test/built-ins/Math/fround/length.js +++ b/test/built-ins/Math/fround/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.fround.length, 1); - -verifyNotEnumerable(Math.fround, "length"); -verifyNotWritable(Math.fround, "length"); -verifyConfigurable(Math.fround, "length"); +verifyProperty(Math.fround, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/fround/name.js b/test/built-ins/Math/fround/name.js index a32d5405190..48d175f32c3 100644 --- a/test/built-ins/Math/fround/name.js +++ b/test/built-ins/Math/fround/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.fround.name, "fround"); - -verifyNotEnumerable(Math.fround, "name"); -verifyNotWritable(Math.fround, "name"); -verifyConfigurable(Math.fround, "name"); +verifyProperty(Math.fround, "name", { + value: "fround", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/hypot/length.js b/test/built-ins/Math/hypot/length.js index 342195dee07..8060fdfe508 100644 --- a/test/built-ins/Math/hypot/length.js +++ b/test/built-ins/Math/hypot/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.hypot.length, 2); - -verifyNotEnumerable(Math.hypot, "length"); -verifyNotWritable(Math.hypot, "length"); -verifyConfigurable(Math.hypot, "length"); +verifyProperty(Math.hypot, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/hypot/name.js b/test/built-ins/Math/hypot/name.js index e7b24de8b87..b5c65e464fd 100644 --- a/test/built-ins/Math/hypot/name.js +++ b/test/built-ins/Math/hypot/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.hypot.name, "hypot"); - -verifyNotEnumerable(Math.hypot, "name"); -verifyNotWritable(Math.hypot, "name"); -verifyConfigurable(Math.hypot, "name"); +verifyProperty(Math.hypot, "name", { + value: "hypot", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/imul/length.js b/test/built-ins/Math/imul/length.js index f8f7e66f1c9..9c45f2ad0ce 100644 --- a/test/built-ins/Math/imul/length.js +++ b/test/built-ins/Math/imul/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.imul.length, 2); - -verifyNotEnumerable(Math.imul, "length"); -verifyNotWritable(Math.imul, "length"); -verifyConfigurable(Math.imul, "length"); +verifyProperty(Math.imul, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/imul/name.js b/test/built-ins/Math/imul/name.js index 88cca3cbe66..f95354f0e0a 100644 --- a/test/built-ins/Math/imul/name.js +++ b/test/built-ins/Math/imul/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.imul.name, "imul"); - -verifyNotEnumerable(Math.imul, "name"); -verifyNotWritable(Math.imul, "name"); -verifyConfigurable(Math.imul, "name"); +verifyProperty(Math.imul, "name", { + value: "imul", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/log/length.js b/test/built-ins/Math/log/length.js index 53fd4904a91..dcebf7e49cf 100644 --- a/test/built-ins/Math/log/length.js +++ b/test/built-ins/Math/log/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.log.length, 1); - -verifyNotEnumerable(Math.log, "length"); -verifyNotWritable(Math.log, "length"); -verifyConfigurable(Math.log, "length"); +verifyProperty(Math.log, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/log/name.js b/test/built-ins/Math/log/name.js index 8149ca66235..20b62ccdc7a 100644 --- a/test/built-ins/Math/log/name.js +++ b/test/built-ins/Math/log/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.log.name, "log"); - -verifyNotEnumerable(Math.log, "name"); -verifyNotWritable(Math.log, "name"); -verifyConfigurable(Math.log, "name"); +verifyProperty(Math.log, "name", { + value: "log", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/log10/length.js b/test/built-ins/Math/log10/length.js index 606303edd16..77bdea665b0 100644 --- a/test/built-ins/Math/log10/length.js +++ b/test/built-ins/Math/log10/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.log10.length, 1); - -verifyNotEnumerable(Math.log10, "length"); -verifyNotWritable(Math.log10, "length"); -verifyConfigurable(Math.log10, "length"); +verifyProperty(Math.log10, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/log10/name.js b/test/built-ins/Math/log10/name.js index 248f499a86d..4ab1dfbe6cf 100644 --- a/test/built-ins/Math/log10/name.js +++ b/test/built-ins/Math/log10/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.log10.name, "log10"); - -verifyNotEnumerable(Math.log10, "name"); -verifyNotWritable(Math.log10, "name"); -verifyConfigurable(Math.log10, "name"); +verifyProperty(Math.log10, "name", { + value: "log10", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/log1p/length.js b/test/built-ins/Math/log1p/length.js index 378579813f1..0930538045b 100644 --- a/test/built-ins/Math/log1p/length.js +++ b/test/built-ins/Math/log1p/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.log1p.length, 1); - -verifyNotEnumerable(Math.log1p, "length"); -verifyNotWritable(Math.log1p, "length"); -verifyConfigurable(Math.log1p, "length"); +verifyProperty(Math.log1p, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/log1p/name.js b/test/built-ins/Math/log1p/name.js index 84af7a61990..7bfe91de079 100644 --- a/test/built-ins/Math/log1p/name.js +++ b/test/built-ins/Math/log1p/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.log1p.name, "log1p"); - -verifyNotEnumerable(Math.log1p, "name"); -verifyNotWritable(Math.log1p, "name"); -verifyConfigurable(Math.log1p, "name"); +verifyProperty(Math.log1p, "name", { + value: "log1p", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/log2/length.js b/test/built-ins/Math/log2/length.js index 8f881ce3b79..bd70c34a212 100644 --- a/test/built-ins/Math/log2/length.js +++ b/test/built-ins/Math/log2/length.js @@ -21,8 +21,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.log2.length, 1); - -verifyNotEnumerable(Math.log2, "length"); -verifyNotWritable(Math.log2, "length"); -verifyConfigurable(Math.log2, "length"); +verifyProperty(Math.log2, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/log2/name.js b/test/built-ins/Math/log2/name.js index 78fa506e04b..8cc645b00ba 100644 --- a/test/built-ins/Math/log2/name.js +++ b/test/built-ins/Math/log2/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.log2.name, "log2"); - -verifyNotEnumerable(Math.log2, "name"); -verifyNotWritable(Math.log2, "name"); -verifyConfigurable(Math.log2, "name"); +verifyProperty(Math.log2, "name", { + value: "log2", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/max/length.js b/test/built-ins/Math/max/length.js index 4cb729d17b0..f9de35131e2 100644 --- a/test/built-ins/Math/max/length.js +++ b/test/built-ins/Math/max/length.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.max.length, 2); - -verifyNotEnumerable(Math.max, "length"); -verifyNotWritable(Math.max, "length"); -verifyConfigurable(Math.max, "length"); +verifyProperty(Math.max, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/max/name.js b/test/built-ins/Math/max/name.js index 5c5cb59c595..e08a65684b5 100644 --- a/test/built-ins/Math/max/name.js +++ b/test/built-ins/Math/max/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.max.name, "max"); - -verifyNotEnumerable(Math.max, "name"); -verifyNotWritable(Math.max, "name"); -verifyConfigurable(Math.max, "name"); +verifyProperty(Math.max, "name", { + value: "max", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/min/length.js b/test/built-ins/Math/min/length.js index 5ef655a0f1e..1ba5b455439 100644 --- a/test/built-ins/Math/min/length.js +++ b/test/built-ins/Math/min/length.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.min.length, 2); - -verifyNotEnumerable(Math.min, "length"); -verifyNotWritable(Math.min, "length"); -verifyConfigurable(Math.min, "length"); +verifyProperty(Math.min, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/min/name.js b/test/built-ins/Math/min/name.js index 283a0cc9587..4118bc8bdfc 100644 --- a/test/built-ins/Math/min/name.js +++ b/test/built-ins/Math/min/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.min.name, "min"); - -verifyNotEnumerable(Math.min, "name"); -verifyNotWritable(Math.min, "name"); -verifyConfigurable(Math.min, "name"); +verifyProperty(Math.min, "name", { + value: "min", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/pow/length.js b/test/built-ins/Math/pow/length.js index 7c8d23f4f23..89078363b2e 100644 --- a/test/built-ins/Math/pow/length.js +++ b/test/built-ins/Math/pow/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.pow.length, 2); - -verifyNotEnumerable(Math.pow, "length"); -verifyNotWritable(Math.pow, "length"); -verifyConfigurable(Math.pow, "length"); +verifyProperty(Math.pow, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/pow/name.js b/test/built-ins/Math/pow/name.js index 6aab1c6e6ef..ad20e1cf970 100644 --- a/test/built-ins/Math/pow/name.js +++ b/test/built-ins/Math/pow/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.pow.name, "pow"); - -verifyNotEnumerable(Math.pow, "name"); -verifyNotWritable(Math.pow, "name"); -verifyConfigurable(Math.pow, "name"); +verifyProperty(Math.pow, "name", { + value: "pow", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/random/length.js b/test/built-ins/Math/random/length.js index 011d4bb1517..eaa44d3b63e 100644 --- a/test/built-ins/Math/random/length.js +++ b/test/built-ins/Math/random/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.random.length, 0); - -verifyNotEnumerable(Math.random, "length"); -verifyNotWritable(Math.random, "length"); -verifyConfigurable(Math.random, "length"); +verifyProperty(Math.random, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/random/name.js b/test/built-ins/Math/random/name.js index 3caadf56309..64bc1cea43f 100644 --- a/test/built-ins/Math/random/name.js +++ b/test/built-ins/Math/random/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.random.name, "random"); - -verifyNotEnumerable(Math.random, "name"); -verifyNotWritable(Math.random, "name"); -verifyConfigurable(Math.random, "name"); +verifyProperty(Math.random, "name", { + value: "random", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/round/length.js b/test/built-ins/Math/round/length.js index b35f42fb912..77881babf0e 100644 --- a/test/built-ins/Math/round/length.js +++ b/test/built-ins/Math/round/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.round.length, 1); - -verifyNotEnumerable(Math.round, "length"); -verifyNotWritable(Math.round, "length"); -verifyConfigurable(Math.round, "length"); +verifyProperty(Math.round, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/round/name.js b/test/built-ins/Math/round/name.js index 3b8793ad687..f88d47a6ad2 100644 --- a/test/built-ins/Math/round/name.js +++ b/test/built-ins/Math/round/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.round.name, "round"); - -verifyNotEnumerable(Math.round, "name"); -verifyNotWritable(Math.round, "name"); -verifyConfigurable(Math.round, "name"); +verifyProperty(Math.round, "name", { + value: "round", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/sign/length.js b/test/built-ins/Math/sign/length.js index f8b59f72291..390e604804c 100644 --- a/test/built-ins/Math/sign/length.js +++ b/test/built-ins/Math/sign/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.sign.length, 1); - -verifyNotEnumerable(Math.sign, "length"); -verifyNotWritable(Math.sign, "length"); -verifyConfigurable(Math.sign, "length"); +verifyProperty(Math.sign, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/sign/name.js b/test/built-ins/Math/sign/name.js index 92bf979a774..f61db571a25 100644 --- a/test/built-ins/Math/sign/name.js +++ b/test/built-ins/Math/sign/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.sign.name, "sign"); - -verifyNotEnumerable(Math.sign, "name"); -verifyNotWritable(Math.sign, "name"); -verifyConfigurable(Math.sign, "name"); +verifyProperty(Math.sign, "name", { + value: "sign", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/sin/length.js b/test/built-ins/Math/sin/length.js index a898c483449..15b355dc854 100644 --- a/test/built-ins/Math/sin/length.js +++ b/test/built-ins/Math/sin/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.sin.length, 1); - -verifyNotEnumerable(Math.sin, "length"); -verifyNotWritable(Math.sin, "length"); -verifyConfigurable(Math.sin, "length"); +verifyProperty(Math.sin, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/sin/name.js b/test/built-ins/Math/sin/name.js index f73d01a0100..ef4ce59b87f 100644 --- a/test/built-ins/Math/sin/name.js +++ b/test/built-ins/Math/sin/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.sin.name, "sin"); - -verifyNotEnumerable(Math.sin, "name"); -verifyNotWritable(Math.sin, "name"); -verifyConfigurable(Math.sin, "name"); +verifyProperty(Math.sin, "name", { + value: "sin", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/sinh/length.js b/test/built-ins/Math/sinh/length.js index 67a44f935a0..0c658e2aceb 100644 --- a/test/built-ins/Math/sinh/length.js +++ b/test/built-ins/Math/sinh/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.sinh.length, 1); - -verifyNotEnumerable(Math.sinh, "length"); -verifyNotWritable(Math.sinh, "length"); -verifyConfigurable(Math.sinh, "length"); +verifyProperty(Math.sinh, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/sinh/name.js b/test/built-ins/Math/sinh/name.js index d9695b387ea..4eb1673b8c4 100644 --- a/test/built-ins/Math/sinh/name.js +++ b/test/built-ins/Math/sinh/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.sinh.name, "sinh"); - -verifyNotEnumerable(Math.sinh, "name"); -verifyNotWritable(Math.sinh, "name"); -verifyConfigurable(Math.sinh, "name"); +verifyProperty(Math.sinh, "name", { + value: "sinh", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/sqrt/length.js b/test/built-ins/Math/sqrt/length.js index 496902434d4..270f7d2d0a0 100644 --- a/test/built-ins/Math/sqrt/length.js +++ b/test/built-ins/Math/sqrt/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.sqrt.length, 1); - -verifyNotEnumerable(Math.sqrt, "length"); -verifyNotWritable(Math.sqrt, "length"); -verifyConfigurable(Math.sqrt, "length"); +verifyProperty(Math.sqrt, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/sqrt/name.js b/test/built-ins/Math/sqrt/name.js index 5e63a72120f..c892a216dff 100644 --- a/test/built-ins/Math/sqrt/name.js +++ b/test/built-ins/Math/sqrt/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.sqrt.name, "sqrt"); - -verifyNotEnumerable(Math.sqrt, "name"); -verifyNotWritable(Math.sqrt, "name"); -verifyConfigurable(Math.sqrt, "name"); +verifyProperty(Math.sqrt, "name", { + value: "sqrt", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/tan/length.js b/test/built-ins/Math/tan/length.js index d31894aa18e..6e9e147d3ed 100644 --- a/test/built-ins/Math/tan/length.js +++ b/test/built-ins/Math/tan/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.tan.length, 1); - -verifyNotEnumerable(Math.tan, "length"); -verifyNotWritable(Math.tan, "length"); -verifyConfigurable(Math.tan, "length"); +verifyProperty(Math.tan, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/tan/name.js b/test/built-ins/Math/tan/name.js index c531b0e1986..007cbbd3858 100644 --- a/test/built-ins/Math/tan/name.js +++ b/test/built-ins/Math/tan/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.tan.name, "tan"); - -verifyNotEnumerable(Math.tan, "name"); -verifyNotWritable(Math.tan, "name"); -verifyConfigurable(Math.tan, "name"); +verifyProperty(Math.tan, "name", { + value: "tan", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/tanh/length.js b/test/built-ins/Math/tanh/length.js index 4c512c8bbd2..515c08cda3e 100644 --- a/test/built-ins/Math/tanh/length.js +++ b/test/built-ins/Math/tanh/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.tanh.length, 1); - -verifyNotEnumerable(Math.tanh, "length"); -verifyNotWritable(Math.tanh, "length"); -verifyConfigurable(Math.tanh, "length"); +verifyProperty(Math.tanh, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/tanh/name.js b/test/built-ins/Math/tanh/name.js index 8df7318e6c4..8c174184cd9 100644 --- a/test/built-ins/Math/tanh/name.js +++ b/test/built-ins/Math/tanh/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.tanh.name, "tanh"); - -verifyNotEnumerable(Math.tanh, "name"); -verifyNotWritable(Math.tanh, "name"); -verifyConfigurable(Math.tanh, "name"); +verifyProperty(Math.tanh, "name", { + value: "tanh", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/trunc/length.js b/test/built-ins/Math/trunc/length.js index c9be5b51e02..311671cc775 100644 --- a/test/built-ins/Math/trunc/length.js +++ b/test/built-ins/Math/trunc/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.trunc.length, 1); - -verifyNotEnumerable(Math.trunc, "length"); -verifyNotWritable(Math.trunc, "length"); -verifyConfigurable(Math.trunc, "length"); +verifyProperty(Math.trunc, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Math/trunc/name.js b/test/built-ins/Math/trunc/name.js index e7058c2c189..69d245b2dc4 100644 --- a/test/built-ins/Math/trunc/name.js +++ b/test/built-ins/Math/trunc/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Math.trunc.name, "trunc"); - -verifyNotEnumerable(Math.trunc, "name"); -verifyNotWritable(Math.trunc, "name"); -verifyConfigurable(Math.trunc, "name"); +verifyProperty(Math.trunc, "name", { + value: "trunc", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/EvalError/length.js b/test/built-ins/NativeErrors/EvalError/length.js index 70b3370321d..52c729d767b 100644 --- a/test/built-ins/NativeErrors/EvalError/length.js +++ b/test/built-ins/NativeErrors/EvalError/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(EvalError.length, 1); - -verifyNotEnumerable(EvalError, "length"); -verifyNotWritable(EvalError, "length"); -verifyConfigurable(EvalError, "length"); +verifyProperty(EvalError, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/EvalError/name.js b/test/built-ins/NativeErrors/EvalError/name.js index 31b3ec19286..299df8f2e90 100644 --- a/test/built-ins/NativeErrors/EvalError/name.js +++ b/test/built-ins/NativeErrors/EvalError/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(EvalError.name, "EvalError"); - -verifyNotEnumerable(EvalError, "name"); -verifyNotWritable(EvalError, "name"); -verifyConfigurable(EvalError, "name"); +verifyProperty(EvalError, "name", { + value: "EvalError", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/EvalError/prototype/name.js b/test/built-ins/NativeErrors/EvalError/prototype/name.js index 8dada4fab7e..fc0574667e8 100644 --- a/test/built-ins/NativeErrors/EvalError/prototype/name.js +++ b/test/built-ins/NativeErrors/EvalError/prototype/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(EvalError.prototype.name, "EvalError"); - -verifyNotEnumerable(EvalError.prototype, "name"); -verifyWritable(EvalError.prototype, "name"); -verifyConfigurable(EvalError.prototype, "name"); +verifyProperty(EvalError.prototype, "name", { + value: "EvalError", + writable: true, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/RangeError/length.js b/test/built-ins/NativeErrors/RangeError/length.js index 46fd2bbe337..891ce44348a 100644 --- a/test/built-ins/NativeErrors/RangeError/length.js +++ b/test/built-ins/NativeErrors/RangeError/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(RangeError.length, 1); - -verifyNotEnumerable(RangeError, "length"); -verifyNotWritable(RangeError, "length"); -verifyConfigurable(RangeError, "length"); +verifyProperty(RangeError, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/RangeError/name.js b/test/built-ins/NativeErrors/RangeError/name.js index 08e144eab0b..8a02c0b93fa 100644 --- a/test/built-ins/NativeErrors/RangeError/name.js +++ b/test/built-ins/NativeErrors/RangeError/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(RangeError.name, "RangeError"); - -verifyNotEnumerable(RangeError, "name"); -verifyNotWritable(RangeError, "name"); -verifyConfigurable(RangeError, "name"); +verifyProperty(RangeError, "name", { + value: "RangeError", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/RangeError/prototype/name.js b/test/built-ins/NativeErrors/RangeError/prototype/name.js index 547e71663a5..433a8b7abab 100644 --- a/test/built-ins/NativeErrors/RangeError/prototype/name.js +++ b/test/built-ins/NativeErrors/RangeError/prototype/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(RangeError.prototype.name, "RangeError"); - -verifyNotEnumerable(RangeError.prototype, "name"); -verifyWritable(RangeError.prototype, "name"); -verifyConfigurable(RangeError.prototype, "name"); +verifyProperty(RangeError.prototype, "name", { + value: "RangeError", + writable: true, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/ReferenceError/length.js b/test/built-ins/NativeErrors/ReferenceError/length.js index 080f4b3edb3..27dbee8181b 100644 --- a/test/built-ins/NativeErrors/ReferenceError/length.js +++ b/test/built-ins/NativeErrors/ReferenceError/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(ReferenceError.length, 1); - -verifyNotEnumerable(ReferenceError, "length"); -verifyNotWritable(ReferenceError, "length"); -verifyConfigurable(ReferenceError, "length"); +verifyProperty(ReferenceError, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/ReferenceError/name.js b/test/built-ins/NativeErrors/ReferenceError/name.js index 7ffcc4b5a6b..a972e14d193 100644 --- a/test/built-ins/NativeErrors/ReferenceError/name.js +++ b/test/built-ins/NativeErrors/ReferenceError/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(ReferenceError.name, "ReferenceError"); - -verifyNotEnumerable(ReferenceError, "name"); -verifyNotWritable(ReferenceError, "name"); -verifyConfigurable(ReferenceError, "name"); +verifyProperty(ReferenceError, "name", { + value: "ReferenceError", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/ReferenceError/prototype/name.js b/test/built-ins/NativeErrors/ReferenceError/prototype/name.js index 9bc9f8866a1..1d5df727251 100644 --- a/test/built-ins/NativeErrors/ReferenceError/prototype/name.js +++ b/test/built-ins/NativeErrors/ReferenceError/prototype/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(ReferenceError.prototype.name, "ReferenceError"); - -verifyNotEnumerable(ReferenceError.prototype, "name"); -verifyWritable(ReferenceError.prototype, "name"); -verifyConfigurable(ReferenceError.prototype, "name"); +verifyProperty(ReferenceError.prototype, "name", { + value: "ReferenceError", + writable: true, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/SyntaxError/length.js b/test/built-ins/NativeErrors/SyntaxError/length.js index a4dea32c1a7..793663d23c6 100644 --- a/test/built-ins/NativeErrors/SyntaxError/length.js +++ b/test/built-ins/NativeErrors/SyntaxError/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(SyntaxError.length, 1); - -verifyNotEnumerable(SyntaxError, "length"); -verifyNotWritable(SyntaxError, "length"); -verifyConfigurable(SyntaxError, "length"); +verifyProperty(SyntaxError, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/SyntaxError/name.js b/test/built-ins/NativeErrors/SyntaxError/name.js index 3642c439745..f7bf7f6f166 100644 --- a/test/built-ins/NativeErrors/SyntaxError/name.js +++ b/test/built-ins/NativeErrors/SyntaxError/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(SyntaxError.name, "SyntaxError"); - -verifyNotEnumerable(SyntaxError, "name"); -verifyNotWritable(SyntaxError, "name"); -verifyConfigurable(SyntaxError, "name"); +verifyProperty(SyntaxError, "name", { + value: "SyntaxError", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/SyntaxError/prototype/name.js b/test/built-ins/NativeErrors/SyntaxError/prototype/name.js index 8a1ff5f8a79..d570cda5795 100644 --- a/test/built-ins/NativeErrors/SyntaxError/prototype/name.js +++ b/test/built-ins/NativeErrors/SyntaxError/prototype/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(SyntaxError.prototype.name, "SyntaxError"); - -verifyNotEnumerable(SyntaxError.prototype, "name"); -verifyWritable(SyntaxError.prototype, "name"); -verifyConfigurable(SyntaxError.prototype, "name"); +verifyProperty(SyntaxError.prototype, "name", { + value: "SyntaxError", + writable: true, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/TypeError/length.js b/test/built-ins/NativeErrors/TypeError/length.js index bd287c740d4..2ca3de4d009 100644 --- a/test/built-ins/NativeErrors/TypeError/length.js +++ b/test/built-ins/NativeErrors/TypeError/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(TypeError.length, 1); - -verifyNotEnumerable(TypeError, "length"); -verifyNotWritable(TypeError, "length"); -verifyConfigurable(TypeError, "length"); +verifyProperty(TypeError, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/TypeError/name.js b/test/built-ins/NativeErrors/TypeError/name.js index 56a6df48727..a48362a4f6b 100644 --- a/test/built-ins/NativeErrors/TypeError/name.js +++ b/test/built-ins/NativeErrors/TypeError/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(TypeError.name, "TypeError"); - -verifyNotEnumerable(TypeError, "name"); -verifyNotWritable(TypeError, "name"); -verifyConfigurable(TypeError, "name"); +verifyProperty(TypeError, "name", { + value: "TypeError", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/TypeError/prototype/name.js b/test/built-ins/NativeErrors/TypeError/prototype/name.js index 2546e52e9c8..d03428f10e9 100644 --- a/test/built-ins/NativeErrors/TypeError/prototype/name.js +++ b/test/built-ins/NativeErrors/TypeError/prototype/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(TypeError.prototype.name, "TypeError"); - -verifyNotEnumerable(TypeError.prototype, "name"); -verifyWritable(TypeError.prototype, "name"); -verifyConfigurable(TypeError.prototype, "name"); +verifyProperty(TypeError.prototype, "name", { + value: "TypeError", + writable: true, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/URIError/length.js b/test/built-ins/NativeErrors/URIError/length.js index 123dd769fb1..93011e88d47 100644 --- a/test/built-ins/NativeErrors/URIError/length.js +++ b/test/built-ins/NativeErrors/URIError/length.js @@ -25,8 +25,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(URIError.length, 1); - -verifyNotEnumerable(URIError, "length"); -verifyNotWritable(URIError, "length"); -verifyConfigurable(URIError, "length"); +verifyProperty(URIError, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/URIError/name.js b/test/built-ins/NativeErrors/URIError/name.js index 2826b759164..d442286b538 100644 --- a/test/built-ins/NativeErrors/URIError/name.js +++ b/test/built-ins/NativeErrors/URIError/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(URIError.name, "URIError"); - -verifyNotEnumerable(URIError, "name"); -verifyNotWritable(URIError, "name"); -verifyConfigurable(URIError, "name"); +verifyProperty(URIError, "name", { + value: "URIError", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/URIError/prototype/name.js b/test/built-ins/NativeErrors/URIError/prototype/name.js index c5295c38e16..4add9825e11 100644 --- a/test/built-ins/NativeErrors/URIError/prototype/name.js +++ b/test/built-ins/NativeErrors/URIError/prototype/name.js @@ -17,8 +17,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(URIError.prototype.name, "URIError"); - -verifyNotEnumerable(URIError.prototype, "name"); -verifyWritable(URIError.prototype, "name"); -verifyConfigurable(URIError.prototype, "name"); +verifyProperty(URIError.prototype, "name", { + value: "URIError", + writable: true, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/isFinite/length.js b/test/built-ins/Number/isFinite/length.js index 422afa9fe33..f48c960eb56 100644 --- a/test/built-ins/Number/isFinite/length.js +++ b/test/built-ins/Number/isFinite/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.isFinite.length, 1); - -verifyNotEnumerable(Number.isFinite, "length"); -verifyNotWritable(Number.isFinite, "length"); -verifyConfigurable(Number.isFinite, "length"); +verifyProperty(Number.isFinite, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/isFinite/name.js b/test/built-ins/Number/isFinite/name.js index 6069bce9505..51ef8b19c95 100644 --- a/test/built-ins/Number/isFinite/name.js +++ b/test/built-ins/Number/isFinite/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.isFinite.name, "isFinite"); - -verifyNotEnumerable(Number.isFinite, "name"); -verifyNotWritable(Number.isFinite, "name"); -verifyConfigurable(Number.isFinite, "name"); +verifyProperty(Number.isFinite, "name", { + value: "isFinite", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/isInteger/length.js b/test/built-ins/Number/isInteger/length.js index ca37aedfefb..858209dea19 100644 --- a/test/built-ins/Number/isInteger/length.js +++ b/test/built-ins/Number/isInteger/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.isInteger.length, 1); - -verifyNotEnumerable(Number.isInteger, "length"); -verifyNotWritable(Number.isInteger, "length"); -verifyConfigurable(Number.isInteger, "length"); +verifyProperty(Number.isInteger, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/isInteger/name.js b/test/built-ins/Number/isInteger/name.js index df98cf01d44..f9e4fe0defe 100644 --- a/test/built-ins/Number/isInteger/name.js +++ b/test/built-ins/Number/isInteger/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.isInteger.name, "isInteger"); - -verifyNotEnumerable(Number.isInteger, "name"); -verifyNotWritable(Number.isInteger, "name"); -verifyConfigurable(Number.isInteger, "name"); +verifyProperty(Number.isInteger, "name", { + value: "isInteger", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/isNaN/length.js b/test/built-ins/Number/isNaN/length.js index 68f2584cac8..69914a24691 100644 --- a/test/built-ins/Number/isNaN/length.js +++ b/test/built-ins/Number/isNaN/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.isNaN.length, 1); - -verifyNotEnumerable(Number.isNaN, "length"); -verifyNotWritable(Number.isNaN, "length"); -verifyConfigurable(Number.isNaN, "length"); +verifyProperty(Number.isNaN, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/isNaN/name.js b/test/built-ins/Number/isNaN/name.js index fee4602a92d..1f57ac357b2 100644 --- a/test/built-ins/Number/isNaN/name.js +++ b/test/built-ins/Number/isNaN/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.isNaN.name, "isNaN"); - -verifyNotEnumerable(Number.isNaN, "name"); -verifyNotWritable(Number.isNaN, "name"); -verifyConfigurable(Number.isNaN, "name"); +verifyProperty(Number.isNaN, "name", { + value: "isNaN", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/isSafeInteger/length.js b/test/built-ins/Number/isSafeInteger/length.js index 23e23e6c808..ab73312e4aa 100644 --- a/test/built-ins/Number/isSafeInteger/length.js +++ b/test/built-ins/Number/isSafeInteger/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.isSafeInteger.length, 1); - -verifyNotEnumerable(Number.isSafeInteger, "length"); -verifyNotWritable(Number.isSafeInteger, "length"); -verifyConfigurable(Number.isSafeInteger, "length"); +verifyProperty(Number.isSafeInteger, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/isSafeInteger/name.js b/test/built-ins/Number/isSafeInteger/name.js index 808120077c2..0ef1237b8b7 100644 --- a/test/built-ins/Number/isSafeInteger/name.js +++ b/test/built-ins/Number/isSafeInteger/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.isSafeInteger.name, "isSafeInteger"); - -verifyNotEnumerable(Number.isSafeInteger, "name"); -verifyNotWritable(Number.isSafeInteger, "name"); -verifyConfigurable(Number.isSafeInteger, "name"); +verifyProperty(Number.isSafeInteger, "name", { + value: "isSafeInteger", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toExponential/length.js b/test/built-ins/Number/prototype/toExponential/length.js index 679171af2db..b38e7b94a8c 100644 --- a/test/built-ins/Number/prototype/toExponential/length.js +++ b/test/built-ins/Number/prototype/toExponential/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toExponential.length, 1); - -verifyNotEnumerable(Number.prototype.toExponential, "length"); -verifyNotWritable(Number.prototype.toExponential, "length"); -verifyConfigurable(Number.prototype.toExponential, "length"); +verifyProperty(Number.prototype.toExponential, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toExponential/name.js b/test/built-ins/Number/prototype/toExponential/name.js index ae937b6a054..127c89adc77 100644 --- a/test/built-ins/Number/prototype/toExponential/name.js +++ b/test/built-ins/Number/prototype/toExponential/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toExponential.name, "toExponential"); - -verifyNotEnumerable(Number.prototype.toExponential, "name"); -verifyNotWritable(Number.prototype.toExponential, "name"); -verifyConfigurable(Number.prototype.toExponential, "name"); +verifyProperty(Number.prototype.toExponential, "name", { + value: "toExponential", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toFixed/length.js b/test/built-ins/Number/prototype/toFixed/length.js index f5f9745ede6..0ff44dc64a6 100644 --- a/test/built-ins/Number/prototype/toFixed/length.js +++ b/test/built-ins/Number/prototype/toFixed/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toFixed.length, 1); - -verifyNotEnumerable(Number.prototype.toFixed, "length"); -verifyNotWritable(Number.prototype.toFixed, "length"); -verifyConfigurable(Number.prototype.toFixed, "length"); +verifyProperty(Number.prototype.toFixed, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toFixed/name.js b/test/built-ins/Number/prototype/toFixed/name.js index df63ee0b798..3eb7bd7b534 100644 --- a/test/built-ins/Number/prototype/toFixed/name.js +++ b/test/built-ins/Number/prototype/toFixed/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toFixed.name, "toFixed"); - -verifyNotEnumerable(Number.prototype.toFixed, "name"); -verifyNotWritable(Number.prototype.toFixed, "name"); -verifyConfigurable(Number.prototype.toFixed, "name"); +verifyProperty(Number.prototype.toFixed, "name", { + value: "toFixed", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toLocaleString/length.js b/test/built-ins/Number/prototype/toLocaleString/length.js index 2f3e2a4c80a..a07cc5ef797 100644 --- a/test/built-ins/Number/prototype/toLocaleString/length.js +++ b/test/built-ins/Number/prototype/toLocaleString/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toLocaleString.length, 0); - -verifyNotEnumerable(Number.prototype.toLocaleString, "length"); -verifyNotWritable(Number.prototype.toLocaleString, "length"); -verifyConfigurable(Number.prototype.toLocaleString, "length"); +verifyProperty(Number.prototype.toLocaleString, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toLocaleString/name.js b/test/built-ins/Number/prototype/toLocaleString/name.js index 9654fad6ed7..faa9fba00c8 100644 --- a/test/built-ins/Number/prototype/toLocaleString/name.js +++ b/test/built-ins/Number/prototype/toLocaleString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toLocaleString.name, "toLocaleString"); - -verifyNotEnumerable(Number.prototype.toLocaleString, "name"); -verifyNotWritable(Number.prototype.toLocaleString, "name"); -verifyConfigurable(Number.prototype.toLocaleString, "name"); +verifyProperty(Number.prototype.toLocaleString, "name", { + value: "toLocaleString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toPrecision/length.js b/test/built-ins/Number/prototype/toPrecision/length.js index 231f9b15cb6..240c1dd3606 100644 --- a/test/built-ins/Number/prototype/toPrecision/length.js +++ b/test/built-ins/Number/prototype/toPrecision/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toPrecision.length, 1); - -verifyNotEnumerable(Number.prototype.toPrecision, "length"); -verifyNotWritable(Number.prototype.toPrecision, "length"); -verifyConfigurable(Number.prototype.toPrecision, "length"); +verifyProperty(Number.prototype.toPrecision, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toPrecision/name.js b/test/built-ins/Number/prototype/toPrecision/name.js index 953919eed45..22624249ba6 100644 --- a/test/built-ins/Number/prototype/toPrecision/name.js +++ b/test/built-ins/Number/prototype/toPrecision/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toPrecision.name, "toPrecision"); - -verifyNotEnumerable(Number.prototype.toPrecision, "name"); -verifyNotWritable(Number.prototype.toPrecision, "name"); -verifyConfigurable(Number.prototype.toPrecision, "name"); +verifyProperty(Number.prototype.toPrecision, "name", { + value: "toPrecision", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toString/length.js b/test/built-ins/Number/prototype/toString/length.js index 529d854a062..c21a5a717fa 100644 --- a/test/built-ins/Number/prototype/toString/length.js +++ b/test/built-ins/Number/prototype/toString/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toString.length, 1); - -verifyNotEnumerable(Number.prototype.toString, "length"); -verifyNotWritable(Number.prototype.toString, "length"); -verifyConfigurable(Number.prototype.toString, "length"); +verifyProperty(Number.prototype.toString, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/toString/name.js b/test/built-ins/Number/prototype/toString/name.js index f8396ad957e..aa72ee558cc 100644 --- a/test/built-ins/Number/prototype/toString/name.js +++ b/test/built-ins/Number/prototype/toString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.toString.name, "toString"); - -verifyNotEnumerable(Number.prototype.toString, "name"); -verifyNotWritable(Number.prototype.toString, "name"); -verifyConfigurable(Number.prototype.toString, "name"); +verifyProperty(Number.prototype.toString, "name", { + value: "toString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/valueOf/length.js b/test/built-ins/Number/prototype/valueOf/length.js index 7e44ab4cb40..d126b874186 100644 --- a/test/built-ins/Number/prototype/valueOf/length.js +++ b/test/built-ins/Number/prototype/valueOf/length.js @@ -22,8 +22,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.valueOf.length, 0); - -verifyNotEnumerable(Number.prototype.valueOf, "length"); -verifyNotWritable(Number.prototype.valueOf, "length"); -verifyConfigurable(Number.prototype.valueOf, "length"); +verifyProperty(Number.prototype.valueOf, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Number/prototype/valueOf/name.js b/test/built-ins/Number/prototype/valueOf/name.js index 0ed0cd7de6d..7d9c9a1824e 100644 --- a/test/built-ins/Number/prototype/valueOf/name.js +++ b/test/built-ins/Number/prototype/valueOf/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Number.prototype.valueOf.name, "valueOf"); - -verifyNotEnumerable(Number.prototype.valueOf, "name"); -verifyNotWritable(Number.prototype.valueOf, "name"); -verifyConfigurable(Number.prototype.valueOf, "name"); +verifyProperty(Number.prototype.valueOf, "name", { + value: "valueOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/Symbol.species/length.js b/test/built-ins/Promise/Symbol.species/length.js index a18d5d68df8..345e28f9947 100644 --- a/test/built-ins/Promise/Symbol.species/length.js +++ b/test/built-ins/Promise/Symbol.species/length.js @@ -25,8 +25,9 @@ features: [Symbol.species] var desc = Object.getOwnPropertyDescriptor(Promise, Symbol.species); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/all/length.js b/test/built-ins/Promise/all/length.js index e47b77119de..2fdd0bf1136 100644 --- a/test/built-ins/Promise/all/length.js +++ b/test/built-ins/Promise/all/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.all.length, 1); - -verifyNotEnumerable(Promise.all, 'length'); -verifyNotWritable(Promise.all, 'length'); -verifyConfigurable(Promise.all, 'length'); +verifyProperty(Promise.all, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/all/name.js b/test/built-ins/Promise/all/name.js index 74ea807e148..03efaff90f3 100644 --- a/test/built-ins/Promise/all/name.js +++ b/test/built-ins/Promise/all/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.all.name, 'all'); - -verifyNotEnumerable(Promise.all, 'name'); -verifyNotWritable(Promise.all, 'name'); -verifyConfigurable(Promise.all, 'name'); +verifyProperty(Promise.all, "name", { + value: "all", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/all/resolve-element-function-length.js b/test/built-ins/Promise/all/resolve-element-function-length.js index 87938eb4dec..34a9b087f5c 100644 --- a/test/built-ins/Promise/all/resolve-element-function-length.js +++ b/test/built-ins/Promise/all/resolve-element-function-length.js @@ -29,8 +29,9 @@ NotPromise.resolve = function(v) { }; Promise.all.call(NotPromise, [thenable]); -assert.sameValue(resolveElementFunction.length, 1); - -verifyNotEnumerable(resolveElementFunction, "length"); -verifyNotWritable(resolveElementFunction, "length"); -verifyConfigurable(resolveElementFunction, "length"); +verifyProperty(resolveElementFunction, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/executor-function-length.js b/test/built-ins/Promise/executor-function-length.js index 0558e97b55c..e0be9d8b768 100644 --- a/test/built-ins/Promise/executor-function-length.js +++ b/test/built-ins/Promise/executor-function-length.js @@ -22,8 +22,9 @@ function NotPromise(executor) { } Promise.resolve.call(NotPromise); -assert.sameValue(executorFunction.length, 2); - -verifyNotEnumerable(executorFunction, "length"); -verifyNotWritable(executorFunction, "length"); -verifyConfigurable(executorFunction, "length"); +verifyProperty(executorFunction, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/length.js b/test/built-ins/Promise/length.js index f9a41ff1d29..4c74150599e 100644 --- a/test/built-ins/Promise/length.js +++ b/test/built-ins/Promise/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.length, 1); - -verifyNotEnumerable(Promise, 'length'); -verifyNotWritable(Promise, 'length'); -verifyConfigurable(Promise, 'length'); +verifyProperty(Promise, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/name.js b/test/built-ins/Promise/name.js index 41475fc2fb1..c7b2d0fccb7 100644 --- a/test/built-ins/Promise/name.js +++ b/test/built-ins/Promise/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.name, 'Promise'); - -verifyNotEnumerable(Promise, 'name'); -verifyNotWritable(Promise, 'name'); -verifyConfigurable(Promise, 'name'); +verifyProperty(Promise, "name", { + value: "Promise", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/prototype/catch/length.js b/test/built-ins/Promise/prototype/catch/length.js index 7b60157d36d..56769ad9fc8 100644 --- a/test/built-ins/Promise/prototype/catch/length.js +++ b/test/built-ins/Promise/prototype/catch/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.prototype.catch.length, 1); - -verifyNotEnumerable(Promise.prototype.catch, 'length'); -verifyNotWritable(Promise.prototype.catch, 'length'); -verifyConfigurable(Promise.prototype.catch, 'length'); +verifyProperty(Promise.prototype.catch, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/prototype/catch/name.js b/test/built-ins/Promise/prototype/catch/name.js index a8c7c5a086e..bd7ad24d392 100644 --- a/test/built-ins/Promise/prototype/catch/name.js +++ b/test/built-ins/Promise/prototype/catch/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.prototype.catch.name, 'catch'); - -verifyNotEnumerable(Promise.prototype.catch, 'name'); -verifyNotWritable(Promise.prototype.catch, 'name'); -verifyConfigurable(Promise.prototype.catch, 'name'); +verifyProperty(Promise.prototype.catch, "name", { + value: "catch", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/prototype/finally/name.js b/test/built-ins/Promise/prototype/finally/name.js index 682d3d0adf8..092c888b66c 100644 --- a/test/built-ins/Promise/prototype/finally/name.js +++ b/test/built-ins/Promise/prototype/finally/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [Promise.prototype.finally] ---*/ -assert.sameValue(Promise.prototype.finally.name, 'finally'); - -verifyNotEnumerable(Promise.prototype.finally, 'name'); -verifyNotWritable(Promise.prototype.finally, 'name'); -verifyConfigurable(Promise.prototype.finally, 'name'); +verifyProperty(Promise.prototype.finally, "name", { + value: "finally", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/prototype/then/length.js b/test/built-ins/Promise/prototype/then/length.js index ba659566abe..05e02aee1b1 100644 --- a/test/built-ins/Promise/prototype/then/length.js +++ b/test/built-ins/Promise/prototype/then/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.prototype.then.length, 2); - -verifyNotEnumerable(Promise.prototype.then, 'length'); -verifyNotWritable(Promise.prototype.then, 'length'); -verifyConfigurable(Promise.prototype.then, 'length'); +verifyProperty(Promise.prototype.then, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/prototype/then/name.js b/test/built-ins/Promise/prototype/then/name.js index 79ff08844db..cef4fe356d2 100644 --- a/test/built-ins/Promise/prototype/then/name.js +++ b/test/built-ins/Promise/prototype/then/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.prototype.then.name, 'then'); - -verifyNotEnumerable(Promise.prototype.then, 'name'); -verifyNotWritable(Promise.prototype.then, 'name'); -verifyConfigurable(Promise.prototype.then, 'name'); +verifyProperty(Promise.prototype.then, "name", { + value: "then", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/race/length.js b/test/built-ins/Promise/race/length.js index 5e560c906a4..b484757a7ea 100644 --- a/test/built-ins/Promise/race/length.js +++ b/test/built-ins/Promise/race/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.race.length, 1); - -verifyNotEnumerable(Promise.race, 'length'); -verifyNotWritable(Promise.race, 'length'); -verifyConfigurable(Promise.race, 'length'); +verifyProperty(Promise.race, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/race/name.js b/test/built-ins/Promise/race/name.js index 9c374931a44..6f894f06d2c 100644 --- a/test/built-ins/Promise/race/name.js +++ b/test/built-ins/Promise/race/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.race.name, 'race'); - -verifyNotEnumerable(Promise.race, 'name'); -verifyNotWritable(Promise.race, 'name'); -verifyConfigurable(Promise.race, 'name'); +verifyProperty(Promise.race, "name", { + value: "race", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/reject-function-length.js b/test/built-ins/Promise/reject-function-length.js index 96bcc748e8d..439b06d5161 100644 --- a/test/built-ins/Promise/reject-function-length.js +++ b/test/built-ins/Promise/reject-function-length.js @@ -19,8 +19,9 @@ new Promise(function(resolve, reject) { rejectFunction = reject; }); -assert.sameValue(rejectFunction.length, 1); - -verifyNotEnumerable(rejectFunction, "length"); -verifyNotWritable(rejectFunction, "length"); -verifyConfigurable(rejectFunction, "length"); +verifyProperty(rejectFunction, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/reject/length.js b/test/built-ins/Promise/reject/length.js index 098d73f28f8..d804df8b19b 100644 --- a/test/built-ins/Promise/reject/length.js +++ b/test/built-ins/Promise/reject/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.reject.length, 1); - -verifyNotEnumerable(Promise.reject, 'length'); -verifyNotWritable(Promise.reject, 'length'); -verifyConfigurable(Promise.reject, 'length'); +verifyProperty(Promise.reject, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/reject/name.js b/test/built-ins/Promise/reject/name.js index ab60b167f61..c468c55e95d 100644 --- a/test/built-ins/Promise/reject/name.js +++ b/test/built-ins/Promise/reject/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.reject.name, 'reject'); - -verifyNotEnumerable(Promise.reject, 'name'); -verifyNotWritable(Promise.reject, 'name'); -verifyConfigurable(Promise.reject, 'name'); +verifyProperty(Promise.reject, "name", { + value: "reject", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/resolve-function-length.js b/test/built-ins/Promise/resolve-function-length.js index 04cec79d157..ee9214a3d12 100644 --- a/test/built-ins/Promise/resolve-function-length.js +++ b/test/built-ins/Promise/resolve-function-length.js @@ -19,8 +19,9 @@ new Promise(function(resolve, reject) { resolveFunction = resolve; }); -assert.sameValue(resolveFunction.length, 1); - -verifyNotEnumerable(resolveFunction, "length"); -verifyNotWritable(resolveFunction, "length"); -verifyConfigurable(resolveFunction, "length"); +verifyProperty(resolveFunction, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/resolve/length.js b/test/built-ins/Promise/resolve/length.js index 95c361dc7ce..048a79d93e1 100644 --- a/test/built-ins/Promise/resolve/length.js +++ b/test/built-ins/Promise/resolve/length.js @@ -18,8 +18,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.resolve.length, 1); - -verifyNotEnumerable(Promise.resolve, 'length'); -verifyNotWritable(Promise.resolve, 'length'); -verifyConfigurable(Promise.resolve, 'length'); +verifyProperty(Promise.resolve, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Promise/resolve/name.js b/test/built-ins/Promise/resolve/name.js index 26ac23a6087..1841e28bde6 100644 --- a/test/built-ins/Promise/resolve/name.js +++ b/test/built-ins/Promise/resolve/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(Promise.resolve.name, 'resolve'); - -verifyNotEnumerable(Promise.resolve, 'name'); -verifyNotWritable(Promise.resolve, 'name'); -verifyConfigurable(Promise.resolve, 'name'); +verifyProperty(Promise.resolve, "name", { + value: "resolve", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Proxy/length.js b/test/built-ins/Proxy/length.js index 3f4ca5a95b1..1c125502074 100644 --- a/test/built-ins/Proxy/length.js +++ b/test/built-ins/Proxy/length.js @@ -11,8 +11,9 @@ includes: [propertyHelper.js] features: [Proxy] ---*/ -assert.sameValue(Proxy.length, 2, "The value of `Proxy.length` is `2`"); - -verifyNotEnumerable(Proxy, "length"); -verifyNotWritable(Proxy, "length"); -verifyConfigurable(Proxy, "length"); +verifyProperty(Proxy, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Proxy/name.js b/test/built-ins/Proxy/name.js index 14aaeb58513..96aa1ab59fe 100644 --- a/test/built-ins/Proxy/name.js +++ b/test/built-ins/Proxy/name.js @@ -11,8 +11,9 @@ includes: [propertyHelper.js] features: [Proxy] ---*/ -assert.sameValue(Proxy.name, "Proxy", "The value of `Proxy.name` is `'Proxy'`"); - -verifyNotEnumerable(Proxy, "name"); -verifyNotWritable(Proxy, "name"); -verifyConfigurable(Proxy, "name"); +verifyProperty(Proxy, "name", { + value: "Proxy", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Proxy/revocable/length.js b/test/built-ins/Proxy/revocable/length.js index 3033b979e71..718a10115ad 100644 --- a/test/built-ins/Proxy/revocable/length.js +++ b/test/built-ins/Proxy/revocable/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [Proxy] ---*/ -assert.sameValue(Proxy.revocable.length, 2); - -verifyNotEnumerable(Proxy.revocable, "length"); -verifyNotWritable(Proxy.revocable, "length"); -verifyConfigurable(Proxy.revocable, "length"); +verifyProperty(Proxy.revocable, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Proxy/revocable/name.js b/test/built-ins/Proxy/revocable/name.js index 5d3c844c244..b39abfd0433 100644 --- a/test/built-ins/Proxy/revocable/name.js +++ b/test/built-ins/Proxy/revocable/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js] features: [Proxy] ---*/ -assert.sameValue(Proxy.revocable.name, "revocable"); - -verifyNotEnumerable(Proxy.revocable, "name"); -verifyNotWritable(Proxy.revocable, "name"); -verifyConfigurable(Proxy.revocable, "name"); +verifyProperty(Proxy.revocable, "name", { + value: "revocable", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Proxy/revocable/revocation-function-length.js b/test/built-ins/Proxy/revocable/revocation-function-length.js index 5ef5dbc332a..6a489deef41 100644 --- a/test/built-ins/Proxy/revocable/revocation-function-length.js +++ b/test/built-ins/Proxy/revocable/revocation-function-length.js @@ -17,8 +17,9 @@ features: [Proxy] var revocationFunction = Proxy.revocable({}, {}).revoke; -assert.sameValue(revocationFunction.length, 0); - -verifyNotEnumerable(revocationFunction, "length"); -verifyNotWritable(revocationFunction, "length"); -verifyConfigurable(revocationFunction, "length"); +verifyProperty(revocationFunction, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/apply/length.js b/test/built-ins/Reflect/apply/length.js index 8c66edfa969..04895b48ae3 100644 --- a/test/built-ins/Reflect/apply/length.js +++ b/test/built-ins/Reflect/apply/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.apply.length, 3, - 'The value of `Reflect.apply.length` is `3`' -); - -verifyNotEnumerable(Reflect.apply, 'length'); -verifyNotWritable(Reflect.apply, 'length'); -verifyConfigurable(Reflect.apply, 'length'); +verifyProperty(Reflect.apply, "length", { + value: 3, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/apply/name.js b/test/built-ins/Reflect/apply/name.js index 7d71677f767..164e965c465 100644 --- a/test/built-ins/Reflect/apply/name.js +++ b/test/built-ins/Reflect/apply/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.apply.name, 'apply', - 'The value of `Reflect.apply.name` is `"apply"`' -); - -verifyNotEnumerable(Reflect.apply, 'name'); -verifyNotWritable(Reflect.apply, 'name'); -verifyConfigurable(Reflect.apply, 'name'); +verifyProperty(Reflect.apply, "name", { + value: "apply", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/construct/length.js b/test/built-ins/Reflect/construct/length.js index eec78e35d81..fd97e8c7857 100644 --- a/test/built-ins/Reflect/construct/length.js +++ b/test/built-ins/Reflect/construct/length.js @@ -12,11 +12,9 @@ includes: [propertyHelper.js] features: [Reflect, Reflect.construct] ---*/ -assert.sameValue( - Reflect.construct.length, 2, - 'The value of `Reflect.construct.length` is `2`' -); - -verifyNotEnumerable(Reflect.construct, 'length'); -verifyNotWritable(Reflect.construct, 'length'); -verifyConfigurable(Reflect.construct, 'length'); +verifyProperty(Reflect.construct, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/construct/name.js b/test/built-ins/Reflect/construct/name.js index 56b8b7651f2..3bad54b3691 100644 --- a/test/built-ins/Reflect/construct/name.js +++ b/test/built-ins/Reflect/construct/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect, Reflect.construct] ---*/ -assert.sameValue( - Reflect.construct.name, 'construct', - 'The value of `Reflect.construct.name` is `"construct"`' -); - -verifyNotEnumerable(Reflect.construct, 'name'); -verifyNotWritable(Reflect.construct, 'name'); -verifyConfigurable(Reflect.construct, 'name'); +verifyProperty(Reflect.construct, "name", { + value: "construct", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/defineProperty/length.js b/test/built-ins/Reflect/defineProperty/length.js index e5f137a6d99..3b0cf36d47b 100644 --- a/test/built-ins/Reflect/defineProperty/length.js +++ b/test/built-ins/Reflect/defineProperty/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.defineProperty.length, 3, - 'The value of `Reflect.defineProperty.length` is `3`' -); - -verifyNotEnumerable(Reflect.defineProperty, 'length'); -verifyNotWritable(Reflect.defineProperty, 'length'); -verifyConfigurable(Reflect.defineProperty, 'length'); +verifyProperty(Reflect.defineProperty, "length", { + value: 3, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/defineProperty/name.js b/test/built-ins/Reflect/defineProperty/name.js index 59793358062..24754c2f066 100644 --- a/test/built-ins/Reflect/defineProperty/name.js +++ b/test/built-ins/Reflect/defineProperty/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.defineProperty.name, 'defineProperty', - 'The value of `Reflect.defineProperty.name` is `"defineProperty"`' -); - -verifyNotEnumerable(Reflect.defineProperty, 'name'); -verifyNotWritable(Reflect.defineProperty, 'name'); -verifyConfigurable(Reflect.defineProperty, 'name'); +verifyProperty(Reflect.defineProperty, "name", { + value: "defineProperty", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/deleteProperty/length.js b/test/built-ins/Reflect/deleteProperty/length.js index 2a0be6e69bf..f3b72ae4c3d 100644 --- a/test/built-ins/Reflect/deleteProperty/length.js +++ b/test/built-ins/Reflect/deleteProperty/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.deleteProperty.length, 2, - 'The value of `Reflect.deleteProperty.length` is `2`' -); - -verifyNotEnumerable(Reflect.deleteProperty, 'length'); -verifyNotWritable(Reflect.deleteProperty, 'length'); -verifyConfigurable(Reflect.deleteProperty, 'length'); +verifyProperty(Reflect.deleteProperty, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/deleteProperty/name.js b/test/built-ins/Reflect/deleteProperty/name.js index dd8e1558021..337f2dc61fb 100644 --- a/test/built-ins/Reflect/deleteProperty/name.js +++ b/test/built-ins/Reflect/deleteProperty/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.deleteProperty.name, 'deleteProperty', - 'The value of `Reflect.deleteProperty.name` is `"deleteProperty"`' -); - -verifyNotEnumerable(Reflect.deleteProperty, 'name'); -verifyNotWritable(Reflect.deleteProperty, 'name'); -verifyConfigurable(Reflect.deleteProperty, 'name'); +verifyProperty(Reflect.deleteProperty, "name", { + value: "deleteProperty", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/get/length.js b/test/built-ins/Reflect/get/length.js index 957d0bff803..5902df30191 100644 --- a/test/built-ins/Reflect/get/length.js +++ b/test/built-ins/Reflect/get/length.js @@ -12,11 +12,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.get.length, 2, - 'The value of `Reflect.get.length` is `2`' -); - -verifyNotEnumerable(Reflect.get, 'length'); -verifyNotWritable(Reflect.get, 'length'); -verifyConfigurable(Reflect.get, 'length'); +verifyProperty(Reflect.get, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/get/name.js b/test/built-ins/Reflect/get/name.js index 0913bfdd77c..811d875cb9e 100644 --- a/test/built-ins/Reflect/get/name.js +++ b/test/built-ins/Reflect/get/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.get.name, 'get', - 'The value of `Reflect.get.name` is `"get"`' -); - -verifyNotEnumerable(Reflect.get, 'name'); -verifyNotWritable(Reflect.get, 'name'); -verifyConfigurable(Reflect.get, 'name'); +verifyProperty(Reflect.get, "name", { + value: "get", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js index a5eb0a11447..ec78d558d1c 100644 --- a/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js +++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.getOwnPropertyDescriptor.length, 2, - 'The value of `Reflect.getOwnPropertyDescriptor.length` is `2`' -); - -verifyNotEnumerable(Reflect.getOwnPropertyDescriptor, 'length'); -verifyNotWritable(Reflect.getOwnPropertyDescriptor, 'length'); -verifyConfigurable(Reflect.getOwnPropertyDescriptor, 'length'); +verifyProperty(Reflect.getOwnPropertyDescriptor, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js index 6d487eeafb4..03d111b78d8 100644 --- a/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js +++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.getOwnPropertyDescriptor.name, 'getOwnPropertyDescriptor', - 'The value of `Reflect.getOwnPropertyDescriptor.name` is `"getOwnPropertyDescriptor"`' -); - -verifyNotEnumerable(Reflect.getOwnPropertyDescriptor, 'name'); -verifyNotWritable(Reflect.getOwnPropertyDescriptor, 'name'); -verifyConfigurable(Reflect.getOwnPropertyDescriptor, 'name'); +verifyProperty(Reflect.getOwnPropertyDescriptor, "name", { + value: "getOwnPropertyDescriptor", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/getPrototypeOf/length.js b/test/built-ins/Reflect/getPrototypeOf/length.js index 2c9335e8ca2..e930c716405 100644 --- a/test/built-ins/Reflect/getPrototypeOf/length.js +++ b/test/built-ins/Reflect/getPrototypeOf/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.getPrototypeOf.length, 1, - 'The value of `Reflect.getPrototypeOf.length` is `1`' -); - -verifyNotEnumerable(Reflect.getPrototypeOf, 'length'); -verifyNotWritable(Reflect.getPrototypeOf, 'length'); -verifyConfigurable(Reflect.getPrototypeOf, 'length'); +verifyProperty(Reflect.getPrototypeOf, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/getPrototypeOf/name.js b/test/built-ins/Reflect/getPrototypeOf/name.js index 49c5d033a13..ed81349fc3c 100644 --- a/test/built-ins/Reflect/getPrototypeOf/name.js +++ b/test/built-ins/Reflect/getPrototypeOf/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.getPrototypeOf.name, 'getPrototypeOf', - 'The value of `Reflect.getPrototypeOf.name` is `"getPrototypeOf"`' -); - -verifyNotEnumerable(Reflect.getPrototypeOf, 'name'); -verifyNotWritable(Reflect.getPrototypeOf, 'name'); -verifyConfigurable(Reflect.getPrototypeOf, 'name'); +verifyProperty(Reflect.getPrototypeOf, "name", { + value: "getPrototypeOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/has/length.js b/test/built-ins/Reflect/has/length.js index aaa7f74613c..290603a67c0 100644 --- a/test/built-ins/Reflect/has/length.js +++ b/test/built-ins/Reflect/has/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.has.length, 2, - 'The value of `Reflect.has.length` is `2`' -); - -verifyNotEnumerable(Reflect.has, 'length'); -verifyNotWritable(Reflect.has, 'length'); -verifyConfigurable(Reflect.has, 'length'); +verifyProperty(Reflect.has, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/has/name.js b/test/built-ins/Reflect/has/name.js index c735a600f68..b05e37d8ef2 100644 --- a/test/built-ins/Reflect/has/name.js +++ b/test/built-ins/Reflect/has/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.has.name, 'has', - 'The value of `Reflect.has.name` is `"has"`' -); - -verifyNotEnumerable(Reflect.has, 'name'); -verifyNotWritable(Reflect.has, 'name'); -verifyConfigurable(Reflect.has, 'name'); +verifyProperty(Reflect.has, "name", { + value: "has", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/isExtensible/length.js b/test/built-ins/Reflect/isExtensible/length.js index 5b8d6e1e1c2..aaaba4964dd 100644 --- a/test/built-ins/Reflect/isExtensible/length.js +++ b/test/built-ins/Reflect/isExtensible/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.isExtensible.length, 1, - 'The value of `Reflect.isExtensible.length` is `1`' -); - -verifyNotEnumerable(Reflect.isExtensible, 'length'); -verifyNotWritable(Reflect.isExtensible, 'length'); -verifyConfigurable(Reflect.isExtensible, 'length'); +verifyProperty(Reflect.isExtensible, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/isExtensible/name.js b/test/built-ins/Reflect/isExtensible/name.js index f1d4cf62aee..dbca505c147 100644 --- a/test/built-ins/Reflect/isExtensible/name.js +++ b/test/built-ins/Reflect/isExtensible/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.isExtensible.name, 'isExtensible', - 'The value of `Reflect.isExtensible.name` is `"isExtensible"`' -); - -verifyNotEnumerable(Reflect.isExtensible, 'name'); -verifyNotWritable(Reflect.isExtensible, 'name'); -verifyConfigurable(Reflect.isExtensible, 'name'); +verifyProperty(Reflect.isExtensible, "name", { + value: "isExtensible", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/ownKeys/length.js b/test/built-ins/Reflect/ownKeys/length.js index 51b8877fb0c..c269647829a 100644 --- a/test/built-ins/Reflect/ownKeys/length.js +++ b/test/built-ins/Reflect/ownKeys/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.ownKeys.length, 1, - 'The value of `Reflect.ownKeys.length` is `1`' -); - -verifyNotEnumerable(Reflect.ownKeys, 'length'); -verifyNotWritable(Reflect.ownKeys, 'length'); -verifyConfigurable(Reflect.ownKeys, 'length'); +verifyProperty(Reflect.ownKeys, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/ownKeys/name.js b/test/built-ins/Reflect/ownKeys/name.js index 0bf2efd66d2..8fd178825e7 100644 --- a/test/built-ins/Reflect/ownKeys/name.js +++ b/test/built-ins/Reflect/ownKeys/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.ownKeys.name, 'ownKeys', - 'The value of `Reflect.ownKeys.name` is `"ownKeys"`' -); - -verifyNotEnumerable(Reflect.ownKeys, 'name'); -verifyNotWritable(Reflect.ownKeys, 'name'); -verifyConfigurable(Reflect.ownKeys, 'name'); +verifyProperty(Reflect.ownKeys, "name", { + value: "ownKeys", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/preventExtensions/length.js b/test/built-ins/Reflect/preventExtensions/length.js index 6d26c92e85e..7c0cf8f35db 100644 --- a/test/built-ins/Reflect/preventExtensions/length.js +++ b/test/built-ins/Reflect/preventExtensions/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.preventExtensions.length, 1, - 'The value of `Reflect.preventExtensions.length` is `1`' -); - -verifyNotEnumerable(Reflect.preventExtensions, 'length'); -verifyNotWritable(Reflect.preventExtensions, 'length'); -verifyConfigurable(Reflect.preventExtensions, 'length'); +verifyProperty(Reflect.preventExtensions, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/preventExtensions/name.js b/test/built-ins/Reflect/preventExtensions/name.js index 2a93f7de952..8c814d51fd1 100644 --- a/test/built-ins/Reflect/preventExtensions/name.js +++ b/test/built-ins/Reflect/preventExtensions/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect] ---*/ -assert.sameValue( - Reflect.preventExtensions.name, 'preventExtensions', - 'The value of `Reflect.preventExtensions.name` is `"preventExtensions"`' -); - -verifyNotEnumerable(Reflect.preventExtensions, 'name'); -verifyNotWritable(Reflect.preventExtensions, 'name'); -verifyConfigurable(Reflect.preventExtensions, 'name'); +verifyProperty(Reflect.preventExtensions, "name", { + value: "preventExtensions", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/set/length.js b/test/built-ins/Reflect/set/length.js index 7efa3e4ae78..fe67712bd9c 100644 --- a/test/built-ins/Reflect/set/length.js +++ b/test/built-ins/Reflect/set/length.js @@ -12,11 +12,9 @@ includes: [propertyHelper.js] features: [Reflect, Reflect.set] ---*/ -assert.sameValue( - Reflect.set.length, 3, - 'The value of `Reflect.set.length` is `3`' -); - -verifyNotEnumerable(Reflect.set, 'length'); -verifyNotWritable(Reflect.set, 'length'); -verifyConfigurable(Reflect.set, 'length'); +verifyProperty(Reflect.set, "length", { + value: 3, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/set/name.js b/test/built-ins/Reflect/set/name.js index eea8c69399e..22fbcdcd01f 100644 --- a/test/built-ins/Reflect/set/name.js +++ b/test/built-ins/Reflect/set/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [Reflect, Reflect.set] ---*/ -assert.sameValue( - Reflect.set.name, 'set', - 'The value of `Reflect.set.name` is `"set"`' -); - -verifyNotEnumerable(Reflect.set, 'name'); -verifyNotWritable(Reflect.set, 'name'); -verifyConfigurable(Reflect.set, 'name'); +verifyProperty(Reflect.set, "name", { + value: "set", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/setPrototypeOf/length.js b/test/built-ins/Reflect/setPrototypeOf/length.js index d7c2b0ec477..794f2fcbc57 100644 --- a/test/built-ins/Reflect/setPrototypeOf/length.js +++ b/test/built-ins/Reflect/setPrototypeOf/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [Reflect, Reflect.setPrototypeOf] ---*/ -assert.sameValue( - Reflect.setPrototypeOf.length, 2, - 'The value of `Reflect.setPrototypeOf.length` is `2`' -); - -verifyNotEnumerable(Reflect.setPrototypeOf, 'length'); -verifyNotWritable(Reflect.setPrototypeOf, 'length'); -verifyConfigurable(Reflect.setPrototypeOf, 'length'); +verifyProperty(Reflect.setPrototypeOf, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Reflect/setPrototypeOf/name.js b/test/built-ins/Reflect/setPrototypeOf/name.js index 6adf0183178..b83b6712742 100644 --- a/test/built-ins/Reflect/setPrototypeOf/name.js +++ b/test/built-ins/Reflect/setPrototypeOf/name.js @@ -12,11 +12,9 @@ includes: [propertyHelper.js] features: [Reflect, Reflect.setPrototypeOf] ---*/ -assert.sameValue( - Reflect.setPrototypeOf.name, 'setPrototypeOf', - 'The value of `Reflect.setPrototypeOf.name` is `"setPrototypeOf"`' -); - -verifyNotEnumerable(Reflect.setPrototypeOf, 'name'); -verifyNotWritable(Reflect.setPrototypeOf, 'name'); -verifyConfigurable(Reflect.setPrototypeOf, 'name'); +verifyProperty(Reflect.setPrototypeOf, "name", { + value: "setPrototypeOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/Symbol.species/length.js b/test/built-ins/RegExp/Symbol.species/length.js index a89f5ceedcf..b0b8d5ac15c 100644 --- a/test/built-ins/RegExp/Symbol.species/length.js +++ b/test/built-ins/RegExp/Symbol.species/length.js @@ -25,8 +25,9 @@ features: [Symbol.species] var desc = Object.getOwnPropertyDescriptor(RegExp, Symbol.species); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/Symbol.species/symbol-species-name.js b/test/built-ins/RegExp/Symbol.species/symbol-species-name.js index cb144b948cf..aa05f99b1f7 100644 --- a/test/built-ins/RegExp/Symbol.species/symbol-species-name.js +++ b/test/built-ins/RegExp/Symbol.species/symbol-species-name.js @@ -15,11 +15,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(RegExp, Symbol.species); -assert.sameValue( - descriptor.get.name, - 'get [Symbol.species]' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get [Symbol.species]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.match/length.js b/test/built-ins/RegExp/prototype/Symbol.match/length.js index f0a2a5cc664..3452be6449d 100644 --- a/test/built-ins/RegExp/prototype/Symbol.match/length.js +++ b/test/built-ins/RegExp/prototype/Symbol.match/length.js @@ -19,8 +19,9 @@ includes: [propertyHelper.js] features: [Symbol.match] ---*/ -assert.sameValue(RegExp.prototype[Symbol.match].length, 1); - -verifyNotEnumerable(RegExp.prototype[Symbol.match], 'length'); -verifyNotWritable(RegExp.prototype[Symbol.match], 'length'); -verifyConfigurable(RegExp.prototype[Symbol.match], 'length'); +verifyProperty(RegExp.prototype[Symbol.match], "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.match/name.js b/test/built-ins/RegExp/prototype/Symbol.match/name.js index d6ef6926cd3..2e18b520cda 100644 --- a/test/built-ins/RegExp/prototype/Symbol.match/name.js +++ b/test/built-ins/RegExp/prototype/Symbol.match/name.js @@ -17,8 +17,9 @@ includes: [propertyHelper.js] features: [Symbol.match] ---*/ -assert.sameValue(RegExp.prototype[Symbol.match].name, '[Symbol.match]'); - -verifyNotEnumerable(RegExp.prototype[Symbol.match], 'name'); -verifyNotWritable(RegExp.prototype[Symbol.match], 'name'); -verifyConfigurable(RegExp.prototype[Symbol.match], 'name'); +verifyProperty(RegExp.prototype[Symbol.match], "name", { + value: "[Symbol.match]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.matchAll/length.js b/test/built-ins/RegExp/prototype/Symbol.matchAll/length.js index 7aee38c0cb7..7edf2306eb6 100644 --- a/test/built-ins/RegExp/prototype/Symbol.matchAll/length.js +++ b/test/built-ins/RegExp/prototype/Symbol.matchAll/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [Symbol.matchAll] ---*/ -assert.sameValue(RegExp.prototype[Symbol.matchAll].length, 1); - -verifyNotEnumerable(RegExp.prototype[Symbol.matchAll], 'length'); -verifyNotWritable(RegExp.prototype[Symbol.matchAll], 'length'); -verifyConfigurable(RegExp.prototype[Symbol.matchAll], 'length'); +verifyProperty(RegExp.prototype[Symbol.matchAll], "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.matchAll/name.js b/test/built-ins/RegExp/prototype/Symbol.matchAll/name.js index b6030216425..859219059a6 100644 --- a/test/built-ins/RegExp/prototype/Symbol.matchAll/name.js +++ b/test/built-ins/RegExp/prototype/Symbol.matchAll/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [Symbol.matchAll] ---*/ -assert.sameValue(RegExp.prototype[Symbol.matchAll].name, '[Symbol.matchAll]'); - -verifyNotEnumerable(RegExp.prototype[Symbol.matchAll], 'name'); -verifyNotWritable(RegExp.prototype[Symbol.matchAll], 'name'); -verifyConfigurable(RegExp.prototype[Symbol.matchAll], 'name'); +verifyProperty(RegExp.prototype[Symbol.matchAll], "name", { + value: "[Symbol.matchAll]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.replace/length.js b/test/built-ins/RegExp/prototype/Symbol.replace/length.js index 272d1dc7bf7..b8402132751 100644 --- a/test/built-ins/RegExp/prototype/Symbol.replace/length.js +++ b/test/built-ins/RegExp/prototype/Symbol.replace/length.js @@ -19,8 +19,9 @@ includes: [propertyHelper.js] features: [Symbol.replace] ---*/ -assert.sameValue(RegExp.prototype[Symbol.replace].length, 2); - -verifyNotEnumerable(RegExp.prototype[Symbol.replace], 'length'); -verifyNotWritable(RegExp.prototype[Symbol.replace], 'length'); -verifyConfigurable(RegExp.prototype[Symbol.replace], 'length'); +verifyProperty(RegExp.prototype[Symbol.replace], "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.replace/name.js b/test/built-ins/RegExp/prototype/Symbol.replace/name.js index 2629a552d51..99696b9eb52 100644 --- a/test/built-ins/RegExp/prototype/Symbol.replace/name.js +++ b/test/built-ins/RegExp/prototype/Symbol.replace/name.js @@ -17,8 +17,9 @@ includes: [propertyHelper.js] features: [Symbol.replace] ---*/ -assert.sameValue(RegExp.prototype[Symbol.replace].name, '[Symbol.replace]'); - -verifyNotEnumerable(RegExp.prototype[Symbol.replace], 'name'); -verifyNotWritable(RegExp.prototype[Symbol.replace], 'name'); -verifyConfigurable(RegExp.prototype[Symbol.replace], 'name'); +verifyProperty(RegExp.prototype[Symbol.replace], "name", { + value: "[Symbol.replace]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.search/length.js b/test/built-ins/RegExp/prototype/Symbol.search/length.js index 54e314382ba..3996718700f 100644 --- a/test/built-ins/RegExp/prototype/Symbol.search/length.js +++ b/test/built-ins/RegExp/prototype/Symbol.search/length.js @@ -20,8 +20,9 @@ features: [Symbol.search] includes: [propertyHelper.js] ---*/ -assert.sameValue(RegExp.prototype[Symbol.search].length, 1); - -verifyNotEnumerable(RegExp.prototype[Symbol.search], 'length'); -verifyNotWritable(RegExp.prototype[Symbol.search], 'length'); -verifyConfigurable(RegExp.prototype[Symbol.search], 'length'); +verifyProperty(RegExp.prototype[Symbol.search], "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.search/name.js b/test/built-ins/RegExp/prototype/Symbol.search/name.js index d0f53a12d5e..ca2f69ad3c6 100644 --- a/test/built-ins/RegExp/prototype/Symbol.search/name.js +++ b/test/built-ins/RegExp/prototype/Symbol.search/name.js @@ -17,8 +17,9 @@ features: [Symbol.search] includes: [propertyHelper.js] ---*/ -assert.sameValue(RegExp.prototype[Symbol.search].name, '[Symbol.search]'); - -verifyNotEnumerable(RegExp.prototype[Symbol.search], 'name'); -verifyNotWritable(RegExp.prototype[Symbol.search], 'name'); -verifyConfigurable(RegExp.prototype[Symbol.search], 'name'); +verifyProperty(RegExp.prototype[Symbol.search], "name", { + value: "[Symbol.search]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.split/length.js b/test/built-ins/RegExp/prototype/Symbol.split/length.js index 483287280dc..e320034e3a1 100644 --- a/test/built-ins/RegExp/prototype/Symbol.split/length.js +++ b/test/built-ins/RegExp/prototype/Symbol.split/length.js @@ -17,8 +17,9 @@ includes: [propertyHelper.js] features: [Symbol.split] ---*/ -assert.sameValue(RegExp.prototype[Symbol.split].length, 2); - -verifyNotEnumerable(RegExp.prototype[Symbol.split], 'length'); -verifyNotWritable(RegExp.prototype[Symbol.split], 'length'); -verifyConfigurable(RegExp.prototype[Symbol.split], 'length'); +verifyProperty(RegExp.prototype[Symbol.split], "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.split/name.js b/test/built-ins/RegExp/prototype/Symbol.split/name.js index 2f505e77608..c754d335f53 100644 --- a/test/built-ins/RegExp/prototype/Symbol.split/name.js +++ b/test/built-ins/RegExp/prototype/Symbol.split/name.js @@ -17,8 +17,9 @@ includes: [propertyHelper.js] features: [Symbol.split] ---*/ -assert.sameValue(RegExp.prototype[Symbol.split].name, '[Symbol.split]'); - -verifyNotEnumerable(RegExp.prototype[Symbol.split], 'name'); -verifyNotWritable(RegExp.prototype[Symbol.split], 'name'); -verifyConfigurable(RegExp.prototype[Symbol.split], 'name'); +verifyProperty(RegExp.prototype[Symbol.split], "name", { + value: "[Symbol.split]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/exec/name.js b/test/built-ins/RegExp/prototype/exec/name.js index d43dc59c461..bdd95eb6a22 100644 --- a/test/built-ins/RegExp/prototype/exec/name.js +++ b/test/built-ins/RegExp/prototype/exec/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(RegExp.prototype.exec.name, "exec"); - -verifyNotEnumerable(RegExp.prototype.exec, "name"); -verifyNotWritable(RegExp.prototype.exec, "name"); -verifyConfigurable(RegExp.prototype.exec, "name"); +verifyProperty(RegExp.prototype.exec, "name", { + value: "exec", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/global/length.js b/test/built-ins/RegExp/prototype/global/length.js index 00986d42fe4..39461412c30 100644 --- a/test/built-ins/RegExp/prototype/global/length.js +++ b/test/built-ins/RegExp/prototype/global/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "global"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/global/name.js b/test/built-ins/RegExp/prototype/global/name.js index 13e88d24204..0f8815916e3 100644 --- a/test/built-ins/RegExp/prototype/global/name.js +++ b/test/built-ins/RegExp/prototype/global/name.js @@ -14,11 +14,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'global'); -assert.sameValue( - descriptor.get.name, - 'get global' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get global", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/ignoreCase/length.js b/test/built-ins/RegExp/prototype/ignoreCase/length.js index 3f61bfbbd59..01c4c473ace 100644 --- a/test/built-ins/RegExp/prototype/ignoreCase/length.js +++ b/test/built-ins/RegExp/prototype/ignoreCase/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "ignoreCase"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/ignoreCase/name.js b/test/built-ins/RegExp/prototype/ignoreCase/name.js index a47066f68e2..f777f1f3bb0 100644 --- a/test/built-ins/RegExp/prototype/ignoreCase/name.js +++ b/test/built-ins/RegExp/prototype/ignoreCase/name.js @@ -14,11 +14,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'ignoreCase'); -assert.sameValue( - descriptor.get.name, - 'get ignoreCase' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get ignoreCase", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/multiline/length.js b/test/built-ins/RegExp/prototype/multiline/length.js index 01f129d5eb9..2f4caccad8c 100644 --- a/test/built-ins/RegExp/prototype/multiline/length.js +++ b/test/built-ins/RegExp/prototype/multiline/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "multiline"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/multiline/name.js b/test/built-ins/RegExp/prototype/multiline/name.js index 62db16be0f2..763b0ab4329 100644 --- a/test/built-ins/RegExp/prototype/multiline/name.js +++ b/test/built-ins/RegExp/prototype/multiline/name.js @@ -14,11 +14,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'multiline'); -assert.sameValue( - descriptor.get.name, - 'get multiline' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get multiline", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/sticky/length.js b/test/built-ins/RegExp/prototype/sticky/length.js index 7dcb8a833e1..644b060f779 100644 --- a/test/built-ins/RegExp/prototype/sticky/length.js +++ b/test/built-ins/RegExp/prototype/sticky/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "sticky"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/sticky/name.js b/test/built-ins/RegExp/prototype/sticky/name.js index 7c271ba0561..6769b8b6408 100644 --- a/test/built-ins/RegExp/prototype/sticky/name.js +++ b/test/built-ins/RegExp/prototype/sticky/name.js @@ -14,11 +14,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'sticky'); -assert.sameValue( - descriptor.get.name, - 'get sticky' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get sticky", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/test/name.js b/test/built-ins/RegExp/prototype/test/name.js index 31ddb29c7a2..87859a58fd9 100644 --- a/test/built-ins/RegExp/prototype/test/name.js +++ b/test/built-ins/RegExp/prototype/test/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(RegExp.prototype.test.name, "test"); - -verifyNotEnumerable(RegExp.prototype.test, "name"); -verifyNotWritable(RegExp.prototype.test, "name"); -verifyConfigurable(RegExp.prototype.test, "name"); +verifyProperty(RegExp.prototype.test, "name", { + value: "test", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/toString/name.js b/test/built-ins/RegExp/prototype/toString/name.js index a64faa4ae61..92618244224 100644 --- a/test/built-ins/RegExp/prototype/toString/name.js +++ b/test/built-ins/RegExp/prototype/toString/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(RegExp.prototype.toString.name, "toString"); - -verifyNotEnumerable(RegExp.prototype.toString, "name"); -verifyNotWritable(RegExp.prototype.toString, "name"); -verifyConfigurable(RegExp.prototype.toString, "name"); +verifyProperty(RegExp.prototype.toString, "name", { + value: "toString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/unicode/length.js b/test/built-ins/RegExp/prototype/unicode/length.js index 4276cfcd649..3cb4c3d63c0 100644 --- a/test/built-ins/RegExp/prototype/unicode/length.js +++ b/test/built-ins/RegExp/prototype/unicode/length.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] var getter = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode').get; -assert.sameValue(getter.length, 0); - -verifyNotEnumerable(getter, 'length'); -verifyNotWritable(getter, 'length'); -verifyConfigurable(getter, 'length'); +verifyProperty(getter, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExp/prototype/unicode/name.js b/test/built-ins/RegExp/prototype/unicode/name.js index a4fb62cc6b3..4b9d6af029a 100644 --- a/test/built-ins/RegExp/prototype/unicode/name.js +++ b/test/built-ins/RegExp/prototype/unicode/name.js @@ -28,8 +28,9 @@ includes: [propertyHelper.js] var getter = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode').get; -assert.sameValue(getter.name, 'get unicode'); - -verifyNotEnumerable(getter, 'name'); -verifyNotWritable(getter, 'name'); -verifyConfigurable(getter, 'name'); +verifyProperty(getter, "name", { + value: "get unicode", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExpStringIteratorPrototype/next/length.js b/test/built-ins/RegExpStringIteratorPrototype/next/length.js index b9ae0f00998..1b0f91e0343 100644 --- a/test/built-ins/RegExpStringIteratorPrototype/next/length.js +++ b/test/built-ins/RegExpStringIteratorPrototype/next/length.js @@ -26,8 +26,9 @@ features: [Symbol.matchAll] var RegExpStringIteratorProto = Object.getPrototypeOf(/./[Symbol.matchAll]('')); -assert.sameValue(RegExpStringIteratorProto.next.length, 0); - -verifyNotEnumerable(RegExpStringIteratorProto.next, 'length'); -verifyNotWritable(RegExpStringIteratorProto.next, 'length'); -verifyConfigurable(RegExpStringIteratorProto.next, 'length'); +verifyProperty(RegExpStringIteratorProto.next, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/RegExpStringIteratorPrototype/next/name.js b/test/built-ins/RegExpStringIteratorPrototype/next/name.js index d9f275fbfea..762e013a8db 100644 --- a/test/built-ins/RegExpStringIteratorPrototype/next/name.js +++ b/test/built-ins/RegExpStringIteratorPrototype/next/name.js @@ -24,8 +24,9 @@ features: [Symbol.matchAll] var RegExpStringIteratorProto = Object.getPrototypeOf(/./[Symbol.matchAll]('')); -assert.sameValue(RegExpStringIteratorProto.next.name, 'next'); - -verifyNotEnumerable(RegExpStringIteratorProto.next, 'name'); -verifyNotWritable(RegExpStringIteratorProto.next, 'name'); -verifyConfigurable(RegExpStringIteratorProto.next, 'name'); +verifyProperty(RegExpStringIteratorProto.next, "name", { + value: "next", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/Symbol.species/length.js b/test/built-ins/Set/Symbol.species/length.js index b51de1b0f89..6e14e3fd529 100644 --- a/test/built-ins/Set/Symbol.species/length.js +++ b/test/built-ins/Set/Symbol.species/length.js @@ -25,8 +25,9 @@ features: [Symbol.species] var desc = Object.getOwnPropertyDescriptor(Set, Symbol.species); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/length.js b/test/built-ins/Set/length.js index 312a5a27fb4..a5391984d00 100644 --- a/test/built-ins/Set/length.js +++ b/test/built-ins/Set/length.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.length, 0, "The value of `Set.length` is `0`"); - -verifyNotEnumerable(Set, "length"); -verifyNotWritable(Set, "length"); -verifyConfigurable(Set, "length"); +verifyProperty(Set, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/name.js b/test/built-ins/Set/name.js index f044fe9fcb1..6db65798ca3 100644 --- a/test/built-ins/Set/name.js +++ b/test/built-ins/Set/name.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.name, "Set", "The value of `Set.name` is `'Set'`"); - -verifyNotEnumerable(Set, "name"); -verifyNotWritable(Set, "name"); -verifyConfigurable(Set, "name"); +verifyProperty(Set, "name", { + value: "Set", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/add/length.js b/test/built-ins/Set/prototype/add/length.js index aca4d252707..6b99e9fe47b 100644 --- a/test/built-ins/Set/prototype/add/length.js +++ b/test/built-ins/Set/prototype/add/length.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.add.length, 1, "The value of `Set.prototype.add.length` is `1`"); - -verifyNotEnumerable(Set.prototype.add, "length"); -verifyNotWritable(Set.prototype.add, "length"); -verifyConfigurable(Set.prototype.add, "length"); +verifyProperty(Set.prototype.add, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/add/name.js b/test/built-ins/Set/prototype/add/name.js index b926f46a9b1..712ff7c2f94 100644 --- a/test/built-ins/Set/prototype/add/name.js +++ b/test/built-ins/Set/prototype/add/name.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.add.name, "add", "The value of `Set.prototype.add.name` is `'add'`"); - -verifyNotEnumerable(Set.prototype.add, "name"); -verifyNotWritable(Set.prototype.add, "name"); -verifyConfigurable(Set.prototype.add, "name"); +verifyProperty(Set.prototype.add, "name", { + value: "add", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/clear/length.js b/test/built-ins/Set/prototype/clear/length.js index 49f7e706504..4ce3bef1579 100644 --- a/test/built-ins/Set/prototype/clear/length.js +++ b/test/built-ins/Set/prototype/clear/length.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.clear.length, 0, "The value of `Set.prototype.clear.length` is `0`"); - -verifyNotEnumerable(Set.prototype.clear, "length"); -verifyNotWritable(Set.prototype.clear, "length"); -verifyConfigurable(Set.prototype.clear, "length"); +verifyProperty(Set.prototype.clear, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/clear/name.js b/test/built-ins/Set/prototype/clear/name.js index f22f8a5d843..d5edcfa1c45 100644 --- a/test/built-ins/Set/prototype/clear/name.js +++ b/test/built-ins/Set/prototype/clear/name.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.clear.name, "clear", "The value of `Set.prototype.clear.name` is `'clear'`"); - -verifyNotEnumerable(Set.prototype.clear, "name"); -verifyNotWritable(Set.prototype.clear, "name"); -verifyConfigurable(Set.prototype.clear, "name"); +verifyProperty(Set.prototype.clear, "name", { + value: "clear", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/delete/length.js b/test/built-ins/Set/prototype/delete/length.js index a9b0008902b..a335b8ae325 100644 --- a/test/built-ins/Set/prototype/delete/length.js +++ b/test/built-ins/Set/prototype/delete/length.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.delete.length, 1, "The value of `Set.prototype.delete.length` is `1`"); - -verifyNotEnumerable(Set.prototype.delete, "length"); -verifyNotWritable(Set.prototype.delete, "length"); -verifyConfigurable(Set.prototype.delete, "length"); +verifyProperty(Set.prototype.delete, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/delete/name.js b/test/built-ins/Set/prototype/delete/name.js index 4d9fc1dc58c..8a454694085 100644 --- a/test/built-ins/Set/prototype/delete/name.js +++ b/test/built-ins/Set/prototype/delete/name.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.delete.name, "delete", "The value of `Set.prototype.delete.name` is `'delete'`"); - -verifyNotEnumerable(Set.prototype.delete, "name"); -verifyNotWritable(Set.prototype.delete, "name"); -verifyConfigurable(Set.prototype.delete, "name"); +verifyProperty(Set.prototype.delete, "name", { + value: "delete", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/entries/length.js b/test/built-ins/Set/prototype/entries/length.js index 2dc1c47ea6b..8df4fedc5c7 100644 --- a/test/built-ins/Set/prototype/entries/length.js +++ b/test/built-ins/Set/prototype/entries/length.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.entries.length, 0, "The value of `Set.prototype.entries.length` is `0`"); - -verifyNotEnumerable(Set.prototype.entries, "length"); -verifyNotWritable(Set.prototype.entries, "length"); -verifyConfigurable(Set.prototype.entries, "length"); +verifyProperty(Set.prototype.entries, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/entries/name.js b/test/built-ins/Set/prototype/entries/name.js index b03ff21ed15..005dd347a2c 100644 --- a/test/built-ins/Set/prototype/entries/name.js +++ b/test/built-ins/Set/prototype/entries/name.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.entries.name, "entries", "The value of `Set.prototype.entries.name` is `'entries'`"); - -verifyNotEnumerable(Set.prototype.entries, "name"); -verifyNotWritable(Set.prototype.entries, "name"); -verifyConfigurable(Set.prototype.entries, "name"); +verifyProperty(Set.prototype.entries, "name", { + value: "entries", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/forEach/length.js b/test/built-ins/Set/prototype/forEach/length.js index 4f525e35640..a0692f9a681 100644 --- a/test/built-ins/Set/prototype/forEach/length.js +++ b/test/built-ins/Set/prototype/forEach/length.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.forEach.length, 1, "The value of `Set.prototype.forEach.length` is `1`"); - -verifyNotEnumerable(Set.prototype.forEach, "length"); -verifyNotWritable(Set.prototype.forEach, "length"); -verifyConfigurable(Set.prototype.forEach, "length"); +verifyProperty(Set.prototype.forEach, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/forEach/name.js b/test/built-ins/Set/prototype/forEach/name.js index dd547d8cda8..307eab32e42 100644 --- a/test/built-ins/Set/prototype/forEach/name.js +++ b/test/built-ins/Set/prototype/forEach/name.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.forEach.name, "forEach", "The value of `Set.prototype.forEach.name` is `'forEach'`"); - -verifyNotEnumerable(Set.prototype.forEach, "name"); -verifyNotWritable(Set.prototype.forEach, "name"); -verifyConfigurable(Set.prototype.forEach, "name"); +verifyProperty(Set.prototype.forEach, "name", { + value: "forEach", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/has/length.js b/test/built-ins/Set/prototype/has/length.js index 48f7495155c..d7635a6d3a6 100644 --- a/test/built-ins/Set/prototype/has/length.js +++ b/test/built-ins/Set/prototype/has/length.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.has.length, 1, "The value of `Set.prototype.has.length` is `1`"); - -verifyNotEnumerable(Set.prototype.has, "length"); -verifyNotWritable(Set.prototype.has, "length"); -verifyConfigurable(Set.prototype.has, "length"); +verifyProperty(Set.prototype.has, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/has/name.js b/test/built-ins/Set/prototype/has/name.js index c6a5412edc4..e43e644e630 100644 --- a/test/built-ins/Set/prototype/has/name.js +++ b/test/built-ins/Set/prototype/has/name.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.has.name, "has", "The value of `Set.prototype.has.name` is `'has'`"); - -verifyNotEnumerable(Set.prototype.has, "name"); -verifyNotWritable(Set.prototype.has, "name"); -verifyConfigurable(Set.prototype.has, "name"); +verifyProperty(Set.prototype.has, "name", { + value: "has", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/size/length.js b/test/built-ins/Set/prototype/size/length.js index aeadc6bd17b..6b92372dea2 100644 --- a/test/built-ins/Set/prototype/size/length.js +++ b/test/built-ins/Set/prototype/size/length.js @@ -13,8 +13,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(Set.prototype, "size"); -assert.sameValue(descriptor.get.length, 0, "The value of `Set.prototype.size.length` is `0`"); - -verifyNotEnumerable(descriptor.get, "length"); -verifyNotWritable(descriptor.get, "length"); -verifyConfigurable(descriptor.get, "length"); +verifyProperty(descriptor.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/size/name.js b/test/built-ins/Set/prototype/size/name.js index ced76d31894..1f9d46c948c 100644 --- a/test/built-ins/Set/prototype/size/name.js +++ b/test/built-ins/Set/prototype/size/name.js @@ -16,8 +16,9 @@ includes: [propertyHelper.js] var descriptor = Object.getOwnPropertyDescriptor(Set.prototype, "size"); -assert.sameValue(descriptor.get.name, "get size", "The value of `descriptor.get.name` is `'get size'`"); - -verifyNotEnumerable(descriptor.get, "name"); -verifyNotWritable(descriptor.get, "name"); -verifyConfigurable(descriptor.get, "name"); +verifyProperty(descriptor.get, "name", { + value: "get size", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/values/length.js b/test/built-ins/Set/prototype/values/length.js index 3d89d09f32e..d7f800fc29a 100644 --- a/test/built-ins/Set/prototype/values/length.js +++ b/test/built-ins/Set/prototype/values/length.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.values.length, 0, "The value of `Set.prototype.values.length` is `0`"); - -verifyNotEnumerable(Set.prototype.values, "length"); -verifyNotWritable(Set.prototype.values, "length"); -verifyConfigurable(Set.prototype.values, "length"); +verifyProperty(Set.prototype.values, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Set/prototype/values/name.js b/test/built-ins/Set/prototype/values/name.js index e0cc04bda4e..b3dc1cfa789 100644 --- a/test/built-ins/Set/prototype/values/name.js +++ b/test/built-ins/Set/prototype/values/name.js @@ -10,8 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(Set.prototype.values.name, "values", "The value of `Set.prototype.values.name` is `'values'`"); - -verifyNotEnumerable(Set.prototype.values, "name"); -verifyNotWritable(Set.prototype.values, "name"); -verifyConfigurable(Set.prototype.values, "name"); +verifyProperty(Set.prototype.values, "name", { + value: "values", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/SetIteratorPrototype/next/length.js b/test/built-ins/SetIteratorPrototype/next/length.js index 94b0c9c0b67..542304b457e 100644 --- a/test/built-ins/SetIteratorPrototype/next/length.js +++ b/test/built-ins/SetIteratorPrototype/next/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js] var SetIteratorProto = Object.getPrototypeOf(new Set().values()); -assert.sameValue(SetIteratorProto.next.length, 0); - -verifyNotEnumerable(SetIteratorProto.next, "length"); -verifyNotWritable(SetIteratorProto.next, "length"); -verifyConfigurable(SetIteratorProto.next, "length"); +verifyProperty(SetIteratorProto.next, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/SetIteratorPrototype/next/name.js b/test/built-ins/SetIteratorPrototype/next/name.js index 27fe463fa2f..41e8e95a2dd 100644 --- a/test/built-ins/SetIteratorPrototype/next/name.js +++ b/test/built-ins/SetIteratorPrototype/next/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] var SetIteratorProto = Object.getPrototypeOf(new Set().values()); -assert.sameValue(SetIteratorProto.next.name, "next"); - -verifyNotEnumerable(SetIteratorProto.next, "name"); -verifyNotWritable(SetIteratorProto.next, "name"); -verifyConfigurable(SetIteratorProto.next, "name"); +verifyProperty(SetIteratorProto.next, "name", { + value: "next", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/SharedArrayBuffer/prototype/byteLength/length.js b/test/built-ins/SharedArrayBuffer/prototype/byteLength/length.js index bb469e93942..94cb2a8bb2c 100644 --- a/test/built-ins/SharedArrayBuffer/prototype/byteLength/length.js +++ b/test/built-ins/SharedArrayBuffer/prototype/byteLength/length.js @@ -11,8 +11,9 @@ features: [SharedArrayBuffer] var desc = Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, "byteLength"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/SharedArrayBuffer/prototype/byteLength/name.js b/test/built-ins/SharedArrayBuffer/prototype/byteLength/name.js index 307c4958719..5c4b87b17e0 100644 --- a/test/built-ins/SharedArrayBuffer/prototype/byteLength/name.js +++ b/test/built-ins/SharedArrayBuffer/prototype/byteLength/name.js @@ -13,11 +13,9 @@ var descriptor = Object.getOwnPropertyDescriptor( SharedArrayBuffer.prototype, 'byteLength' ); -assert.sameValue( - descriptor.get.name, 'get byteLength', - 'The value of `descriptor.get.name` is `"get byteLength"`' -); - -verifyNotEnumerable(descriptor.get, 'name'); -verifyNotWritable(descriptor.get, 'name'); -verifyConfigurable(descriptor.get, 'name'); +verifyProperty(descriptor.get, "name", { + value: "get byteLength", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/SharedArrayBuffer/prototype/slice/length.js b/test/built-ins/SharedArrayBuffer/prototype/slice/length.js index 54c521e7b4c..6363facd7f7 100644 --- a/test/built-ins/SharedArrayBuffer/prototype/slice/length.js +++ b/test/built-ins/SharedArrayBuffer/prototype/slice/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [SharedArrayBuffer] ---*/ -assert.sameValue(SharedArrayBuffer.prototype.slice.length, 2); - -verifyNotEnumerable(SharedArrayBuffer.prototype.slice, "length"); -verifyNotWritable(SharedArrayBuffer.prototype.slice, "length"); -verifyConfigurable(SharedArrayBuffer.prototype.slice, "length"); +verifyProperty(SharedArrayBuffer.prototype.slice, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/SharedArrayBuffer/prototype/slice/name.js b/test/built-ins/SharedArrayBuffer/prototype/slice/name.js index 88928a0163f..ee0d0d0df7b 100644 --- a/test/built-ins/SharedArrayBuffer/prototype/slice/name.js +++ b/test/built-ins/SharedArrayBuffer/prototype/slice/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js] features: [SharedArrayBuffer] ---*/ -assert.sameValue(SharedArrayBuffer.prototype.slice.name, "slice"); - -verifyNotEnumerable(SharedArrayBuffer.prototype.slice, "name"); -verifyNotWritable(SharedArrayBuffer.prototype.slice, "name"); -verifyConfigurable(SharedArrayBuffer.prototype.slice, "name"); +verifyProperty(SharedArrayBuffer.prototype.slice, "name", { + value: "slice", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/fromCharCode/name.js b/test/built-ins/String/fromCharCode/name.js index ac5f38c54e5..00d437a7580 100644 --- a/test/built-ins/String/fromCharCode/name.js +++ b/test/built-ins/String/fromCharCode/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.fromCharCode.name, "fromCharCode"); - -verifyNotEnumerable(String.fromCharCode, "name"); -verifyNotWritable(String.fromCharCode, "name"); -verifyConfigurable(String.fromCharCode, "name"); +verifyProperty(String.fromCharCode, "name", { + value: "fromCharCode", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/fromCodePoint/length.js b/test/built-ins/String/fromCodePoint/length.js index 28a154c4d67..0acb820333e 100644 --- a/test/built-ins/String/fromCodePoint/length.js +++ b/test/built-ins/String/fromCodePoint/length.js @@ -8,11 +8,9 @@ includes: [propertyHelper.js] features: [String.fromCodePoint] ---*/ -assert.sameValue( - String.fromCodePoint.length, 1, - 'The value of `String.fromCodePoint.length` is `1`' -); - -verifyNotEnumerable(String.fromCodePoint, 'length'); -verifyNotWritable(String.fromCodePoint, 'length'); -verifyConfigurable(String.fromCodePoint, 'length'); +verifyProperty(String.fromCodePoint, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/fromCodePoint/name.js b/test/built-ins/String/fromCodePoint/name.js index be0f98a800d..6d82a67884f 100644 --- a/test/built-ins/String/fromCodePoint/name.js +++ b/test/built-ins/String/fromCodePoint/name.js @@ -12,11 +12,9 @@ includes: [propertyHelper.js] features: [String.fromCodePoint] ---*/ -assert.sameValue( - String.fromCodePoint.name, 'fromCodePoint', - 'The value of `String.fromCodePoint.name` is "fromCodePoint"' -); - -verifyNotEnumerable(String.fromCodePoint, 'name'); -verifyNotWritable(String.fromCodePoint, 'name'); -verifyConfigurable(String.fromCodePoint, 'name'); +verifyProperty(String.fromCodePoint, "name", { + value: "fromCodePoint", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/Symbol.iterator/length.js b/test/built-ins/String/prototype/Symbol.iterator/length.js index 7dfe2774f96..9bdc4da1d98 100644 --- a/test/built-ins/String/prototype/Symbol.iterator/length.js +++ b/test/built-ins/String/prototype/Symbol.iterator/length.js @@ -19,8 +19,9 @@ features: [Symbol.iterator] includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype[Symbol.iterator].length, 0); - -verifyNotEnumerable(String.prototype[Symbol.iterator], 'length'); -verifyNotWritable(String.prototype[Symbol.iterator], 'length'); -verifyConfigurable(String.prototype[Symbol.iterator], 'length'); +verifyProperty(String.prototype[Symbol.iterator], "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/Symbol.iterator/name.js b/test/built-ins/String/prototype/Symbol.iterator/name.js index c07a90f926e..67b4291fff5 100644 --- a/test/built-ins/String/prototype/Symbol.iterator/name.js +++ b/test/built-ins/String/prototype/Symbol.iterator/name.js @@ -22,8 +22,9 @@ features: [Symbol.iterator] includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype[Symbol.iterator].name, '[Symbol.iterator]'); - -verifyNotEnumerable(String.prototype[Symbol.iterator], 'name'); -verifyNotWritable(String.prototype[Symbol.iterator], 'name'); -verifyConfigurable(String.prototype[Symbol.iterator], 'name'); +verifyProperty(String.prototype[Symbol.iterator], "name", { + value: "[Symbol.iterator]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/at/length.js b/test/built-ins/String/prototype/at/length.js index ff5029ed5fd..2a0e3ab3111 100644 --- a/test/built-ins/String/prototype/at/length.js +++ b/test/built-ins/String/prototype/at/length.js @@ -14,11 +14,9 @@ features: [String.prototype.at] ---*/ assert.sameValue(typeof String.prototype.at, 'function'); -assert.sameValue( - String.prototype.at.length, 1, - 'The value of String.prototype.at.length is 1' -); - -verifyNotEnumerable(String.prototype.at, 'length'); -verifyNotWritable(String.prototype.at, 'length'); -verifyConfigurable(String.prototype.at, 'length'); +verifyProperty(String.prototype.at, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/charAt/name.js b/test/built-ins/String/prototype/charAt/name.js index 61df98148dc..605bc56a961 100644 --- a/test/built-ins/String/prototype/charAt/name.js +++ b/test/built-ins/String/prototype/charAt/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.charAt.name, "charAt"); - -verifyNotEnumerable(String.prototype.charAt, "name"); -verifyNotWritable(String.prototype.charAt, "name"); -verifyConfigurable(String.prototype.charAt, "name"); +verifyProperty(String.prototype.charAt, "name", { + value: "charAt", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/charCodeAt/name.js b/test/built-ins/String/prototype/charCodeAt/name.js index 054b152d844..f9da2d6d865 100644 --- a/test/built-ins/String/prototype/charCodeAt/name.js +++ b/test/built-ins/String/prototype/charCodeAt/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.charCodeAt.name, "charCodeAt"); - -verifyNotEnumerable(String.prototype.charCodeAt, "name"); -verifyNotWritable(String.prototype.charCodeAt, "name"); -verifyConfigurable(String.prototype.charCodeAt, "name"); +verifyProperty(String.prototype.charCodeAt, "name", { + value: "charCodeAt", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/codePointAt/length.js b/test/built-ins/String/prototype/codePointAt/length.js index 5f8b7b3645e..e2bedc7598d 100644 --- a/test/built-ins/String/prototype/codePointAt/length.js +++ b/test/built-ins/String/prototype/codePointAt/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.codePointAt.length, 1, - 'The value of `String.prototype.codePointAt.length` is `1`' -); - -verifyNotEnumerable(String.prototype.codePointAt, 'length'); -verifyNotWritable(String.prototype.codePointAt, 'length'); -verifyConfigurable(String.prototype.codePointAt, 'length'); +verifyProperty(String.prototype.codePointAt, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/codePointAt/name.js b/test/built-ins/String/prototype/codePointAt/name.js index 79b4e237a6f..da9f7fed763 100644 --- a/test/built-ins/String/prototype/codePointAt/name.js +++ b/test/built-ins/String/prototype/codePointAt/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.codePointAt.name, 'codePointAt', - 'The value of `String.prototype.codePointAt.name` is `"codePointAt"`' -); - -verifyNotEnumerable(String.prototype.codePointAt, 'name'); -verifyNotWritable(String.prototype.codePointAt, 'name'); -verifyConfigurable(String.prototype.codePointAt, 'name'); +verifyProperty(String.prototype.codePointAt, "name", { + value: "codePointAt", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/concat/name.js b/test/built-ins/String/prototype/concat/name.js index a85996d90db..d98d6a33985 100644 --- a/test/built-ins/String/prototype/concat/name.js +++ b/test/built-ins/String/prototype/concat/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.concat.name, "concat"); - -verifyNotEnumerable(String.prototype.concat, "name"); -verifyNotWritable(String.prototype.concat, "name"); -verifyConfigurable(String.prototype.concat, "name"); +verifyProperty(String.prototype.concat, "name", { + value: "concat", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/endsWith/length.js b/test/built-ins/String/prototype/endsWith/length.js index 2ff907603a9..ca3970b5e0a 100644 --- a/test/built-ins/String/prototype/endsWith/length.js +++ b/test/built-ins/String/prototype/endsWith/length.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [String.prototype.endsWith] ---*/ -assert.sameValue( - String.prototype.endsWith.length, 1, - 'The value of `String.prototype.endsWith.length` is `1`' -); - -verifyNotEnumerable(String.prototype.endsWith, 'length'); -verifyNotWritable(String.prototype.endsWith, 'length'); -verifyConfigurable(String.prototype.endsWith, 'length'); +verifyProperty(String.prototype.endsWith, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/endsWith/name.js b/test/built-ins/String/prototype/endsWith/name.js index 1e5f7b407b8..d847e9e5129 100644 --- a/test/built-ins/String/prototype/endsWith/name.js +++ b/test/built-ins/String/prototype/endsWith/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [String.prototype.endsWith] ---*/ -assert.sameValue( - String.prototype.endsWith.name, 'endsWith', - 'The value of `String.prototype.endsWith.name` is `"endsWith"`' -); - -verifyNotEnumerable(String.prototype.endsWith, 'name'); -verifyNotWritable(String.prototype.endsWith, 'name'); -verifyConfigurable(String.prototype.endsWith, 'name'); +verifyProperty(String.prototype.endsWith, "name", { + value: "endsWith", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/includes/length.js b/test/built-ins/String/prototype/includes/length.js index 1aa4b409521..c2b4cb34dfe 100644 --- a/test/built-ins/String/prototype/includes/length.js +++ b/test/built-ins/String/prototype/includes/length.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [String.prototype.includes] ---*/ -assert.sameValue( - String.prototype.includes.length, 1, - 'The value of `String.prototype.includes.length` is `1`' -); - -verifyNotEnumerable(String.prototype.includes, 'length'); -verifyNotWritable(String.prototype.includes, 'length'); -verifyConfigurable(String.prototype.includes, 'length'); +verifyProperty(String.prototype.includes, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/includes/name.js b/test/built-ins/String/prototype/includes/name.js index 73bca903c60..069c0db1fbe 100644 --- a/test/built-ins/String/prototype/includes/name.js +++ b/test/built-ins/String/prototype/includes/name.js @@ -13,11 +13,9 @@ includes: [propertyHelper.js] features: [String.prototype.includes] ---*/ -assert.sameValue( - String.prototype.includes.name, 'includes', - 'The value of `String.prototype.includes.name` is `"includes"`' -); - -verifyNotEnumerable(String.prototype.includes, 'name'); -verifyNotWritable(String.prototype.includes, 'name'); -verifyConfigurable(String.prototype.includes, 'name'); +verifyProperty(String.prototype.includes, "name", { + value: "includes", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/indexOf/name.js b/test/built-ins/String/prototype/indexOf/name.js index 6a0705c14b2..689ee03e0b2 100644 --- a/test/built-ins/String/prototype/indexOf/name.js +++ b/test/built-ins/String/prototype/indexOf/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.indexOf.name, "indexOf"); - -verifyNotEnumerable(String.prototype.indexOf, "name"); -verifyNotWritable(String.prototype.indexOf, "name"); -verifyConfigurable(String.prototype.indexOf, "name"); +verifyProperty(String.prototype.indexOf, "name", { + value: "indexOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/lastIndexOf/name.js b/test/built-ins/String/prototype/lastIndexOf/name.js index b77010cc833..1745800c08c 100644 --- a/test/built-ins/String/prototype/lastIndexOf/name.js +++ b/test/built-ins/String/prototype/lastIndexOf/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.lastIndexOf.name, "lastIndexOf"); - -verifyNotEnumerable(String.prototype.lastIndexOf, "name"); -verifyNotWritable(String.prototype.lastIndexOf, "name"); -verifyConfigurable(String.prototype.lastIndexOf, "name"); +verifyProperty(String.prototype.lastIndexOf, "name", { + value: "lastIndexOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/localeCompare/name.js b/test/built-ins/String/prototype/localeCompare/name.js index 6c1c69bd5ce..42621fa0b5a 100644 --- a/test/built-ins/String/prototype/localeCompare/name.js +++ b/test/built-ins/String/prototype/localeCompare/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.localeCompare.name, "localeCompare"); - -verifyNotEnumerable(String.prototype.localeCompare, "name"); -verifyNotWritable(String.prototype.localeCompare, "name"); -verifyConfigurable(String.prototype.localeCompare, "name"); +verifyProperty(String.prototype.localeCompare, "name", { + value: "localeCompare", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/match/name.js b/test/built-ins/String/prototype/match/name.js index 845638656f1..79c1855c7c0 100644 --- a/test/built-ins/String/prototype/match/name.js +++ b/test/built-ins/String/prototype/match/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.match.name, "match"); - -verifyNotEnumerable(String.prototype.match, "name"); -verifyNotWritable(String.prototype.match, "name"); -verifyConfigurable(String.prototype.match, "name"); +verifyProperty(String.prototype.match, "name", { + value: "match", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/matchAll/length.js b/test/built-ins/String/prototype/matchAll/length.js index 101d8bbf2ed..4a969807c45 100644 --- a/test/built-ins/String/prototype/matchAll/length.js +++ b/test/built-ins/String/prototype/matchAll/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [String.prototype.matchAll] ---*/ -assert.sameValue(String.prototype.matchAll.length, 1); - -verifyNotEnumerable(String.prototype.matchAll, 'length'); -verifyNotWritable(String.prototype.matchAll, 'length'); -verifyConfigurable(String.prototype.matchAll, 'length'); +verifyProperty(String.prototype.matchAll, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/matchAll/name.js b/test/built-ins/String/prototype/matchAll/name.js index cef87994c12..ca5d97bf03b 100644 --- a/test/built-ins/String/prototype/matchAll/name.js +++ b/test/built-ins/String/prototype/matchAll/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [String.prototype.matchAll] ---*/ -assert.sameValue(String.prototype.matchAll.name, 'matchAll'); - -verifyNotEnumerable(String.prototype.matchAll, 'name'); -verifyNotWritable(String.prototype.matchAll, 'name'); -verifyConfigurable(String.prototype.matchAll, 'name'); +verifyProperty(String.prototype.matchAll, "name", { + value: "matchAll", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/normalize/length.js b/test/built-ins/String/prototype/normalize/length.js index a356ba5f533..f8198135665 100644 --- a/test/built-ins/String/prototype/normalize/length.js +++ b/test/built-ins/String/prototype/normalize/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.normalize.length, 0, - 'The value of `String.prototype.normalize.length` is `0`' -); - -verifyNotEnumerable(String.prototype.normalize, 'length'); -verifyNotWritable(String.prototype.normalize, 'length'); -verifyConfigurable(String.prototype.normalize, 'length'); +verifyProperty(String.prototype.normalize, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/normalize/name.js b/test/built-ins/String/prototype/normalize/name.js index 309aa91d09f..af8f877c644 100644 --- a/test/built-ins/String/prototype/normalize/name.js +++ b/test/built-ins/String/prototype/normalize/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.normalize.name, 'normalize', - 'The value of `String.prototype.normalize.name` is `"normalize"`' -); - -verifyNotEnumerable(String.prototype.normalize, 'name'); -verifyNotWritable(String.prototype.normalize, 'name'); -verifyConfigurable(String.prototype.normalize, 'name'); +verifyProperty(String.prototype.normalize, "name", { + value: "normalize", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/padEnd/function-length.js b/test/built-ins/String/prototype/padEnd/function-length.js index 37ea2a27e97..97188e59c76 100644 --- a/test/built-ins/String/prototype/padEnd/function-length.js +++ b/test/built-ins/String/prototype/padEnd/function-length.js @@ -8,8 +8,9 @@ author: Jordan Harband includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.padEnd.length, 1, 'Expected String#padEnd.length to be 1'); - -verifyNotEnumerable(String.prototype.padEnd, 'length'); -verifyNotWritable(String.prototype.padEnd, 'length'); -verifyConfigurable(String.prototype.padEnd, 'length'); +verifyProperty(String.prototype.padEnd, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/padEnd/function-name.js b/test/built-ins/String/prototype/padEnd/function-name.js index d37b167d96c..2cf3e0758a0 100644 --- a/test/built-ins/String/prototype/padEnd/function-name.js +++ b/test/built-ins/String/prototype/padEnd/function-name.js @@ -8,12 +8,9 @@ author: Jordan Harband includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.padEnd.name, - 'padEnd', - 'Expected String#padEnd.name to be "padEnd"' -); - -verifyNotEnumerable(String.prototype.padEnd, 'name'); -verifyNotWritable(String.prototype.padEnd, 'name'); -verifyConfigurable(String.prototype.padEnd, 'name'); +verifyProperty(String.prototype.padEnd, "name", { + value: "padEnd", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/padStart/function-length.js b/test/built-ins/String/prototype/padStart/function-length.js index a096add5ede..94927e94005 100644 --- a/test/built-ins/String/prototype/padStart/function-length.js +++ b/test/built-ins/String/prototype/padStart/function-length.js @@ -8,8 +8,9 @@ author: Jordan Harband includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.padStart.length, 1, 'Expected String#padStart.length to be 1'); - -verifyNotEnumerable(String.prototype.padStart, 'length'); -verifyNotWritable(String.prototype.padStart, 'length'); -verifyConfigurable(String.prototype.padStart, 'length'); +verifyProperty(String.prototype.padStart, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/padStart/function-name.js b/test/built-ins/String/prototype/padStart/function-name.js index 824978a8049..25df490bd48 100644 --- a/test/built-ins/String/prototype/padStart/function-name.js +++ b/test/built-ins/String/prototype/padStart/function-name.js @@ -8,12 +8,9 @@ author: Jordan Harband includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.padStart.name, - 'padStart', - 'Expected String#padStart.name to be "padStart"' -); - -verifyNotEnumerable(String.prototype.padStart, 'name'); -verifyNotWritable(String.prototype.padStart, 'name'); -verifyConfigurable(String.prototype.padStart, 'name'); +verifyProperty(String.prototype.padStart, "name", { + value: "padStart", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/repeat/length.js b/test/built-ins/String/prototype/repeat/length.js index 8d757930f77..3fa83dbf408 100644 --- a/test/built-ins/String/prototype/repeat/length.js +++ b/test/built-ins/String/prototype/repeat/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.repeat.length, 1, - 'The value of `String.prototype.repeat.length` is `1`' -); - -verifyNotEnumerable(String.prototype.repeat, 'length'); -verifyNotWritable(String.prototype.repeat, 'length'); -verifyConfigurable(String.prototype.repeat, 'length'); +verifyProperty(String.prototype.repeat, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/repeat/name.js b/test/built-ins/String/prototype/repeat/name.js index 08ebab09d8d..92924228dbe 100644 --- a/test/built-ins/String/prototype/repeat/name.js +++ b/test/built-ins/String/prototype/repeat/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.repeat.name, 'repeat', - 'The value of `String.prototype.repeat.name` is `"repeat"`' -); - -verifyNotEnumerable(String.prototype.repeat, 'name'); -verifyNotWritable(String.prototype.repeat, 'name'); -verifyConfigurable(String.prototype.repeat, 'name'); +verifyProperty(String.prototype.repeat, "name", { + value: "repeat", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/replace/name.js b/test/built-ins/String/prototype/replace/name.js index 99e9852bbf1..cce8f6ea39f 100644 --- a/test/built-ins/String/prototype/replace/name.js +++ b/test/built-ins/String/prototype/replace/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.replace.name, "replace"); - -verifyNotEnumerable(String.prototype.replace, "name"); -verifyNotWritable(String.prototype.replace, "name"); -verifyConfigurable(String.prototype.replace, "name"); +verifyProperty(String.prototype.replace, "name", { + value: "replace", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/search/name.js b/test/built-ins/String/prototype/search/name.js index d22dfbad7b6..88a42ddc879 100644 --- a/test/built-ins/String/prototype/search/name.js +++ b/test/built-ins/String/prototype/search/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.search.name, "search"); - -verifyNotEnumerable(String.prototype.search, "name"); -verifyNotWritable(String.prototype.search, "name"); -verifyConfigurable(String.prototype.search, "name"); +verifyProperty(String.prototype.search, "name", { + value: "search", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/slice/name.js b/test/built-ins/String/prototype/slice/name.js index 19ecea0cf7c..934c3d1690a 100644 --- a/test/built-ins/String/prototype/slice/name.js +++ b/test/built-ins/String/prototype/slice/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.slice.name, "slice"); - -verifyNotEnumerable(String.prototype.slice, "name"); -verifyNotWritable(String.prototype.slice, "name"); -verifyConfigurable(String.prototype.slice, "name"); +verifyProperty(String.prototype.slice, "name", { + value: "slice", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/split/name.js b/test/built-ins/String/prototype/split/name.js index c4015329c2b..8be55fbce6e 100644 --- a/test/built-ins/String/prototype/split/name.js +++ b/test/built-ins/String/prototype/split/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.split.name, "split"); - -verifyNotEnumerable(String.prototype.split, "name"); -verifyNotWritable(String.prototype.split, "name"); -verifyConfigurable(String.prototype.split, "name"); +verifyProperty(String.prototype.split, "name", { + value: "split", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/startsWith/length.js b/test/built-ins/String/prototype/startsWith/length.js index f81bccb4f55..4e6542f9469 100644 --- a/test/built-ins/String/prototype/startsWith/length.js +++ b/test/built-ins/String/prototype/startsWith/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.startsWith.length, 1, - 'The value of `String.prototype.startsWith.length` is `1`' -); - -verifyNotEnumerable(String.prototype.startsWith, 'length'); -verifyNotWritable(String.prototype.startsWith, 'length'); -verifyConfigurable(String.prototype.startsWith, 'length'); +verifyProperty(String.prototype.startsWith, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/startsWith/name.js b/test/built-ins/String/prototype/startsWith/name.js index 4003a07fd5a..b525e68a834 100644 --- a/test/built-ins/String/prototype/startsWith/name.js +++ b/test/built-ins/String/prototype/startsWith/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.prototype.startsWith.name, 'startsWith', - 'The value of `String.prototype.startsWith.name` is `"startsWith"`' -); - -verifyNotEnumerable(String.prototype.startsWith, 'name'); -verifyNotWritable(String.prototype.startsWith, 'name'); -verifyConfigurable(String.prototype.startsWith, 'name'); +verifyProperty(String.prototype.startsWith, "name", { + value: "startsWith", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/substring/name.js b/test/built-ins/String/prototype/substring/name.js index 85afdf1cd1e..427c26db120 100644 --- a/test/built-ins/String/prototype/substring/name.js +++ b/test/built-ins/String/prototype/substring/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.substring.name, "substring"); - -verifyNotEnumerable(String.prototype.substring, "name"); -verifyNotWritable(String.prototype.substring, "name"); -verifyConfigurable(String.prototype.substring, "name"); +verifyProperty(String.prototype.substring, "name", { + value: "substring", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/toLocaleLowerCase/name.js b/test/built-ins/String/prototype/toLocaleLowerCase/name.js index 23f45aeb64f..30e722f9b44 100644 --- a/test/built-ins/String/prototype/toLocaleLowerCase/name.js +++ b/test/built-ins/String/prototype/toLocaleLowerCase/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.toLocaleLowerCase.name, "toLocaleLowerCase"); - -verifyNotEnumerable(String.prototype.toLocaleLowerCase, "name"); -verifyNotWritable(String.prototype.toLocaleLowerCase, "name"); -verifyConfigurable(String.prototype.toLocaleLowerCase, "name"); +verifyProperty(String.prototype.toLocaleLowerCase, "name", { + value: "toLocaleLowerCase", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/toLocaleUpperCase/name.js b/test/built-ins/String/prototype/toLocaleUpperCase/name.js index 878d966a3ba..961f5866e4e 100644 --- a/test/built-ins/String/prototype/toLocaleUpperCase/name.js +++ b/test/built-ins/String/prototype/toLocaleUpperCase/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.toLocaleUpperCase.name, "toLocaleUpperCase"); - -verifyNotEnumerable(String.prototype.toLocaleUpperCase, "name"); -verifyNotWritable(String.prototype.toLocaleUpperCase, "name"); -verifyConfigurable(String.prototype.toLocaleUpperCase, "name"); +verifyProperty(String.prototype.toLocaleUpperCase, "name", { + value: "toLocaleUpperCase", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/toLowerCase/name.js b/test/built-ins/String/prototype/toLowerCase/name.js index 84e04f9c558..467e22d920a 100644 --- a/test/built-ins/String/prototype/toLowerCase/name.js +++ b/test/built-ins/String/prototype/toLowerCase/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.toLowerCase.name, "toLowerCase"); - -verifyNotEnumerable(String.prototype.toLowerCase, "name"); -verifyNotWritable(String.prototype.toLowerCase, "name"); -verifyConfigurable(String.prototype.toLowerCase, "name"); +verifyProperty(String.prototype.toLowerCase, "name", { + value: "toLowerCase", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/toUpperCase/name.js b/test/built-ins/String/prototype/toUpperCase/name.js index 6945e1a6e29..f0051bbd0df 100644 --- a/test/built-ins/String/prototype/toUpperCase/name.js +++ b/test/built-ins/String/prototype/toUpperCase/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.toUpperCase.name, "toUpperCase"); - -verifyNotEnumerable(String.prototype.toUpperCase, "name"); -verifyNotWritable(String.prototype.toUpperCase, "name"); -verifyConfigurable(String.prototype.toUpperCase, "name"); +verifyProperty(String.prototype.toUpperCase, "name", { + value: "toUpperCase", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/prototype/trim/name.js b/test/built-ins/String/prototype/trim/name.js index aac24986f3c..458ab692f52 100644 --- a/test/built-ins/String/prototype/trim/name.js +++ b/test/built-ins/String/prototype/trim/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(String.prototype.trim.name, "trim"); - -verifyNotEnumerable(String.prototype.trim, "name"); -verifyNotWritable(String.prototype.trim, "name"); -verifyConfigurable(String.prototype.trim, "name"); +verifyProperty(String.prototype.trim, "name", { + value: "trim", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/raw/length.js b/test/built-ins/String/raw/length.js index fc1ce655fd1..812759faa71 100644 --- a/test/built-ins/String/raw/length.js +++ b/test/built-ins/String/raw/length.js @@ -11,11 +11,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.raw.length, 1, - 'The value of `String.raw.length` is `1`' -); - -verifyNotEnumerable(String.raw, 'length'); -verifyNotWritable(String.raw, 'length'); -verifyConfigurable(String.raw, 'length'); +verifyProperty(String.raw, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/String/raw/name.js b/test/built-ins/String/raw/name.js index 58fc649c2ab..ae237c7ec73 100644 --- a/test/built-ins/String/raw/name.js +++ b/test/built-ins/String/raw/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - String.raw.name, 'raw', - 'The value of `String.raw.name` is `"raw"`' -); - -verifyNotEnumerable(String.raw, 'name'); -verifyNotWritable(String.raw, 'name'); -verifyConfigurable(String.raw, 'name'); +verifyProperty(String.raw, "name", { + value: "raw", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/StringIteratorPrototype/next/length.js b/test/built-ins/StringIteratorPrototype/next/length.js index 423adfae112..03004b96747 100644 --- a/test/built-ins/StringIteratorPrototype/next/length.js +++ b/test/built-ins/StringIteratorPrototype/next/length.js @@ -25,8 +25,9 @@ features: [Symbol.iterator] var StringIteratorProto = Object.getPrototypeOf(new String()[Symbol.iterator]()); -assert.sameValue(StringIteratorProto.next.length, 0); - -verifyNotEnumerable(StringIteratorProto.next, "length"); -verifyNotWritable(StringIteratorProto.next, "length"); -verifyConfigurable(StringIteratorProto.next, "length"); +verifyProperty(StringIteratorProto.next, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/StringIteratorPrototype/next/name.js b/test/built-ins/StringIteratorPrototype/next/name.js index 5d0d22e6d37..d642fd2fe49 100644 --- a/test/built-ins/StringIteratorPrototype/next/name.js +++ b/test/built-ins/StringIteratorPrototype/next/name.js @@ -22,8 +22,9 @@ features: [Symbol.iterator] var StringIteratorProto = Object.getPrototypeOf(new String()[Symbol.iterator]()); -assert.sameValue(StringIteratorProto.next.name, "next"); - -verifyNotEnumerable(StringIteratorProto.next, "name"); -verifyNotWritable(StringIteratorProto.next, "name"); -verifyConfigurable(StringIteratorProto.next, "name"); +verifyProperty(StringIteratorProto.next, "name", { + value: "next", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/for/length.js b/test/built-ins/Symbol/for/length.js index 5bf2f1167d6..1d9083d7bec 100644 --- a/test/built-ins/Symbol/for/length.js +++ b/test/built-ins/Symbol/for/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.for.length, 1); - -verifyNotEnumerable(Symbol.for, "length"); -verifyNotWritable(Symbol.for, "length"); -verifyConfigurable(Symbol.for, "length"); +verifyProperty(Symbol.for, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/for/name.js b/test/built-ins/Symbol/for/name.js index 3ff2c3062ec..64c154557f5 100644 --- a/test/built-ins/Symbol/for/name.js +++ b/test/built-ins/Symbol/for/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.for.name, "for"); - -verifyNotEnumerable(Symbol.for, "name"); -verifyNotWritable(Symbol.for, "name"); -verifyConfigurable(Symbol.for, "name"); +verifyProperty(Symbol.for, "name", { + value: "for", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/keyFor/length.js b/test/built-ins/Symbol/keyFor/length.js index 7755b4954ee..1ddd8af1e48 100644 --- a/test/built-ins/Symbol/keyFor/length.js +++ b/test/built-ins/Symbol/keyFor/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.keyFor.length, 1); - -verifyNotEnumerable(Symbol.keyFor, "length"); -verifyNotWritable(Symbol.keyFor, "length"); -verifyConfigurable(Symbol.keyFor, "length"); +verifyProperty(Symbol.keyFor, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/keyFor/name.js b/test/built-ins/Symbol/keyFor/name.js index 4f9476f5661..369fa5b61a3 100644 --- a/test/built-ins/Symbol/keyFor/name.js +++ b/test/built-ins/Symbol/keyFor/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.keyFor.name, "keyFor"); - -verifyNotEnumerable(Symbol.keyFor, "name"); -verifyNotWritable(Symbol.keyFor, "name"); -verifyConfigurable(Symbol.keyFor, "name"); +verifyProperty(Symbol.keyFor, "name", { + value: "keyFor", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/length.js b/test/built-ins/Symbol/length.js index cf37ad8595e..0c4824c6e38 100644 --- a/test/built-ins/Symbol/length.js +++ b/test/built-ins/Symbol/length.js @@ -12,8 +12,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.length, 0, "The value of `Symbol.length` is `0`"); - -verifyNotEnumerable(Symbol, "length"); -verifyNotWritable(Symbol, "length"); -verifyConfigurable(Symbol, "length"); +verifyProperty(Symbol, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/name.js b/test/built-ins/Symbol/name.js index 2ef83010aa6..72b792aefd4 100644 --- a/test/built-ins/Symbol/name.js +++ b/test/built-ins/Symbol/name.js @@ -10,8 +10,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.name, "Symbol", "The value of `Symbol.name` is `'Symbol'`"); - -verifyNotEnumerable(Symbol, "name"); -verifyNotWritable(Symbol, "name"); -verifyConfigurable(Symbol, "name"); +verifyProperty(Symbol, "name", { + value: "Symbol", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/prototype/Symbol.toPrimitive/length.js b/test/built-ins/Symbol/prototype/Symbol.toPrimitive/length.js index 44e3be0d0a9..9f7d108fb36 100644 --- a/test/built-ins/Symbol/prototype/Symbol.toPrimitive/length.js +++ b/test/built-ins/Symbol/prototype/Symbol.toPrimitive/length.js @@ -20,8 +20,9 @@ features: [Symbol.toPrimitive] includes: [propertyHelper.js] ---*/ -assert.sameValue(Symbol.prototype[Symbol.toPrimitive].length, 1); - -verifyNotEnumerable(Symbol.prototype[Symbol.toPrimitive], 'length'); -verifyNotWritable(Symbol.prototype[Symbol.toPrimitive], 'length'); -verifyConfigurable(Symbol.prototype[Symbol.toPrimitive], 'length'); +verifyProperty(Symbol.prototype[Symbol.toPrimitive], "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/prototype/Symbol.toPrimitive/name.js b/test/built-ins/Symbol/prototype/Symbol.toPrimitive/name.js index 3fb1e197e1c..a8d96a6ea0d 100644 --- a/test/built-ins/Symbol/prototype/Symbol.toPrimitive/name.js +++ b/test/built-ins/Symbol/prototype/Symbol.toPrimitive/name.js @@ -17,10 +17,9 @@ features: [Symbol.toPrimitive] includes: [propertyHelper.js] ---*/ -assert.sameValue( - Symbol.prototype[Symbol.toPrimitive].name, '[Symbol.toPrimitive]' -); - -verifyNotEnumerable(Symbol.prototype[Symbol.toPrimitive], 'name'); -verifyNotWritable(Symbol.prototype[Symbol.toPrimitive], 'name'); -verifyConfigurable(Symbol.prototype[Symbol.toPrimitive], 'name'); +verifyProperty(Symbol.prototype[Symbol.toPrimitive], "name", { + value: "[Symbol.toPrimitive]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/prototype/toString/length.js b/test/built-ins/Symbol/prototype/toString/length.js index 4c3db4e9387..d206f181ce2 100644 --- a/test/built-ins/Symbol/prototype/toString/length.js +++ b/test/built-ins/Symbol/prototype/toString/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.prototype.toString.length, 0); - -verifyNotEnumerable(Symbol.prototype.toString, "length"); -verifyNotWritable(Symbol.prototype.toString, "length"); -verifyConfigurable(Symbol.prototype.toString, "length"); +verifyProperty(Symbol.prototype.toString, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/prototype/toString/name.js b/test/built-ins/Symbol/prototype/toString/name.js index ec2b63d8306..61065149584 100644 --- a/test/built-ins/Symbol/prototype/toString/name.js +++ b/test/built-ins/Symbol/prototype/toString/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.prototype.toString.name, "toString"); - -verifyNotEnumerable(Symbol.prototype.toString, "name"); -verifyNotWritable(Symbol.prototype.toString, "name"); -verifyConfigurable(Symbol.prototype.toString, "name"); +verifyProperty(Symbol.prototype.toString, "name", { + value: "toString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/prototype/valueOf/length.js b/test/built-ins/Symbol/prototype/valueOf/length.js index 5f53692f375..93007bdfc3e 100644 --- a/test/built-ins/Symbol/prototype/valueOf/length.js +++ b/test/built-ins/Symbol/prototype/valueOf/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.prototype.valueOf.length, 0); - -verifyNotEnumerable(Symbol.prototype.valueOf, "length"); -verifyNotWritable(Symbol.prototype.valueOf, "length"); -verifyConfigurable(Symbol.prototype.valueOf, "length"); +verifyProperty(Symbol.prototype.valueOf, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/Symbol/prototype/valueOf/name.js b/test/built-ins/Symbol/prototype/valueOf/name.js index 11b27f65ba9..a2632153ccd 100644 --- a/test/built-ins/Symbol/prototype/valueOf/name.js +++ b/test/built-ins/Symbol/prototype/valueOf/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js] features: [Symbol] ---*/ -assert.sameValue(Symbol.prototype.valueOf.name, "valueOf"); - -verifyNotEnumerable(Symbol.prototype.valueOf, "name"); -verifyNotWritable(Symbol.prototype.valueOf, "name"); -verifyConfigurable(Symbol.prototype.valueOf, "name"); +verifyProperty(Symbol.prototype.valueOf, "name", { + value: "valueOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/ThrowTypeError/length.js b/test/built-ins/ThrowTypeError/length.js index 5a14e231b89..1071e1eef6c 100644 --- a/test/built-ins/ThrowTypeError/length.js +++ b/test/built-ins/ThrowTypeError/length.js @@ -18,8 +18,9 @@ var ThrowTypeError = Object.getOwnPropertyDescriptor(function() { return arguments; }(), "callee").get; -assert.sameValue(ThrowTypeError.length, 0); - -verifyNotEnumerable(ThrowTypeError, "length"); -verifyNotWritable(ThrowTypeError, "length"); -verifyNotConfigurable(ThrowTypeError, "length"); +verifyProperty(ThrowTypeError, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: false +}); diff --git a/test/built-ins/TypedArray/Symbol.species/length.js b/test/built-ins/TypedArray/Symbol.species/length.js index 4cc3343c8ef..a516163d01c 100644 --- a/test/built-ins/TypedArray/Symbol.species/length.js +++ b/test/built-ins/TypedArray/Symbol.species/length.js @@ -25,8 +25,9 @@ features: [Symbol.species] var desc = Object.getOwnPropertyDescriptor(TypedArray, Symbol.species); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/Symbol.species/name.js b/test/built-ins/TypedArray/Symbol.species/name.js index 091d0a70a72..cf0ce5c889c 100644 --- a/test/built-ins/TypedArray/Symbol.species/name.js +++ b/test/built-ins/TypedArray/Symbol.species/name.js @@ -22,8 +22,9 @@ features: [Symbol.species] var desc = Object.getOwnPropertyDescriptor(TypedArray, Symbol.species); -assert.sameValue(desc.get.name, "get [Symbol.species]"); - -verifyNotEnumerable(desc.get, "name"); -verifyNotWritable(desc.get, "name"); -verifyConfigurable(desc.get, "name"); +verifyProperty(desc.get, "name", { + value: "get [Symbol.species]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/from/length.js b/test/built-ins/TypedArray/from/length.js index 45306875f92..15b981f71e5 100644 --- a/test/built-ins/TypedArray/from/length.js +++ b/test/built-ins/TypedArray/from/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.from.length, 1); - -verifyNotEnumerable(TypedArray.from, "length"); -verifyNotWritable(TypedArray.from, "length"); -verifyConfigurable(TypedArray.from, "length"); +verifyProperty(TypedArray.from, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/from/name.js b/test/built-ins/TypedArray/from/name.js index dbcba77c34c..9268a54fc2b 100644 --- a/test/built-ins/TypedArray/from/name.js +++ b/test/built-ins/TypedArray/from/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.from.name, "from"); - -verifyNotEnumerable(TypedArray.from, "name"); -verifyNotWritable(TypedArray.from, "name"); -verifyConfigurable(TypedArray.from, "name"); +verifyProperty(TypedArray.from, "name", { + value: "from", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/name.js b/test/built-ins/TypedArray/name.js index 6c9581d1402..6d21d8ae9e4 100644 --- a/test/built-ins/TypedArray/name.js +++ b/test/built-ins/TypedArray/name.js @@ -18,8 +18,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.name, 'TypedArray'); - -verifyNotEnumerable(TypedArray, 'name'); -verifyNotWritable(TypedArray, 'name'); -verifyConfigurable(TypedArray, 'name'); +verifyProperty(TypedArray, "name", { + value: "TypedArray", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/of/length.js b/test/built-ins/TypedArray/of/length.js index a26827e18a6..25848e93ca2 100644 --- a/test/built-ins/TypedArray/of/length.js +++ b/test/built-ins/TypedArray/of/length.js @@ -24,8 +24,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.of.length, 0); - -verifyNotEnumerable(TypedArray.of, "length"); -verifyNotWritable(TypedArray.of, "length"); -verifyConfigurable(TypedArray.of, "length"); +verifyProperty(TypedArray.of, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/of/name.js b/test/built-ins/TypedArray/of/name.js index eed607fe209..4074102024c 100644 --- a/test/built-ins/TypedArray/of/name.js +++ b/test/built-ins/TypedArray/of/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.of.name, "of"); - -verifyNotEnumerable(TypedArray.of, "name"); -verifyNotWritable(TypedArray.of, "name"); -verifyConfigurable(TypedArray.of, "name"); +verifyProperty(TypedArray.of, "name", { + value: "of", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/length.js b/test/built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/length.js index 13e4e9e1778..c1c2df63292 100644 --- a/test/built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/length.js +++ b/test/built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/length.js @@ -25,8 +25,9 @@ features: [BigInt, Symbol.toStringTag] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, Symbol.toStringTag); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/name.js b/test/built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/name.js index 1004ce4631f..96c6069c935 100644 --- a/test/built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/name.js +++ b/test/built-ins/TypedArray/prototype/Symbol.toStringTag/BigInt/name.js @@ -22,8 +22,9 @@ features: [BigInt, Symbol.toStringTag] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, Symbol.toStringTag); -assert.sameValue(desc.get.name, "get [Symbol.toStringTag]"); - -verifyNotEnumerable(desc.get, "name"); -verifyNotWritable(desc.get, "name"); -verifyConfigurable(desc.get, "name"); +verifyProperty(desc.get, "name", { + value: "get [Symbol.toStringTag]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/Symbol.toStringTag/length.js b/test/built-ins/TypedArray/prototype/Symbol.toStringTag/length.js index 37b6d2aaf3e..6291c302cac 100644 --- a/test/built-ins/TypedArray/prototype/Symbol.toStringTag/length.js +++ b/test/built-ins/TypedArray/prototype/Symbol.toStringTag/length.js @@ -25,8 +25,9 @@ features: [Symbol.toStringTag] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, Symbol.toStringTag); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/Symbol.toStringTag/name.js b/test/built-ins/TypedArray/prototype/Symbol.toStringTag/name.js index fef03e767a2..13b4fffe0b3 100644 --- a/test/built-ins/TypedArray/prototype/Symbol.toStringTag/name.js +++ b/test/built-ins/TypedArray/prototype/Symbol.toStringTag/name.js @@ -22,8 +22,9 @@ features: [Symbol.toStringTag] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, Symbol.toStringTag); -assert.sameValue(desc.get.name, "get [Symbol.toStringTag]"); - -verifyNotEnumerable(desc.get, "name"); -verifyNotWritable(desc.get, "name"); -verifyConfigurable(desc.get, "name"); +verifyProperty(desc.get, "name", { + value: "get [Symbol.toStringTag]", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/at/length.js b/test/built-ins/TypedArray/prototype/at/length.js index db895a2206d..a1f983ab71c 100644 --- a/test/built-ins/TypedArray/prototype/at/length.js +++ b/test/built-ins/TypedArray/prototype/at/length.js @@ -18,11 +18,9 @@ assert.sameValue( 'The value of `typeof TypedArray.prototype.at` is "function"' ); -assert.sameValue( - TypedArray.prototype.at.length, 1, - 'The value of TypedArray.prototype.at.length is 1' -); - -verifyNotEnumerable(TypedArray.prototype.at, 'length'); -verifyNotWritable(TypedArray.prototype.at, 'length'); -verifyConfigurable(TypedArray.prototype.at, 'length'); +verifyProperty(TypedArray.prototype.at, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/buffer/length.js b/test/built-ins/TypedArray/prototype/buffer/length.js index 1ddb20c4e5f..02d1e296004 100644 --- a/test/built-ins/TypedArray/prototype/buffer/length.js +++ b/test/built-ins/TypedArray/prototype/buffer/length.js @@ -25,8 +25,9 @@ features: [TypedArray] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, "buffer"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/buffer/name.js b/test/built-ins/TypedArray/prototype/buffer/name.js index d52454a7f67..f71ecfb369c 100644 --- a/test/built-ins/TypedArray/prototype/buffer/name.js +++ b/test/built-ins/TypedArray/prototype/buffer/name.js @@ -22,8 +22,9 @@ features: [TypedArray] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, "buffer"); -assert.sameValue(desc.get.name, "get buffer"); - -verifyNotEnumerable(desc.get, "name"); -verifyNotWritable(desc.get, "name"); -verifyConfigurable(desc.get, "name"); +verifyProperty(desc.get, "name", { + value: "get buffer", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/byteLength/length.js b/test/built-ins/TypedArray/prototype/byteLength/length.js index 4252cd5d9ea..b153bbc6d28 100644 --- a/test/built-ins/TypedArray/prototype/byteLength/length.js +++ b/test/built-ins/TypedArray/prototype/byteLength/length.js @@ -25,8 +25,9 @@ features: [TypedArray] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, "byteLength"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/byteLength/name.js b/test/built-ins/TypedArray/prototype/byteLength/name.js index a70cc87bbea..292d1c0a828 100644 --- a/test/built-ins/TypedArray/prototype/byteLength/name.js +++ b/test/built-ins/TypedArray/prototype/byteLength/name.js @@ -22,8 +22,9 @@ features: [TypedArray] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, "byteLength"); -assert.sameValue(desc.get.name, "get byteLength"); - -verifyNotEnumerable(desc.get, "name"); -verifyNotWritable(desc.get, "name"); -verifyConfigurable(desc.get, "name"); +verifyProperty(desc.get, "name", { + value: "get byteLength", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/byteOffset/length.js b/test/built-ins/TypedArray/prototype/byteOffset/length.js index 71c9b31c82b..a70f29ee2ff 100644 --- a/test/built-ins/TypedArray/prototype/byteOffset/length.js +++ b/test/built-ins/TypedArray/prototype/byteOffset/length.js @@ -25,8 +25,9 @@ features: [TypedArray] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, "byteOffset"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/byteOffset/name.js b/test/built-ins/TypedArray/prototype/byteOffset/name.js index 5b5a2ecab3c..e93fcbe7cb7 100644 --- a/test/built-ins/TypedArray/prototype/byteOffset/name.js +++ b/test/built-ins/TypedArray/prototype/byteOffset/name.js @@ -22,8 +22,9 @@ features: [TypedArray] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, "byteOffset"); -assert.sameValue(desc.get.name, "get byteOffset"); - -verifyNotEnumerable(desc.get, "name"); -verifyNotWritable(desc.get, "name"); -verifyConfigurable(desc.get, "name"); +verifyProperty(desc.get, "name", { + value: "get byteOffset", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/copyWithin/length.js b/test/built-ins/TypedArray/prototype/copyWithin/length.js index 63c37c4ff39..6e00ec8c353 100644 --- a/test/built-ins/TypedArray/prototype/copyWithin/length.js +++ b/test/built-ins/TypedArray/prototype/copyWithin/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.copyWithin.length, 2); - -verifyNotEnumerable(TypedArray.prototype.copyWithin, "length"); -verifyNotWritable(TypedArray.prototype.copyWithin, "length"); -verifyConfigurable(TypedArray.prototype.copyWithin, "length"); +verifyProperty(TypedArray.prototype.copyWithin, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/copyWithin/name.js b/test/built-ins/TypedArray/prototype/copyWithin/name.js index 068057df3c3..8a5361d7b46 100644 --- a/test/built-ins/TypedArray/prototype/copyWithin/name.js +++ b/test/built-ins/TypedArray/prototype/copyWithin/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.copyWithin.name, "copyWithin"); - -verifyNotEnumerable(TypedArray.prototype.copyWithin, "name"); -verifyNotWritable(TypedArray.prototype.copyWithin, "name"); -verifyConfigurable(TypedArray.prototype.copyWithin, "name"); +verifyProperty(TypedArray.prototype.copyWithin, "name", { + value: "copyWithin", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/entries/length.js b/test/built-ins/TypedArray/prototype/entries/length.js index a72e7706cf9..78c7677caf4 100644 --- a/test/built-ins/TypedArray/prototype/entries/length.js +++ b/test/built-ins/TypedArray/prototype/entries/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.entries.length, 0); - -verifyNotEnumerable(TypedArray.prototype.entries, "length"); -verifyNotWritable(TypedArray.prototype.entries, "length"); -verifyConfigurable(TypedArray.prototype.entries, "length"); +verifyProperty(TypedArray.prototype.entries, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/entries/name.js b/test/built-ins/TypedArray/prototype/entries/name.js index 9647c66c587..d781cf07b08 100644 --- a/test/built-ins/TypedArray/prototype/entries/name.js +++ b/test/built-ins/TypedArray/prototype/entries/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.entries.name, "entries"); - -verifyNotEnumerable(TypedArray.prototype.entries, "name"); -verifyNotWritable(TypedArray.prototype.entries, "name"); -verifyConfigurable(TypedArray.prototype.entries, "name"); +verifyProperty(TypedArray.prototype.entries, "name", { + value: "entries", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/every/length.js b/test/built-ins/TypedArray/prototype/every/length.js index 2f5bf8961b6..11e3c44a82f 100644 --- a/test/built-ins/TypedArray/prototype/every/length.js +++ b/test/built-ins/TypedArray/prototype/every/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.every.length, 1); - -verifyNotEnumerable(TypedArray.prototype.every, "length"); -verifyNotWritable(TypedArray.prototype.every, "length"); -verifyConfigurable(TypedArray.prototype.every, "length"); +verifyProperty(TypedArray.prototype.every, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/every/name.js b/test/built-ins/TypedArray/prototype/every/name.js index 4d216dd9d44..9c1b7c01683 100644 --- a/test/built-ins/TypedArray/prototype/every/name.js +++ b/test/built-ins/TypedArray/prototype/every/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.every.name, "every"); - -verifyNotEnumerable(TypedArray.prototype.every, "name"); -verifyNotWritable(TypedArray.prototype.every, "name"); -verifyConfigurable(TypedArray.prototype.every, "name"); +verifyProperty(TypedArray.prototype.every, "name", { + value: "every", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/fill/length.js b/test/built-ins/TypedArray/prototype/fill/length.js index b6c73753558..6b23085efd7 100644 --- a/test/built-ins/TypedArray/prototype/fill/length.js +++ b/test/built-ins/TypedArray/prototype/fill/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.fill.length, 1); - -verifyNotEnumerable(TypedArray.prototype.fill, "length"); -verifyNotWritable(TypedArray.prototype.fill, "length"); -verifyConfigurable(TypedArray.prototype.fill, "length"); +verifyProperty(TypedArray.prototype.fill, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/fill/name.js b/test/built-ins/TypedArray/prototype/fill/name.js index 69820f96a73..065824ef2da 100644 --- a/test/built-ins/TypedArray/prototype/fill/name.js +++ b/test/built-ins/TypedArray/prototype/fill/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.fill.name, "fill"); - -verifyNotEnumerable(TypedArray.prototype.fill, "name"); -verifyNotWritable(TypedArray.prototype.fill, "name"); -verifyConfigurable(TypedArray.prototype.fill, "name"); +verifyProperty(TypedArray.prototype.fill, "name", { + value: "fill", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/filter/length.js b/test/built-ins/TypedArray/prototype/filter/length.js index 62a72cfa9ce..e9939b978e6 100644 --- a/test/built-ins/TypedArray/prototype/filter/length.js +++ b/test/built-ins/TypedArray/prototype/filter/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.filter.length, 1); - -verifyNotEnumerable(TypedArray.prototype.filter, "length"); -verifyNotWritable(TypedArray.prototype.filter, "length"); -verifyConfigurable(TypedArray.prototype.filter, "length"); +verifyProperty(TypedArray.prototype.filter, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/filter/name.js b/test/built-ins/TypedArray/prototype/filter/name.js index 069c0adc605..1e260f60ead 100644 --- a/test/built-ins/TypedArray/prototype/filter/name.js +++ b/test/built-ins/TypedArray/prototype/filter/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.filter.name, "filter"); - -verifyNotEnumerable(TypedArray.prototype.filter, "name"); -verifyNotWritable(TypedArray.prototype.filter, "name"); -verifyConfigurable(TypedArray.prototype.filter, "name"); +verifyProperty(TypedArray.prototype.filter, "name", { + value: "filter", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/find/length.js b/test/built-ins/TypedArray/prototype/find/length.js index 15607315f4e..b353c4fedb7 100644 --- a/test/built-ins/TypedArray/prototype/find/length.js +++ b/test/built-ins/TypedArray/prototype/find/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.find.length, 1); - -verifyNotEnumerable(TypedArray.prototype.find, "length"); -verifyNotWritable(TypedArray.prototype.find, "length"); -verifyConfigurable(TypedArray.prototype.find, "length"); +verifyProperty(TypedArray.prototype.find, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/find/name.js b/test/built-ins/TypedArray/prototype/find/name.js index c1636fc13e9..11dcbf5584a 100644 --- a/test/built-ins/TypedArray/prototype/find/name.js +++ b/test/built-ins/TypedArray/prototype/find/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.find.name, "find"); - -verifyNotEnumerable(TypedArray.prototype.find, "name"); -verifyNotWritable(TypedArray.prototype.find, "name"); -verifyConfigurable(TypedArray.prototype.find, "name"); +verifyProperty(TypedArray.prototype.find, "name", { + value: "find", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/findIndex/length.js b/test/built-ins/TypedArray/prototype/findIndex/length.js index 0ec6d4a5f49..73985d1faa6 100644 --- a/test/built-ins/TypedArray/prototype/findIndex/length.js +++ b/test/built-ins/TypedArray/prototype/findIndex/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.findIndex.length, 1); - -verifyNotEnumerable(TypedArray.prototype.findIndex, "length"); -verifyNotWritable(TypedArray.prototype.findIndex, "length"); -verifyConfigurable(TypedArray.prototype.findIndex, "length"); +verifyProperty(TypedArray.prototype.findIndex, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/findIndex/name.js b/test/built-ins/TypedArray/prototype/findIndex/name.js index deb8c73a9b9..4afbf2b6ca0 100644 --- a/test/built-ins/TypedArray/prototype/findIndex/name.js +++ b/test/built-ins/TypedArray/prototype/findIndex/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.findIndex.name, "findIndex"); - -verifyNotEnumerable(TypedArray.prototype.findIndex, "name"); -verifyNotWritable(TypedArray.prototype.findIndex, "name"); -verifyConfigurable(TypedArray.prototype.findIndex, "name"); +verifyProperty(TypedArray.prototype.findIndex, "name", { + value: "findIndex", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/forEach/length.js b/test/built-ins/TypedArray/prototype/forEach/length.js index 48bdb6a2589..4b75570f1bd 100644 --- a/test/built-ins/TypedArray/prototype/forEach/length.js +++ b/test/built-ins/TypedArray/prototype/forEach/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.forEach.length, 1); - -verifyNotEnumerable(TypedArray.prototype.forEach, "length"); -verifyNotWritable(TypedArray.prototype.forEach, "length"); -verifyConfigurable(TypedArray.prototype.forEach, "length"); +verifyProperty(TypedArray.prototype.forEach, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/forEach/name.js b/test/built-ins/TypedArray/prototype/forEach/name.js index 23ae3f63151..8d9e573ce0a 100644 --- a/test/built-ins/TypedArray/prototype/forEach/name.js +++ b/test/built-ins/TypedArray/prototype/forEach/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.forEach.name, "forEach"); - -verifyNotEnumerable(TypedArray.prototype.forEach, "name"); -verifyNotWritable(TypedArray.prototype.forEach, "name"); -verifyConfigurable(TypedArray.prototype.forEach, "name"); +verifyProperty(TypedArray.prototype.forEach, "name", { + value: "forEach", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/includes/length.js b/test/built-ins/TypedArray/prototype/includes/length.js index b59e5c99519..b677d7d9789 100644 --- a/test/built-ins/TypedArray/prototype/includes/length.js +++ b/test/built-ins/TypedArray/prototype/includes/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.includes.length, 1); - -verifyNotEnumerable(TypedArray.prototype.includes, "length"); -verifyNotWritable(TypedArray.prototype.includes, "length"); -verifyConfigurable(TypedArray.prototype.includes, "length"); +verifyProperty(TypedArray.prototype.includes, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/includes/name.js b/test/built-ins/TypedArray/prototype/includes/name.js index 7f515b125e6..f221df069d7 100644 --- a/test/built-ins/TypedArray/prototype/includes/name.js +++ b/test/built-ins/TypedArray/prototype/includes/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.includes.name, "includes"); - -verifyNotEnumerable(TypedArray.prototype.includes, "name"); -verifyNotWritable(TypedArray.prototype.includes, "name"); -verifyConfigurable(TypedArray.prototype.includes, "name"); +verifyProperty(TypedArray.prototype.includes, "name", { + value: "includes", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/indexOf/length.js b/test/built-ins/TypedArray/prototype/indexOf/length.js index 5729797c67a..aaec643df69 100644 --- a/test/built-ins/TypedArray/prototype/indexOf/length.js +++ b/test/built-ins/TypedArray/prototype/indexOf/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.indexOf.length, 1); - -verifyNotEnumerable(TypedArray.prototype.indexOf, "length"); -verifyNotWritable(TypedArray.prototype.indexOf, "length"); -verifyConfigurable(TypedArray.prototype.indexOf, "length"); +verifyProperty(TypedArray.prototype.indexOf, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/indexOf/name.js b/test/built-ins/TypedArray/prototype/indexOf/name.js index ee50628ff25..2f7fd9d231e 100644 --- a/test/built-ins/TypedArray/prototype/indexOf/name.js +++ b/test/built-ins/TypedArray/prototype/indexOf/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.indexOf.name, "indexOf"); - -verifyNotEnumerable(TypedArray.prototype.indexOf, "name"); -verifyNotWritable(TypedArray.prototype.indexOf, "name"); -verifyConfigurable(TypedArray.prototype.indexOf, "name"); +verifyProperty(TypedArray.prototype.indexOf, "name", { + value: "indexOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/join/length.js b/test/built-ins/TypedArray/prototype/join/length.js index 1353a225a15..611a58d2c2e 100644 --- a/test/built-ins/TypedArray/prototype/join/length.js +++ b/test/built-ins/TypedArray/prototype/join/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.join.length, 1); - -verifyNotEnumerable(TypedArray.prototype.join, "length"); -verifyNotWritable(TypedArray.prototype.join, "length"); -verifyConfigurable(TypedArray.prototype.join, "length"); +verifyProperty(TypedArray.prototype.join, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/join/name.js b/test/built-ins/TypedArray/prototype/join/name.js index e859b75c516..faeeddb16ba 100644 --- a/test/built-ins/TypedArray/prototype/join/name.js +++ b/test/built-ins/TypedArray/prototype/join/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.join.name, "join"); - -verifyNotEnumerable(TypedArray.prototype.join, "name"); -verifyNotWritable(TypedArray.prototype.join, "name"); -verifyConfigurable(TypedArray.prototype.join, "name"); +verifyProperty(TypedArray.prototype.join, "name", { + value: "join", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/keys/length.js b/test/built-ins/TypedArray/prototype/keys/length.js index 8ca31ed83a6..28e2e78309d 100644 --- a/test/built-ins/TypedArray/prototype/keys/length.js +++ b/test/built-ins/TypedArray/prototype/keys/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.keys.length, 0); - -verifyNotEnumerable(TypedArray.prototype.keys, "length"); -verifyNotWritable(TypedArray.prototype.keys, "length"); -verifyConfigurable(TypedArray.prototype.keys, "length"); +verifyProperty(TypedArray.prototype.keys, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/keys/name.js b/test/built-ins/TypedArray/prototype/keys/name.js index 787e112f9fa..8b10b09d2a7 100644 --- a/test/built-ins/TypedArray/prototype/keys/name.js +++ b/test/built-ins/TypedArray/prototype/keys/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.keys.name, "keys"); - -verifyNotEnumerable(TypedArray.prototype.keys, "name"); -verifyNotWritable(TypedArray.prototype.keys, "name"); -verifyConfigurable(TypedArray.prototype.keys, "name"); +verifyProperty(TypedArray.prototype.keys, "name", { + value: "keys", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/lastIndexOf/length.js b/test/built-ins/TypedArray/prototype/lastIndexOf/length.js index ffac1f40471..22388e513a1 100644 --- a/test/built-ins/TypedArray/prototype/lastIndexOf/length.js +++ b/test/built-ins/TypedArray/prototype/lastIndexOf/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.lastIndexOf.length, 1); - -verifyNotEnumerable(TypedArray.prototype.lastIndexOf, "length"); -verifyNotWritable(TypedArray.prototype.lastIndexOf, "length"); -verifyConfigurable(TypedArray.prototype.lastIndexOf, "length"); +verifyProperty(TypedArray.prototype.lastIndexOf, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/lastIndexOf/name.js b/test/built-ins/TypedArray/prototype/lastIndexOf/name.js index 7af241b5a88..1b9bd3f5f1e 100644 --- a/test/built-ins/TypedArray/prototype/lastIndexOf/name.js +++ b/test/built-ins/TypedArray/prototype/lastIndexOf/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.lastIndexOf.name, "lastIndexOf"); - -verifyNotEnumerable(TypedArray.prototype.lastIndexOf, "name"); -verifyNotWritable(TypedArray.prototype.lastIndexOf, "name"); -verifyConfigurable(TypedArray.prototype.lastIndexOf, "name"); +verifyProperty(TypedArray.prototype.lastIndexOf, "name", { + value: "lastIndexOf", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/length/length.js b/test/built-ins/TypedArray/prototype/length/length.js index 83477ed198a..d7dc8054978 100644 --- a/test/built-ins/TypedArray/prototype/length/length.js +++ b/test/built-ins/TypedArray/prototype/length/length.js @@ -25,8 +25,9 @@ features: [TypedArray] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, "length"); -assert.sameValue(desc.get.length, 0); - -verifyNotEnumerable(desc.get, "length"); -verifyNotWritable(desc.get, "length"); -verifyConfigurable(desc.get, "length"); +verifyProperty(desc.get, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/length/name.js b/test/built-ins/TypedArray/prototype/length/name.js index 733f7c4ea05..9b746989737 100644 --- a/test/built-ins/TypedArray/prototype/length/name.js +++ b/test/built-ins/TypedArray/prototype/length/name.js @@ -22,8 +22,9 @@ features: [TypedArray] var desc = Object.getOwnPropertyDescriptor(TypedArray.prototype, "length"); -assert.sameValue(desc.get.name, "get length"); - -verifyNotEnumerable(desc.get, "name"); -verifyNotWritable(desc.get, "name"); -verifyConfigurable(desc.get, "name"); +verifyProperty(desc.get, "name", { + value: "get length", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/map/length.js b/test/built-ins/TypedArray/prototype/map/length.js index b6b51f55409..a618bb14b70 100644 --- a/test/built-ins/TypedArray/prototype/map/length.js +++ b/test/built-ins/TypedArray/prototype/map/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.map.length, 1); - -verifyNotEnumerable(TypedArray.prototype.map, "length"); -verifyNotWritable(TypedArray.prototype.map, "length"); -verifyConfigurable(TypedArray.prototype.map, "length"); +verifyProperty(TypedArray.prototype.map, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/map/name.js b/test/built-ins/TypedArray/prototype/map/name.js index 92aad9621ee..1563cd42504 100644 --- a/test/built-ins/TypedArray/prototype/map/name.js +++ b/test/built-ins/TypedArray/prototype/map/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.map.name, "map"); - -verifyNotEnumerable(TypedArray.prototype.map, "name"); -verifyNotWritable(TypedArray.prototype.map, "name"); -verifyConfigurable(TypedArray.prototype.map, "name"); +verifyProperty(TypedArray.prototype.map, "name", { + value: "map", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/reduce/length.js b/test/built-ins/TypedArray/prototype/reduce/length.js index 9d4afc624cb..439e4d16e6a 100644 --- a/test/built-ins/TypedArray/prototype/reduce/length.js +++ b/test/built-ins/TypedArray/prototype/reduce/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.reduce.length, 1); - -verifyNotEnumerable(TypedArray.prototype.reduce, "length"); -verifyNotWritable(TypedArray.prototype.reduce, "length"); -verifyConfigurable(TypedArray.prototype.reduce, "length"); +verifyProperty(TypedArray.prototype.reduce, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/reduce/name.js b/test/built-ins/TypedArray/prototype/reduce/name.js index 9074a96d45f..98698fe9ae2 100644 --- a/test/built-ins/TypedArray/prototype/reduce/name.js +++ b/test/built-ins/TypedArray/prototype/reduce/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.reduce.name, "reduce"); - -verifyNotEnumerable(TypedArray.prototype.reduce, "name"); -verifyNotWritable(TypedArray.prototype.reduce, "name"); -verifyConfigurable(TypedArray.prototype.reduce, "name"); +verifyProperty(TypedArray.prototype.reduce, "name", { + value: "reduce", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/reduceRight/length.js b/test/built-ins/TypedArray/prototype/reduceRight/length.js index 7d0227b6b29..31b5b67c923 100644 --- a/test/built-ins/TypedArray/prototype/reduceRight/length.js +++ b/test/built-ins/TypedArray/prototype/reduceRight/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.reduceRight.length, 1); - -verifyNotEnumerable(TypedArray.prototype.reduceRight, "length"); -verifyNotWritable(TypedArray.prototype.reduceRight, "length"); -verifyConfigurable(TypedArray.prototype.reduceRight, "length"); +verifyProperty(TypedArray.prototype.reduceRight, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/reduceRight/name.js b/test/built-ins/TypedArray/prototype/reduceRight/name.js index e483a273b1e..5f99533472e 100644 --- a/test/built-ins/TypedArray/prototype/reduceRight/name.js +++ b/test/built-ins/TypedArray/prototype/reduceRight/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.reduceRight.name, "reduceRight"); - -verifyNotEnumerable(TypedArray.prototype.reduceRight, "name"); -verifyNotWritable(TypedArray.prototype.reduceRight, "name"); -verifyConfigurable(TypedArray.prototype.reduceRight, "name"); +verifyProperty(TypedArray.prototype.reduceRight, "name", { + value: "reduceRight", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/reverse/length.js b/test/built-ins/TypedArray/prototype/reverse/length.js index 4a036482942..d47f7b711ba 100644 --- a/test/built-ins/TypedArray/prototype/reverse/length.js +++ b/test/built-ins/TypedArray/prototype/reverse/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.reverse.length, 0); - -verifyNotEnumerable(TypedArray.prototype.reverse, "length"); -verifyNotWritable(TypedArray.prototype.reverse, "length"); -verifyConfigurable(TypedArray.prototype.reverse, "length"); +verifyProperty(TypedArray.prototype.reverse, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/reverse/name.js b/test/built-ins/TypedArray/prototype/reverse/name.js index eff372aa375..7340812a6e1 100644 --- a/test/built-ins/TypedArray/prototype/reverse/name.js +++ b/test/built-ins/TypedArray/prototype/reverse/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.reverse.name, "reverse"); - -verifyNotEnumerable(TypedArray.prototype.reverse, "name"); -verifyNotWritable(TypedArray.prototype.reverse, "name"); -verifyConfigurable(TypedArray.prototype.reverse, "name"); +verifyProperty(TypedArray.prototype.reverse, "name", { + value: "reverse", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/set/length.js b/test/built-ins/TypedArray/prototype/set/length.js index 7e94fdc4fc7..5d969e0ea0c 100644 --- a/test/built-ins/TypedArray/prototype/set/length.js +++ b/test/built-ins/TypedArray/prototype/set/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.set.length, 1); - -verifyNotEnumerable(TypedArray.prototype.set, "length"); -verifyNotWritable(TypedArray.prototype.set, "length"); -verifyConfigurable(TypedArray.prototype.set, "length"); +verifyProperty(TypedArray.prototype.set, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/set/name.js b/test/built-ins/TypedArray/prototype/set/name.js index f7cbaf394bc..d3d6e91a817 100644 --- a/test/built-ins/TypedArray/prototype/set/name.js +++ b/test/built-ins/TypedArray/prototype/set/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.set.name, "set"); - -verifyNotEnumerable(TypedArray.prototype.set, "name"); -verifyNotWritable(TypedArray.prototype.set, "name"); -verifyConfigurable(TypedArray.prototype.set, "name"); +verifyProperty(TypedArray.prototype.set, "name", { + value: "set", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/slice/length.js b/test/built-ins/TypedArray/prototype/slice/length.js index a33abd745d5..5b048d6af8d 100644 --- a/test/built-ins/TypedArray/prototype/slice/length.js +++ b/test/built-ins/TypedArray/prototype/slice/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.slice.length, 2); - -verifyNotEnumerable(TypedArray.prototype.slice, "length"); -verifyNotWritable(TypedArray.prototype.slice, "length"); -verifyConfigurable(TypedArray.prototype.slice, "length"); +verifyProperty(TypedArray.prototype.slice, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/slice/name.js b/test/built-ins/TypedArray/prototype/slice/name.js index 69d31991825..3e3bd0e4a48 100644 --- a/test/built-ins/TypedArray/prototype/slice/name.js +++ b/test/built-ins/TypedArray/prototype/slice/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.slice.name, "slice"); - -verifyNotEnumerable(TypedArray.prototype.slice, "name"); -verifyNotWritable(TypedArray.prototype.slice, "name"); -verifyConfigurable(TypedArray.prototype.slice, "name"); +verifyProperty(TypedArray.prototype.slice, "name", { + value: "slice", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/some/length.js b/test/built-ins/TypedArray/prototype/some/length.js index 47560ff66b9..9a799839381 100644 --- a/test/built-ins/TypedArray/prototype/some/length.js +++ b/test/built-ins/TypedArray/prototype/some/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.some.length, 1); - -verifyNotEnumerable(TypedArray.prototype.some, "length"); -verifyNotWritable(TypedArray.prototype.some, "length"); -verifyConfigurable(TypedArray.prototype.some, "length"); +verifyProperty(TypedArray.prototype.some, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/some/name.js b/test/built-ins/TypedArray/prototype/some/name.js index 1d0ad67359d..269f5923b7e 100644 --- a/test/built-ins/TypedArray/prototype/some/name.js +++ b/test/built-ins/TypedArray/prototype/some/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.some.name, "some"); - -verifyNotEnumerable(TypedArray.prototype.some, "name"); -verifyNotWritable(TypedArray.prototype.some, "name"); -verifyConfigurable(TypedArray.prototype.some, "name"); +verifyProperty(TypedArray.prototype.some, "name", { + value: "some", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/sort/length.js b/test/built-ins/TypedArray/prototype/sort/length.js index 8bd6a93add7..a4889c8f220 100644 --- a/test/built-ins/TypedArray/prototype/sort/length.js +++ b/test/built-ins/TypedArray/prototype/sort/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.sort.length, 1); - -verifyNotEnumerable(TypedArray.prototype.sort, "length"); -verifyNotWritable(TypedArray.prototype.sort, "length"); -verifyConfigurable(TypedArray.prototype.sort, "length"); +verifyProperty(TypedArray.prototype.sort, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/sort/name.js b/test/built-ins/TypedArray/prototype/sort/name.js index d920126ec93..109e606979a 100644 --- a/test/built-ins/TypedArray/prototype/sort/name.js +++ b/test/built-ins/TypedArray/prototype/sort/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.sort.name, "sort"); - -verifyNotEnumerable(TypedArray.prototype.sort, "name"); -verifyNotWritable(TypedArray.prototype.sort, "name"); -verifyConfigurable(TypedArray.prototype.sort, "name"); +verifyProperty(TypedArray.prototype.sort, "name", { + value: "sort", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/subarray/length.js b/test/built-ins/TypedArray/prototype/subarray/length.js index 8328dc69944..36ccb092a6a 100644 --- a/test/built-ins/TypedArray/prototype/subarray/length.js +++ b/test/built-ins/TypedArray/prototype/subarray/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.subarray.length, 2); - -verifyNotEnumerable(TypedArray.prototype.subarray, "length"); -verifyNotWritable(TypedArray.prototype.subarray, "length"); -verifyConfigurable(TypedArray.prototype.subarray, "length"); +verifyProperty(TypedArray.prototype.subarray, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/subarray/name.js b/test/built-ins/TypedArray/prototype/subarray/name.js index fb51a5f53ba..565738c4af1 100644 --- a/test/built-ins/TypedArray/prototype/subarray/name.js +++ b/test/built-ins/TypedArray/prototype/subarray/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.subarray.name, "subarray"); - -verifyNotEnumerable(TypedArray.prototype.subarray, "name"); -verifyNotWritable(TypedArray.prototype.subarray, "name"); -verifyConfigurable(TypedArray.prototype.subarray, "name"); +verifyProperty(TypedArray.prototype.subarray, "name", { + value: "subarray", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/toLocaleString/length.js b/test/built-ins/TypedArray/prototype/toLocaleString/length.js index deadce49fa1..2f4ef1379b8 100644 --- a/test/built-ins/TypedArray/prototype/toLocaleString/length.js +++ b/test/built-ins/TypedArray/prototype/toLocaleString/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.toLocaleString.length, 0); - -verifyNotEnumerable(TypedArray.prototype.toLocaleString, "length"); -verifyNotWritable(TypedArray.prototype.toLocaleString, "length"); -verifyConfigurable(TypedArray.prototype.toLocaleString, "length"); +verifyProperty(TypedArray.prototype.toLocaleString, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/toLocaleString/name.js b/test/built-ins/TypedArray/prototype/toLocaleString/name.js index 20a8dfe1632..5cad5e73aa5 100644 --- a/test/built-ins/TypedArray/prototype/toLocaleString/name.js +++ b/test/built-ins/TypedArray/prototype/toLocaleString/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.toLocaleString.name, "toLocaleString"); - -verifyNotEnumerable(TypedArray.prototype.toLocaleString, "name"); -verifyNotWritable(TypedArray.prototype.toLocaleString, "name"); -verifyConfigurable(TypedArray.prototype.toLocaleString, "name"); +verifyProperty(TypedArray.prototype.toLocaleString, "name", { + value: "toLocaleString", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/values/length.js b/test/built-ins/TypedArray/prototype/values/length.js index deae67fbd4f..51b1584d0c6 100644 --- a/test/built-ins/TypedArray/prototype/values/length.js +++ b/test/built-ins/TypedArray/prototype/values/length.js @@ -23,8 +23,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.values.length, 0); - -verifyNotEnumerable(TypedArray.prototype.values, "length"); -verifyNotWritable(TypedArray.prototype.values, "length"); -verifyConfigurable(TypedArray.prototype.values, "length"); +verifyProperty(TypedArray.prototype.values, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArray/prototype/values/name.js b/test/built-ins/TypedArray/prototype/values/name.js index 43b3d9dbbc7..7882bbfbfd0 100644 --- a/test/built-ins/TypedArray/prototype/values/name.js +++ b/test/built-ins/TypedArray/prototype/values/name.js @@ -20,8 +20,9 @@ includes: [propertyHelper.js, testTypedArray.js] features: [TypedArray] ---*/ -assert.sameValue(TypedArray.prototype.values.name, "values"); - -verifyNotEnumerable(TypedArray.prototype.values, "name"); -verifyNotWritable(TypedArray.prototype.values, "name"); -verifyConfigurable(TypedArray.prototype.values, "name"); +verifyProperty(TypedArray.prototype.values, "name", { + value: "values", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Float32Array/name.js b/test/built-ins/TypedArrayConstructors/Float32Array/name.js index a7b0c3fa880..726c255f348 100644 --- a/test/built-ins/TypedArrayConstructors/Float32Array/name.js +++ b/test/built-ins/TypedArrayConstructors/Float32Array/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Float32Array.name, "Float32Array"); - -verifyNotEnumerable(Float32Array, "name"); -verifyNotWritable(Float32Array, "name"); -verifyConfigurable(Float32Array, "name"); +verifyProperty(Float32Array, "name", { + value: "Float32Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Float64Array/name.js b/test/built-ins/TypedArrayConstructors/Float64Array/name.js index a95bf2635a8..a01ede5bc43 100644 --- a/test/built-ins/TypedArrayConstructors/Float64Array/name.js +++ b/test/built-ins/TypedArrayConstructors/Float64Array/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Float64Array.name, "Float64Array"); - -verifyNotEnumerable(Float64Array, "name"); -verifyNotWritable(Float64Array, "name"); -verifyConfigurable(Float64Array, "name"); +verifyProperty(Float64Array, "name", { + value: "Float64Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Int16Array/name.js b/test/built-ins/TypedArrayConstructors/Int16Array/name.js index 95aefeb91e1..db1aeff71e4 100644 --- a/test/built-ins/TypedArrayConstructors/Int16Array/name.js +++ b/test/built-ins/TypedArrayConstructors/Int16Array/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Int16Array.name, "Int16Array"); - -verifyNotEnumerable(Int16Array, "name"); -verifyNotWritable(Int16Array, "name"); -verifyConfigurable(Int16Array, "name"); +verifyProperty(Int16Array, "name", { + value: "Int16Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Int32Array/name.js b/test/built-ins/TypedArrayConstructors/Int32Array/name.js index b3b12058595..7e84123fec1 100644 --- a/test/built-ins/TypedArrayConstructors/Int32Array/name.js +++ b/test/built-ins/TypedArrayConstructors/Int32Array/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Int32Array.name, "Int32Array"); - -verifyNotEnumerable(Int32Array, "name"); -verifyNotWritable(Int32Array, "name"); -verifyConfigurable(Int32Array, "name"); +verifyProperty(Int32Array, "name", { + value: "Int32Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Int8Array/name.js b/test/built-ins/TypedArrayConstructors/Int8Array/name.js index 5b7d4488777..b6b3d998118 100644 --- a/test/built-ins/TypedArrayConstructors/Int8Array/name.js +++ b/test/built-ins/TypedArrayConstructors/Int8Array/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Int8Array.name, "Int8Array"); - -verifyNotEnumerable(Int8Array, "name"); -verifyNotWritable(Int8Array, "name"); -verifyConfigurable(Int8Array, "name"); +verifyProperty(Int8Array, "name", { + value: "Int8Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Uint16Array/name.js b/test/built-ins/TypedArrayConstructors/Uint16Array/name.js index 0c6bde68fd8..033be96f30a 100644 --- a/test/built-ins/TypedArrayConstructors/Uint16Array/name.js +++ b/test/built-ins/TypedArrayConstructors/Uint16Array/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Uint16Array.name, "Uint16Array"); - -verifyNotEnumerable(Uint16Array, "name"); -verifyNotWritable(Uint16Array, "name"); -verifyConfigurable(Uint16Array, "name"); +verifyProperty(Uint16Array, "name", { + value: "Uint16Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Uint32Array/name.js b/test/built-ins/TypedArrayConstructors/Uint32Array/name.js index 4525a1a352d..00d1b535ce3 100644 --- a/test/built-ins/TypedArrayConstructors/Uint32Array/name.js +++ b/test/built-ins/TypedArrayConstructors/Uint32Array/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Uint32Array.name, "Uint32Array"); - -verifyNotEnumerable(Uint32Array, "name"); -verifyNotWritable(Uint32Array, "name"); -verifyConfigurable(Uint32Array, "name"); +verifyProperty(Uint32Array, "name", { + value: "Uint32Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Uint8Array/name.js b/test/built-ins/TypedArrayConstructors/Uint8Array/name.js index 527c75893c6..ba114dbaf05 100644 --- a/test/built-ins/TypedArrayConstructors/Uint8Array/name.js +++ b/test/built-ins/TypedArrayConstructors/Uint8Array/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Uint8Array.name, "Uint8Array"); - -verifyNotEnumerable(Uint8Array, "name"); -verifyNotWritable(Uint8Array, "name"); -verifyConfigurable(Uint8Array, "name"); +verifyProperty(Uint8Array, "name", { + value: "Uint8Array", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/TypedArrayConstructors/Uint8ClampedArray/name.js b/test/built-ins/TypedArrayConstructors/Uint8ClampedArray/name.js index 1d13b77d25d..7b8eceefb83 100644 --- a/test/built-ins/TypedArrayConstructors/Uint8ClampedArray/name.js +++ b/test/built-ins/TypedArrayConstructors/Uint8ClampedArray/name.js @@ -21,8 +21,9 @@ includes: [propertyHelper.js] features: [TypedArray] ---*/ -assert.sameValue(Uint8ClampedArray.name, "Uint8ClampedArray"); - -verifyNotEnumerable(Uint8ClampedArray, "name"); -verifyNotWritable(Uint8ClampedArray, "name"); -verifyConfigurable(Uint8ClampedArray, "name"); +verifyProperty(Uint8ClampedArray, "name", { + value: "Uint8ClampedArray", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/length.js b/test/built-ins/WeakMap/length.js index 51df6941c3d..518b7805901 100644 --- a/test/built-ins/WeakMap/length.js +++ b/test/built-ins/WeakMap/length.js @@ -7,8 +7,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(WeakMap.length, 0, 'The value of `WeakMap.length` is `0`'); - -verifyNotEnumerable(WeakMap, 'length'); -verifyNotWritable(WeakMap, 'length'); -verifyConfigurable(WeakMap, 'length'); +verifyProperty(WeakMap, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/name.js b/test/built-ins/WeakMap/name.js index 05da1b73fcf..534cb9f346f 100644 --- a/test/built-ins/WeakMap/name.js +++ b/test/built-ins/WeakMap/name.js @@ -10,11 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.name, 'WeakMap', - 'The value of `WeakMap.name` is "WeakMap"' -); - -verifyNotEnumerable(WeakMap, 'name'); -verifyNotWritable(WeakMap, 'name'); -verifyConfigurable(WeakMap, 'name'); +verifyProperty(WeakMap, "name", { + value: "WeakMap", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/prototype/delete/length.js b/test/built-ins/WeakMap/prototype/delete/length.js index 12bfafbd694..1ebe1e46b8b 100644 --- a/test/built-ins/WeakMap/prototype/delete/length.js +++ b/test/built-ins/WeakMap/prototype/delete/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.prototype.delete.length, 1, - 'The value of WeakMap.prototype.delete.length is 1' -); - -verifyNotEnumerable(WeakMap.prototype.delete, 'length'); -verifyNotWritable(WeakMap.prototype.delete, 'length'); -verifyConfigurable(WeakMap.prototype.delete, 'length'); +verifyProperty(WeakMap.prototype.delete, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/prototype/delete/name.js b/test/built-ins/WeakMap/prototype/delete/name.js index 81d79828303..d594d77530b 100644 --- a/test/built-ins/WeakMap/prototype/delete/name.js +++ b/test/built-ins/WeakMap/prototype/delete/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.prototype.delete.name, 'delete', - 'The value of WeakMap.prototype.delete.name is "delete"' -); - -verifyNotEnumerable(WeakMap.prototype.delete, 'name'); -verifyNotWritable(WeakMap.prototype.delete, 'name'); -verifyConfigurable(WeakMap.prototype.delete, 'name'); +verifyProperty(WeakMap.prototype.delete, "name", { + value: "delete", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/prototype/get/length.js b/test/built-ins/WeakMap/prototype/get/length.js index 3813ef9c2cd..1e085f46f9e 100644 --- a/test/built-ins/WeakMap/prototype/get/length.js +++ b/test/built-ins/WeakMap/prototype/get/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.prototype.get.length, 1, - 'The value of `WeakMap.prototype.get.length` is `1`' -); - -verifyNotEnumerable(WeakMap.prototype.get, 'length'); -verifyNotWritable(WeakMap.prototype.get, 'length'); -verifyConfigurable(WeakMap.prototype.get, 'length'); +verifyProperty(WeakMap.prototype.get, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/prototype/get/name.js b/test/built-ins/WeakMap/prototype/get/name.js index 5b27eee5a60..53c24bb6caf 100644 --- a/test/built-ins/WeakMap/prototype/get/name.js +++ b/test/built-ins/WeakMap/prototype/get/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.prototype.get.name, 'get', - 'The value of `WeakMap.prototype.get.name` is `"get"`' -); - -verifyNotEnumerable(WeakMap.prototype.get, 'name'); -verifyNotWritable(WeakMap.prototype.get, 'name'); -verifyConfigurable(WeakMap.prototype.get, 'name'); +verifyProperty(WeakMap.prototype.get, "name", { + value: "get", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/prototype/has/length.js b/test/built-ins/WeakMap/prototype/has/length.js index 44e7e3ddbf5..49e98b2ce51 100644 --- a/test/built-ins/WeakMap/prototype/has/length.js +++ b/test/built-ins/WeakMap/prototype/has/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.prototype.has.length, 1, - 'The value of WeakMap.prototype.has.length is 1' -); - -verifyNotEnumerable(WeakMap.prototype.has, 'length'); -verifyNotWritable(WeakMap.prototype.has, 'length'); -verifyConfigurable(WeakMap.prototype.has, 'length'); +verifyProperty(WeakMap.prototype.has, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/prototype/has/name.js b/test/built-ins/WeakMap/prototype/has/name.js index 37aceefc608..c4144868907 100644 --- a/test/built-ins/WeakMap/prototype/has/name.js +++ b/test/built-ins/WeakMap/prototype/has/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.prototype.has.name, 'has', - 'The value of WeakMap.prototype.has.name is "has"' -); - -verifyNotEnumerable(WeakMap.prototype.has, 'name'); -verifyNotWritable(WeakMap.prototype.has, 'name'); -verifyConfigurable(WeakMap.prototype.has, 'name'); +verifyProperty(WeakMap.prototype.has, "name", { + value: "has", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/prototype/set/length.js b/test/built-ins/WeakMap/prototype/set/length.js index bbb729d8cc3..2def4b286b2 100644 --- a/test/built-ins/WeakMap/prototype/set/length.js +++ b/test/built-ins/WeakMap/prototype/set/length.js @@ -11,11 +11,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.prototype.set.length, 2, - 'The value of `WeakMap.prototype.set.length` is `2`' -); - -verifyNotEnumerable(WeakMap.prototype.set, 'length'); -verifyNotWritable(WeakMap.prototype.set, 'length'); -verifyConfigurable(WeakMap.prototype.set, 'length'); +verifyProperty(WeakMap.prototype.set, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakMap/prototype/set/name.js b/test/built-ins/WeakMap/prototype/set/name.js index ba923e33e62..3abf3a5fff3 100644 --- a/test/built-ins/WeakMap/prototype/set/name.js +++ b/test/built-ins/WeakMap/prototype/set/name.js @@ -11,11 +11,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakMap.prototype.set.name, 'set', - 'The value of WeakMap.prototype.set.name is "set"' -); - -verifyNotEnumerable(WeakMap.prototype.set, 'name'); -verifyNotWritable(WeakMap.prototype.set, 'name'); -verifyConfigurable(WeakMap.prototype.set, 'name'); +verifyProperty(WeakMap.prototype.set, "name", { + value: "set", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakSet/length.js b/test/built-ins/WeakSet/length.js index 02011e0fad5..f0ea3d40cc0 100644 --- a/test/built-ins/WeakSet/length.js +++ b/test/built-ins/WeakSet/length.js @@ -7,8 +7,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(WeakSet.length, 0, 'The value of `WeakSet.length` is `0`'); - -verifyNotEnumerable(WeakSet, 'length'); -verifyNotWritable(WeakSet, 'length'); -verifyConfigurable(WeakSet, 'length'); +verifyProperty(WeakSet, "length", { + value: 0, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakSet/name.js b/test/built-ins/WeakSet/name.js index cd884f941d0..c980ba969cf 100644 --- a/test/built-ins/WeakSet/name.js +++ b/test/built-ins/WeakSet/name.js @@ -10,11 +10,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakSet.name, 'WeakSet', - 'The value of `WeakSet.name` is "WeakSet"' -); - -verifyNotEnumerable(WeakSet, 'name'); -verifyNotWritable(WeakSet, 'name'); -verifyConfigurable(WeakSet, 'name'); +verifyProperty(WeakSet, "name", { + value: "WeakSet", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakSet/prototype/add/length.js b/test/built-ins/WeakSet/prototype/add/length.js index 39531659be0..4ee85ab72d7 100644 --- a/test/built-ins/WeakSet/prototype/add/length.js +++ b/test/built-ins/WeakSet/prototype/add/length.js @@ -11,11 +11,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakSet.prototype.add.length, 1, - 'The value of `WeakSet.prototype.add.length` is `1`' -); - -verifyNotEnumerable(WeakSet.prototype.add, 'length'); -verifyNotWritable(WeakSet.prototype.add, 'length'); -verifyConfigurable(WeakSet.prototype.add, 'length'); +verifyProperty(WeakSet.prototype.add, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakSet/prototype/add/name.js b/test/built-ins/WeakSet/prototype/add/name.js index 79e970f66ed..838eac83cf2 100644 --- a/test/built-ins/WeakSet/prototype/add/name.js +++ b/test/built-ins/WeakSet/prototype/add/name.js @@ -11,11 +11,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakSet.prototype.add.name, 'add', - 'The value of WeakSet.prototype.add.name is "add"' -); - -verifyNotEnumerable(WeakSet.prototype.add, 'name'); -verifyNotWritable(WeakSet.prototype.add, 'name'); -verifyConfigurable(WeakSet.prototype.add, 'name'); +verifyProperty(WeakSet.prototype.add, "name", { + value: "add", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakSet/prototype/delete/length.js b/test/built-ins/WeakSet/prototype/delete/length.js index 1efdf01e022..08ff02047dd 100644 --- a/test/built-ins/WeakSet/prototype/delete/length.js +++ b/test/built-ins/WeakSet/prototype/delete/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakSet.prototype.delete.length, 1, - 'The value of WeakSet.prototype.delete.length is 1' -); - -verifyNotEnumerable(WeakSet.prototype.delete, 'length'); -verifyNotWritable(WeakSet.prototype.delete, 'length'); -verifyConfigurable(WeakSet.prototype.delete, 'length'); +verifyProperty(WeakSet.prototype.delete, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakSet/prototype/delete/name.js b/test/built-ins/WeakSet/prototype/delete/name.js index 15a494918d8..2257e308377 100644 --- a/test/built-ins/WeakSet/prototype/delete/name.js +++ b/test/built-ins/WeakSet/prototype/delete/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakSet.prototype.delete.name, 'delete', - 'The value of WeakSet.prototype.delete.name is "delete"' -); - -verifyNotEnumerable(WeakSet.prototype.delete, 'name'); -verifyNotWritable(WeakSet.prototype.delete, 'name'); -verifyConfigurable(WeakSet.prototype.delete, 'name'); +verifyProperty(WeakSet.prototype.delete, "name", { + value: "delete", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakSet/prototype/has/length.js b/test/built-ins/WeakSet/prototype/has/length.js index dbd0138ebf3..ee090751238 100644 --- a/test/built-ins/WeakSet/prototype/has/length.js +++ b/test/built-ins/WeakSet/prototype/has/length.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakSet.prototype.has.length, 1, - 'The value of WeakSet.prototype.has.length is 1' -); - -verifyNotEnumerable(WeakSet.prototype.has, 'length'); -verifyNotWritable(WeakSet.prototype.has, 'length'); -verifyConfigurable(WeakSet.prototype.has, 'length'); +verifyProperty(WeakSet.prototype.has, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/WeakSet/prototype/has/name.js b/test/built-ins/WeakSet/prototype/has/name.js index 6feeea37429..dab2d5eed46 100644 --- a/test/built-ins/WeakSet/prototype/has/name.js +++ b/test/built-ins/WeakSet/prototype/has/name.js @@ -12,11 +12,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue( - WeakSet.prototype.has.name, 'has', - 'The value of WeakSet.prototype.has.name is "has"' -); - -verifyNotEnumerable(WeakSet.prototype.has, 'name'); -verifyNotWritable(WeakSet.prototype.has, 'name'); -verifyConfigurable(WeakSet.prototype.has, 'name'); +verifyProperty(WeakSet.prototype.has, "name", { + value: "has", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/decodeURI/name.js b/test/built-ins/decodeURI/name.js index c682ae17cd9..4ddad9009e0 100644 --- a/test/built-ins/decodeURI/name.js +++ b/test/built-ins/decodeURI/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(decodeURI.name, "decodeURI"); - -verifyNotEnumerable(decodeURI, "name"); -verifyNotWritable(decodeURI, "name"); -verifyConfigurable(decodeURI, "name"); +verifyProperty(decodeURI, "name", { + value: "decodeURI", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/decodeURIComponent/name.js b/test/built-ins/decodeURIComponent/name.js index f2dc4d81483..e1b8020685c 100644 --- a/test/built-ins/decodeURIComponent/name.js +++ b/test/built-ins/decodeURIComponent/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(decodeURIComponent.name, "decodeURIComponent"); - -verifyNotEnumerable(decodeURIComponent, "name"); -verifyNotWritable(decodeURIComponent, "name"); -verifyConfigurable(decodeURIComponent, "name"); +verifyProperty(decodeURIComponent, "name", { + value: "decodeURIComponent", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/encodeURI/name.js b/test/built-ins/encodeURI/name.js index 5fb1c907876..e2fe1c0acfc 100644 --- a/test/built-ins/encodeURI/name.js +++ b/test/built-ins/encodeURI/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(encodeURI.name, "encodeURI"); - -verifyNotEnumerable(encodeURI, "name"); -verifyNotWritable(encodeURI, "name"); -verifyConfigurable(encodeURI, "name"); +verifyProperty(encodeURI, "name", { + value: "encodeURI", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/encodeURIComponent/name.js b/test/built-ins/encodeURIComponent/name.js index 89278cbaca0..a596d3b9c9d 100644 --- a/test/built-ins/encodeURIComponent/name.js +++ b/test/built-ins/encodeURIComponent/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(encodeURIComponent.name, "encodeURIComponent"); - -verifyNotEnumerable(encodeURIComponent, "name"); -verifyNotWritable(encodeURIComponent, "name"); -verifyConfigurable(encodeURIComponent, "name"); +verifyProperty(encodeURIComponent, "name", { + value: "encodeURIComponent", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/eval/name.js b/test/built-ins/eval/name.js index eeff0bbee9f..906d7c9b8d4 100644 --- a/test/built-ins/eval/name.js +++ b/test/built-ins/eval/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(eval.name, "eval"); - -verifyNotEnumerable(eval, "name"); -verifyNotWritable(eval, "name"); -verifyConfigurable(eval, "name"); +verifyProperty(eval, "name", { + value: "eval", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/isFinite/length.js b/test/built-ins/isFinite/length.js index 26450af1593..9e43266c05e 100644 --- a/test/built-ins/isFinite/length.js +++ b/test/built-ins/isFinite/length.js @@ -8,8 +8,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(isFinite.length, 1, "The value of `isFinite.length` is `1`"); - -verifyNotEnumerable(isFinite, "length"); -verifyNotWritable(isFinite, "length"); -verifyConfigurable(isFinite, "length"); +verifyProperty(isFinite, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/isFinite/name.js b/test/built-ins/isFinite/name.js index 344ab9e1765..e9f819a2eaf 100644 --- a/test/built-ins/isFinite/name.js +++ b/test/built-ins/isFinite/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(isFinite.name, "isFinite"); - -verifyNotEnumerable(isFinite, "name"); -verifyNotWritable(isFinite, "name"); -verifyConfigurable(isFinite, "name"); +verifyProperty(isFinite, "name", { + value: "isFinite", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/isNaN/length.js b/test/built-ins/isNaN/length.js index 758e686379b..21373d118ef 100644 --- a/test/built-ins/isNaN/length.js +++ b/test/built-ins/isNaN/length.js @@ -8,8 +8,9 @@ description: > includes: [propertyHelper.js] ---*/ -assert.sameValue(isNaN.length, 1, "The value of `isNaN.length` is `1`"); - -verifyNotEnumerable(isNaN, "length"); -verifyNotWritable(isNaN, "length"); -verifyConfigurable(isNaN, "length"); +verifyProperty(isNaN, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/isNaN/name.js b/test/built-ins/isNaN/name.js index b270cf97055..5c506a8f990 100644 --- a/test/built-ins/isNaN/name.js +++ b/test/built-ins/isNaN/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(isNaN.name, "isNaN"); - -verifyNotEnumerable(isNaN, "name"); -verifyNotWritable(isNaN, "name"); -verifyConfigurable(isNaN, "name"); +verifyProperty(isNaN, "name", { + value: "isNaN", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/parseFloat/name.js b/test/built-ins/parseFloat/name.js index 47b81bf3ef5..14954448870 100644 --- a/test/built-ins/parseFloat/name.js +++ b/test/built-ins/parseFloat/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(parseFloat.name, "parseFloat"); - -verifyNotEnumerable(parseFloat, "name"); -verifyNotWritable(parseFloat, "name"); -verifyConfigurable(parseFloat, "name"); +verifyProperty(parseFloat, "name", { + value: "parseFloat", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/parseInt/name.js b/test/built-ins/parseInt/name.js index 00dc1153b19..975dc2cea6c 100644 --- a/test/built-ins/parseInt/name.js +++ b/test/built-ins/parseInt/name.js @@ -19,8 +19,9 @@ info: | includes: [propertyHelper.js] ---*/ -assert.sameValue(parseInt.name, "parseInt", 'The value of parseInt.name is "parseInt"'); - -verifyNotEnumerable(parseInt, "name"); -verifyNotWritable(parseInt, "name"); -verifyConfigurable(parseInt, "name"); +verifyProperty(parseInt, "name", { + value: "parseInt", + writable: false, + enumerable: false, + configurable: true +}); From 961480ac611b4a98c7f3ac918787208aa6a5dfb1 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Fri, 22 Mar 2024 18:28:44 -0700 Subject: [PATCH 10/59] remove some auto-generated error messages in "assert.throws" tests --- .../prototype/getYear/not-a-constructor.js | 2 +- .../prototype/setYear/not-a-constructor.js | 2 +- .../prototype/toGMTString/not-a-constructor.js | 2 +- .../compile/this-cross-realm-instance.js | 4 +--- .../compile/this-subclass-instance.js | 8 ++------ .../prototype/anchor/not-a-constructor.js | 2 +- .../String/prototype/big/not-a-constructor.js | 2 +- .../prototype/blink/not-a-constructor.js | 2 +- .../String/prototype/bold/not-a-constructor.js | 2 +- .../prototype/fixed/not-a-constructor.js | 2 +- .../prototype/fontcolor/not-a-constructor.js | 2 +- .../prototype/fontsize/not-a-constructor.js | 2 +- .../prototype/italics/not-a-constructor.js | 2 +- .../String/prototype/link/not-a-constructor.js | 2 +- .../prototype/small/not-a-constructor.js | 2 +- .../prototype/strike/not-a-constructor.js | 2 +- .../String/prototype/sub/not-a-constructor.js | 2 +- .../prototype/substr/not-a-constructor.js | 2 +- .../String/prototype/sup/not-a-constructor.js | 2 +- .../built-ins/escape/not-a-constructor.js | 2 +- .../built-ins/unescape/not-a-constructor.js | 2 +- .../Symbol.iterator/not-a-constructor.js | 2 +- .../prototype/copyWithin/not-a-constructor.js | 2 +- .../prototype/entries/not-a-constructor.js | 2 +- .../Array/prototype/every/not-a-constructor.js | 2 +- .../Array/prototype/fill/not-a-constructor.js | 2 +- .../prototype/filter/not-a-constructor.js | 2 +- .../Array/prototype/find/not-a-constructor.js | 2 +- .../prototype/findIndex/not-a-constructor.js | 2 +- .../prototype/findLast/not-a-constructor.js | 2 +- .../findLastIndex/not-a-constructor.js | 2 +- .../Array/prototype/flat/not-a-constructor.js | 2 +- .../prototype/flatMap/not-a-constructor.js | 2 +- .../prototype/forEach/not-a-constructor.js | 2 +- .../prototype/includes/not-a-constructor.js | 2 +- .../prototype/indexOf/not-a-constructor.js | 2 +- .../Array/prototype/join/not-a-constructor.js | 2 +- .../Array/prototype/keys/not-a-constructor.js | 2 +- .../prototype/lastIndexOf/not-a-constructor.js | 2 +- .../Array/prototype/map/not-a-constructor.js | 2 +- .../Array/prototype/pop/not-a-constructor.js | 2 +- .../Array/prototype/push/not-a-constructor.js | 2 +- .../prototype/reduce/not-a-constructor.js | 2 +- .../prototype/reduceRight/not-a-constructor.js | 2 +- .../prototype/reverse/not-a-constructor.js | 2 +- .../Array/prototype/shift/not-a-constructor.js | 2 +- .../Array/prototype/slice/not-a-constructor.js | 2 +- .../Array/prototype/some/not-a-constructor.js | 2 +- .../Array/prototype/sort/not-a-constructor.js | 2 +- .../prototype/splice/not-a-constructor.js | 2 +- .../toLocaleString/not-a-constructor.js | 2 +- .../prototype/toReversed/not-a-constructor.js | 2 +- .../prototype/toReversed/this-value-nullish.js | 4 ++-- .../prototype/toSorted/not-a-constructor.js | 2 +- .../prototype/toSorted/this-value-nullish.js | 4 ++-- .../prototype/toSpliced/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/unshift/not-a-constructor.js | 2 +- .../prototype/values/not-a-constructor.js | 2 +- .../Array/prototype/with/not-a-constructor.js | 2 +- .../Array/prototype/with/this-value-nullish.js | 4 ++-- .../ArrayBuffer/isView/not-a-constructor.js | 2 +- .../prototype/slice/not-a-constructor.js | 2 +- test/built-ins/Atomics/add/bad-range.js | 2 +- test/built-ins/Atomics/add/bigint/bad-range.js | 2 +- test/built-ins/Atomics/add/non-views.js | 2 +- .../built-ins/Atomics/add/not-a-constructor.js | 2 +- test/built-ins/Atomics/and/bad-range.js | 2 +- test/built-ins/Atomics/and/bigint/bad-range.js | 2 +- test/built-ins/Atomics/and/non-views.js | 2 +- .../built-ins/Atomics/and/not-a-constructor.js | 2 +- .../Atomics/compareExchange/bad-range.js | 2 +- .../compareExchange/bigint/bad-range.js | 2 +- .../Atomics/compareExchange/non-views.js | 2 +- .../compareExchange/not-a-constructor.js | 2 +- test/built-ins/Atomics/exchange/bad-range.js | 2 +- .../Atomics/exchange/bigint/bad-range.js | 2 +- test/built-ins/Atomics/exchange/non-views.js | 2 +- .../Atomics/exchange/not-a-constructor.js | 2 +- .../Atomics/isLockFree/not-a-constructor.js | 2 +- test/built-ins/Atomics/load/bad-range.js | 2 +- .../built-ins/Atomics/load/bigint/bad-range.js | 2 +- test/built-ins/Atomics/load/non-views.js | 2 +- .../Atomics/load/not-a-constructor.js | 2 +- test/built-ins/Atomics/notify/bad-range.js | 2 +- .../Atomics/notify/bigint/bad-range.js | 2 +- .../bigint/non-bigint64-typedarray-throws.js | 4 ++-- ...hared-bufferdata-count-evaluation-throws.js | 2 +- ...hared-bufferdata-index-evaluation-throws.js | 2 +- ...d-bufferdata-non-shared-int-views-throws.js | 2 +- .../notify/bigint/null-bufferdata-throws.js | 2 +- .../Atomics/notify/count-symbol-throws.js | 2 +- .../count-tointeger-throws-then-wake-throws.js | 2 +- .../Atomics/notify/negative-index-throws.js | 8 ++++---- .../notify/non-int32-typedarray-throws.js | 18 +++++++++--------- ...hared-bufferdata-count-evaluation-throws.js | 2 +- ...hared-bufferdata-index-evaluation-throws.js | 2 +- ...d-bufferdata-non-shared-int-views-throws.js | 12 ++++++------ .../Atomics/notify/non-shared-int-views.js | 12 ++++++------ test/built-ins/Atomics/notify/non-views.js | 2 +- .../Atomics/notify/not-a-constructor.js | 2 +- .../Atomics/notify/not-a-typedarray-throws.js | 4 ++-- .../Atomics/notify/not-an-object-throws.js | 14 +++++++------- .../Atomics/notify/null-bufferdata-throws.js | 2 +- .../notify/out-of-range-index-throws.js | 6 +++--- .../Atomics/notify/symbol-for-index-throws.js | 8 ++++---- test/built-ins/Atomics/or/bad-range.js | 2 +- test/built-ins/Atomics/or/bigint/bad-range.js | 2 +- test/built-ins/Atomics/or/non-views.js | 2 +- test/built-ins/Atomics/or/not-a-constructor.js | 2 +- test/built-ins/Atomics/prop-desc.js | 4 ++-- test/built-ins/Atomics/store/bad-range.js | 2 +- .../Atomics/store/bigint/bad-range.js | 2 +- test/built-ins/Atomics/store/non-views.js | 2 +- .../Atomics/store/not-a-constructor.js | 2 +- test/built-ins/Atomics/sub/bad-range.js | 2 +- test/built-ins/Atomics/sub/bigint/bad-range.js | 2 +- test/built-ins/Atomics/sub/non-views.js | 2 +- .../built-ins/Atomics/sub/not-a-constructor.js | 2 +- test/built-ins/Atomics/wait/bad-range.js | 2 +- .../built-ins/Atomics/wait/bigint/bad-range.js | 2 +- .../wait/bigint/cannot-suspend-throws.js | 2 +- .../wait/bigint/negative-index-throws.js | 8 ++++---- .../bigint/non-bigint64-typedarray-throws.js | 4 ++-- .../bigint/non-shared-bufferdata-throws.js | 4 ++-- .../wait/bigint/null-bufferdata-throws.js | 2 +- .../wait/bigint/out-of-range-index-throws.js | 6 +++--- .../Atomics/wait/cannot-suspend-throws.js | 2 +- .../Atomics/wait/negative-index-throws.js | 8 ++++---- .../wait/non-int32-typedarray-throws.js | 18 +++++++++--------- .../wait/non-shared-bufferdata-throws.js | 4 ++-- .../Atomics/wait/not-a-typedarray-throws.js | 4 ++-- .../Atomics/wait/not-an-object-throws.js | 14 +++++++------- .../Atomics/wait/null-bufferdata-throws.js | 2 +- .../Atomics/wait/out-of-range-index-throws.js | 8 ++++---- .../wait/poisoned-object-for-timeout-throws.js | 4 ++-- .../Atomics/wait/symbol-for-index-throws.js | 8 ++++---- .../Atomics/wait/symbol-for-timeout-throws.js | 8 ++++---- .../Atomics/wait/symbol-for-value-throws.js | 8 ++++---- test/built-ins/Atomics/xor/bad-range.js | 2 +- test/built-ins/Atomics/xor/bigint/bad-range.js | 2 +- test/built-ins/Atomics/xor/non-views.js | 2 +- .../built-ins/Atomics/xor/not-a-constructor.js | 2 +- .../BigInt/asIntN/not-a-constructor.js | 2 +- .../BigInt/asUintN/not-a-constructor.js | 2 +- .../toLocaleString/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/valueOf/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/valueOf/not-a-constructor.js | 2 +- .../prototype/getBigInt64/not-a-constructor.js | 2 +- .../getBigUint64/not-a-constructor.js | 2 +- .../prototype/getFloat32/not-a-constructor.js | 2 +- .../prototype/getFloat64/not-a-constructor.js | 2 +- .../prototype/getInt16/not-a-constructor.js | 2 +- .../prototype/getInt32/not-a-constructor.js | 2 +- .../prototype/getInt8/not-a-constructor.js | 2 +- .../prototype/getUint16/not-a-constructor.js | 2 +- .../prototype/getUint32/not-a-constructor.js | 2 +- .../prototype/getUint8/not-a-constructor.js | 2 +- .../prototype/setBigInt64/not-a-constructor.js | 2 +- .../setBigUint64/not-a-constructor.js | 2 +- .../prototype/setFloat32/not-a-constructor.js | 2 +- .../prototype/setFloat64/not-a-constructor.js | 2 +- .../prototype/setInt16/not-a-constructor.js | 2 +- .../prototype/setInt32/not-a-constructor.js | 2 +- .../prototype/setInt8/not-a-constructor.js | 2 +- .../prototype/setUint16/not-a-constructor.js | 2 +- .../prototype/setUint32/not-a-constructor.js | 2 +- .../prototype/setUint8/not-a-constructor.js | 2 +- test/built-ins/Date/UTC/not-a-constructor.js | 2 +- test/built-ins/Date/now/not-a-constructor.js | 2 +- test/built-ins/Date/parse/not-a-constructor.js | 2 +- .../prototype/getDate/not-a-constructor.js | 2 +- .../Date/prototype/getDay/not-a-constructor.js | 2 +- .../prototype/getFullYear/not-a-constructor.js | 2 +- .../prototype/getHours/not-a-constructor.js | 2 +- .../getMilliseconds/not-a-constructor.js | 2 +- .../prototype/getMinutes/not-a-constructor.js | 2 +- .../prototype/getMonth/not-a-constructor.js | 2 +- .../prototype/getSeconds/not-a-constructor.js | 2 +- .../prototype/getTime/not-a-constructor.js | 2 +- .../getTimezoneOffset/not-a-constructor.js | 2 +- .../prototype/getUTCDate/not-a-constructor.js | 2 +- .../prototype/getUTCDay/not-a-constructor.js | 2 +- .../getUTCFullYear/not-a-constructor.js | 2 +- .../prototype/getUTCHours/not-a-constructor.js | 2 +- .../getUTCMilliseconds/not-a-constructor.js | 2 +- .../getUTCMinutes/not-a-constructor.js | 2 +- .../prototype/getUTCMonth/not-a-constructor.js | 2 +- .../getUTCSeconds/not-a-constructor.js | 2 +- .../prototype/setDate/not-a-constructor.js | 2 +- .../prototype/setFullYear/not-a-constructor.js | 2 +- .../prototype/setHours/not-a-constructor.js | 2 +- .../setMilliseconds/not-a-constructor.js | 2 +- .../prototype/setMinutes/not-a-constructor.js | 2 +- .../prototype/setMonth/not-a-constructor.js | 2 +- .../prototype/setSeconds/not-a-constructor.js | 2 +- .../prototype/setTime/not-a-constructor.js | 2 +- .../prototype/setUTCDate/not-a-constructor.js | 2 +- .../setUTCFullYear/not-a-constructor.js | 2 +- .../prototype/setUTCHours/not-a-constructor.js | 2 +- .../setUTCMilliseconds/not-a-constructor.js | 2 +- .../setUTCMinutes/not-a-constructor.js | 2 +- .../prototype/setUTCMonth/not-a-constructor.js | 2 +- .../setUTCSeconds/not-a-constructor.js | 2 +- .../toDateString/not-a-constructor.js | 2 +- .../prototype/toISOString/not-a-constructor.js | 2 +- .../Date/prototype/toJSON/not-a-constructor.js | 2 +- .../toLocaleDateString/not-a-constructor.js | 2 +- .../toLocaleString/not-a-constructor.js | 2 +- .../toLocaleTimeString/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../toTimeString/not-a-constructor.js | 2 +- .../prototype/toUTCString/not-a-constructor.js | 2 +- .../prototype/valueOf/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/cleanupSome/not-a-constructor.js | 2 +- .../prototype/register/not-a-constructor.js | 2 +- .../prototype/unregister/not-a-constructor.js | 2 +- .../prototype/apply/not-a-constructor.js | 4 ++-- .../prototype/bind/not-a-constructor.js | 2 +- .../prototype/call/not-a-constructor.js | 4 ++-- .../prototype/toString/not-a-constructor.js | 4 ++-- .../next/not-a-constructor.js | 2 +- .../return/not-a-constructor.js | 2 +- .../throw/not-a-constructor.js | 2 +- test/built-ins/JSON/parse/not-a-constructor.js | 2 +- .../JSON/stringify/not-a-constructor.js | 2 +- .../Symbol.iterator/not-a-constructor.js | 2 +- .../Map/prototype/clear/not-a-constructor.js | 2 +- .../Map/prototype/delete/not-a-constructor.js | 2 +- .../Map/prototype/entries/not-a-constructor.js | 2 +- .../Map/prototype/forEach/not-a-constructor.js | 2 +- .../Map/prototype/get/not-a-constructor.js | 2 +- .../Map/prototype/has/not-a-constructor.js | 2 +- .../Map/prototype/keys/not-a-constructor.js | 2 +- .../Map/prototype/set/not-a-constructor.js | 2 +- .../Map/prototype/values/not-a-constructor.js | 2 +- test/built-ins/Math/abs/not-a-constructor.js | 2 +- test/built-ins/Math/acos/not-a-constructor.js | 2 +- test/built-ins/Math/acosh/not-a-constructor.js | 2 +- test/built-ins/Math/asin/not-a-constructor.js | 2 +- test/built-ins/Math/asinh/not-a-constructor.js | 2 +- test/built-ins/Math/atan/not-a-constructor.js | 2 +- test/built-ins/Math/atan2/not-a-constructor.js | 2 +- test/built-ins/Math/atanh/not-a-constructor.js | 2 +- test/built-ins/Math/cbrt/not-a-constructor.js | 2 +- test/built-ins/Math/ceil/not-a-constructor.js | 2 +- test/built-ins/Math/clz32/not-a-constructor.js | 2 +- test/built-ins/Math/cos/not-a-constructor.js | 2 +- test/built-ins/Math/cosh/not-a-constructor.js | 2 +- test/built-ins/Math/exp/not-a-constructor.js | 2 +- test/built-ins/Math/expm1/not-a-constructor.js | 2 +- test/built-ins/Math/floor/not-a-constructor.js | 2 +- .../built-ins/Math/fround/not-a-constructor.js | 2 +- test/built-ins/Math/hypot/not-a-constructor.js | 2 +- test/built-ins/Math/imul/not-a-constructor.js | 2 +- test/built-ins/Math/log/not-a-constructor.js | 2 +- test/built-ins/Math/log10/not-a-constructor.js | 2 +- test/built-ins/Math/log1p/not-a-constructor.js | 2 +- test/built-ins/Math/log2/not-a-constructor.js | 2 +- test/built-ins/Math/max/not-a-constructor.js | 2 +- test/built-ins/Math/min/not-a-constructor.js | 2 +- test/built-ins/Math/pow/not-a-constructor.js | 2 +- .../built-ins/Math/random/not-a-constructor.js | 2 +- test/built-ins/Math/round/not-a-constructor.js | 2 +- test/built-ins/Math/sign/not-a-constructor.js | 2 +- test/built-ins/Math/sin/not-a-constructor.js | 2 +- test/built-ins/Math/sinh/not-a-constructor.js | 2 +- test/built-ins/Math/sqrt/not-a-constructor.js | 2 +- test/built-ins/Math/tan/not-a-constructor.js | 2 +- test/built-ins/Math/tanh/not-a-constructor.js | 2 +- test/built-ins/Math/trunc/not-a-constructor.js | 2 +- .../Number/isFinite/not-a-constructor.js | 2 +- .../Number/isInteger/not-a-constructor.js | 2 +- .../Number/isNaN/not-a-constructor.js | 2 +- .../Number/isSafeInteger/not-a-constructor.js | 2 +- .../Number/parseFloat/not-a-constructor.js | 2 +- .../Number/parseInt/not-a-constructor.js | 2 +- .../toExponential/not-a-constructor.js | 2 +- .../prototype/toFixed/not-a-constructor.js | 2 +- .../toLocaleString/not-a-constructor.js | 2 +- .../prototype/toPrecision/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/valueOf/not-a-constructor.js | 2 +- .../Object/assign/not-a-constructor.js | 2 +- .../Object/create/not-a-constructor.js | 2 +- .../defineProperties/not-a-constructor.js | 2 +- .../Object/defineProperty/not-a-constructor.js | 2 +- .../Object/entries/not-a-constructor.js | 2 +- .../Object/freeze/not-a-constructor.js | 2 +- .../Object/fromEntries/not-a-constructor.js | 2 +- .../not-a-constructor.js | 2 +- .../not-a-constructor.js | 2 +- .../getOwnPropertyNames/not-a-constructor.js | 2 +- .../getOwnPropertySymbols/not-a-constructor.js | 2 +- .../Object/getPrototypeOf/not-a-constructor.js | 2 +- .../Object/hasOwn/not-a-constructor.js | 2 +- test/built-ins/Object/is/not-a-constructor.js | 2 +- .../Object/isExtensible/not-a-constructor.js | 2 +- .../Object/isFrozen/not-a-constructor.js | 2 +- .../Object/isSealed/not-a-constructor.js | 2 +- .../built-ins/Object/keys/not-a-constructor.js | 2 +- .../preventExtensions/not-a-constructor.js | 2 +- .../hasOwnProperty/not-a-constructor.js | 2 +- .../isPrototypeOf/not-a-constructor.js | 2 +- .../propertyIsEnumerable/not-a-constructor.js | 2 +- .../toLocaleString/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/valueOf/not-a-constructor.js | 2 +- .../built-ins/Object/seal/not-a-constructor.js | 2 +- .../Object/setPrototypeOf/not-a-constructor.js | 2 +- .../Object/values/not-a-constructor.js | 2 +- .../built-ins/Promise/all/not-a-constructor.js | 2 +- .../Promise/allSettled/not-a-constructor.js | 2 +- .../built-ins/Promise/any/not-a-constructor.js | 2 +- .../create-resolving-functions-reject.js | 2 +- .../create-resolving-functions-resolve.js | 2 +- .../executor-function-not-a-constructor.js | 2 +- .../prototype/catch/not-a-constructor.js | 2 +- .../finally/invokes-then-with-function.js | 4 ++-- .../prototype/finally/not-a-constructor.js | 2 +- .../rejected-observable-then-calls-argument.js | 2 +- .../resolved-observable-then-calls-argument.js | 2 +- .../prototype/then/not-a-constructor.js | 2 +- .../Promise/race/not-a-constructor.js | 2 +- .../Promise/reject/not-a-constructor.js | 2 +- .../Promise/resolve/not-a-constructor.js | 2 +- .../create-target-is-not-a-constructor.js | 2 +- .../Proxy/revocable/not-a-constructor.js | 2 +- .../revocation-function-not-a-constructor.js | 2 +- .../Reflect/apply/not-a-constructor.js | 2 +- .../Reflect/construct/not-a-constructor.js | 2 +- .../defineProperty/not-a-constructor.js | 2 +- .../deleteProperty/not-a-constructor.js | 2 +- .../built-ins/Reflect/get/not-a-constructor.js | 2 +- .../not-a-constructor.js | 2 +- .../getPrototypeOf/not-a-constructor.js | 2 +- .../built-ins/Reflect/has/not-a-constructor.js | 2 +- .../Reflect/isExtensible/not-a-constructor.js | 2 +- .../Reflect/ownKeys/not-a-constructor.js | 2 +- .../preventExtensions/not-a-constructor.js | 2 +- .../built-ins/Reflect/set/not-a-constructor.js | 2 +- .../setPrototypeOf/not-a-constructor.js | 2 +- .../Symbol.match/not-a-constructor.js | 2 +- .../Symbol.matchAll/not-a-constructor.js | 2 +- .../Symbol.replace/not-a-constructor.js | 2 +- .../Symbol.search/not-a-constructor.js | 2 +- .../Symbol.split/not-a-constructor.js | 2 +- .../RegExp/prototype/exec/not-a-constructor.js | 2 +- .../RegExp/prototype/test/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../Symbol.iterator/not-a-constructor.js | 2 +- .../Set/prototype/add/not-a-constructor.js | 2 +- .../Set/prototype/clear/not-a-constructor.js | 2 +- .../Set/prototype/delete/not-a-constructor.js | 2 +- .../prototype/difference/not-a-constructor.js | 4 +--- .../Set/prototype/entries/not-a-constructor.js | 2 +- .../Set/prototype/forEach/not-a-constructor.js | 2 +- .../Set/prototype/has/not-a-constructor.js | 2 +- .../intersection/not-a-constructor.js | 4 +--- .../isDisjointFrom/not-a-constructor.js | 4 +--- .../prototype/isSubsetOf/not-a-constructor.js | 4 +--- .../isSupersetOf/not-a-constructor.js | 4 +--- .../symmetricDifference/not-a-constructor.js | 4 +--- .../Set/prototype/union/not-a-constructor.js | 4 +--- .../Set/prototype/values/not-a-constructor.js | 2 +- .../prototype/evaluate/not-constructor.js | 2 +- .../prototype/slice/not-a-constructor.js | 2 +- .../String/fromCharCode/not-a-constructor.js | 2 +- .../String/fromCodePoint/not-a-constructor.js | 2 +- .../Symbol.iterator/not-a-constructor.js | 2 +- ...x-non-numeric-argument-tointeger-invalid.js | 2 +- .../prototype/at/return-abrupt-from-this.js | 4 ++-- .../prototype/charAt/not-a-constructor.js | 2 +- .../prototype/charCodeAt/not-a-constructor.js | 2 +- .../prototype/codePointAt/not-a-constructor.js | 2 +- .../prototype/concat/not-a-constructor.js | 2 +- .../prototype/endsWith/not-a-constructor.js | 2 +- .../prototype/includes/not-a-constructor.js | 2 +- .../prototype/indexOf/not-a-constructor.js | 2 +- .../isWellFormed/not-a-constructor.js | 2 +- .../isWellFormed/return-abrupt-from-this.js | 4 ++-- .../prototype/lastIndexOf/not-a-constructor.js | 2 +- .../localeCompare/not-a-constructor.js | 2 +- .../prototype/match/not-a-constructor.js | 2 +- .../prototype/matchAll/not-a-constructor.js | 2 +- .../prototype/normalize/not-a-constructor.js | 2 +- .../prototype/padEnd/not-a-constructor.js | 2 +- .../prototype/padStart/not-a-constructor.js | 2 +- .../prototype/repeat/not-a-constructor.js | 2 +- .../prototype/replace/not-a-constructor.js | 2 +- .../prototype/replaceAll/not-a-constructor.js | 2 +- .../prototype/search/not-a-constructor.js | 2 +- .../prototype/slice/not-a-constructor.js | 2 +- .../prototype/split/not-a-constructor.js | 2 +- .../prototype/startsWith/not-a-constructor.js | 2 +- .../prototype/substring/not-a-constructor.js | 2 +- .../toLocaleLowerCase/not-a-constructor.js | 2 +- .../toLocaleUpperCase/not-a-constructor.js | 2 +- .../prototype/toLowerCase/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/toUpperCase/not-a-constructor.js | 2 +- .../toWellFormed/not-a-constructor.js | 2 +- .../toWellFormed/return-abrupt-from-this.js | 4 ++-- .../String/prototype/trim/not-a-constructor.js | 2 +- .../prototype/trimEnd/not-a-constructor.js | 2 +- .../prototype/trimStart/not-a-constructor.js | 2 +- .../prototype/valueOf/not-a-constructor.js | 2 +- test/built-ins/String/raw/not-a-constructor.js | 2 +- test/built-ins/Symbol/for/not-a-constructor.js | 2 +- .../Symbol/keyFor/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/valueOf/not-a-constructor.js | 2 +- .../TypedArray/from/not-a-constructor.js | 2 +- .../TypedArray/of/not-a-constructor.js | 2 +- .../Symbol.iterator/not-a-constructor.js | 2 +- ...x-non-numeric-argument-tointeger-invalid.js | 2 +- .../prototype/at/return-abrupt-from-this.js | 8 ++++---- .../prototype/copyWithin/not-a-constructor.js | 2 +- .../prototype/entries/not-a-constructor.js | 2 +- .../prototype/every/not-a-constructor.js | 2 +- .../prototype/fill/not-a-constructor.js | 2 +- .../prototype/filter/not-a-constructor.js | 2 +- .../prototype/find/not-a-constructor.js | 2 +- .../prototype/findIndex/not-a-constructor.js | 2 +- .../prototype/findLast/not-a-constructor.js | 2 +- .../findLastIndex/not-a-constructor.js | 2 +- .../prototype/forEach/not-a-constructor.js | 2 +- .../prototype/includes/not-a-constructor.js | 2 +- .../prototype/indexOf/not-a-constructor.js | 2 +- .../prototype/join/not-a-constructor.js | 2 +- .../prototype/keys/not-a-constructor.js | 2 +- .../prototype/lastIndexOf/not-a-constructor.js | 2 +- .../prototype/map/not-a-constructor.js | 2 +- .../prototype/reduce/not-a-constructor.js | 2 +- .../prototype/reduceRight/not-a-constructor.js | 2 +- .../prototype/reverse/not-a-constructor.js | 2 +- .../prototype/set/not-a-constructor.js | 2 +- .../prototype/slice/not-a-constructor.js | 2 +- .../prototype/some/not-a-constructor.js | 2 +- .../prototype/sort/not-a-constructor.js | 2 +- .../prototype/subarray/not-a-constructor.js | 2 +- .../toLocaleString/not-a-constructor.js | 2 +- .../prototype/toReversed/not-a-constructor.js | 2 +- .../prototype/toSorted/not-a-constructor.js | 2 +- .../prototype/toString/not-a-constructor.js | 2 +- .../prototype/values/not-a-constructor.js | 2 +- .../Delete/BigInt/indexed-value-ab-strict.js | 8 ++++---- .../key-is-not-canonical-index-strict.js | 2 +- .../BigInt/key-is-not-minus-zero-strict.js | 2 +- .../key-is-not-numeric-index-get-throws.js | 2 +- .../BigInt/key-is-not-numeric-index-strict.js | 2 +- .../BigInt/key-is-out-of-bounds-strict.js | 4 ++-- .../Delete/indexed-value-ab-strict.js | 8 ++++---- .../key-is-not-canonical-index-strict.js | 2 +- .../Delete/key-is-not-minus-zero-strict.js | 2 +- .../key-is-not-numeric-index-get-throws.js | 2 +- .../Delete/key-is-not-numeric-index-strict.js | 2 +- .../Delete/key-is-out-of-bounds-strict.js | 4 ++-- ...upt-from-ordinary-has-parent-hasproperty.js | 2 +- ...upt-from-ordinary-has-parent-hasproperty.js | 2 +- .../key-is-not-numeric-index-set-throws.js | 2 +- .../internals/Set/BigInt/null-tobigint.js | 2 +- .../internals/Set/BigInt/number-tobigint.js | 14 +++++++------- .../Set/BigInt/string-nan-tobigint.js | 2 +- .../internals/Set/BigInt/symbol-tobigint.js | 2 +- .../internals/Set/BigInt/undefined-tobigint.js | 2 +- .../internals/Set/bigint-tonumber.js | 2 +- .../internals/Set/detached-buffer.js | 2 +- .../Set/key-is-not-numeric-index-set-throws.js | 2 +- .../internals/Set/tonumber-value-throws.js | 12 ++++++------ .../prototype/delete/not-a-constructor.js | 2 +- .../WeakMap/prototype/get/not-a-constructor.js | 2 +- .../WeakMap/prototype/has/not-a-constructor.js | 2 +- .../WeakMap/prototype/set/not-a-constructor.js | 2 +- .../prototype/deref/not-a-constructor.js | 2 +- .../WeakSet/prototype/add/not-a-constructor.js | 2 +- .../prototype/delete/not-a-constructor.js | 2 +- .../WeakSet/prototype/has/not-a-constructor.js | 2 +- test/built-ins/decodeURI/not-a-constructor.js | 2 +- .../decodeURIComponent/not-a-constructor.js | 2 +- test/built-ins/encodeURI/not-a-constructor.js | 2 +- .../encodeURIComponent/not-a-constructor.js | 2 +- test/built-ins/eval/not-a-constructor.js | 2 +- test/built-ins/isFinite/not-a-constructor.js | 2 +- test/built-ins/isNaN/not-a-constructor.js | 2 +- test/built-ins/parseFloat/not-a-constructor.js | 2 +- test/built-ins/parseInt/not-a-constructor.js | 2 +- .../constructor-options-collation-invalid.js | 2 +- 491 files changed, 598 insertions(+), 618 deletions(-) diff --git a/test/annexB/built-ins/Date/prototype/getYear/not-a-constructor.js b/test/annexB/built-ins/Date/prototype/getYear/not-a-constructor.js index ad186adb8ac..18d998ddfaa 100644 --- a/test/annexB/built-ins/Date/prototype/getYear/not-a-constructor.js +++ b/test/annexB/built-ins/Date/prototype/getYear/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getYear(); -}, '`let date = new Date(Date.now()); new date.getYear()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/Date/prototype/setYear/not-a-constructor.js b/test/annexB/built-ins/Date/prototype/setYear/not-a-constructor.js index c851e7d3c73..8d50ab71ed4 100644 --- a/test/annexB/built-ins/Date/prototype/setYear/not-a-constructor.js +++ b/test/annexB/built-ins/Date/prototype/setYear/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setYear(); -}, '`let date = new Date(Date.now()); new date.setYear()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/Date/prototype/toGMTString/not-a-constructor.js b/test/annexB/built-ins/Date/prototype/toGMTString/not-a-constructor.js index 47a08c8e916..d895a19d8f6 100644 --- a/test/annexB/built-ins/Date/prototype/toGMTString/not-a-constructor.js +++ b/test/annexB/built-ins/Date/prototype/toGMTString/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toGMTString(); -}, '`let date = new Date(Date.now()); new date.toGMTString()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/RegExp/prototype/compile/this-cross-realm-instance.js b/test/annexB/built-ins/RegExp/prototype/compile/this-cross-realm-instance.js index c8a1f789ed0..f87d1801f3b 100644 --- a/test/annexB/built-ins/RegExp/prototype/compile/this-cross-realm-instance.js +++ b/test/annexB/built-ins/RegExp/prototype/compile/this-cross-realm-instance.js @@ -15,9 +15,7 @@ assert.throws( TypeError, function () { RegExp.prototype.compile.call(otherRealm_regexp); - }, - "`RegExp.prototype.compile.call(otherRealm_regexp)` throws TypeError" -); + }); assert.throws( other.TypeError, diff --git a/test/annexB/built-ins/RegExp/prototype/compile/this-subclass-instance.js b/test/annexB/built-ins/RegExp/prototype/compile/this-subclass-instance.js index ea44faa4b10..fc9543c0aa7 100644 --- a/test/annexB/built-ins/RegExp/prototype/compile/this-subclass-instance.js +++ b/test/annexB/built-ins/RegExp/prototype/compile/this-subclass-instance.js @@ -12,14 +12,10 @@ assert.throws( TypeError, function () { subclass_regexp.compile(); - }, - "`subclass_regexp.compile()` throws TypeError" -); + }); assert.throws( TypeError, function () { RegExp.prototype.compile.call(subclass_regexp); - }, - "`RegExp.prototype.compile.call(subclass_regexp)` throws TypeError" -); + }); diff --git a/test/annexB/built-ins/String/prototype/anchor/not-a-constructor.js b/test/annexB/built-ins/String/prototype/anchor/not-a-constructor.js index cdc1dd9ecfc..5e785c27618 100644 --- a/test/annexB/built-ins/String/prototype/anchor/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/anchor/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.anchor(); -}, '`new String.prototype.anchor()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/big/not-a-constructor.js b/test/annexB/built-ins/String/prototype/big/not-a-constructor.js index 9cfd4f22dd8..b86bae1176f 100644 --- a/test/annexB/built-ins/String/prototype/big/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/big/not-a-constructor.js @@ -24,5 +24,5 @@ assert.sameValue(isConstructor(String.prototype.big), false, 'isConstructor(Stri assert.throws(TypeError, () => { new String.prototype.big(); -}, '`new String.prototype.big()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/blink/not-a-constructor.js b/test/annexB/built-ins/String/prototype/blink/not-a-constructor.js index 63ab9eb57bd..57a256d9ba5 100644 --- a/test/annexB/built-ins/String/prototype/blink/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/blink/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.blink(); -}, '`new String.prototype.blink()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/bold/not-a-constructor.js b/test/annexB/built-ins/String/prototype/bold/not-a-constructor.js index 416ea28d9d7..9b4787ee623 100644 --- a/test/annexB/built-ins/String/prototype/bold/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/bold/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.bold(); -}, '`new String.prototype.bold()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/fixed/not-a-constructor.js b/test/annexB/built-ins/String/prototype/fixed/not-a-constructor.js index 8d08d28a1da..763d09ee2c4 100644 --- a/test/annexB/built-ins/String/prototype/fixed/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/fixed/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.fixed(); -}, '`new String.prototype.fixed()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/fontcolor/not-a-constructor.js b/test/annexB/built-ins/String/prototype/fontcolor/not-a-constructor.js index 2805576cf53..b96b61287f4 100644 --- a/test/annexB/built-ins/String/prototype/fontcolor/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/fontcolor/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.fontcolor(); -}, '`new String.prototype.fontcolor()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/fontsize/not-a-constructor.js b/test/annexB/built-ins/String/prototype/fontsize/not-a-constructor.js index 08a7cc679d0..618ce3b65c9 100644 --- a/test/annexB/built-ins/String/prototype/fontsize/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/fontsize/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.fontsize(); -}, '`new String.prototype.fontsize()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/italics/not-a-constructor.js b/test/annexB/built-ins/String/prototype/italics/not-a-constructor.js index 226dfa44f7f..928dc0259e8 100644 --- a/test/annexB/built-ins/String/prototype/italics/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/italics/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.italics(); -}, '`new String.prototype.italics()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/link/not-a-constructor.js b/test/annexB/built-ins/String/prototype/link/not-a-constructor.js index 652420dd97c..002f607e267 100644 --- a/test/annexB/built-ins/String/prototype/link/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/link/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.link(); -}, '`new String.prototype.link()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/small/not-a-constructor.js b/test/annexB/built-ins/String/prototype/small/not-a-constructor.js index ef6ed245a5a..a69d2d5140c 100644 --- a/test/annexB/built-ins/String/prototype/small/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/small/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.small(); -}, '`new String.prototype.small()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/strike/not-a-constructor.js b/test/annexB/built-ins/String/prototype/strike/not-a-constructor.js index 703f7a6370e..2a24ad86547 100644 --- a/test/annexB/built-ins/String/prototype/strike/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/strike/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.strike(); -}, '`new String.prototype.strike()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/sub/not-a-constructor.js b/test/annexB/built-ins/String/prototype/sub/not-a-constructor.js index 9e61e069964..92cd7a05bf0 100644 --- a/test/annexB/built-ins/String/prototype/sub/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/sub/not-a-constructor.js @@ -24,5 +24,5 @@ assert.sameValue(isConstructor(String.prototype.sub), false, 'isConstructor(Stri assert.throws(TypeError, () => { new String.prototype.sub(); -}, '`new String.prototype.sub()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/substr/not-a-constructor.js b/test/annexB/built-ins/String/prototype/substr/not-a-constructor.js index 55ecf404656..f29112c117a 100644 --- a/test/annexB/built-ins/String/prototype/substr/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/substr/not-a-constructor.js @@ -28,5 +28,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.substr(); -}, '`new String.prototype.substr()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/String/prototype/sup/not-a-constructor.js b/test/annexB/built-ins/String/prototype/sup/not-a-constructor.js index 5a2faa965d9..df876a4b434 100644 --- a/test/annexB/built-ins/String/prototype/sup/not-a-constructor.js +++ b/test/annexB/built-ins/String/prototype/sup/not-a-constructor.js @@ -24,5 +24,5 @@ assert.sameValue(isConstructor(String.prototype.sup), false, 'isConstructor(Stri assert.throws(TypeError, () => { new String.prototype.sup(); -}, '`new String.prototype.sup()` throws TypeError'); +}); diff --git a/test/annexB/built-ins/escape/not-a-constructor.js b/test/annexB/built-ins/escape/not-a-constructor.js index 3389cc0191f..a787c9c20ae 100644 --- a/test/annexB/built-ins/escape/not-a-constructor.js +++ b/test/annexB/built-ins/escape/not-a-constructor.js @@ -24,5 +24,5 @@ assert.sameValue(isConstructor(escape), false, 'isConstructor(escape) must retur assert.throws(TypeError, () => { new escape(''); -}, '`new escape(\'\')` throws TypeError'); +}); diff --git a/test/annexB/built-ins/unescape/not-a-constructor.js b/test/annexB/built-ins/unescape/not-a-constructor.js index fb9070aaaa7..e5117bc3837 100644 --- a/test/annexB/built-ins/unescape/not-a-constructor.js +++ b/test/annexB/built-ins/unescape/not-a-constructor.js @@ -24,5 +24,5 @@ assert.sameValue(isConstructor(unescape), false, 'isConstructor(unescape) must r assert.throws(TypeError, () => { new unescape(''); -}, '`new unescape(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/Symbol.iterator/not-a-constructor.js b/test/built-ins/Array/prototype/Symbol.iterator/not-a-constructor.js index 50cce608213..6a2ea379380 100644 --- a/test/built-ins/Array/prototype/Symbol.iterator/not-a-constructor.js +++ b/test/built-ins/Array/prototype/Symbol.iterator/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype[Symbol.iterator](); -}, '`new Array.prototype[Symbol.iterator]()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/copyWithin/not-a-constructor.js b/test/built-ins/Array/prototype/copyWithin/not-a-constructor.js index d781d70db70..f15909ae88c 100644 --- a/test/built-ins/Array/prototype/copyWithin/not-a-constructor.js +++ b/test/built-ins/Array/prototype/copyWithin/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.copyWithin(); -}, '`new Array.prototype.copyWithin()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/entries/not-a-constructor.js b/test/built-ins/Array/prototype/entries/not-a-constructor.js index abdc387e345..28baea195e9 100644 --- a/test/built-ins/Array/prototype/entries/not-a-constructor.js +++ b/test/built-ins/Array/prototype/entries/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.entries(); -}, '`new Array.prototype.entries()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/every/not-a-constructor.js b/test/built-ins/Array/prototype/every/not-a-constructor.js index 87d6ee5d07f..32f4141c27b 100644 --- a/test/built-ins/Array/prototype/every/not-a-constructor.js +++ b/test/built-ins/Array/prototype/every/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.every(() => {}); -}, '`new Array.prototype.every(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/fill/not-a-constructor.js b/test/built-ins/Array/prototype/fill/not-a-constructor.js index 83b5c2ed7e8..603e5082dc8 100644 --- a/test/built-ins/Array/prototype/fill/not-a-constructor.js +++ b/test/built-ins/Array/prototype/fill/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.fill), false, 'isConstructor(Arra assert.throws(TypeError, () => { new Array.prototype.fill(); -}, '`new Array.prototype.fill()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/filter/not-a-constructor.js b/test/built-ins/Array/prototype/filter/not-a-constructor.js index 55e3b3b1aec..ebbddeacf38 100644 --- a/test/built-ins/Array/prototype/filter/not-a-constructor.js +++ b/test/built-ins/Array/prototype/filter/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.filter(() => {}); -}, '`new Array.prototype.filter(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/find/not-a-constructor.js b/test/built-ins/Array/prototype/find/not-a-constructor.js index 13f3020a0a2..05fea5479b4 100644 --- a/test/built-ins/Array/prototype/find/not-a-constructor.js +++ b/test/built-ins/Array/prototype/find/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.find), false, 'isConstructor(Arra assert.throws(TypeError, () => { new Array.prototype.find(() => {}); -}, '`new Array.prototype.find(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/findIndex/not-a-constructor.js b/test/built-ins/Array/prototype/findIndex/not-a-constructor.js index a8b945dbeef..f5ebe2bc454 100644 --- a/test/built-ins/Array/prototype/findIndex/not-a-constructor.js +++ b/test/built-ins/Array/prototype/findIndex/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.findIndex(() => {}); -}, '`new Array.prototype.findIndex(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/findLast/not-a-constructor.js b/test/built-ins/Array/prototype/findLast/not-a-constructor.js index ce8938f9526..90ccc48372c 100644 --- a/test/built-ins/Array/prototype/findLast/not-a-constructor.js +++ b/test/built-ins/Array/prototype/findLast/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.findLast), false, 'isConstructor( assert.throws(TypeError, () => { new Array.prototype.findLast(() => {}); -}, '`new Array.prototype.findLast(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/findLastIndex/not-a-constructor.js b/test/built-ins/Array/prototype/findLastIndex/not-a-constructor.js index 8420624fdd4..2c990388bc4 100644 --- a/test/built-ins/Array/prototype/findLastIndex/not-a-constructor.js +++ b/test/built-ins/Array/prototype/findLastIndex/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.findLastIndex(() => {}); -}, '`new Array.prototype.findLastIndex(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/flat/not-a-constructor.js b/test/built-ins/Array/prototype/flat/not-a-constructor.js index 4ac281a444e..7772e16a1fb 100644 --- a/test/built-ins/Array/prototype/flat/not-a-constructor.js +++ b/test/built-ins/Array/prototype/flat/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.flat), false, 'isConstructor(Arra assert.throws(TypeError, () => { new Array.prototype.flat(); -}, '`new Array.prototype.flat()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/flatMap/not-a-constructor.js b/test/built-ins/Array/prototype/flatMap/not-a-constructor.js index 9ad50a0e2a2..1b8e8860315 100644 --- a/test/built-ins/Array/prototype/flatMap/not-a-constructor.js +++ b/test/built-ins/Array/prototype/flatMap/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.flatMap(() => {}); -}, '`new Array.prototype.flatMap(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/forEach/not-a-constructor.js b/test/built-ins/Array/prototype/forEach/not-a-constructor.js index 9721d78bb7d..48ae8b16ad4 100644 --- a/test/built-ins/Array/prototype/forEach/not-a-constructor.js +++ b/test/built-ins/Array/prototype/forEach/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.forEach(() => {}); -}, '`new Array.prototype.forEach(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/includes/not-a-constructor.js b/test/built-ins/Array/prototype/includes/not-a-constructor.js index 81aca092d0b..bd1bef81435 100644 --- a/test/built-ins/Array/prototype/includes/not-a-constructor.js +++ b/test/built-ins/Array/prototype/includes/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.includes(1); -}, '`new Array.prototype.includes(1)` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/indexOf/not-a-constructor.js b/test/built-ins/Array/prototype/indexOf/not-a-constructor.js index ce1a8d019d6..22b69a8a7eb 100644 --- a/test/built-ins/Array/prototype/indexOf/not-a-constructor.js +++ b/test/built-ins/Array/prototype/indexOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.indexOf(); -}, '`new Array.prototype.indexOf()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/join/not-a-constructor.js b/test/built-ins/Array/prototype/join/not-a-constructor.js index 33b3a4d5c25..2e35936bb0a 100644 --- a/test/built-ins/Array/prototype/join/not-a-constructor.js +++ b/test/built-ins/Array/prototype/join/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.join), false, 'isConstructor(Arra assert.throws(TypeError, () => { new Array.prototype.join(); -}, '`new Array.prototype.join()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/keys/not-a-constructor.js b/test/built-ins/Array/prototype/keys/not-a-constructor.js index 6b8544765fc..1eed3f7d602 100644 --- a/test/built-ins/Array/prototype/keys/not-a-constructor.js +++ b/test/built-ins/Array/prototype/keys/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.keys), false, 'isConstructor(Arra assert.throws(TypeError, () => { new Array.prototype.keys(); -}, '`new Array.prototype.keys()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/lastIndexOf/not-a-constructor.js b/test/built-ins/Array/prototype/lastIndexOf/not-a-constructor.js index dc755f9eb07..083dcbfa915 100644 --- a/test/built-ins/Array/prototype/lastIndexOf/not-a-constructor.js +++ b/test/built-ins/Array/prototype/lastIndexOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.lastIndexOf(); -}, '`new Array.prototype.lastIndexOf()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/map/not-a-constructor.js b/test/built-ins/Array/prototype/map/not-a-constructor.js index d521b097091..a858c3f1f91 100644 --- a/test/built-ins/Array/prototype/map/not-a-constructor.js +++ b/test/built-ins/Array/prototype/map/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.map), false, 'isConstructor(Array assert.throws(TypeError, () => { new Array.prototype.map(() => {}); -}, '`new Array.prototype.map(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/pop/not-a-constructor.js b/test/built-ins/Array/prototype/pop/not-a-constructor.js index dcaccf6280b..751b7335d48 100644 --- a/test/built-ins/Array/prototype/pop/not-a-constructor.js +++ b/test/built-ins/Array/prototype/pop/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.pop), false, 'isConstructor(Array assert.throws(TypeError, () => { new Array.prototype.pop(); -}, '`new Array.prototype.pop()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/push/not-a-constructor.js b/test/built-ins/Array/prototype/push/not-a-constructor.js index e79b2436729..29cfac23c97 100644 --- a/test/built-ins/Array/prototype/push/not-a-constructor.js +++ b/test/built-ins/Array/prototype/push/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.push), false, 'isConstructor(Arra assert.throws(TypeError, () => { new Array.prototype.push(); -}, '`new Array.prototype.push()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/reduce/not-a-constructor.js b/test/built-ins/Array/prototype/reduce/not-a-constructor.js index 1f425cf1f27..9a674771424 100644 --- a/test/built-ins/Array/prototype/reduce/not-a-constructor.js +++ b/test/built-ins/Array/prototype/reduce/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.reduce(() => {}, []); -}, '`new Array.prototype.reduce(() => {}, [])` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/reduceRight/not-a-constructor.js b/test/built-ins/Array/prototype/reduceRight/not-a-constructor.js index 2d08d721a38..cd28d43aefc 100644 --- a/test/built-ins/Array/prototype/reduceRight/not-a-constructor.js +++ b/test/built-ins/Array/prototype/reduceRight/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.reduceRight(() => {}, []); -}, '`new Array.prototype.reduceRight(() => {}, [])` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/reverse/not-a-constructor.js b/test/built-ins/Array/prototype/reverse/not-a-constructor.js index 7d48bc1588d..3178d935885 100644 --- a/test/built-ins/Array/prototype/reverse/not-a-constructor.js +++ b/test/built-ins/Array/prototype/reverse/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.reverse(); -}, '`new Array.prototype.reverse()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/shift/not-a-constructor.js b/test/built-ins/Array/prototype/shift/not-a-constructor.js index 5157f52dcf6..248d19751f0 100644 --- a/test/built-ins/Array/prototype/shift/not-a-constructor.js +++ b/test/built-ins/Array/prototype/shift/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.shift(); -}, '`new Array.prototype.shift()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/slice/not-a-constructor.js b/test/built-ins/Array/prototype/slice/not-a-constructor.js index dbd79446dff..193e9481bef 100644 --- a/test/built-ins/Array/prototype/slice/not-a-constructor.js +++ b/test/built-ins/Array/prototype/slice/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.slice(); -}, '`new Array.prototype.slice()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/some/not-a-constructor.js b/test/built-ins/Array/prototype/some/not-a-constructor.js index a06b0236243..ca58ca6f8f8 100644 --- a/test/built-ins/Array/prototype/some/not-a-constructor.js +++ b/test/built-ins/Array/prototype/some/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.some), false, 'isConstructor(Arra assert.throws(TypeError, () => { new Array.prototype.some(() => {}); -}, '`new Array.prototype.some(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/sort/not-a-constructor.js b/test/built-ins/Array/prototype/sort/not-a-constructor.js index 6d2ae6d896d..1b33631ca9f 100644 --- a/test/built-ins/Array/prototype/sort/not-a-constructor.js +++ b/test/built-ins/Array/prototype/sort/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Array.prototype.sort), false, 'isConstructor(Arra assert.throws(TypeError, () => { new Array.prototype.sort(); -}, '`new Array.prototype.sort()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/splice/not-a-constructor.js b/test/built-ins/Array/prototype/splice/not-a-constructor.js index 4a4ddad1542..3ba0f21523c 100644 --- a/test/built-ins/Array/prototype/splice/not-a-constructor.js +++ b/test/built-ins/Array/prototype/splice/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.splice(); -}, '`new Array.prototype.splice()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/toLocaleString/not-a-constructor.js b/test/built-ins/Array/prototype/toLocaleString/not-a-constructor.js index 740ad5cfd59..002d1c4f207 100644 --- a/test/built-ins/Array/prototype/toLocaleString/not-a-constructor.js +++ b/test/built-ins/Array/prototype/toLocaleString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.toLocaleString(); -}, '`new Array.prototype.toLocaleString()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/toReversed/not-a-constructor.js b/test/built-ins/Array/prototype/toReversed/not-a-constructor.js index 6cfabfe6ff0..c4a4d549bac 100644 --- a/test/built-ins/Array/prototype/toReversed/not-a-constructor.js +++ b/test/built-ins/Array/prototype/toReversed/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.toReversed(); -}, '`new Array.prototype.toReversed()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/toReversed/this-value-nullish.js b/test/built-ins/Array/prototype/toReversed/this-value-nullish.js index b81e99f5921..d83e918d6a2 100644 --- a/test/built-ins/Array/prototype/toReversed/this-value-nullish.js +++ b/test/built-ins/Array/prototype/toReversed/this-value-nullish.js @@ -15,8 +15,8 @@ features: [change-array-by-copy] assert.throws(TypeError, () => { Array.prototype.toReversed.call(null); -}, '`Array.prototype.toReversed.call(null)` throws TypeError'); +}); assert.throws(TypeError, () => { Array.prototype.toReversed.call(undefined); -}, '`Array.prototype.toReversed.call(undefined)` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/toSorted/not-a-constructor.js b/test/built-ins/Array/prototype/toSorted/not-a-constructor.js index 8865d181663..9d5ae4f15f1 100644 --- a/test/built-ins/Array/prototype/toSorted/not-a-constructor.js +++ b/test/built-ins/Array/prototype/toSorted/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.toSorted(); -}, '`new Array.prototype.toSorted()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/toSorted/this-value-nullish.js b/test/built-ins/Array/prototype/toSorted/this-value-nullish.js index 6be9d4cb4f2..58eedbb58a6 100644 --- a/test/built-ins/Array/prototype/toSorted/this-value-nullish.js +++ b/test/built-ins/Array/prototype/toSorted/this-value-nullish.js @@ -15,8 +15,8 @@ features: [change-array-by-copy] assert.throws(TypeError, () => { Array.prototype.toSorted.call(null); -}, '`Array.prototype.toSorted.call(null)` throws TypeError'); +}); assert.throws(TypeError, () => { Array.prototype.toSorted.call(undefined); -}, '`Array.prototype.toSorted.call(undefined)` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/toSpliced/not-a-constructor.js b/test/built-ins/Array/prototype/toSpliced/not-a-constructor.js index b702fa27e39..5a439a5315b 100644 --- a/test/built-ins/Array/prototype/toSpliced/not-a-constructor.js +++ b/test/built-ins/Array/prototype/toSpliced/not-a-constructor.js @@ -29,4 +29,4 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.toSpliced(); -}, '`new Array.prototype.toSpliced()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/toString/not-a-constructor.js b/test/built-ins/Array/prototype/toString/not-a-constructor.js index bf6ba19ca93..dfbe97e457b 100644 --- a/test/built-ins/Array/prototype/toString/not-a-constructor.js +++ b/test/built-ins/Array/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.toString(); -}, '`new Array.prototype.toString()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/unshift/not-a-constructor.js b/test/built-ins/Array/prototype/unshift/not-a-constructor.js index a8b21f81043..3b24c018eb7 100644 --- a/test/built-ins/Array/prototype/unshift/not-a-constructor.js +++ b/test/built-ins/Array/prototype/unshift/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.unshift(); -}, '`new Array.prototype.unshift()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/values/not-a-constructor.js b/test/built-ins/Array/prototype/values/not-a-constructor.js index 35bf45aa8c3..8cb20e1b868 100644 --- a/test/built-ins/Array/prototype/values/not-a-constructor.js +++ b/test/built-ins/Array/prototype/values/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.values(); -}, '`new Array.prototype.values()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/with/not-a-constructor.js b/test/built-ins/Array/prototype/with/not-a-constructor.js index 5c8d8ab652e..275c35122ab 100644 --- a/test/built-ins/Array/prototype/with/not-a-constructor.js +++ b/test/built-ins/Array/prototype/with/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Array.prototype.with(); -}, '`new Array.prototype.with()` throws TypeError'); +}); diff --git a/test/built-ins/Array/prototype/with/this-value-nullish.js b/test/built-ins/Array/prototype/with/this-value-nullish.js index d71deb31e62..dbdb09df294 100644 --- a/test/built-ins/Array/prototype/with/this-value-nullish.js +++ b/test/built-ins/Array/prototype/with/this-value-nullish.js @@ -15,8 +15,8 @@ features: [change-array-by-copy] assert.throws(TypeError, () => { Array.prototype.with.call(null, 0, 0); -}, '`Array.prototype.with.call(null, 0, 0)` throws TypeError'); +}); assert.throws(TypeError, () => { Array.prototype.with.call(undefined, 0, 0); -}, '`Array.prototype.with.call(undefined, 0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/ArrayBuffer/isView/not-a-constructor.js b/test/built-ins/ArrayBuffer/isView/not-a-constructor.js index 9d65b9f0d99..1c2405287e1 100644 --- a/test/built-ins/ArrayBuffer/isView/not-a-constructor.js +++ b/test/built-ins/ArrayBuffer/isView/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(ArrayBuffer.isView), false, 'isConstructor(ArrayB assert.throws(TypeError, () => { new ArrayBuffer.isView(); -}, '`new ArrayBuffer.isView()` throws TypeError'); +}); diff --git a/test/built-ins/ArrayBuffer/prototype/slice/not-a-constructor.js b/test/built-ins/ArrayBuffer/prototype/slice/not-a-constructor.js index 9ea8c41161b..a3eb5d34ef5 100644 --- a/test/built-ins/ArrayBuffer/prototype/slice/not-a-constructor.js +++ b/test/built-ins/ArrayBuffer/prototype/slice/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let ab = new ArrayBuffer(); new ab.slice(); -}, '`let ab = new ArrayBuffer(); new ab.slice()` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/add/bad-range.js b/test/built-ins/Atomics/add/bad-range.js index d5ad1d732c3..e01d96c7914 100644 --- a/test/built-ins/Atomics/add/bad-range.js +++ b/test/built-ins/Atomics/add/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.add(view, IdxGen(view), 10); - }, '`Atomics.add(view, IdxGen(view), 10)` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/add/bigint/bad-range.js b/test/built-ins/Atomics/add/bigint/bad-range.js index 979c3f3ef33..172fb9f50a6 100644 --- a/test/built-ins/Atomics/add/bigint/bad-range.js +++ b/test/built-ins/Atomics/add/bigint/bad-range.js @@ -15,6 +15,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.add(view, IdxGen(view), 10n); - }, '`Atomics.add(view, IdxGen(view), 10n)` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/add/non-views.js b/test/built-ins/Atomics/add/non-views.js index cf00d62db73..6921494c2b8 100644 --- a/test/built-ins/Atomics/add/non-views.js +++ b/test/built-ins/Atomics/add/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.add(view, 0, 0); - }, '`Atomics.add(view, 0, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/add/not-a-constructor.js b/test/built-ins/Atomics/add/not-a-constructor.js index 7e298c3dac5..9acacd772d1 100644 --- a/test/built-ins/Atomics/add/not-a-constructor.js +++ b/test/built-ins/Atomics/add/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.add), false, 'isConstructor(Atomics.add) assert.throws(TypeError, () => { new Atomics.add(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.add(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/and/bad-range.js b/test/built-ins/Atomics/and/bad-range.js index bf41aa26d88..811e3941727 100644 --- a/test/built-ins/Atomics/and/bad-range.js +++ b/test/built-ins/Atomics/and/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.and(view, IdxGen(view), 10); - }, '`Atomics.and(view, IdxGen(view), 10)` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/and/bigint/bad-range.js b/test/built-ins/Atomics/and/bigint/bad-range.js index fc1f190fbf3..e1876ee7b9a 100644 --- a/test/built-ins/Atomics/and/bigint/bad-range.js +++ b/test/built-ins/Atomics/and/bigint/bad-range.js @@ -15,6 +15,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.and(view, IdxGen(view), 10n); - }, '`Atomics.and(view, IdxGen(view), 10n)` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/and/non-views.js b/test/built-ins/Atomics/and/non-views.js index 5915720cdce..237d44695bc 100644 --- a/test/built-ins/Atomics/and/non-views.js +++ b/test/built-ins/Atomics/and/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.and(view, 0, 0); - }, '`Atomics.and(view, 0, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/and/not-a-constructor.js b/test/built-ins/Atomics/and/not-a-constructor.js index 2d4a87482b9..cee2c1427bb 100644 --- a/test/built-ins/Atomics/and/not-a-constructor.js +++ b/test/built-ins/Atomics/and/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.and), false, 'isConstructor(Atomics.and) assert.throws(TypeError, () => { new Atomics.and(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.and(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/compareExchange/bad-range.js b/test/built-ins/Atomics/compareExchange/bad-range.js index 04fc7bda26a..7fbd13a384e 100644 --- a/test/built-ins/Atomics/compareExchange/bad-range.js +++ b/test/built-ins/Atomics/compareExchange/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.compareExchange(view, IdxGen(view), 10, 0); - }, '`Atomics.compareExchange(view, IdxGen(view), 10, 0)` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/compareExchange/bigint/bad-range.js b/test/built-ins/Atomics/compareExchange/bigint/bad-range.js index 444c7e62b13..1f7ec929ff9 100644 --- a/test/built-ins/Atomics/compareExchange/bigint/bad-range.js +++ b/test/built-ins/Atomics/compareExchange/bigint/bad-range.js @@ -15,6 +15,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.compareExchange(view, IdxGen(view), 10, 0n); - }, '`Atomics.compareExchange(view, IdxGen(view), 10, 0n)` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/compareExchange/non-views.js b/test/built-ins/Atomics/compareExchange/non-views.js index b4a09d43aa8..a11e5e83d71 100644 --- a/test/built-ins/Atomics/compareExchange/non-views.js +++ b/test/built-ins/Atomics/compareExchange/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.compareExchange(view, 0, 0, 0); - }, '`Atomics.compareExchange(view, 0, 0, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/compareExchange/not-a-constructor.js b/test/built-ins/Atomics/compareExchange/not-a-constructor.js index ca44ab3936f..b2d33556e5d 100644 --- a/test/built-ins/Atomics/compareExchange/not-a-constructor.js +++ b/test/built-ins/Atomics/compareExchange/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Atomics.compareExchange(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.compareExchange(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/exchange/bad-range.js b/test/built-ins/Atomics/exchange/bad-range.js index 0c5294e99a5..a7f47b0bf25 100644 --- a/test/built-ins/Atomics/exchange/bad-range.js +++ b/test/built-ins/Atomics/exchange/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.exchange(view, IdxGen(view), 10, 0); - }, '`Atomics.exchange(view, IdxGen(view), 10, 0)` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/exchange/bigint/bad-range.js b/test/built-ins/Atomics/exchange/bigint/bad-range.js index 9fccbadf8be..8fbf0985493 100644 --- a/test/built-ins/Atomics/exchange/bigint/bad-range.js +++ b/test/built-ins/Atomics/exchange/bigint/bad-range.js @@ -15,6 +15,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.exchange(view, IdxGen(view), 10n, 0n); - }, '`Atomics.exchange(view, IdxGen(view), 10n, 0n)` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/exchange/non-views.js b/test/built-ins/Atomics/exchange/non-views.js index 4c8cdc7275f..b1bbdbdb9be 100644 --- a/test/built-ins/Atomics/exchange/non-views.js +++ b/test/built-ins/Atomics/exchange/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.exchange(view, 0, 0); - }, '`Atomics.exchange(view, 0, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/exchange/not-a-constructor.js b/test/built-ins/Atomics/exchange/not-a-constructor.js index bc8e7ec0269..bce1b8a066e 100644 --- a/test/built-ins/Atomics/exchange/not-a-constructor.js +++ b/test/built-ins/Atomics/exchange/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.exchange), false, 'isConstructor(Atomics. assert.throws(TypeError, () => { new Atomics.exchange(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.exchange(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/isLockFree/not-a-constructor.js b/test/built-ins/Atomics/isLockFree/not-a-constructor.js index 41c832baf83..0fa83756c6c 100644 --- a/test/built-ins/Atomics/isLockFree/not-a-constructor.js +++ b/test/built-ins/Atomics/isLockFree/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.isLockFree), false, 'isConstructor(Atomic assert.throws(TypeError, () => { new Atomics.isLockFree(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.isLockFree(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/load/bad-range.js b/test/built-ins/Atomics/load/bad-range.js index 77e47f95ca8..3a3fecbf7a4 100644 --- a/test/built-ins/Atomics/load/bad-range.js +++ b/test/built-ins/Atomics/load/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.load(view, IdxGen(view)); - }, '`Atomics.load(view, IdxGen(view))` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/load/bigint/bad-range.js b/test/built-ins/Atomics/load/bigint/bad-range.js index 9fa24122afc..beec25b810e 100644 --- a/test/built-ins/Atomics/load/bigint/bad-range.js +++ b/test/built-ins/Atomics/load/bigint/bad-range.js @@ -16,6 +16,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.load(view, IdxGen(view)); - }, '`Atomics.load(view, IdxGen(view))` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/load/non-views.js b/test/built-ins/Atomics/load/non-views.js index 98921fc7c99..0809014e42c 100644 --- a/test/built-ins/Atomics/load/non-views.js +++ b/test/built-ins/Atomics/load/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.load(view, 0); - }, '`Atomics.load(view, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/load/not-a-constructor.js b/test/built-ins/Atomics/load/not-a-constructor.js index 5f4b3235af7..fde9d9b33ff 100644 --- a/test/built-ins/Atomics/load/not-a-constructor.js +++ b/test/built-ins/Atomics/load/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.load), false, 'isConstructor(Atomics.load assert.throws(TypeError, () => { new Atomics.load(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.load(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/bad-range.js b/test/built-ins/Atomics/notify/bad-range.js index bafa2b247e8..5ec4e3a2dd5 100644 --- a/test/built-ins/Atomics/notify/bad-range.js +++ b/test/built-ins/Atomics/notify/bad-range.js @@ -22,5 +22,5 @@ const i32a = new Int32Array( testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.notify(i32a, IdxGen(i32a), 0); - }, '`Atomics.notify(i32a, IdxGen(i32a), 0)` throws RangeError'); + }); }); diff --git a/test/built-ins/Atomics/notify/bigint/bad-range.js b/test/built-ins/Atomics/notify/bigint/bad-range.js index fbab7c02a7a..2b949696b7e 100644 --- a/test/built-ins/Atomics/notify/bigint/bad-range.js +++ b/test/built-ins/Atomics/notify/bigint/bad-range.js @@ -22,5 +22,5 @@ const i64a = new BigInt64Array( testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.notify(i64a, IdxGen(i64a), 0); - }, '`Atomics.notify(i64a, IdxGen(i64a), 0)` throws RangeError'); + }); }); diff --git a/test/built-ins/Atomics/notify/bigint/non-bigint64-typedarray-throws.js b/test/built-ins/Atomics/notify/bigint/non-bigint64-typedarray-throws.js index 78dfbdd67bf..c7dca0a84ee 100644 --- a/test/built-ins/Atomics/notify/bigint/non-bigint64-typedarray-throws.js +++ b/test/built-ins/Atomics/notify/bigint/non-bigint64-typedarray-throws.js @@ -27,8 +27,8 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wait(i64a, 0, 0); -}, '`Atomics.wait(i64a, 0, 0)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(i64a, poisoned, poisoned); -}, '`Atomics.wait(i64a, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-count-evaluation-throws.js b/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-count-evaluation-throws.js index 806ac14c1e2..3b01a0ec259 100644 --- a/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-count-evaluation-throws.js +++ b/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-count-evaluation-throws.js @@ -30,4 +30,4 @@ const poisoned = { assert.throws(Test262Error, function() { Atomics.notify(i64a, poisoned, 0); -}, '`Atomics.notify(i64a, poisoned, 0)` throws Test262Error'); +}); diff --git a/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-index-evaluation-throws.js b/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-index-evaluation-throws.js index 8eec8255143..5dc64a16ab1 100644 --- a/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-index-evaluation-throws.js +++ b/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-index-evaluation-throws.js @@ -27,6 +27,6 @@ const poisoned = { assert.throws(Test262Error, function() { Atomics.notify(i64a, 0, poisoned); -}, '`Atomics.notify(i64a, 0, poisoned)` throws Test262Error'); +}); diff --git a/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-non-shared-int-views-throws.js b/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-non-shared-int-views-throws.js index 0e882dbcaa8..7737d8148be 100644 --- a/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-non-shared-int-views-throws.js +++ b/test/built-ins/Atomics/notify/bigint/non-shared-bufferdata-non-shared-int-views-throws.js @@ -18,4 +18,4 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.notify(new BigUint64Array(nonsab), poisoned, poisoned); -}, '`Atomics.notify(new BigUint64Array(nonsab), poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/bigint/null-bufferdata-throws.js b/test/built-ins/Atomics/notify/bigint/null-bufferdata-throws.js index f47804cc3ce..754f16cc19d 100644 --- a/test/built-ins/Atomics/notify/bigint/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/notify/bigint/null-bufferdata-throws.js @@ -33,4 +33,4 @@ try { assert.throws(TypeError, function() { Atomics.notify(i64a, poisoned, poisoned); -}, '`Atomics.notify(i64a, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/count-symbol-throws.js b/test/built-ins/Atomics/notify/count-symbol-throws.js index 1c95848ae7b..e4333693ead 100644 --- a/test/built-ins/Atomics/notify/count-symbol-throws.js +++ b/test/built-ins/Atomics/notify/count-symbol-throws.js @@ -23,4 +23,4 @@ const i32a = new Int32Array( assert.throws(TypeError, function() { Atomics.notify(i32a, 0, Symbol()); -}, '`Atomics.notify(i32a, 0, Symbol())` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/count-tointeger-throws-then-wake-throws.js b/test/built-ins/Atomics/notify/count-tointeger-throws-then-wake-throws.js index febcae5411f..f279101517a 100644 --- a/test/built-ins/Atomics/notify/count-tointeger-throws-then-wake-throws.js +++ b/test/built-ins/Atomics/notify/count-tointeger-throws-then-wake-throws.js @@ -29,4 +29,4 @@ const poisoned = { assert.throws(Test262Error, function() { Atomics.notify(i32a, 0, poisoned); -}, '`Atomics.notify(i32a, 0, poisoned)` throws Test262Error'); +}); diff --git a/test/built-ins/Atomics/notify/negative-index-throws.js b/test/built-ins/Atomics/notify/negative-index-throws.js index 55a7816f3f8..13994c11383 100644 --- a/test/built-ins/Atomics/notify/negative-index-throws.js +++ b/test/built-ins/Atomics/notify/negative-index-throws.js @@ -28,13 +28,13 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.notify(i32a, -Infinity, poisoned); -}, '`Atomics.notify(i32a, -Infinity, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.notify(i32a, -7.999, poisoned); -}, '`Atomics.notify(i32a, -7.999, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.notify(i32a, -1, poisoned); -}, '`Atomics.notify(i32a, -1, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.notify(i32a, -300, poisoned); -}, '`Atomics.notify(i32a, -300, poisoned)` throws RangeError'); +}); diff --git a/test/built-ins/Atomics/notify/non-int32-typedarray-throws.js b/test/built-ins/Atomics/notify/non-int32-typedarray-throws.js index 9d701c30d95..a0dabdfefd0 100644 --- a/test/built-ins/Atomics/notify/non-int32-typedarray-throws.js +++ b/test/built-ins/Atomics/notify/non-int32-typedarray-throws.js @@ -26,14 +26,14 @@ assert.throws(TypeError, function() { new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8) ); Atomics.notify(view, poisoned, poisoned); -}, '`const view = new Float64Array( new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8) ); Atomics.notify(view, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Float32Array( new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4) ); Atomics.notify(view, poisoned, poisoned); -}, '`const view = new Float32Array( new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4) ); Atomics.notify(view, poisoned, poisoned)` throws TypeError'); +}); if (typeof Float16Array !== 'undefined') { assert.throws(TypeError, function() { @@ -41,7 +41,7 @@ if (typeof Float16Array !== 'undefined') { new SharedArrayBuffer(Float16Array.BYTES_PER_ELEMENT * 2) ); Atomics.notify(view, poisoned, poisoned); - }, '`const view = new Float16Array( new SharedArrayBuffer(Float16Array.BYTES_PER_ELEMENT * 2) ); Atomics.notify(view, poisoned, poisoned)` throws TypeError'); + }); } assert.throws(TypeError, function() { @@ -49,39 +49,39 @@ assert.throws(TypeError, function() { new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2) ); Atomics.notify(view, poisoned, poisoned); -}, '`const view = new Int16Array( new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2) ); Atomics.notify(view, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Int8Array( new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) ); Atomics.notify(view, poisoned, poisoned); -}, '`const view = new Int8Array( new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) ); Atomics.notify(view, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Uint32Array( new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4) ); Atomics.notify(new Uint32Array(), poisoned, poisoned); -}, '`const view = new Uint32Array( new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4) ); Atomics.notify(new Uint32Array(), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Uint16Array( new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2) ); Atomics.notify(view, poisoned, poisoned); -}, '`const view = new Uint16Array( new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2) ); Atomics.notify(view, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Uint8Array( new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) ); Atomics.notify(view, poisoned, poisoned); -}, '`const view = new Uint8Array( new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) ); Atomics.notify(view, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Uint8ClampedArray( new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) ); Atomics.notify(view, poisoned, poisoned); -}, '`const view = new Uint8ClampedArray( new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) ); Atomics.notify(view, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/non-shared-bufferdata-count-evaluation-throws.js b/test/built-ins/Atomics/notify/non-shared-bufferdata-count-evaluation-throws.js index 0656f5a6b6e..db0e2996075 100644 --- a/test/built-ins/Atomics/notify/non-shared-bufferdata-count-evaluation-throws.js +++ b/test/built-ins/Atomics/notify/non-shared-bufferdata-count-evaluation-throws.js @@ -31,6 +31,6 @@ const poisoned = { assert.throws(Test262Error, function() { Atomics.notify(i32a, 0, poisoned); -}, '`Atomics.notify(i32a, 0, poisoned)` throws Test262Error'); +}); diff --git a/test/built-ins/Atomics/notify/non-shared-bufferdata-index-evaluation-throws.js b/test/built-ins/Atomics/notify/non-shared-bufferdata-index-evaluation-throws.js index 8c2c334f6ba..3e0fa07df8e 100644 --- a/test/built-ins/Atomics/notify/non-shared-bufferdata-index-evaluation-throws.js +++ b/test/built-ins/Atomics/notify/non-shared-bufferdata-index-evaluation-throws.js @@ -27,6 +27,6 @@ const poisoned = { assert.throws(Test262Error, function() { Atomics.notify(i32a, poisoned, 0); -}, '`Atomics.notify(i32a, poisoned, 0)` throws Test262Error'); +}); diff --git a/test/built-ins/Atomics/notify/non-shared-bufferdata-non-shared-int-views-throws.js b/test/built-ins/Atomics/notify/non-shared-bufferdata-non-shared-int-views-throws.js index 458aaa0517d..51e9ba28684 100644 --- a/test/built-ins/Atomics/notify/non-shared-bufferdata-non-shared-int-views-throws.js +++ b/test/built-ins/Atomics/notify/non-shared-bufferdata-non-shared-int-views-throws.js @@ -18,24 +18,24 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.notify(new Int16Array(nonsab), poisoned, poisoned); -}, '`Atomics.notify(new Int16Array(nonsab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Int8Array(nonsab), poisoned, poisoned); -}, '`Atomics.notify(new Int8Array(nonsab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Uint32Array(nonsab), poisoned, poisoned); -}, '`Atomics.notify(new Uint32Array(nonsab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Uint16Array(nonsab), poisoned, poisoned); -}, '`Atomics.notify(new Uint16Array(nonsab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Uint8Array(nonsab), poisoned, poisoned); -}, '`Atomics.notify(new Uint8Array(nonsab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Uint8ClampedArray(nonsab), poisoned, poisoned); -}, '`Atomics.notify(new Uint8ClampedArray(nonsab), poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/non-shared-int-views.js b/test/built-ins/Atomics/notify/non-shared-int-views.js index ae22d77be55..6797a7b529a 100644 --- a/test/built-ins/Atomics/notify/non-shared-int-views.js +++ b/test/built-ins/Atomics/notify/non-shared-int-views.js @@ -18,24 +18,24 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.notify(new Int16Array(sab), poisoned, poisoned); -}, '`Atomics.notify(new Int16Array(sab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Int8Array(sab), poisoned, poisoned); -}, '`Atomics.notify(new Int8Array(sab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Uint32Array(sab), poisoned, poisoned); -}, '`Atomics.notify(new Uint32Array(sab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Uint16Array(sab), poisoned, poisoned); -}, '`Atomics.notify(new Uint16Array(sab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Uint8Array(sab), poisoned, poisoned); -}, '`Atomics.notify(new Uint8Array(sab), poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(new Uint8ClampedArray(sab), poisoned, poisoned); -}, '`Atomics.notify(new Uint8ClampedArray(sab), poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/non-views.js b/test/built-ins/Atomics/notify/non-views.js index 85a58b0b615..935e557a3f1 100644 --- a/test/built-ins/Atomics/notify/non-views.js +++ b/test/built-ins/Atomics/notify/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(nonView) { assert.throws(TypeError, function() { Atomics.notify(nonView, 0, 0); - }, '`Atomics.notify(nonView, 0, 0)` throws TypeError'); // Even with count == 0 + }); // Even with count == 0 }); diff --git a/test/built-ins/Atomics/notify/not-a-constructor.js b/test/built-ins/Atomics/notify/not-a-constructor.js index 2d7c1b33d4e..a62810f73e2 100644 --- a/test/built-ins/Atomics/notify/not-a-constructor.js +++ b/test/built-ins/Atomics/notify/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.notify), false, 'isConstructor(Atomics.no assert.throws(TypeError, () => { new Atomics.notify(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.notify(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/not-a-typedarray-throws.js b/test/built-ins/Atomics/notify/not-a-typedarray-throws.js index 0e71a62076c..60c438c105f 100644 --- a/test/built-ins/Atomics/notify/not-a-typedarray-throws.js +++ b/test/built-ins/Atomics/notify/not-a-typedarray-throws.js @@ -22,8 +22,8 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wait({}, 0, 0, 0); -}, '`Atomics.wait({}, 0, 0, 0)` throws TypeError'); +}); assert.throws(TypeError, function () { Atomics.wait({}, poisoned, poisoned, poisoned); -}, '`Atomics.wait({}, poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/not-an-object-throws.js b/test/built-ins/Atomics/notify/not-an-object-throws.js index 353cdc197a1..9601bbbf4b6 100644 --- a/test/built-ins/Atomics/notify/not-an-object-throws.js +++ b/test/built-ins/Atomics/notify/not-an-object-throws.js @@ -21,28 +21,28 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.notify(null, poisoned, poisoned); -}, '`Atomics.notify(null, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(undefined, poisoned, poisoned); -}, '`Atomics.notify(undefined, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(true, poisoned, poisoned); -}, '`Atomics.notify(true, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(false, poisoned, poisoned); -}, '`Atomics.notify(false, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify('***string***', poisoned, poisoned); -}, '`Atomics.notify(\'***string***\', poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(Number.NEGATIVE_INFINITY, poisoned, poisoned); -}, '`Atomics.notify(Number.NEGATIVE_INFINITY, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(Symbol('***symbol***'), poisoned, poisoned); -}, '`Atomics.notify(Symbol(\'***symbol***\'), poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/null-bufferdata-throws.js b/test/built-ins/Atomics/notify/null-bufferdata-throws.js index 46f8504b94c..55070aadea4 100644 --- a/test/built-ins/Atomics/notify/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/notify/null-bufferdata-throws.js @@ -40,4 +40,4 @@ try { assert.throws(TypeError, function() { Atomics.notify(i32a, poisoned, poisoned); -}, '`Atomics.notify(i32a, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/notify/out-of-range-index-throws.js b/test/built-ins/Atomics/notify/out-of-range-index-throws.js index 814a0a73b89..591e1d336ec 100644 --- a/test/built-ins/Atomics/notify/out-of-range-index-throws.js +++ b/test/built-ins/Atomics/notify/out-of-range-index-throws.js @@ -28,10 +28,10 @@ var poisoned = { assert.throws(RangeError, function() { Atomics.notify(i32a, Infinity, poisoned); -}, '`Atomics.notify(i32a, Infinity, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.notify(i32a, 4, poisoned); -}, '`Atomics.notify(i32a, 4, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.notify(i32a, 200, poisoned); -}, '`Atomics.notify(i32a, 200, poisoned)` throws RangeError'); +}); diff --git a/test/built-ins/Atomics/notify/symbol-for-index-throws.js b/test/built-ins/Atomics/notify/symbol-for-index-throws.js index 26c0c5be137..0ae4c735189 100644 --- a/test/built-ins/Atomics/notify/symbol-for-index-throws.js +++ b/test/built-ins/Atomics/notify/symbol-for-index-throws.js @@ -46,16 +46,16 @@ const poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.notify(i32a, poisonedValueOf, poisonedValueOf); -}, '`Atomics.notify(i32a, poisonedValueOf, poisonedValueOf)` throws Test262Error'); +}); assert.throws(Test262Error, function() { Atomics.notify(i32a, poisonedToPrimitive, poisonedToPrimitive); -}, '`Atomics.notify(i32a, poisonedToPrimitive, poisonedToPrimitive)` throws Test262Error'); +}); assert.throws(TypeError, function() { Atomics.notify(i32a, Symbol("foo"), poisonedValueOf); -}, '`Atomics.notify(i32a, Symbol("foo"), poisonedValueOf)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.notify(i32a, Symbol("foo"), poisonedToPrimitive); -}, '`Atomics.notify(i32a, Symbol("foo"), poisonedToPrimitive)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/or/bad-range.js b/test/built-ins/Atomics/or/bad-range.js index 5ac2f377870..c221f203f17 100644 --- a/test/built-ins/Atomics/or/bad-range.js +++ b/test/built-ins/Atomics/or/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.or(view, IdxGen(view), 10); - }, '`Atomics.or(view, IdxGen(view), 10)` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/or/bigint/bad-range.js b/test/built-ins/Atomics/or/bigint/bad-range.js index c3f42881238..99c34e6c620 100644 --- a/test/built-ins/Atomics/or/bigint/bad-range.js +++ b/test/built-ins/Atomics/or/bigint/bad-range.js @@ -15,6 +15,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.or(view, IdxGen(view), 10n); - }, '`Atomics.or(view, IdxGen(view), 10n)` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/or/non-views.js b/test/built-ins/Atomics/or/non-views.js index 5ad0588b88d..21915a00935 100644 --- a/test/built-ins/Atomics/or/non-views.js +++ b/test/built-ins/Atomics/or/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.or(view, 0, 0); - }, '`Atomics.or(view, 0, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/or/not-a-constructor.js b/test/built-ins/Atomics/or/not-a-constructor.js index 974625579f6..f5c0ef4b3e9 100644 --- a/test/built-ins/Atomics/or/not-a-constructor.js +++ b/test/built-ins/Atomics/or/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.or), false, 'isConstructor(Atomics.or) mu assert.throws(TypeError, () => { new Atomics.or(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.or(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/prop-desc.js b/test/built-ins/Atomics/prop-desc.js index 90825f14f77..d5fa42ea7a3 100644 --- a/test/built-ins/Atomics/prop-desc.js +++ b/test/built-ins/Atomics/prop-desc.js @@ -28,11 +28,11 @@ assert.sameValue(typeof Atomics, "object", 'The value of `typeof Atomics` is "ob assert.throws(TypeError, function() { Atomics(); -}, '`Atomics()` throws TypeError'); +}); assert.throws(TypeError, function() { new Atomics(); -}, '`new Atomics()` throws TypeError'); +}); verifyProperty(this, "Atomics", { enumerable: false, diff --git a/test/built-ins/Atomics/store/bad-range.js b/test/built-ins/Atomics/store/bad-range.js index 7037736a983..4449f85dcd3 100644 --- a/test/built-ins/Atomics/store/bad-range.js +++ b/test/built-ins/Atomics/store/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.store(view, IdxGen(view), 10); - }, '`Atomics.store(view, IdxGen(view), 10)` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/store/bigint/bad-range.js b/test/built-ins/Atomics/store/bigint/bad-range.js index c79f46f9d32..068b95b31c8 100644 --- a/test/built-ins/Atomics/store/bigint/bad-range.js +++ b/test/built-ins/Atomics/store/bigint/bad-range.js @@ -15,6 +15,6 @@ testWithBigIntTypedArrayConstructors(TA => { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.store(view, IdxGen(view), 10n); - }, '`Atomics.store(view, IdxGen(view), 10n)` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/store/non-views.js b/test/built-ins/Atomics/store/non-views.js index f5159751fc7..356f3a27ffd 100644 --- a/test/built-ins/Atomics/store/non-views.js +++ b/test/built-ins/Atomics/store/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.store(view, 0, 0); - }, '`Atomics.store(view, 0, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/store/not-a-constructor.js b/test/built-ins/Atomics/store/not-a-constructor.js index 5478d50503e..331f15a839d 100644 --- a/test/built-ins/Atomics/store/not-a-constructor.js +++ b/test/built-ins/Atomics/store/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.store), false, 'isConstructor(Atomics.sto assert.throws(TypeError, () => { new Atomics.store(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.store(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/sub/bad-range.js b/test/built-ins/Atomics/sub/bad-range.js index 245fcb66a7b..15eabc048a1 100644 --- a/test/built-ins/Atomics/sub/bad-range.js +++ b/test/built-ins/Atomics/sub/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.sub(view, IdxGen(view), 10); - }, '`Atomics.sub(view, IdxGen(view), 10)` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/sub/bigint/bad-range.js b/test/built-ins/Atomics/sub/bigint/bad-range.js index 624c2dfac3c..920eba9631c 100644 --- a/test/built-ins/Atomics/sub/bigint/bad-range.js +++ b/test/built-ins/Atomics/sub/bigint/bad-range.js @@ -15,6 +15,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.sub(view, IdxGen(view), 10n); - }, '`Atomics.sub(view, IdxGen(view), 10n)` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/sub/non-views.js b/test/built-ins/Atomics/sub/non-views.js index 9b8abbb2939..c415b5a75c9 100644 --- a/test/built-ins/Atomics/sub/non-views.js +++ b/test/built-ins/Atomics/sub/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.sub(view, 0, 0); - }, '`Atomics.sub(view, 0, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/sub/not-a-constructor.js b/test/built-ins/Atomics/sub/not-a-constructor.js index 95c1c23d24d..d908130eb33 100644 --- a/test/built-ins/Atomics/sub/not-a-constructor.js +++ b/test/built-ins/Atomics/sub/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.sub), false, 'isConstructor(Atomics.sub) assert.throws(TypeError, () => { new Atomics.sub(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.sub(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/bad-range.js b/test/built-ins/Atomics/wait/bad-range.js index 2ee68dced90..56eeaffcd98 100644 --- a/test/built-ins/Atomics/wait/bad-range.js +++ b/test/built-ins/Atomics/wait/bad-range.js @@ -22,5 +22,5 @@ const i32a = new Int32Array( testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.wait(i32a, IdxGen(i32a), 0, 0); - }, '`Atomics.wait(i32a, IdxGen(i32a), 0, 0)` throws RangeError'); + }); }); diff --git a/test/built-ins/Atomics/wait/bigint/bad-range.js b/test/built-ins/Atomics/wait/bigint/bad-range.js index 535933f2fd0..f15a77a4eb9 100644 --- a/test/built-ins/Atomics/wait/bigint/bad-range.js +++ b/test/built-ins/Atomics/wait/bigint/bad-range.js @@ -22,5 +22,5 @@ const i64a = new BigInt64Array( testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.wait(i64a, IdxGen(i64a), 0n, 0); - }, '`Atomics.wait(i64a, IdxGen(i64a), 0n, 0)` throws RangeError'); + }); }); diff --git a/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js b/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js index 569330baaa6..51d64b83a33 100644 --- a/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js +++ b/test/built-ins/Atomics/wait/bigint/cannot-suspend-throws.js @@ -21,4 +21,4 @@ const i64a = new BigInt64Array(new SharedArrayBuffer(BigInt64Array.BYTES_PER_ELE assert.throws(TypeError, function() { Atomics.wait(i64a, 0, 0n, 0); -}, '`Atomics.wait(i64a, 0, 0n, 0)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/bigint/negative-index-throws.js b/test/built-ins/Atomics/wait/bigint/negative-index-throws.js index 552b7104788..9acd86db1e5 100644 --- a/test/built-ins/Atomics/wait/bigint/negative-index-throws.js +++ b/test/built-ins/Atomics/wait/bigint/negative-index-throws.js @@ -27,13 +27,13 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.wait(i64a, -Infinity, poisoned, poisoned); -}, '`Atomics.wait(i64a, -Infinity, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i64a, -7.999, poisoned, poisoned); -}, '`Atomics.wait(i64a, -7.999, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i64a, -1, poisoned, poisoned); -}, '`Atomics.wait(i64a, -1, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i64a, -300, poisoned, poisoned); -}, '`Atomics.wait(i64a, -300, poisoned, poisoned)` throws RangeError'); +}); diff --git a/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js b/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js index 9574f9374c5..d435c0f1141 100644 --- a/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js +++ b/test/built-ins/Atomics/wait/bigint/non-bigint64-typedarray-throws.js @@ -34,8 +34,8 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wait(i64a, 0, 0n, 0); -}, '`Atomics.wait(i64a, 0, 0n, 0)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(i64a, poisoned, poisoned, poisoned); -}, '`Atomics.wait(i64a, poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js index 6769b54bd82..e23d2536c12 100644 --- a/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/bigint/non-shared-bufferdata-throws.js @@ -24,8 +24,8 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wait(i64a, 0, 0n, 0); -}, '`Atomics.wait(i64a, 0, 0n, 0)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(i64a, poisoned, poisoned, poisoned); -}, '`Atomics.wait(i64a, poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js b/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js index e1fb418d913..c40ee437749 100644 --- a/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/bigint/null-bufferdata-throws.js @@ -42,4 +42,4 @@ try { assert.throws(TypeError, function() { Atomics.wait(i64a, poisoned, poisoned, poisoned); -}, '`Atomics.wait(i64a, poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js b/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js index be7ba81e20b..dd86c469c43 100644 --- a/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js +++ b/test/built-ins/Atomics/wait/bigint/out-of-range-index-throws.js @@ -28,10 +28,10 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.wait(i64a, Infinity, poisoned, poisoned); -}, '`Atomics.wait(i64a, Infinity, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i64a, 8, poisoned, poisoned); -}, '`Atomics.wait(i64a, 8, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i64a, 200, poisoned, poisoned); -}, '`Atomics.wait(i64a, 200, poisoned, poisoned)` throws RangeError'); +}); diff --git a/test/built-ins/Atomics/wait/cannot-suspend-throws.js b/test/built-ins/Atomics/wait/cannot-suspend-throws.js index 48941b8cabe..39792eb6825 100644 --- a/test/built-ins/Atomics/wait/cannot-suspend-throws.js +++ b/test/built-ins/Atomics/wait/cannot-suspend-throws.js @@ -24,4 +24,4 @@ const i32a = new Int32Array( assert.throws(TypeError, function() { Atomics.wait(i32a, 0, 0, 0); -}, '`Atomics.wait(i32a, 0, 0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/negative-index-throws.js b/test/built-ins/Atomics/wait/negative-index-throws.js index 62dc993ed10..4fbed6f56bf 100644 --- a/test/built-ins/Atomics/wait/negative-index-throws.js +++ b/test/built-ins/Atomics/wait/negative-index-throws.js @@ -29,13 +29,13 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.wait(i32a, -Infinity, poisoned, poisoned); -}, '`Atomics.wait(i32a, -Infinity, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i32a, -7.999, poisoned, poisoned); -}, '`Atomics.wait(i32a, -7.999, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i32a, -1, poisoned, poisoned); -}, '`Atomics.wait(i32a, -1, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i32a, -300, poisoned, poisoned); -}, '`Atomics.wait(i32a, -300, poisoned, poisoned)` throws RangeError'); +}); diff --git a/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js b/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js index 83294bd838c..eb2a5340590 100644 --- a/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js +++ b/test/built-ins/Atomics/wait/non-int32-typedarray-throws.js @@ -26,14 +26,14 @@ assert.throws(TypeError, function() { new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, '`const view = new Float64Array( new SharedArrayBuffer(Float64Array.BYTES_PER_ELEMENT * 8) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Float32Array( new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, '`const view = new Float32Array( new SharedArrayBuffer(Float32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); +}); if (typeof Float16Array !== 'undefined') { assert.throws(TypeError, function() { @@ -41,7 +41,7 @@ if (typeof Float16Array !== 'undefined') { new SharedArrayBuffer(Float16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned); - }, '`const view = new Float16Array( new SharedArrayBuffer(Float16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); + }); } assert.throws(TypeError, function() { @@ -49,39 +49,39 @@ assert.throws(TypeError, function() { new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, '`const view = new Int16Array( new SharedArrayBuffer(Int16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Int8Array( new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, '`const view = new Int8Array( new SharedArrayBuffer(Int8Array.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Uint32Array( new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, '`const view = new Uint32Array( new SharedArrayBuffer(Uint32Array.BYTES_PER_ELEMENT * 4) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Uint16Array( new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, '`const view = new Uint16Array( new SharedArrayBuffer(Uint16Array.BYTES_PER_ELEMENT * 2) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Uint8Array( new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, '`const view = new Uint8Array( new SharedArrayBuffer(Uint8Array.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { const view = new Uint8ClampedArray( new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned); -}, '`const view = new Uint8ClampedArray( new SharedArrayBuffer(Uint8ClampedArray.BYTES_PER_ELEMENT) ); Atomics.wait(view, poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js index 4da17d0bd4e..164af59e2b7 100644 --- a/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js @@ -27,8 +27,8 @@ const poisoned = { assert.throws(TypeError, function() { Atomics.wait(i32a, 0, 0, 0); -}, '`Atomics.wait(i32a, 0, 0, 0)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(i32a, poisoned, poisoned, poisoned); -}, '`Atomics.wait(i32a, poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/not-a-typedarray-throws.js b/test/built-ins/Atomics/wait/not-a-typedarray-throws.js index 62b7388f116..108f2353974 100644 --- a/test/built-ins/Atomics/wait/not-a-typedarray-throws.js +++ b/test/built-ins/Atomics/wait/not-a-typedarray-throws.js @@ -22,8 +22,8 @@ var poisoned = { assert.throws(TypeError, function() { Atomics.wait({}, 0, 0, 0); -}, '`Atomics.wait({}, 0, 0, 0)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait({}, poisoned, poisoned, poisoned); -}, '`Atomics.wait({}, poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/not-an-object-throws.js b/test/built-ins/Atomics/wait/not-an-object-throws.js index ce1c0a49371..a15e973b30f 100644 --- a/test/built-ins/Atomics/wait/not-an-object-throws.js +++ b/test/built-ins/Atomics/wait/not-an-object-throws.js @@ -21,28 +21,28 @@ var poisoned = { assert.throws(TypeError, function() { Atomics.wait(null, poisoned, poisoned, poisoned); -}, '`Atomics.wait(null, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(undefined, poisoned, poisoned, poisoned); -}, '`Atomics.wait(undefined, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(true, poisoned, poisoned, poisoned); -}, '`Atomics.wait(true, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(false, poisoned, poisoned, poisoned); -}, '`Atomics.wait(false, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait('***string***', poisoned, poisoned, poisoned); -}, '`Atomics.wait(\'***string***\', poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(Number.NEGATIVE_INFINITY, poisoned, poisoned, poisoned); -}, '`Atomics.wait(Number.NEGATIVE_INFINITY, poisoned, poisoned, poisoned)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(Symbol('***symbol***'), poisoned, poisoned, poisoned); -}, '`Atomics.wait(Symbol(\'***symbol***\'), poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/null-bufferdata-throws.js b/test/built-ins/Atomics/wait/null-bufferdata-throws.js index 3747df7a8d2..b4b88b1aabd 100644 --- a/test/built-ins/Atomics/wait/null-bufferdata-throws.js +++ b/test/built-ins/Atomics/wait/null-bufferdata-throws.js @@ -40,4 +40,4 @@ try { assert.throws(TypeError, function() { Atomics.wait(i32a, poisoned, poisoned, poisoned); -}, '`Atomics.wait(i32a, poisoned, poisoned, poisoned)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/out-of-range-index-throws.js b/test/built-ins/Atomics/wait/out-of-range-index-throws.js index 023bb7237cc..a50c31113d2 100644 --- a/test/built-ins/Atomics/wait/out-of-range-index-throws.js +++ b/test/built-ins/Atomics/wait/out-of-range-index-throws.js @@ -28,13 +28,13 @@ const poisoned = { assert.throws(RangeError, function() { Atomics.wait(i32a, Infinity, poisoned, poisoned); -}, '`Atomics.wait(i32a, Infinity, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i32a, -1, poisoned, poisoned); -}, '`Atomics.wait(i32a, -1, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i32a, 4, poisoned, poisoned); -}, '`Atomics.wait(i32a, 4, poisoned, poisoned)` throws RangeError'); +}); assert.throws(RangeError, function() { Atomics.wait(i32a, 200, poisoned, poisoned); -}, '`Atomics.wait(i32a, 200, poisoned, poisoned)` throws RangeError'); +}); diff --git a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js index e2880c29f4a..b29c9610394 100644 --- a/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js +++ b/test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js @@ -36,8 +36,8 @@ const poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, 0, poisonedValueOf); -}, '`Atomics.wait(i32a, 0, 0, poisonedValueOf)` throws Test262Error'); +}); assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, 0, poisonedToPrimitive); -}, '`Atomics.wait(i32a, 0, 0, poisonedToPrimitive)` throws Test262Error'); +}); diff --git a/test/built-ins/Atomics/wait/symbol-for-index-throws.js b/test/built-ins/Atomics/wait/symbol-for-index-throws.js index 77a562f015f..09563117423 100644 --- a/test/built-ins/Atomics/wait/symbol-for-index-throws.js +++ b/test/built-ins/Atomics/wait/symbol-for-index-throws.js @@ -46,16 +46,16 @@ const poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.wait(i32a, poisonedValueOf, poisonedValueOf, poisonedValueOf); -}, '`Atomics.wait(i32a, poisonedValueOf, poisonedValueOf, poisonedValueOf)` throws Test262Error'); +}); assert.throws(Test262Error, function() { Atomics.wait(i32a, poisonedToPrimitive, poisonedToPrimitive, poisonedToPrimitive); -}, '`Atomics.wait(i32a, poisonedToPrimitive, poisonedToPrimitive, poisonedToPrimitive)` throws Test262Error'); +}); assert.throws(TypeError, function() { Atomics.wait(i32a, Symbol('foo'), poisonedValueOf, poisonedValueOf); -}, '`Atomics.wait(i32a, Symbol(\'foo\'), poisonedValueOf, poisonedValueOf)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(i32a, Symbol('foo'), poisonedToPrimitive, poisonedToPrimitive); -}, '`Atomics.wait(i32a, Symbol(\'foo\'), poisonedToPrimitive, poisonedToPrimitive)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js b/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js index 7d2afedd3f8..6030e0fd132 100644 --- a/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js +++ b/test/built-ins/Atomics/wait/symbol-for-timeout-throws.js @@ -32,16 +32,16 @@ var poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, 0, poisonedValueOf); -}, '`Atomics.wait(i32a, 0, 0, poisonedValueOf)` throws Test262Error'); +}); assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, 0, poisonedToPrimitive); -}, '`Atomics.wait(i32a, 0, 0, poisonedToPrimitive)` throws Test262Error'); +}); assert.throws(TypeError, function() { Atomics.wait(i32a, 0, 0, Symbol("foo")); -}, '`Atomics.wait(i32a, 0, 0, Symbol("foo"))` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(i32a, 0, 0, Symbol("foo")); -}, '`Atomics.wait(i32a, 0, 0, Symbol("foo"))` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/wait/symbol-for-value-throws.js b/test/built-ins/Atomics/wait/symbol-for-value-throws.js index 6fff6234823..bbbf7f48426 100644 --- a/test/built-ins/Atomics/wait/symbol-for-value-throws.js +++ b/test/built-ins/Atomics/wait/symbol-for-value-throws.js @@ -37,16 +37,16 @@ const poisonedToPrimitive = { assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, poisonedValueOf, poisonedValueOf); -}, '`Atomics.wait(i32a, 0, poisonedValueOf, poisonedValueOf)` throws Test262Error'); +}); assert.throws(Test262Error, function() { Atomics.wait(i32a, 0, poisonedToPrimitive, poisonedToPrimitive); -}, '`Atomics.wait(i32a, 0, poisonedToPrimitive, poisonedToPrimitive)` throws Test262Error'); +}); assert.throws(TypeError, function() { Atomics.wait(i32a, 0, Symbol("foo"), poisonedValueOf); -}, '`Atomics.wait(i32a, 0, Symbol("foo"), poisonedValueOf)` throws TypeError'); +}); assert.throws(TypeError, function() { Atomics.wait(i32a, 0, Symbol("foo"), poisonedToPrimitive); -}, '`Atomics.wait(i32a, 0, Symbol("foo"), poisonedToPrimitive)` throws TypeError'); +}); diff --git a/test/built-ins/Atomics/xor/bad-range.js b/test/built-ins/Atomics/xor/bad-range.js index 644f7523503..0de01cbd9cd 100644 --- a/test/built-ins/Atomics/xor/bad-range.js +++ b/test/built-ins/Atomics/xor/bad-range.js @@ -17,6 +17,6 @@ testWithTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.xor(view, IdxGen(view), 0); - }, '`Atomics.xor(view, IdxGen(view), 0)` throws RangeError'); + }); }); }, views); diff --git a/test/built-ins/Atomics/xor/bigint/bad-range.js b/test/built-ins/Atomics/xor/bigint/bad-range.js index 45a2db5bd99..5436347fe35 100644 --- a/test/built-ins/Atomics/xor/bigint/bad-range.js +++ b/test/built-ins/Atomics/xor/bigint/bad-range.js @@ -16,6 +16,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { testWithAtomicsOutOfBoundsIndices(function(IdxGen) { assert.throws(RangeError, function() { Atomics.xor(view, IdxGen(view), 10); - }, '`Atomics.xor(view, IdxGen(view), 10)` throws RangeError'); + }); }); }); diff --git a/test/built-ins/Atomics/xor/non-views.js b/test/built-ins/Atomics/xor/non-views.js index d4f4cd77c28..a4c4c167d21 100644 --- a/test/built-ins/Atomics/xor/non-views.js +++ b/test/built-ins/Atomics/xor/non-views.js @@ -12,5 +12,5 @@ features: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, Symbol, TypedArray testWithAtomicsNonViewValues(function(view) { assert.throws(TypeError, function() { Atomics.xor(view, 0, 0); - }, '`Atomics.xor(view, 0, 0)` throws TypeError'); + }); }); diff --git a/test/built-ins/Atomics/xor/not-a-constructor.js b/test/built-ins/Atomics/xor/not-a-constructor.js index 6e04b69f011..c48782415d4 100644 --- a/test/built-ins/Atomics/xor/not-a-constructor.js +++ b/test/built-ins/Atomics/xor/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Atomics.xor), false, 'isConstructor(Atomics.xor) assert.throws(TypeError, () => { new Atomics.xor(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT))); -}, '`new Atomics.xor(new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)))` throws TypeError'); +}); diff --git a/test/built-ins/BigInt/asIntN/not-a-constructor.js b/test/built-ins/BigInt/asIntN/not-a-constructor.js index 1cf1ae2d813..32a3db0abdf 100644 --- a/test/built-ins/BigInt/asIntN/not-a-constructor.js +++ b/test/built-ins/BigInt/asIntN/not-a-constructor.js @@ -23,4 +23,4 @@ assert.sameValue(isConstructor(BigInt.asIntN), false, 'isConstructor(BigInt.asIn assert.throws(TypeError, () => { new BigInt.asIntN(64, 1n); -}, '`new BigInt.asIntN(64, 1n)` throws TypeError'); +}); diff --git a/test/built-ins/BigInt/asUintN/not-a-constructor.js b/test/built-ins/BigInt/asUintN/not-a-constructor.js index cbedea1ed00..c48e1071cd0 100644 --- a/test/built-ins/BigInt/asUintN/not-a-constructor.js +++ b/test/built-ins/BigInt/asUintN/not-a-constructor.js @@ -23,4 +23,4 @@ assert.sameValue(isConstructor(BigInt.asUintN), false, 'isConstructor(BigInt.asU assert.throws(TypeError, () => { new BigInt.asUintN(64, 1n); -}, '`new BigInt.asUintN(64, 1n)` throws TypeError'); +}); diff --git a/test/built-ins/BigInt/prototype/toLocaleString/not-a-constructor.js b/test/built-ins/BigInt/prototype/toLocaleString/not-a-constructor.js index e3caae3152b..7ca45e23bc4 100644 --- a/test/built-ins/BigInt/prototype/toLocaleString/not-a-constructor.js +++ b/test/built-ins/BigInt/prototype/toLocaleString/not-a-constructor.js @@ -28,4 +28,4 @@ assert.sameValue( assert.throws(TypeError, () => { let n = 1n; new n.toLocaleString(); -}, '`let n = 1n; new n.toLocaleString()` throws TypeError'); +}); diff --git a/test/built-ins/BigInt/prototype/toString/not-a-constructor.js b/test/built-ins/BigInt/prototype/toString/not-a-constructor.js index cd5763a8e7b..dd3b0db9690 100644 --- a/test/built-ins/BigInt/prototype/toString/not-a-constructor.js +++ b/test/built-ins/BigInt/prototype/toString/not-a-constructor.js @@ -28,4 +28,4 @@ assert.sameValue( assert.throws(TypeError, () => { let n = 1n; new n.toString(); -}, '`let n = 1n; new n.toString()` throws TypeError'); +}); diff --git a/test/built-ins/BigInt/prototype/valueOf/not-a-constructor.js b/test/built-ins/BigInt/prototype/valueOf/not-a-constructor.js index 982214f99ac..a9fceb7d029 100644 --- a/test/built-ins/BigInt/prototype/valueOf/not-a-constructor.js +++ b/test/built-ins/BigInt/prototype/valueOf/not-a-constructor.js @@ -28,4 +28,4 @@ assert.sameValue( assert.throws(TypeError, () => { let n = 1n; new n.valueOf(); -}, '`let n = 1n; new n.valueOf()` throws TypeError'); +}); diff --git a/test/built-ins/Boolean/prototype/toString/not-a-constructor.js b/test/built-ins/Boolean/prototype/toString/not-a-constructor.js index f70ed4defa4..8df1c7bf330 100644 --- a/test/built-ins/Boolean/prototype/toString/not-a-constructor.js +++ b/test/built-ins/Boolean/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Boolean.prototype.toString(); -}, '`new Boolean.prototype.toString()` throws TypeError'); +}); diff --git a/test/built-ins/Boolean/prototype/valueOf/not-a-constructor.js b/test/built-ins/Boolean/prototype/valueOf/not-a-constructor.js index 578f9d94611..8cbe7bf1f6b 100644 --- a/test/built-ins/Boolean/prototype/valueOf/not-a-constructor.js +++ b/test/built-ins/Boolean/prototype/valueOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Boolean.prototype.valueOf(); -}, '`new Boolean.prototype.valueOf()` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getBigInt64/not-a-constructor.js b/test/built-ins/DataView/prototype/getBigInt64/not-a-constructor.js index 758d8690f36..fc73045f9a3 100644 --- a/test/built-ins/DataView/prototype/getBigInt64/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getBigInt64/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getBigInt64(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getBigInt64(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getBigUint64/not-a-constructor.js b/test/built-ins/DataView/prototype/getBigUint64/not-a-constructor.js index 8610660741d..6592a4f760b 100644 --- a/test/built-ins/DataView/prototype/getBigUint64/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getBigUint64/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getBigUint64(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getBigUint64(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getFloat32/not-a-constructor.js b/test/built-ins/DataView/prototype/getFloat32/not-a-constructor.js index 6a269af05a7..d65fc678e72 100644 --- a/test/built-ins/DataView/prototype/getFloat32/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getFloat32/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getFloat32(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getFloat32(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getFloat64/not-a-constructor.js b/test/built-ins/DataView/prototype/getFloat64/not-a-constructor.js index 54b1105a795..f326b61b085 100644 --- a/test/built-ins/DataView/prototype/getFloat64/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getFloat64/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getFloat64(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getFloat64(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getInt16/not-a-constructor.js b/test/built-ins/DataView/prototype/getInt16/not-a-constructor.js index 03f38347d32..1f8c6669308 100644 --- a/test/built-ins/DataView/prototype/getInt16/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getInt16/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getInt16(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getInt16(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getInt32/not-a-constructor.js b/test/built-ins/DataView/prototype/getInt32/not-a-constructor.js index 30aa97373b1..24d02a3af18 100644 --- a/test/built-ins/DataView/prototype/getInt32/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getInt32/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getInt32(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getInt32(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getInt8/not-a-constructor.js b/test/built-ins/DataView/prototype/getInt8/not-a-constructor.js index a0d48f745e4..7d88a3324f5 100644 --- a/test/built-ins/DataView/prototype/getInt8/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getInt8/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getInt8(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getInt8(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getUint16/not-a-constructor.js b/test/built-ins/DataView/prototype/getUint16/not-a-constructor.js index b0ad42c3947..6493a6020c1 100644 --- a/test/built-ins/DataView/prototype/getUint16/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getUint16/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getUint16(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getUint16(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getUint32/not-a-constructor.js b/test/built-ins/DataView/prototype/getUint32/not-a-constructor.js index 98ca228cc24..65931d9db67 100644 --- a/test/built-ins/DataView/prototype/getUint32/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getUint32/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getUint32(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getUint32(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/getUint8/not-a-constructor.js b/test/built-ins/DataView/prototype/getUint8/not-a-constructor.js index b3165ff2ae5..4cfd47a0d37 100644 --- a/test/built-ins/DataView/prototype/getUint8/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getUint8/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getUint8(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getUint8(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setBigInt64/not-a-constructor.js b/test/built-ins/DataView/prototype/setBigInt64/not-a-constructor.js index 29ae5b573cf..e620e6155ee 100644 --- a/test/built-ins/DataView/prototype/setBigInt64/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setBigInt64/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setBigInt64(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setBigInt64(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setBigUint64/not-a-constructor.js b/test/built-ins/DataView/prototype/setBigUint64/not-a-constructor.js index b9354d7ea85..2c5b5d6b44e 100644 --- a/test/built-ins/DataView/prototype/setBigUint64/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setBigUint64/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setBigUint64(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setBigUint64(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setFloat32/not-a-constructor.js b/test/built-ins/DataView/prototype/setFloat32/not-a-constructor.js index ae8c2625d4e..37e2534f196 100644 --- a/test/built-ins/DataView/prototype/setFloat32/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setFloat32/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setFloat32(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setFloat32(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setFloat64/not-a-constructor.js b/test/built-ins/DataView/prototype/setFloat64/not-a-constructor.js index f2429b5c259..33618e14f12 100644 --- a/test/built-ins/DataView/prototype/setFloat64/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setFloat64/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setFloat64(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setFloat64(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setInt16/not-a-constructor.js b/test/built-ins/DataView/prototype/setInt16/not-a-constructor.js index 08610bdf2ab..6c9bc77cc63 100644 --- a/test/built-ins/DataView/prototype/setInt16/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setInt16/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setInt16(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setInt16(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setInt32/not-a-constructor.js b/test/built-ins/DataView/prototype/setInt32/not-a-constructor.js index bfda6b24032..329cc728d89 100644 --- a/test/built-ins/DataView/prototype/setInt32/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setInt32/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setInt32(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setInt32(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setInt8/not-a-constructor.js b/test/built-ins/DataView/prototype/setInt8/not-a-constructor.js index 02de3d71925..6bb376e6b3b 100644 --- a/test/built-ins/DataView/prototype/setInt8/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setInt8/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setInt8(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setInt8(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setUint16/not-a-constructor.js b/test/built-ins/DataView/prototype/setUint16/not-a-constructor.js index 7c80e85b426..300fced5bfd 100644 --- a/test/built-ins/DataView/prototype/setUint16/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setUint16/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setUint16(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setUint16(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setUint32/not-a-constructor.js b/test/built-ins/DataView/prototype/setUint32/not-a-constructor.js index 2a7d234d5d5..f5c3819ce13 100644 --- a/test/built-ins/DataView/prototype/setUint32/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setUint32/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setUint32(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setUint32(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setUint8/not-a-constructor.js b/test/built-ins/DataView/prototype/setUint8/not-a-constructor.js index 8ea7610a665..956fbfa369e 100644 --- a/test/built-ins/DataView/prototype/setUint8/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setUint8/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setUint8(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setUint8(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/Date/UTC/not-a-constructor.js b/test/built-ins/Date/UTC/not-a-constructor.js index c59dbc6d074..7217ea895d9 100644 --- a/test/built-ins/Date/UTC/not-a-constructor.js +++ b/test/built-ins/Date/UTC/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Date.UTC), false, 'isConstructor(Date.UTC) must r assert.throws(TypeError, () => { new Date.UTC(); -}, '`new Date.UTC()` throws TypeError'); +}); diff --git a/test/built-ins/Date/now/not-a-constructor.js b/test/built-ins/Date/now/not-a-constructor.js index c9b04f47a81..d215d8ba7ce 100644 --- a/test/built-ins/Date/now/not-a-constructor.js +++ b/test/built-ins/Date/now/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Date.now), false, 'isConstructor(Date.now) must r assert.throws(TypeError, () => { new Date.now(); -}, '`new Date.now()` throws TypeError'); +}); diff --git a/test/built-ins/Date/parse/not-a-constructor.js b/test/built-ins/Date/parse/not-a-constructor.js index 35354055c89..dd3276953be 100644 --- a/test/built-ins/Date/parse/not-a-constructor.js +++ b/test/built-ins/Date/parse/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Date.parse), false, 'isConstructor(Date.parse) mu assert.throws(TypeError, () => { new Date.parse(); -}, '`new Date.parse()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getDate/not-a-constructor.js b/test/built-ins/Date/prototype/getDate/not-a-constructor.js index 3043f07b612..10d86b317bd 100644 --- a/test/built-ins/Date/prototype/getDate/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getDate/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getDate(); -}, '`let date = new Date(Date.now()); new date.getDate()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getDay/not-a-constructor.js b/test/built-ins/Date/prototype/getDay/not-a-constructor.js index e365a32cb2d..f01ec92f010 100644 --- a/test/built-ins/Date/prototype/getDay/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getDay/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getDay(); -}, '`let date = new Date(Date.now()); new date.getDay()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getFullYear/not-a-constructor.js b/test/built-ins/Date/prototype/getFullYear/not-a-constructor.js index 187e6d11f0b..6e7a58a1531 100644 --- a/test/built-ins/Date/prototype/getFullYear/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getFullYear/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getFullYear(); -}, '`let date = new Date(Date.now()); new date.getFullYear()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getHours/not-a-constructor.js b/test/built-ins/Date/prototype/getHours/not-a-constructor.js index be31482638b..b29d2d1b251 100644 --- a/test/built-ins/Date/prototype/getHours/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getHours/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getHours(); -}, '`let date = new Date(Date.now()); new date.getHours()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getMilliseconds/not-a-constructor.js b/test/built-ins/Date/prototype/getMilliseconds/not-a-constructor.js index 4adbb5c1845..383905c84ea 100644 --- a/test/built-ins/Date/prototype/getMilliseconds/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getMilliseconds/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getMilliseconds(); -}, '`let date = new Date(Date.now()); new date.getMilliseconds()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getMinutes/not-a-constructor.js b/test/built-ins/Date/prototype/getMinutes/not-a-constructor.js index 695eebb793c..ab9e598692e 100644 --- a/test/built-ins/Date/prototype/getMinutes/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getMinutes/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getMinutes(); -}, '`let date = new Date(Date.now()); new date.getMinutes()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getMonth/not-a-constructor.js b/test/built-ins/Date/prototype/getMonth/not-a-constructor.js index 597d476abf7..0fc4e67c51c 100644 --- a/test/built-ins/Date/prototype/getMonth/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getMonth/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getMonth(); -}, '`let date = new Date(Date.now()); new date.getMonth()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getSeconds/not-a-constructor.js b/test/built-ins/Date/prototype/getSeconds/not-a-constructor.js index 953fc4f1df9..315b39d9f2e 100644 --- a/test/built-ins/Date/prototype/getSeconds/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getSeconds/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getSeconds(); -}, '`let date = new Date(Date.now()); new date.getSeconds()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getTime/not-a-constructor.js b/test/built-ins/Date/prototype/getTime/not-a-constructor.js index 034bd10167e..a5e4123f7ee 100644 --- a/test/built-ins/Date/prototype/getTime/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getTime/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getTime(); -}, '`let date = new Date(Date.now()); new date.getTime()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getTimezoneOffset/not-a-constructor.js b/test/built-ins/Date/prototype/getTimezoneOffset/not-a-constructor.js index ecf6bd62707..1304367613a 100644 --- a/test/built-ins/Date/prototype/getTimezoneOffset/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getTimezoneOffset/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getTimezoneOffset(); -}, '`let date = new Date(Date.now()); new date.getTimezoneOffset()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getUTCDate/not-a-constructor.js b/test/built-ins/Date/prototype/getUTCDate/not-a-constructor.js index 1d1440d03a3..21c13f31d30 100644 --- a/test/built-ins/Date/prototype/getUTCDate/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getUTCDate/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getUTCDate(); -}, '`let date = new Date(Date.now()); new date.getUTCDate()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getUTCDay/not-a-constructor.js b/test/built-ins/Date/prototype/getUTCDay/not-a-constructor.js index 23cd115a71a..0e6b5f13bdd 100644 --- a/test/built-ins/Date/prototype/getUTCDay/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getUTCDay/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getUTCDay(); -}, '`let date = new Date(Date.now()); new date.getUTCDay()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getUTCFullYear/not-a-constructor.js b/test/built-ins/Date/prototype/getUTCFullYear/not-a-constructor.js index 26e0e059691..529031f1a12 100644 --- a/test/built-ins/Date/prototype/getUTCFullYear/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getUTCFullYear/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getUTCFullYear(); -}, '`let date = new Date(Date.now()); new date.getUTCFullYear()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getUTCHours/not-a-constructor.js b/test/built-ins/Date/prototype/getUTCHours/not-a-constructor.js index c5f65a3b287..90ef143bf76 100644 --- a/test/built-ins/Date/prototype/getUTCHours/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getUTCHours/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getUTCHours(); -}, '`let date = new Date(Date.now()); new date.getUTCHours()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getUTCMilliseconds/not-a-constructor.js b/test/built-ins/Date/prototype/getUTCMilliseconds/not-a-constructor.js index d12dfdafd21..11669c4b731 100644 --- a/test/built-ins/Date/prototype/getUTCMilliseconds/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getUTCMilliseconds/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getUTCMilliseconds(); -}, '`let date = new Date(Date.now()); new date.getUTCMilliseconds()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getUTCMinutes/not-a-constructor.js b/test/built-ins/Date/prototype/getUTCMinutes/not-a-constructor.js index 3d0cbcad39d..3ff4da9fbe0 100644 --- a/test/built-ins/Date/prototype/getUTCMinutes/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getUTCMinutes/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getUTCMinutes(); -}, '`let date = new Date(Date.now()); new date.getUTCMinutes()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getUTCMonth/not-a-constructor.js b/test/built-ins/Date/prototype/getUTCMonth/not-a-constructor.js index dce22c74b90..8b012598fc8 100644 --- a/test/built-ins/Date/prototype/getUTCMonth/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getUTCMonth/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getUTCMonth(); -}, '`let date = new Date(Date.now()); new date.getUTCMonth()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/getUTCSeconds/not-a-constructor.js b/test/built-ins/Date/prototype/getUTCSeconds/not-a-constructor.js index 683ef986fb0..93168d857c7 100644 --- a/test/built-ins/Date/prototype/getUTCSeconds/not-a-constructor.js +++ b/test/built-ins/Date/prototype/getUTCSeconds/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.getUTCSeconds(); -}, '`let date = new Date(Date.now()); new date.getUTCSeconds()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setDate/not-a-constructor.js b/test/built-ins/Date/prototype/setDate/not-a-constructor.js index 2db8b5e614b..a31f566f140 100644 --- a/test/built-ins/Date/prototype/setDate/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setDate/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setDate(); -}, '`let date = new Date(Date.now()); new date.setDate()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setFullYear/not-a-constructor.js b/test/built-ins/Date/prototype/setFullYear/not-a-constructor.js index bdad193c193..933ba06cae0 100644 --- a/test/built-ins/Date/prototype/setFullYear/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setFullYear/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setFullYear(); -}, '`let date = new Date(Date.now()); new date.setFullYear()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setHours/not-a-constructor.js b/test/built-ins/Date/prototype/setHours/not-a-constructor.js index 69c5053c56f..307b438dca8 100644 --- a/test/built-ins/Date/prototype/setHours/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setHours/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setHours(); -}, '`let date = new Date(Date.now()); new date.setHours()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setMilliseconds/not-a-constructor.js b/test/built-ins/Date/prototype/setMilliseconds/not-a-constructor.js index 4fbe9f3d7f4..cbc9503d474 100644 --- a/test/built-ins/Date/prototype/setMilliseconds/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setMilliseconds/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setMilliseconds(); -}, '`let date = new Date(Date.now()); new date.setMilliseconds()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setMinutes/not-a-constructor.js b/test/built-ins/Date/prototype/setMinutes/not-a-constructor.js index ea8fdf60022..d7c02ff0cac 100644 --- a/test/built-ins/Date/prototype/setMinutes/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setMinutes/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setMinutes(); -}, '`let date = new Date(Date.now()); new date.setMinutes()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setMonth/not-a-constructor.js b/test/built-ins/Date/prototype/setMonth/not-a-constructor.js index f58140aa86a..a7f30141717 100644 --- a/test/built-ins/Date/prototype/setMonth/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setMonth/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setMonth(); -}, '`let date = new Date(Date.now()); new date.setMonth()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setSeconds/not-a-constructor.js b/test/built-ins/Date/prototype/setSeconds/not-a-constructor.js index 0050fd8813c..8a0547aabb8 100644 --- a/test/built-ins/Date/prototype/setSeconds/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setSeconds/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setSeconds(); -}, '`let date = new Date(Date.now()); new date.setSeconds()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setTime/not-a-constructor.js b/test/built-ins/Date/prototype/setTime/not-a-constructor.js index aa0bba48b52..3e5671080e7 100644 --- a/test/built-ins/Date/prototype/setTime/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setTime/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setTime(); -}, '`let date = new Date(Date.now()); new date.setTime()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setUTCDate/not-a-constructor.js b/test/built-ins/Date/prototype/setUTCDate/not-a-constructor.js index 5e0aec9aceb..2de8486cc8c 100644 --- a/test/built-ins/Date/prototype/setUTCDate/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setUTCDate/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setUTCDate(); -}, '`let date = new Date(Date.now()); new date.setUTCDate()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setUTCFullYear/not-a-constructor.js b/test/built-ins/Date/prototype/setUTCFullYear/not-a-constructor.js index d3c78d18abc..b26ab45dc44 100644 --- a/test/built-ins/Date/prototype/setUTCFullYear/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setUTCFullYear/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setUTCFullYear(); -}, '`let date = new Date(Date.now()); new date.setUTCFullYear()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setUTCHours/not-a-constructor.js b/test/built-ins/Date/prototype/setUTCHours/not-a-constructor.js index 002c6bfbdc7..d91af9ee28d 100644 --- a/test/built-ins/Date/prototype/setUTCHours/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setUTCHours/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setUTCHours(); -}, '`let date = new Date(Date.now()); new date.setUTCHours()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setUTCMilliseconds/not-a-constructor.js b/test/built-ins/Date/prototype/setUTCMilliseconds/not-a-constructor.js index b5eca2fa8ca..1bb9dd87d31 100644 --- a/test/built-ins/Date/prototype/setUTCMilliseconds/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setUTCMilliseconds/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setUTCMilliseconds(); -}, '`let date = new Date(Date.now()); new date.setUTCMilliseconds()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setUTCMinutes/not-a-constructor.js b/test/built-ins/Date/prototype/setUTCMinutes/not-a-constructor.js index 0762ec300da..c2ea041e2c3 100644 --- a/test/built-ins/Date/prototype/setUTCMinutes/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setUTCMinutes/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setUTCMinutes(); -}, '`let date = new Date(Date.now()); new date.setUTCMinutes()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setUTCMonth/not-a-constructor.js b/test/built-ins/Date/prototype/setUTCMonth/not-a-constructor.js index c643c46b125..7d74c8f39fa 100644 --- a/test/built-ins/Date/prototype/setUTCMonth/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setUTCMonth/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setUTCMonth(); -}, '`let date = new Date(Date.now()); new date.setUTCMonth()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/setUTCSeconds/not-a-constructor.js b/test/built-ins/Date/prototype/setUTCSeconds/not-a-constructor.js index 0d3e05accff..b2058e3632d 100644 --- a/test/built-ins/Date/prototype/setUTCSeconds/not-a-constructor.js +++ b/test/built-ins/Date/prototype/setUTCSeconds/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.setUTCSeconds(); -}, '`let date = new Date(Date.now()); new date.setUTCSeconds()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toDateString/not-a-constructor.js b/test/built-ins/Date/prototype/toDateString/not-a-constructor.js index 77e948feb29..8b23807f76a 100644 --- a/test/built-ins/Date/prototype/toDateString/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toDateString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toDateString(); -}, '`let date = new Date(Date.now()); new date.toDateString()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toISOString/not-a-constructor.js b/test/built-ins/Date/prototype/toISOString/not-a-constructor.js index 72fac855684..baed6bfbffe 100644 --- a/test/built-ins/Date/prototype/toISOString/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toISOString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toISOString(); -}, '`let date = new Date(Date.now()); new date.toISOString()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toJSON/not-a-constructor.js b/test/built-ins/Date/prototype/toJSON/not-a-constructor.js index e0cc28f9c83..48fbcaa05ad 100644 --- a/test/built-ins/Date/prototype/toJSON/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toJSON/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toJSON(); -}, '`let date = new Date(Date.now()); new date.toJSON()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toLocaleDateString/not-a-constructor.js b/test/built-ins/Date/prototype/toLocaleDateString/not-a-constructor.js index dd8cbb452c0..f304a948d7d 100644 --- a/test/built-ins/Date/prototype/toLocaleDateString/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toLocaleDateString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toLocaleDateString(); -}, '`let date = new Date(Date.now()); new date.toLocaleDateString()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toLocaleString/not-a-constructor.js b/test/built-ins/Date/prototype/toLocaleString/not-a-constructor.js index e64a4c96dc9..299956fdca5 100644 --- a/test/built-ins/Date/prototype/toLocaleString/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toLocaleString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toLocaleString(); -}, '`let date = new Date(Date.now()); new date.toLocaleString()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toLocaleTimeString/not-a-constructor.js b/test/built-ins/Date/prototype/toLocaleTimeString/not-a-constructor.js index 8ea04301508..4635a1558de 100644 --- a/test/built-ins/Date/prototype/toLocaleTimeString/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toLocaleTimeString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toLocaleTimeString(); -}, '`let date = new Date(Date.now()); new date.toLocaleTimeString()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toString/not-a-constructor.js b/test/built-ins/Date/prototype/toString/not-a-constructor.js index 1d6e8d2d27b..61d0aee3e86 100644 --- a/test/built-ins/Date/prototype/toString/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toString(); -}, '`let date = new Date(Date.now()); new date.toString()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toTimeString/not-a-constructor.js b/test/built-ins/Date/prototype/toTimeString/not-a-constructor.js index c55fd5ac3dc..6b4179bb647 100644 --- a/test/built-ins/Date/prototype/toTimeString/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toTimeString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toTimeString(); -}, '`let date = new Date(Date.now()); new date.toTimeString()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/toUTCString/not-a-constructor.js b/test/built-ins/Date/prototype/toUTCString/not-a-constructor.js index 1554cb55be6..0747f238eda 100644 --- a/test/built-ins/Date/prototype/toUTCString/not-a-constructor.js +++ b/test/built-ins/Date/prototype/toUTCString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.toUTCString(); -}, '`let date = new Date(Date.now()); new date.toUTCString()` throws TypeError'); +}); diff --git a/test/built-ins/Date/prototype/valueOf/not-a-constructor.js b/test/built-ins/Date/prototype/valueOf/not-a-constructor.js index ce4a2083f01..5098688573a 100644 --- a/test/built-ins/Date/prototype/valueOf/not-a-constructor.js +++ b/test/built-ins/Date/prototype/valueOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let date = new Date(Date.now()); new date.valueOf(); -}, '`let date = new Date(Date.now()); new date.valueOf()` throws TypeError'); +}); diff --git a/test/built-ins/Error/prototype/toString/not-a-constructor.js b/test/built-ins/Error/prototype/toString/not-a-constructor.js index ce2591120fc..13fba2df180 100644 --- a/test/built-ins/Error/prototype/toString/not-a-constructor.js +++ b/test/built-ins/Error/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Error.prototype.toString(); -}, '`new Error.prototype.toString()` throws TypeError'); +}); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/not-a-constructor.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/not-a-constructor.js index 9bc781182e6..136a9c471a7 100644 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/not-a-constructor.js +++ b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let fr = new FinalizationRegistry(() => {}); new fr.cleanupSome(() => {}); -}, '`let fr = new FinalizationRegistry(() => {}); new fr.cleanupSome(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/FinalizationRegistry/prototype/register/not-a-constructor.js b/test/built-ins/FinalizationRegistry/prototype/register/not-a-constructor.js index 4599b8016e2..7c5871d13f5 100644 --- a/test/built-ins/FinalizationRegistry/prototype/register/not-a-constructor.js +++ b/test/built-ins/FinalizationRegistry/prototype/register/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let fr = new FinalizationRegistry(() => {}); new fr.register({}); -}, '`let fr = new FinalizationRegistry(() => {}); new fr.register({})` throws TypeError'); +}); diff --git a/test/built-ins/FinalizationRegistry/prototype/unregister/not-a-constructor.js b/test/built-ins/FinalizationRegistry/prototype/unregister/not-a-constructor.js index 530a432f3bf..e538e51440f 100644 --- a/test/built-ins/FinalizationRegistry/prototype/unregister/not-a-constructor.js +++ b/test/built-ins/FinalizationRegistry/prototype/unregister/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let fr = new FinalizationRegistry(() => {}); let token = {}; fr.register(token); new fr.unregister(token); -}, '`let fr = new FinalizationRegistry(() => {}); let token = {}; fr.register(token); new fr.unregister(token)` throws TypeError'); +}); diff --git a/test/built-ins/Function/prototype/apply/not-a-constructor.js b/test/built-ins/Function/prototype/apply/not-a-constructor.js index c808b02011b..85f99273db2 100644 --- a/test/built-ins/Function/prototype/apply/not-a-constructor.js +++ b/test/built-ins/Function/prototype/apply/not-a-constructor.js @@ -29,8 +29,8 @@ assert.sameValue( assert.throws(TypeError, () => { new Function.prototype.apply; -}, '`new Function.prototype.apply` throws TypeError'); +}); assert.throws(TypeError, () => { new Function.prototype.apply(); -}, '`new Function.prototype.apply()` throws TypeError'); +}); diff --git a/test/built-ins/Function/prototype/bind/not-a-constructor.js b/test/built-ins/Function/prototype/bind/not-a-constructor.js index 2ad5ab62a72..0d37e20bc68 100644 --- a/test/built-ins/Function/prototype/bind/not-a-constructor.js +++ b/test/built-ins/Function/prototype/bind/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Function.prototype.bind(); -}, '`new Function.prototype.bind()` throws TypeError'); +}); diff --git a/test/built-ins/Function/prototype/call/not-a-constructor.js b/test/built-ins/Function/prototype/call/not-a-constructor.js index 34260535bd5..db82832b355 100644 --- a/test/built-ins/Function/prototype/call/not-a-constructor.js +++ b/test/built-ins/Function/prototype/call/not-a-constructor.js @@ -29,11 +29,11 @@ assert.sameValue( assert.throws(TypeError, () => { new Function.prototype.call(); -}, '`new Function.prototype.call()` throws TypeError'); +}); assert.throws(TypeError, () => { new Function.prototype.call; -}, '`new Function.prototype.call` throws TypeError'); +}); var call = Function.prototype.call; assert.throws(TypeError, () => { diff --git a/test/built-ins/Function/prototype/toString/not-a-constructor.js b/test/built-ins/Function/prototype/toString/not-a-constructor.js index e5725c33284..0028d480761 100644 --- a/test/built-ins/Function/prototype/toString/not-a-constructor.js +++ b/test/built-ins/Function/prototype/toString/not-a-constructor.js @@ -29,9 +29,9 @@ assert.sameValue( assert.throws(TypeError, () => { new Function.prototype.toString(); -}, '`new Function.prototype.toString()` throws TypeError'); +}); var toString = Function.prototype.toString; assert.throws(TypeError, () => { new toString; -}, '`new toString` throws TypeError'); +}); diff --git a/test/built-ins/GeneratorPrototype/next/not-a-constructor.js b/test/built-ins/GeneratorPrototype/next/not-a-constructor.js index 2db989485fa..50d259e1b09 100644 --- a/test/built-ins/GeneratorPrototype/next/not-a-constructor.js +++ b/test/built-ins/GeneratorPrototype/next/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { function* g() {} let iterator = g(); new iterator.next(); -}, '`function* g() {} let iterator = g(); new iterator.next()` throws TypeError'); +}); diff --git a/test/built-ins/GeneratorPrototype/return/not-a-constructor.js b/test/built-ins/GeneratorPrototype/return/not-a-constructor.js index 3ab0be9b0fa..aa04f561754 100644 --- a/test/built-ins/GeneratorPrototype/return/not-a-constructor.js +++ b/test/built-ins/GeneratorPrototype/return/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { function* g() {} let iterator = g(); new iterator.return(); -}, '`function* g() {} let iterator = g(); new iterator.return()` throws TypeError'); +}); diff --git a/test/built-ins/GeneratorPrototype/throw/not-a-constructor.js b/test/built-ins/GeneratorPrototype/throw/not-a-constructor.js index 45003752136..3f5ac7441ed 100644 --- a/test/built-ins/GeneratorPrototype/throw/not-a-constructor.js +++ b/test/built-ins/GeneratorPrototype/throw/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { function* g() {} let expected = new Test262Error(); let iterator = g();try {new iterator.throw(expected);} catch (e) {if (e !== expected) {throw e;}} -}, '`function* g() {} let expected = new Test262Error(); let iterator = g();try {new iterator.throw(expected);} catch (e) {if (e !== expected) {throw e;}}` throws TypeError'); +}); diff --git a/test/built-ins/JSON/parse/not-a-constructor.js b/test/built-ins/JSON/parse/not-a-constructor.js index 2ae56da307c..c029c134b49 100644 --- a/test/built-ins/JSON/parse/not-a-constructor.js +++ b/test/built-ins/JSON/parse/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(JSON.parse), false, 'isConstructor(JSON.parse) mu assert.throws(TypeError, () => { new JSON.parse('{}'); -}, '`new JSON.parse(\'{}\')` throws TypeError'); +}); diff --git a/test/built-ins/JSON/stringify/not-a-constructor.js b/test/built-ins/JSON/stringify/not-a-constructor.js index e702a03026a..c9a656aded6 100644 --- a/test/built-ins/JSON/stringify/not-a-constructor.js +++ b/test/built-ins/JSON/stringify/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(JSON.stringify), false, 'isConstructor(JSON.strin assert.throws(TypeError, () => { new JSON.stringify({}); -}, '`new JSON.stringify({})` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/Symbol.iterator/not-a-constructor.js b/test/built-ins/Map/prototype/Symbol.iterator/not-a-constructor.js index a6c92886f3c..49a9baebefa 100644 --- a/test/built-ins/Map/prototype/Symbol.iterator/not-a-constructor.js +++ b/test/built-ins/Map/prototype/Symbol.iterator/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let m = new Map(); new m[Symbol.iterator](); -}, '`let m = new Map(); new m[Symbol.iterator]()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/clear/not-a-constructor.js b/test/built-ins/Map/prototype/clear/not-a-constructor.js index 1e6c7282f5e..2f625b1434f 100644 --- a/test/built-ins/Map/prototype/clear/not-a-constructor.js +++ b/test/built-ins/Map/prototype/clear/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Map.prototype.clear), false, 'isConstructor(Map.p assert.throws(TypeError, () => { let m = new Map(); new m.clear(); -}, '`let m = new Map(); new m.clear()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/delete/not-a-constructor.js b/test/built-ins/Map/prototype/delete/not-a-constructor.js index 52a9916fc17..5eb11794656 100644 --- a/test/built-ins/Map/prototype/delete/not-a-constructor.js +++ b/test/built-ins/Map/prototype/delete/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Map.prototype.delete), false, 'isConstructor(Map. assert.throws(TypeError, () => { let m = new Map(); new m.delete(); -}, '`let m = new Map(); new m.delete()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/entries/not-a-constructor.js b/test/built-ins/Map/prototype/entries/not-a-constructor.js index 023001bd26a..374373174f9 100644 --- a/test/built-ins/Map/prototype/entries/not-a-constructor.js +++ b/test/built-ins/Map/prototype/entries/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let m = new Map(); new m.entries(); -}, '`let m = new Map(); new m.entries()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/forEach/not-a-constructor.js b/test/built-ins/Map/prototype/forEach/not-a-constructor.js index 95f15cbe1f8..ddef62114b1 100644 --- a/test/built-ins/Map/prototype/forEach/not-a-constructor.js +++ b/test/built-ins/Map/prototype/forEach/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let m = new Map(); new m.forEach(); -}, '`let m = new Map(); new m.forEach()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/get/not-a-constructor.js b/test/built-ins/Map/prototype/get/not-a-constructor.js index aeca2580c7a..ef51be812d1 100644 --- a/test/built-ins/Map/prototype/get/not-a-constructor.js +++ b/test/built-ins/Map/prototype/get/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Map.prototype.get), false, 'isConstructor(Map.pro assert.throws(TypeError, () => { let m = new Map(); new m.get(); -}, '`let m = new Map(); new m.get()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/has/not-a-constructor.js b/test/built-ins/Map/prototype/has/not-a-constructor.js index ff3861b4ff4..c76685e5a4d 100644 --- a/test/built-ins/Map/prototype/has/not-a-constructor.js +++ b/test/built-ins/Map/prototype/has/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Map.prototype.has), false, 'isConstructor(Map.pro assert.throws(TypeError, () => { let m = new Map(); new m.has(); -}, '`let m = new Map(); new m.has()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/keys/not-a-constructor.js b/test/built-ins/Map/prototype/keys/not-a-constructor.js index d35257af218..32f6178238e 100644 --- a/test/built-ins/Map/prototype/keys/not-a-constructor.js +++ b/test/built-ins/Map/prototype/keys/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Map.prototype.keys), false, 'isConstructor(Map.pr assert.throws(TypeError, () => { let m = new Map(); new m.keys(); -}, '`let m = new Map(); new m.keys()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/set/not-a-constructor.js b/test/built-ins/Map/prototype/set/not-a-constructor.js index 3601f7804dd..8877be34fe8 100644 --- a/test/built-ins/Map/prototype/set/not-a-constructor.js +++ b/test/built-ins/Map/prototype/set/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Map.prototype.set), false, 'isConstructor(Map.pro assert.throws(TypeError, () => { let m = new Map(); new m.set(); -}, '`let m = new Map(); new m.set()` throws TypeError'); +}); diff --git a/test/built-ins/Map/prototype/values/not-a-constructor.js b/test/built-ins/Map/prototype/values/not-a-constructor.js index 20adb0c8d76..beb95d8fb88 100644 --- a/test/built-ins/Map/prototype/values/not-a-constructor.js +++ b/test/built-ins/Map/prototype/values/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Map.prototype.values), false, 'isConstructor(Map. assert.throws(TypeError, () => { let m = new Map(); new m.values(); -}, '`let m = new Map(); new m.values()` throws TypeError'); +}); diff --git a/test/built-ins/Math/abs/not-a-constructor.js b/test/built-ins/Math/abs/not-a-constructor.js index 9f97ccbb532..6291280c405 100644 --- a/test/built-ins/Math/abs/not-a-constructor.js +++ b/test/built-ins/Math/abs/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.abs), false, 'isConstructor(Math.abs) must r assert.throws(TypeError, () => { new Math.abs(); -}, '`new Math.abs()` throws TypeError'); +}); diff --git a/test/built-ins/Math/acos/not-a-constructor.js b/test/built-ins/Math/acos/not-a-constructor.js index 438e1b23a89..cb8e846b166 100644 --- a/test/built-ins/Math/acos/not-a-constructor.js +++ b/test/built-ins/Math/acos/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.acos), false, 'isConstructor(Math.acos) must assert.throws(TypeError, () => { new Math.acos(); -}, '`new Math.acos()` throws TypeError'); +}); diff --git a/test/built-ins/Math/acosh/not-a-constructor.js b/test/built-ins/Math/acosh/not-a-constructor.js index 549888fe9bc..35262694a2c 100644 --- a/test/built-ins/Math/acosh/not-a-constructor.js +++ b/test/built-ins/Math/acosh/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.acosh), false, 'isConstructor(Math.acosh) mu assert.throws(TypeError, () => { new Math.acosh(); -}, '`new Math.acosh()` throws TypeError'); +}); diff --git a/test/built-ins/Math/asin/not-a-constructor.js b/test/built-ins/Math/asin/not-a-constructor.js index c53025a1649..d5be5fcd078 100644 --- a/test/built-ins/Math/asin/not-a-constructor.js +++ b/test/built-ins/Math/asin/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.asin), false, 'isConstructor(Math.asin) must assert.throws(TypeError, () => { new Math.asin(); -}, '`new Math.asin()` throws TypeError'); +}); diff --git a/test/built-ins/Math/asinh/not-a-constructor.js b/test/built-ins/Math/asinh/not-a-constructor.js index 1803000c2a5..a67c955e00a 100644 --- a/test/built-ins/Math/asinh/not-a-constructor.js +++ b/test/built-ins/Math/asinh/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.asinh), false, 'isConstructor(Math.asinh) mu assert.throws(TypeError, () => { new Math.asinh(); -}, '`new Math.asinh()` throws TypeError'); +}); diff --git a/test/built-ins/Math/atan/not-a-constructor.js b/test/built-ins/Math/atan/not-a-constructor.js index d6037d6b220..0128758d4bb 100644 --- a/test/built-ins/Math/atan/not-a-constructor.js +++ b/test/built-ins/Math/atan/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.atan), false, 'isConstructor(Math.atan) must assert.throws(TypeError, () => { new Math.atan(); -}, '`new Math.atan()` throws TypeError'); +}); diff --git a/test/built-ins/Math/atan2/not-a-constructor.js b/test/built-ins/Math/atan2/not-a-constructor.js index 54f3ab02f33..fb782bf1bb8 100644 --- a/test/built-ins/Math/atan2/not-a-constructor.js +++ b/test/built-ins/Math/atan2/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.atan2), false, 'isConstructor(Math.atan2) mu assert.throws(TypeError, () => { new Math.atan2(); -}, '`new Math.atan2()` throws TypeError'); +}); diff --git a/test/built-ins/Math/atanh/not-a-constructor.js b/test/built-ins/Math/atanh/not-a-constructor.js index d1b9fe8f5ef..2587db59d95 100644 --- a/test/built-ins/Math/atanh/not-a-constructor.js +++ b/test/built-ins/Math/atanh/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.atanh), false, 'isConstructor(Math.atanh) mu assert.throws(TypeError, () => { new Math.atanh(); -}, '`new Math.atanh()` throws TypeError'); +}); diff --git a/test/built-ins/Math/cbrt/not-a-constructor.js b/test/built-ins/Math/cbrt/not-a-constructor.js index 219a13e7b36..ceb211dcce0 100644 --- a/test/built-ins/Math/cbrt/not-a-constructor.js +++ b/test/built-ins/Math/cbrt/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.cbrt), false, 'isConstructor(Math.cbrt) must assert.throws(TypeError, () => { new Math.cbrt(); -}, '`new Math.cbrt()` throws TypeError'); +}); diff --git a/test/built-ins/Math/ceil/not-a-constructor.js b/test/built-ins/Math/ceil/not-a-constructor.js index d98f5ad5223..15dab81c20a 100644 --- a/test/built-ins/Math/ceil/not-a-constructor.js +++ b/test/built-ins/Math/ceil/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.ceil), false, 'isConstructor(Math.ceil) must assert.throws(TypeError, () => { new Math.ceil(); -}, '`new Math.ceil()` throws TypeError'); +}); diff --git a/test/built-ins/Math/clz32/not-a-constructor.js b/test/built-ins/Math/clz32/not-a-constructor.js index 19c24d11b11..fb498a02185 100644 --- a/test/built-ins/Math/clz32/not-a-constructor.js +++ b/test/built-ins/Math/clz32/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.clz32), false, 'isConstructor(Math.clz32) mu assert.throws(TypeError, () => { new Math.clz32(); -}, '`new Math.clz32()` throws TypeError'); +}); diff --git a/test/built-ins/Math/cos/not-a-constructor.js b/test/built-ins/Math/cos/not-a-constructor.js index 1de13988cc1..f152a861c2f 100644 --- a/test/built-ins/Math/cos/not-a-constructor.js +++ b/test/built-ins/Math/cos/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.cos), false, 'isConstructor(Math.cos) must r assert.throws(TypeError, () => { new Math.cos(); -}, '`new Math.cos()` throws TypeError'); +}); diff --git a/test/built-ins/Math/cosh/not-a-constructor.js b/test/built-ins/Math/cosh/not-a-constructor.js index d1c27bbb929..cd8c57b91c3 100644 --- a/test/built-ins/Math/cosh/not-a-constructor.js +++ b/test/built-ins/Math/cosh/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.cosh), false, 'isConstructor(Math.cosh) must assert.throws(TypeError, () => { new Math.cosh(); -}, '`new Math.cosh()` throws TypeError'); +}); diff --git a/test/built-ins/Math/exp/not-a-constructor.js b/test/built-ins/Math/exp/not-a-constructor.js index 627ac218ff7..4a8823bcd69 100644 --- a/test/built-ins/Math/exp/not-a-constructor.js +++ b/test/built-ins/Math/exp/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.exp), false, 'isConstructor(Math.exp) must r assert.throws(TypeError, () => { new Math.exp(); -}, '`new Math.exp()` throws TypeError'); +}); diff --git a/test/built-ins/Math/expm1/not-a-constructor.js b/test/built-ins/Math/expm1/not-a-constructor.js index aa1ec5f5ea0..0e93c9b40cf 100644 --- a/test/built-ins/Math/expm1/not-a-constructor.js +++ b/test/built-ins/Math/expm1/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.expm1), false, 'isConstructor(Math.expm1) mu assert.throws(TypeError, () => { new Math.expm1(); -}, '`new Math.expm1()` throws TypeError'); +}); diff --git a/test/built-ins/Math/floor/not-a-constructor.js b/test/built-ins/Math/floor/not-a-constructor.js index e6e816c378b..a1d6dc45c50 100644 --- a/test/built-ins/Math/floor/not-a-constructor.js +++ b/test/built-ins/Math/floor/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.floor), false, 'isConstructor(Math.floor) mu assert.throws(TypeError, () => { new Math.floor(); -}, '`new Math.floor()` throws TypeError'); +}); diff --git a/test/built-ins/Math/fround/not-a-constructor.js b/test/built-ins/Math/fround/not-a-constructor.js index 307a77e8de3..66196cf8783 100644 --- a/test/built-ins/Math/fround/not-a-constructor.js +++ b/test/built-ins/Math/fround/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.fround), false, 'isConstructor(Math.fround) assert.throws(TypeError, () => { new Math.fround(); -}, '`new Math.fround()` throws TypeError'); +}); diff --git a/test/built-ins/Math/hypot/not-a-constructor.js b/test/built-ins/Math/hypot/not-a-constructor.js index 90c502222fe..bb0e5169ab0 100644 --- a/test/built-ins/Math/hypot/not-a-constructor.js +++ b/test/built-ins/Math/hypot/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.hypot), false, 'isConstructor(Math.hypot) mu assert.throws(TypeError, () => { new Math.hypot(); -}, '`new Math.hypot()` throws TypeError'); +}); diff --git a/test/built-ins/Math/imul/not-a-constructor.js b/test/built-ins/Math/imul/not-a-constructor.js index a7778acc513..8ad11f36ad0 100644 --- a/test/built-ins/Math/imul/not-a-constructor.js +++ b/test/built-ins/Math/imul/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.imul), false, 'isConstructor(Math.imul) must assert.throws(TypeError, () => { new Math.imul(); -}, '`new Math.imul()` throws TypeError'); +}); diff --git a/test/built-ins/Math/log/not-a-constructor.js b/test/built-ins/Math/log/not-a-constructor.js index cc6fc9f8734..cbe2fe28fdd 100644 --- a/test/built-ins/Math/log/not-a-constructor.js +++ b/test/built-ins/Math/log/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.log), false, 'isConstructor(Math.log) must r assert.throws(TypeError, () => { new Math.log(); -}, '`new Math.log()` throws TypeError'); +}); diff --git a/test/built-ins/Math/log10/not-a-constructor.js b/test/built-ins/Math/log10/not-a-constructor.js index 2dd276a0fba..527596153e3 100644 --- a/test/built-ins/Math/log10/not-a-constructor.js +++ b/test/built-ins/Math/log10/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.log10), false, 'isConstructor(Math.log10) mu assert.throws(TypeError, () => { new Math.log10(); -}, '`new Math.log10()` throws TypeError'); +}); diff --git a/test/built-ins/Math/log1p/not-a-constructor.js b/test/built-ins/Math/log1p/not-a-constructor.js index bfb7f5bc54c..a8a31daac00 100644 --- a/test/built-ins/Math/log1p/not-a-constructor.js +++ b/test/built-ins/Math/log1p/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.log1p), false, 'isConstructor(Math.log1p) mu assert.throws(TypeError, () => { new Math.log1p(); -}, '`new Math.log1p()` throws TypeError'); +}); diff --git a/test/built-ins/Math/log2/not-a-constructor.js b/test/built-ins/Math/log2/not-a-constructor.js index 386acaac2a0..e8c81edc21d 100644 --- a/test/built-ins/Math/log2/not-a-constructor.js +++ b/test/built-ins/Math/log2/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.log2), false, 'isConstructor(Math.log2) must assert.throws(TypeError, () => { new Math.log2(); -}, '`new Math.log2()` throws TypeError'); +}); diff --git a/test/built-ins/Math/max/not-a-constructor.js b/test/built-ins/Math/max/not-a-constructor.js index 5a53a7d382d..9a1a8569e6d 100644 --- a/test/built-ins/Math/max/not-a-constructor.js +++ b/test/built-ins/Math/max/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.max), false, 'isConstructor(Math.max) must r assert.throws(TypeError, () => { new Math.max(); -}, '`new Math.max()` throws TypeError'); +}); diff --git a/test/built-ins/Math/min/not-a-constructor.js b/test/built-ins/Math/min/not-a-constructor.js index e5a77a1b64c..ae759e91404 100644 --- a/test/built-ins/Math/min/not-a-constructor.js +++ b/test/built-ins/Math/min/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.min), false, 'isConstructor(Math.min) must r assert.throws(TypeError, () => { new Math.min(); -}, '`new Math.min()` throws TypeError'); +}); diff --git a/test/built-ins/Math/pow/not-a-constructor.js b/test/built-ins/Math/pow/not-a-constructor.js index 7ca5ac400d4..87437db4393 100644 --- a/test/built-ins/Math/pow/not-a-constructor.js +++ b/test/built-ins/Math/pow/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.pow), false, 'isConstructor(Math.pow) must r assert.throws(TypeError, () => { new Math.pow(); -}, '`new Math.pow()` throws TypeError'); +}); diff --git a/test/built-ins/Math/random/not-a-constructor.js b/test/built-ins/Math/random/not-a-constructor.js index 9dce5ebb914..996a4290702 100644 --- a/test/built-ins/Math/random/not-a-constructor.js +++ b/test/built-ins/Math/random/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.random), false, 'isConstructor(Math.random) assert.throws(TypeError, () => { new Math.random(); -}, '`new Math.random()` throws TypeError'); +}); diff --git a/test/built-ins/Math/round/not-a-constructor.js b/test/built-ins/Math/round/not-a-constructor.js index 8021cf1f336..18ab6e1f8b4 100644 --- a/test/built-ins/Math/round/not-a-constructor.js +++ b/test/built-ins/Math/round/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.round), false, 'isConstructor(Math.round) mu assert.throws(TypeError, () => { new Math.round(); -}, '`new Math.round()` throws TypeError'); +}); diff --git a/test/built-ins/Math/sign/not-a-constructor.js b/test/built-ins/Math/sign/not-a-constructor.js index a6706b1c86b..fa5ca3b642d 100644 --- a/test/built-ins/Math/sign/not-a-constructor.js +++ b/test/built-ins/Math/sign/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.sign), false, 'isConstructor(Math.sign) must assert.throws(TypeError, () => { new Math.sign(); -}, '`new Math.sign()` throws TypeError'); +}); diff --git a/test/built-ins/Math/sin/not-a-constructor.js b/test/built-ins/Math/sin/not-a-constructor.js index d3a124ee89d..b9f8c1886f1 100644 --- a/test/built-ins/Math/sin/not-a-constructor.js +++ b/test/built-ins/Math/sin/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.sin), false, 'isConstructor(Math.sin) must r assert.throws(TypeError, () => { new Math.sin(); -}, '`new Math.sin()` throws TypeError'); +}); diff --git a/test/built-ins/Math/sinh/not-a-constructor.js b/test/built-ins/Math/sinh/not-a-constructor.js index c5c9a1cb8b6..d868d7266ac 100644 --- a/test/built-ins/Math/sinh/not-a-constructor.js +++ b/test/built-ins/Math/sinh/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.sinh), false, 'isConstructor(Math.sinh) must assert.throws(TypeError, () => { new Math.sinh(); -}, '`new Math.sinh()` throws TypeError'); +}); diff --git a/test/built-ins/Math/sqrt/not-a-constructor.js b/test/built-ins/Math/sqrt/not-a-constructor.js index a74a1651653..9dcc8ca6592 100644 --- a/test/built-ins/Math/sqrt/not-a-constructor.js +++ b/test/built-ins/Math/sqrt/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.sqrt), false, 'isConstructor(Math.sqrt) must assert.throws(TypeError, () => { new Math.sqrt(); -}, '`new Math.sqrt()` throws TypeError'); +}); diff --git a/test/built-ins/Math/tan/not-a-constructor.js b/test/built-ins/Math/tan/not-a-constructor.js index 39343eabb58..b19087a2be3 100644 --- a/test/built-ins/Math/tan/not-a-constructor.js +++ b/test/built-ins/Math/tan/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.tan), false, 'isConstructor(Math.tan) must r assert.throws(TypeError, () => { new Math.tan(); -}, '`new Math.tan()` throws TypeError'); +}); diff --git a/test/built-ins/Math/tanh/not-a-constructor.js b/test/built-ins/Math/tanh/not-a-constructor.js index 654287259ea..dfedc1480df 100644 --- a/test/built-ins/Math/tanh/not-a-constructor.js +++ b/test/built-ins/Math/tanh/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.tanh), false, 'isConstructor(Math.tanh) must assert.throws(TypeError, () => { new Math.tanh(); -}, '`new Math.tanh()` throws TypeError'); +}); diff --git a/test/built-ins/Math/trunc/not-a-constructor.js b/test/built-ins/Math/trunc/not-a-constructor.js index 8f05f271597..2fbbdc41299 100644 --- a/test/built-ins/Math/trunc/not-a-constructor.js +++ b/test/built-ins/Math/trunc/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Math.trunc), false, 'isConstructor(Math.trunc) mu assert.throws(TypeError, () => { new Math.trunc(); -}, '`new Math.trunc()` throws TypeError'); +}); diff --git a/test/built-ins/Number/isFinite/not-a-constructor.js b/test/built-ins/Number/isFinite/not-a-constructor.js index 2e98a092084..18343cc72e7 100644 --- a/test/built-ins/Number/isFinite/not-a-constructor.js +++ b/test/built-ins/Number/isFinite/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Number.isFinite), false, 'isConstructor(Number.is assert.throws(TypeError, () => { new Number.isFinite(); -}, '`new Number.isFinite()` throws TypeError'); +}); diff --git a/test/built-ins/Number/isInteger/not-a-constructor.js b/test/built-ins/Number/isInteger/not-a-constructor.js index 38afae3fbc1..6a4ebe18d69 100644 --- a/test/built-ins/Number/isInteger/not-a-constructor.js +++ b/test/built-ins/Number/isInteger/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Number.isInteger), false, 'isConstructor(Number.i assert.throws(TypeError, () => { new Number.isInteger(); -}, '`new Number.isInteger()` throws TypeError'); +}); diff --git a/test/built-ins/Number/isNaN/not-a-constructor.js b/test/built-ins/Number/isNaN/not-a-constructor.js index a08feb4889b..57f4584146c 100644 --- a/test/built-ins/Number/isNaN/not-a-constructor.js +++ b/test/built-ins/Number/isNaN/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Number.isNaN), false, 'isConstructor(Number.isNaN assert.throws(TypeError, () => { new Number.isNaN(); -}, '`new Number.isNaN()` throws TypeError'); +}); diff --git a/test/built-ins/Number/isSafeInteger/not-a-constructor.js b/test/built-ins/Number/isSafeInteger/not-a-constructor.js index 1a12c01a7f2..da6b090bbb7 100644 --- a/test/built-ins/Number/isSafeInteger/not-a-constructor.js +++ b/test/built-ins/Number/isSafeInteger/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Number.isSafeInteger), false, 'isConstructor(Numb assert.throws(TypeError, () => { new Number.isSafeInteger(); -}, '`new Number.isSafeInteger()` throws TypeError'); +}); diff --git a/test/built-ins/Number/parseFloat/not-a-constructor.js b/test/built-ins/Number/parseFloat/not-a-constructor.js index 47c8d66ff60..b38f4fb4f1f 100644 --- a/test/built-ins/Number/parseFloat/not-a-constructor.js +++ b/test/built-ins/Number/parseFloat/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Number.parseFloat), false, 'isConstructor(Number. assert.throws(TypeError, () => { new Number.parseFloat(); -}, '`new Number.parseFloat()` throws TypeError'); +}); diff --git a/test/built-ins/Number/parseInt/not-a-constructor.js b/test/built-ins/Number/parseInt/not-a-constructor.js index 01a45b57deb..6c68b2b6dd5 100644 --- a/test/built-ins/Number/parseInt/not-a-constructor.js +++ b/test/built-ins/Number/parseInt/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Number.parseInt), false, 'isConstructor(Number.pa assert.throws(TypeError, () => { new Number.parseInt(); -}, '`new Number.parseInt()` throws TypeError'); +}); diff --git a/test/built-ins/Number/prototype/toExponential/not-a-constructor.js b/test/built-ins/Number/prototype/toExponential/not-a-constructor.js index 0b527a0da75..56d6e83201d 100644 --- a/test/built-ins/Number/prototype/toExponential/not-a-constructor.js +++ b/test/built-ins/Number/prototype/toExponential/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Number.prototype.toExponential(); -}, '`new Number.prototype.toExponential()` throws TypeError'); +}); diff --git a/test/built-ins/Number/prototype/toFixed/not-a-constructor.js b/test/built-ins/Number/prototype/toFixed/not-a-constructor.js index cac5784b5b4..915a52fa168 100644 --- a/test/built-ins/Number/prototype/toFixed/not-a-constructor.js +++ b/test/built-ins/Number/prototype/toFixed/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Number.prototype.toFixed(); -}, '`new Number.prototype.toFixed()` throws TypeError'); +}); diff --git a/test/built-ins/Number/prototype/toLocaleString/not-a-constructor.js b/test/built-ins/Number/prototype/toLocaleString/not-a-constructor.js index 3def72b7a6d..cc998dfacd4 100644 --- a/test/built-ins/Number/prototype/toLocaleString/not-a-constructor.js +++ b/test/built-ins/Number/prototype/toLocaleString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Number.prototype.toLocaleString(); -}, '`new Number.prototype.toLocaleString()` throws TypeError'); +}); diff --git a/test/built-ins/Number/prototype/toPrecision/not-a-constructor.js b/test/built-ins/Number/prototype/toPrecision/not-a-constructor.js index a53b9c41a6e..aad7f5ff75f 100644 --- a/test/built-ins/Number/prototype/toPrecision/not-a-constructor.js +++ b/test/built-ins/Number/prototype/toPrecision/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Number.prototype.toPrecision(); -}, '`new Number.prototype.toPrecision()` throws TypeError'); +}); diff --git a/test/built-ins/Number/prototype/toString/not-a-constructor.js b/test/built-ins/Number/prototype/toString/not-a-constructor.js index 67daa524cad..2312bc09aa9 100644 --- a/test/built-ins/Number/prototype/toString/not-a-constructor.js +++ b/test/built-ins/Number/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Number.prototype.toString(); -}, '`new Number.prototype.toString()` throws TypeError'); +}); diff --git a/test/built-ins/Number/prototype/valueOf/not-a-constructor.js b/test/built-ins/Number/prototype/valueOf/not-a-constructor.js index c7ed6746937..017f3fdc5cc 100644 --- a/test/built-ins/Number/prototype/valueOf/not-a-constructor.js +++ b/test/built-ins/Number/prototype/valueOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Number.prototype.valueOf(); -}, '`new Number.prototype.valueOf()` throws TypeError'); +}); diff --git a/test/built-ins/Object/assign/not-a-constructor.js b/test/built-ins/Object/assign/not-a-constructor.js index f2e0f853853..b2cd6390b59 100644 --- a/test/built-ins/Object/assign/not-a-constructor.js +++ b/test/built-ins/Object/assign/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.assign), false, 'isConstructor(Object.assi assert.throws(TypeError, () => { new Object.assign({}); -}, '`new Object.assign({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/create/not-a-constructor.js b/test/built-ins/Object/create/not-a-constructor.js index cb5d71fe8eb..3545b5953e6 100644 --- a/test/built-ins/Object/create/not-a-constructor.js +++ b/test/built-ins/Object/create/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.create), false, 'isConstructor(Object.crea assert.throws(TypeError, () => { new Object.create(null); -}, '`new Object.create(null)` throws TypeError'); +}); diff --git a/test/built-ins/Object/defineProperties/not-a-constructor.js b/test/built-ins/Object/defineProperties/not-a-constructor.js index c706111611a..540f5668711 100644 --- a/test/built-ins/Object/defineProperties/not-a-constructor.js +++ b/test/built-ins/Object/defineProperties/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.defineProperties({}, {}); -}, '`new Object.defineProperties({}, {})` throws TypeError'); +}); diff --git a/test/built-ins/Object/defineProperty/not-a-constructor.js b/test/built-ins/Object/defineProperty/not-a-constructor.js index 161b10dc1a7..57522e19d49 100644 --- a/test/built-ins/Object/defineProperty/not-a-constructor.js +++ b/test/built-ins/Object/defineProperty/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.defineProperty({}, '', {}); -}, '`new Object.defineProperty({}, \'\', {})` throws TypeError'); +}); diff --git a/test/built-ins/Object/entries/not-a-constructor.js b/test/built-ins/Object/entries/not-a-constructor.js index 534f224b232..ced992ac3e9 100644 --- a/test/built-ins/Object/entries/not-a-constructor.js +++ b/test/built-ins/Object/entries/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.entries), false, 'isConstructor(Object.ent assert.throws(TypeError, () => { new Object.entries({}); -}, '`new Object.entries({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/freeze/not-a-constructor.js b/test/built-ins/Object/freeze/not-a-constructor.js index df3fa4f3061..ff9fdbc8a9b 100644 --- a/test/built-ins/Object/freeze/not-a-constructor.js +++ b/test/built-ins/Object/freeze/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.freeze), false, 'isConstructor(Object.free assert.throws(TypeError, () => { new Object.freeze({}); -}, '`new Object.freeze({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/fromEntries/not-a-constructor.js b/test/built-ins/Object/fromEntries/not-a-constructor.js index 891f5fd1815..b95219d5e57 100644 --- a/test/built-ins/Object/fromEntries/not-a-constructor.js +++ b/test/built-ins/Object/fromEntries/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.fromEntries), false, 'isConstructor(Object assert.throws(TypeError, () => { new Object.fromEntries([]); -}, '`new Object.fromEntries([])` throws TypeError'); +}); diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/not-a-constructor.js b/test/built-ins/Object/getOwnPropertyDescriptor/not-a-constructor.js index 318fd4ce585..72936dd871a 100644 --- a/test/built-ins/Object/getOwnPropertyDescriptor/not-a-constructor.js +++ b/test/built-ins/Object/getOwnPropertyDescriptor/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.getOwnPropertyDescriptor({}, ''); -}, '`new Object.getOwnPropertyDescriptor({}, \'\')` throws TypeError'); +}); diff --git a/test/built-ins/Object/getOwnPropertyDescriptors/not-a-constructor.js b/test/built-ins/Object/getOwnPropertyDescriptors/not-a-constructor.js index a4b02ca412a..422cd3978c1 100644 --- a/test/built-ins/Object/getOwnPropertyDescriptors/not-a-constructor.js +++ b/test/built-ins/Object/getOwnPropertyDescriptors/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.getOwnPropertyDescriptors({}); -}, '`new Object.getOwnPropertyDescriptors({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/getOwnPropertyNames/not-a-constructor.js b/test/built-ins/Object/getOwnPropertyNames/not-a-constructor.js index 48805a1758f..505e3acd045 100644 --- a/test/built-ins/Object/getOwnPropertyNames/not-a-constructor.js +++ b/test/built-ins/Object/getOwnPropertyNames/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.getOwnPropertyNames({}); -}, '`new Object.getOwnPropertyNames({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/getOwnPropertySymbols/not-a-constructor.js b/test/built-ins/Object/getOwnPropertySymbols/not-a-constructor.js index 323b9f6b3fd..bd13826e0ea 100644 --- a/test/built-ins/Object/getOwnPropertySymbols/not-a-constructor.js +++ b/test/built-ins/Object/getOwnPropertySymbols/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.getOwnPropertySymbols({}); -}, '`new Object.getOwnPropertySymbols({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/getPrototypeOf/not-a-constructor.js b/test/built-ins/Object/getPrototypeOf/not-a-constructor.js index 020ebb30bb0..2652dd93c39 100644 --- a/test/built-ins/Object/getPrototypeOf/not-a-constructor.js +++ b/test/built-ins/Object/getPrototypeOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.getPrototypeOf({}); -}, '`new Object.getPrototypeOf({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/hasOwn/not-a-constructor.js b/test/built-ins/Object/hasOwn/not-a-constructor.js index 901d94b32e7..8c4d2cfec20 100644 --- a/test/built-ins/Object/hasOwn/not-a-constructor.js +++ b/test/built-ins/Object/hasOwn/not-a-constructor.js @@ -30,4 +30,4 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.hasOwn(''); -}, '`new Object.hasOwn(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/Object/is/not-a-constructor.js b/test/built-ins/Object/is/not-a-constructor.js index a032f433689..68ee0593f7f 100644 --- a/test/built-ins/Object/is/not-a-constructor.js +++ b/test/built-ins/Object/is/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.is), false, 'isConstructor(Object.is) must assert.throws(TypeError, () => { new Object.is(0, 0); -}, '`new Object.is(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/Object/isExtensible/not-a-constructor.js b/test/built-ins/Object/isExtensible/not-a-constructor.js index 9b50b5854e9..e4508c8c415 100644 --- a/test/built-ins/Object/isExtensible/not-a-constructor.js +++ b/test/built-ins/Object/isExtensible/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.isExtensible), false, 'isConstructor(Objec assert.throws(TypeError, () => { new Object.isExtensible({}); -}, '`new Object.isExtensible({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/isFrozen/not-a-constructor.js b/test/built-ins/Object/isFrozen/not-a-constructor.js index 2f5f503a168..239e494464a 100644 --- a/test/built-ins/Object/isFrozen/not-a-constructor.js +++ b/test/built-ins/Object/isFrozen/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.isFrozen), false, 'isConstructor(Object.is assert.throws(TypeError, () => { new Object.isFrozen({}); -}, '`new Object.isFrozen({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/isSealed/not-a-constructor.js b/test/built-ins/Object/isSealed/not-a-constructor.js index 8a550989f1b..88e5e91d364 100644 --- a/test/built-ins/Object/isSealed/not-a-constructor.js +++ b/test/built-ins/Object/isSealed/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.isSealed), false, 'isConstructor(Object.is assert.throws(TypeError, () => { new Object.isSealed({}); -}, '`new Object.isSealed({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/keys/not-a-constructor.js b/test/built-ins/Object/keys/not-a-constructor.js index b873f8a1b69..ff980ed4990 100644 --- a/test/built-ins/Object/keys/not-a-constructor.js +++ b/test/built-ins/Object/keys/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.keys), false, 'isConstructor(Object.keys) assert.throws(TypeError, () => { new Object.keys({}); -}, '`new Object.keys({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/preventExtensions/not-a-constructor.js b/test/built-ins/Object/preventExtensions/not-a-constructor.js index 04d51dc7170..bc4a0d75d98 100644 --- a/test/built-ins/Object/preventExtensions/not-a-constructor.js +++ b/test/built-ins/Object/preventExtensions/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.preventExtensions({}); -}, '`new Object.preventExtensions({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/prototype/hasOwnProperty/not-a-constructor.js b/test/built-ins/Object/prototype/hasOwnProperty/not-a-constructor.js index 2611407aa9b..12749f19ac6 100644 --- a/test/built-ins/Object/prototype/hasOwnProperty/not-a-constructor.js +++ b/test/built-ins/Object/prototype/hasOwnProperty/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.prototype.hasOwnProperty(''); -}, '`new Object.prototype.hasOwnProperty(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/Object/prototype/isPrototypeOf/not-a-constructor.js b/test/built-ins/Object/prototype/isPrototypeOf/not-a-constructor.js index f04cd71fbea..3971a5ad6f0 100644 --- a/test/built-ins/Object/prototype/isPrototypeOf/not-a-constructor.js +++ b/test/built-ins/Object/prototype/isPrototypeOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.prototype.isPrototypeOf({}); -}, '`new Object.prototype.isPrototypeOf({})` throws TypeError'); +}); diff --git a/test/built-ins/Object/prototype/propertyIsEnumerable/not-a-constructor.js b/test/built-ins/Object/prototype/propertyIsEnumerable/not-a-constructor.js index 9006098f1cb..dc347ef17ca 100644 --- a/test/built-ins/Object/prototype/propertyIsEnumerable/not-a-constructor.js +++ b/test/built-ins/Object/prototype/propertyIsEnumerable/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.prototype.propertyIsEnumerable(''); -}, '`new Object.prototype.propertyIsEnumerable(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/Object/prototype/toLocaleString/not-a-constructor.js b/test/built-ins/Object/prototype/toLocaleString/not-a-constructor.js index f5ee600503f..d28d1ae722b 100644 --- a/test/built-ins/Object/prototype/toLocaleString/not-a-constructor.js +++ b/test/built-ins/Object/prototype/toLocaleString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.prototype.toLocaleString(''); -}, '`new Object.prototype.toLocaleString(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/Object/prototype/toString/not-a-constructor.js b/test/built-ins/Object/prototype/toString/not-a-constructor.js index f9f86e4810a..6d6d6b46d44 100644 --- a/test/built-ins/Object/prototype/toString/not-a-constructor.js +++ b/test/built-ins/Object/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.prototype.toString(); -}, '`new Object.prototype.toString()` throws TypeError'); +}); diff --git a/test/built-ins/Object/prototype/valueOf/not-a-constructor.js b/test/built-ins/Object/prototype/valueOf/not-a-constructor.js index 380aa7a29f4..7cf0196d547 100644 --- a/test/built-ins/Object/prototype/valueOf/not-a-constructor.js +++ b/test/built-ins/Object/prototype/valueOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.prototype.valueOf(); -}, '`new Object.prototype.valueOf()` throws TypeError'); +}); diff --git a/test/built-ins/Object/seal/not-a-constructor.js b/test/built-ins/Object/seal/not-a-constructor.js index 1c6e7a00770..9165a469d76 100644 --- a/test/built-ins/Object/seal/not-a-constructor.js +++ b/test/built-ins/Object/seal/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.seal), false, 'isConstructor(Object.seal) assert.throws(TypeError, () => { new Object.seal(); -}, '`new Object.seal()` throws TypeError'); +}); diff --git a/test/built-ins/Object/setPrototypeOf/not-a-constructor.js b/test/built-ins/Object/setPrototypeOf/not-a-constructor.js index a411a6312c5..8f4c47a68c0 100644 --- a/test/built-ins/Object/setPrototypeOf/not-a-constructor.js +++ b/test/built-ins/Object/setPrototypeOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Object.setPrototypeOf({}, {}); -}, '`new Object.setPrototypeOf({}, {})` throws TypeError'); +}); diff --git a/test/built-ins/Object/values/not-a-constructor.js b/test/built-ins/Object/values/not-a-constructor.js index a1e909c5f4e..4e3c87c0095 100644 --- a/test/built-ins/Object/values/not-a-constructor.js +++ b/test/built-ins/Object/values/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Object.values), false, 'isConstructor(Object.valu assert.throws(TypeError, () => { new Object.values({}); -}, '`new Object.values({})` throws TypeError'); +}); diff --git a/test/built-ins/Promise/all/not-a-constructor.js b/test/built-ins/Promise/all/not-a-constructor.js index f4dc6ea530b..3f665b34f7e 100644 --- a/test/built-ins/Promise/all/not-a-constructor.js +++ b/test/built-ins/Promise/all/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Promise.all), false, 'isConstructor(Promise.all) assert.throws(TypeError, () => { new Promise.all([]); -}, '`new Promise.all([])` throws TypeError'); +}); diff --git a/test/built-ins/Promise/allSettled/not-a-constructor.js b/test/built-ins/Promise/allSettled/not-a-constructor.js index 69daf018c23..cc6720fbc91 100644 --- a/test/built-ins/Promise/allSettled/not-a-constructor.js +++ b/test/built-ins/Promise/allSettled/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Promise.allSettled), false, 'isConstructor(Promis assert.throws(TypeError, () => { new Promise.allSettled(); -}, '`new Promise.allSettled()` throws TypeError'); +}); diff --git a/test/built-ins/Promise/any/not-a-constructor.js b/test/built-ins/Promise/any/not-a-constructor.js index 85bd0685a9c..be8c1ccd26c 100644 --- a/test/built-ins/Promise/any/not-a-constructor.js +++ b/test/built-ins/Promise/any/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Promise.any), false, 'isConstructor(Promise.any) assert.throws(TypeError, () => { new Promise.any([1]); -}, '`new Promise.any([1])` throws TypeError'); +}); diff --git a/test/built-ins/Promise/create-resolving-functions-reject.js b/test/built-ins/Promise/create-resolving-functions-reject.js index c9df1793b91..ea22df274c6 100644 --- a/test/built-ins/Promise/create-resolving-functions-reject.js +++ b/test/built-ins/Promise/create-resolving-functions-reject.js @@ -23,7 +23,7 @@ Promise.prototype.then = function(resolve, reject) { assert.sameValue(isConstructor(reject), false, 'isConstructor(reject) must return false'); assert.throws(TypeError, () => { new reject(); - }, '`new reject()` throws TypeError'); + }); assert.sameValue(reject.length, 1, 'The value of reject.length is 1'); assert.sameValue(reject.name, '', 'The value of reject.name is ""'); diff --git a/test/built-ins/Promise/create-resolving-functions-resolve.js b/test/built-ins/Promise/create-resolving-functions-resolve.js index 7baab0c50e8..4b9abc431b5 100644 --- a/test/built-ins/Promise/create-resolving-functions-resolve.js +++ b/test/built-ins/Promise/create-resolving-functions-resolve.js @@ -23,7 +23,7 @@ Promise.prototype.then = function(resolve, reject) { assert.sameValue(isConstructor(resolve), false, 'isConstructor(resolve) must return false'); assert.throws(TypeError, () => { new resolve(); - }, '`new resolve()` throws TypeError'); + }); assert.sameValue(resolve.length, 1, 'The value of resolve.length is 1'); assert.sameValue(resolve.name, '', 'The value of resolve.name is ""'); diff --git a/test/built-ins/Promise/executor-function-not-a-constructor.js b/test/built-ins/Promise/executor-function-not-a-constructor.js index 2db5ff2a97a..ac7beec3901 100644 --- a/test/built-ins/Promise/executor-function-not-a-constructor.js +++ b/test/built-ins/Promise/executor-function-not-a-constructor.js @@ -30,5 +30,5 @@ assert.sameValue(isConstructor(executorFunction), false, 'isConstructor(executor assert.throws(TypeError, () => { new executorFunction(); -}, '`new executorFunction()` throws TypeError'); +}); diff --git a/test/built-ins/Promise/prototype/catch/not-a-constructor.js b/test/built-ins/Promise/prototype/catch/not-a-constructor.js index 2e56c34ba55..32e04e87130 100644 --- a/test/built-ins/Promise/prototype/catch/not-a-constructor.js +++ b/test/built-ins/Promise/prototype/catch/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let p = new Promise(() => {}); new p.catch(); -}, '`let p = new Promise(() => {}); new p.catch()` throws TypeError'); +}); diff --git a/test/built-ins/Promise/prototype/finally/invokes-then-with-function.js b/test/built-ins/Promise/prototype/finally/invokes-then-with-function.js index 11fc3ff0bab..025d12d577e 100644 --- a/test/built-ins/Promise/prototype/finally/invokes-then-with-function.js +++ b/test/built-ins/Promise/prototype/finally/invokes-then-with-function.js @@ -48,7 +48,7 @@ assert.sameValue(resolve.name, '', 'The value of resolve.name is ""'); assert.sameValue(isConstructor(resolve), false, 'isConstructor(resolve) must return false'); assert.throws(TypeError, () => { new resolve(); -}, '`new resolve()` throws TypeError'); +}); assert.sameValue( @@ -62,6 +62,6 @@ assert.sameValue(reject.name, '', 'The value of reject.name is ""'); assert.sameValue(isConstructor(reject), false, 'isConstructor(reject) must return false'); assert.throws(TypeError, () => { new reject(); -}, '`new reject()` throws TypeError'); +}); assert.sameValue(result, returnValue, 'The value of `result` is expected to equal the value of returnValue'); diff --git a/test/built-ins/Promise/prototype/finally/not-a-constructor.js b/test/built-ins/Promise/prototype/finally/not-a-constructor.js index edb3f988184..af6abb327cd 100644 --- a/test/built-ins/Promise/prototype/finally/not-a-constructor.js +++ b/test/built-ins/Promise/prototype/finally/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let p = new Promise(() => {}); new p.finally(); -}, '`let p = new Promise(() => {}); new p.finally()` throws TypeError'); +}); diff --git a/test/built-ins/Promise/prototype/finally/rejected-observable-then-calls-argument.js b/test/built-ins/Promise/prototype/finally/rejected-observable-then-calls-argument.js index 76ba16dfaf1..1d9bacc8aac 100644 --- a/test/built-ins/Promise/prototype/finally/rejected-observable-then-calls-argument.js +++ b/test/built-ins/Promise/prototype/finally/rejected-observable-then-calls-argument.js @@ -58,7 +58,7 @@ Promise.prototype.then = function(resolve, reject) { assert.sameValue(isConstructor(reject), false, 'isConstructor(reject) must return false'); assert.throws(TypeError, () => { new reject(); - }, '`new reject()` throws TypeError'); + }); assert.sameValue(arguments.length, 2, '`then` invoked with two arguments'); } diff --git a/test/built-ins/Promise/prototype/finally/resolved-observable-then-calls-argument.js b/test/built-ins/Promise/prototype/finally/resolved-observable-then-calls-argument.js index 3749eeac125..aab2fd16455 100644 --- a/test/built-ins/Promise/prototype/finally/resolved-observable-then-calls-argument.js +++ b/test/built-ins/Promise/prototype/finally/resolved-observable-then-calls-argument.js @@ -34,7 +34,7 @@ Promise.prototype.then = function(resolve) { assert.sameValue(isConstructor(resolve), false, 'isConstructor(resolve) must return false'); assert.throws(TypeError, () => { new resolve(); - }, '`new resolve()` throws TypeError'); + }); assert.sameValue( resolve.length, diff --git a/test/built-ins/Promise/prototype/then/not-a-constructor.js b/test/built-ins/Promise/prototype/then/not-a-constructor.js index d961a6513b4..2e5e01c4638 100644 --- a/test/built-ins/Promise/prototype/then/not-a-constructor.js +++ b/test/built-ins/Promise/prototype/then/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let p = new Promise(() => {}); new p.then(); -}, '`let p = new Promise(() => {}); new p.then()` throws TypeError'); +}); diff --git a/test/built-ins/Promise/race/not-a-constructor.js b/test/built-ins/Promise/race/not-a-constructor.js index de1ee65e78e..50bf5148634 100644 --- a/test/built-ins/Promise/race/not-a-constructor.js +++ b/test/built-ins/Promise/race/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Promise.race), false, 'isConstructor(Promise.race assert.throws(TypeError, () => { new Promise.race([]); -}, '`new Promise.race([])` throws TypeError'); +}); diff --git a/test/built-ins/Promise/reject/not-a-constructor.js b/test/built-ins/Promise/reject/not-a-constructor.js index 2b394dc1e39..1a825f02ed1 100644 --- a/test/built-ins/Promise/reject/not-a-constructor.js +++ b/test/built-ins/Promise/reject/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Promise.reject), false, 'isConstructor(Promise.re assert.throws(TypeError, () => { new Promise.reject(); -}, '`new Promise.reject()` throws TypeError'); +}); diff --git a/test/built-ins/Promise/resolve/not-a-constructor.js b/test/built-ins/Promise/resolve/not-a-constructor.js index a75ccd6ad2b..253d1ec30ee 100644 --- a/test/built-ins/Promise/resolve/not-a-constructor.js +++ b/test/built-ins/Promise/resolve/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Promise.resolve), false, 'isConstructor(Promise.r assert.throws(TypeError, () => { new Promise.resolve(); -}, '`new Promise.resolve()` throws TypeError'); +}); diff --git a/test/built-ins/Proxy/create-target-is-not-a-constructor.js b/test/built-ins/Proxy/create-target-is-not-a-constructor.js index a07fad743f7..10909767c82 100644 --- a/test/built-ins/Proxy/create-target-is-not-a-constructor.js +++ b/test/built-ins/Proxy/create-target-is-not-a-constructor.js @@ -28,4 +28,4 @@ proxy(); // the Proxy object is callable assert.sameValue(isConstructor(proxy), false, 'isConstructor(proxy) must return false'); assert.throws(TypeError, () => { new proxy(); -}, '`new proxy()` throws TypeError'); +}); diff --git a/test/built-ins/Proxy/revocable/not-a-constructor.js b/test/built-ins/Proxy/revocable/not-a-constructor.js index 239917f51eb..f3ad37ca7ba 100644 --- a/test/built-ins/Proxy/revocable/not-a-constructor.js +++ b/test/built-ins/Proxy/revocable/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Proxy.revocable), false, 'isConstructor(Proxy.rev assert.throws(TypeError, () => { new Proxy.revocable({}, {}); -}, '`new Proxy.revocable({}, {})` throws TypeError'); +}); diff --git a/test/built-ins/Proxy/revocable/revocation-function-not-a-constructor.js b/test/built-ins/Proxy/revocable/revocation-function-not-a-constructor.js index d8cbfc37a60..dc11ab26861 100644 --- a/test/built-ins/Proxy/revocable/revocation-function-not-a-constructor.js +++ b/test/built-ins/Proxy/revocable/revocation-function-not-a-constructor.js @@ -23,6 +23,6 @@ assert.sameValue( assert.sameValue(isConstructor(revocationFunction), false, 'isConstructor(revocationFunction) must return false'); assert.throws(TypeError, () => { new revocationFunction(); -}, '`new revocationFunction()` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/apply/not-a-constructor.js b/test/built-ins/Reflect/apply/not-a-constructor.js index b2811c8e564..207d36eab57 100644 --- a/test/built-ins/Reflect/apply/not-a-constructor.js +++ b/test/built-ins/Reflect/apply/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Reflect.apply), false, 'isConstructor(Reflect.app assert.throws(TypeError, () => { new Reflect.apply(() => {}, undefined, []); -}, '`new Reflect.apply(() => {}, undefined, [])` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/construct/not-a-constructor.js b/test/built-ins/Reflect/construct/not-a-constructor.js index e43abfe6dca..bd336869834 100644 --- a/test/built-ins/Reflect/construct/not-a-constructor.js +++ b/test/built-ins/Reflect/construct/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Reflect.construct), false, 'isConstructor(Reflect assert.throws(TypeError, () => { new Reflect.construct(Function, [], Function); -}, '`new Reflect.construct(Function, [], Function)` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/defineProperty/not-a-constructor.js b/test/built-ins/Reflect/defineProperty/not-a-constructor.js index a65da86ecd3..1db37c301ee 100644 --- a/test/built-ins/Reflect/defineProperty/not-a-constructor.js +++ b/test/built-ins/Reflect/defineProperty/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Reflect.defineProperty({}, ''); -}, '`new Reflect.defineProperty({}, \'\')` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/deleteProperty/not-a-constructor.js b/test/built-ins/Reflect/deleteProperty/not-a-constructor.js index 6fb9dfb569d..3b79fa5bbf4 100644 --- a/test/built-ins/Reflect/deleteProperty/not-a-constructor.js +++ b/test/built-ins/Reflect/deleteProperty/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Reflect.deleteProperty({}, ''); -}, '`new Reflect.deleteProperty({}, \'\')` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/get/not-a-constructor.js b/test/built-ins/Reflect/get/not-a-constructor.js index 9f793ba1749..7bd375557e3 100644 --- a/test/built-ins/Reflect/get/not-a-constructor.js +++ b/test/built-ins/Reflect/get/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Reflect.get), false, 'isConstructor(Reflect.get) assert.throws(TypeError, () => { new Reflect.get({}, ''); -}, '`new Reflect.get({}, \'\')` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/getOwnPropertyDescriptor/not-a-constructor.js b/test/built-ins/Reflect/getOwnPropertyDescriptor/not-a-constructor.js index cccc4051178..e05411bf67b 100644 --- a/test/built-ins/Reflect/getOwnPropertyDescriptor/not-a-constructor.js +++ b/test/built-ins/Reflect/getOwnPropertyDescriptor/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Reflect.getOwnPropertyDescriptor({}, ''); -}, '`new Reflect.getOwnPropertyDescriptor({}, \'\')` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/getPrototypeOf/not-a-constructor.js b/test/built-ins/Reflect/getPrototypeOf/not-a-constructor.js index bcb15a7343a..b6cd01f11e2 100644 --- a/test/built-ins/Reflect/getPrototypeOf/not-a-constructor.js +++ b/test/built-ins/Reflect/getPrototypeOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Reflect.getPrototypeOf({}); -}, '`new Reflect.getPrototypeOf({})` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/has/not-a-constructor.js b/test/built-ins/Reflect/has/not-a-constructor.js index c91a336f086..f397677e490 100644 --- a/test/built-ins/Reflect/has/not-a-constructor.js +++ b/test/built-ins/Reflect/has/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Reflect.has), false, 'isConstructor(Reflect.has) assert.throws(TypeError, () => { new Reflect.has(); -}, '`new Reflect.has()` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/isExtensible/not-a-constructor.js b/test/built-ins/Reflect/isExtensible/not-a-constructor.js index 3b572d8f706..9d443aac1bd 100644 --- a/test/built-ins/Reflect/isExtensible/not-a-constructor.js +++ b/test/built-ins/Reflect/isExtensible/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Reflect.isExtensible), false, 'isConstructor(Refl assert.throws(TypeError, () => { new Reflect.isExtensible({}); -}, '`new Reflect.isExtensible({})` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/ownKeys/not-a-constructor.js b/test/built-ins/Reflect/ownKeys/not-a-constructor.js index d4c2f374bd8..949ee3fa74b 100644 --- a/test/built-ins/Reflect/ownKeys/not-a-constructor.js +++ b/test/built-ins/Reflect/ownKeys/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Reflect.ownKeys), false, 'isConstructor(Reflect.o assert.throws(TypeError, () => { new Reflect.ownKeys({}); -}, '`new Reflect.ownKeys({})` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/preventExtensions/not-a-constructor.js b/test/built-ins/Reflect/preventExtensions/not-a-constructor.js index e5ffeddf094..80d1761a433 100644 --- a/test/built-ins/Reflect/preventExtensions/not-a-constructor.js +++ b/test/built-ins/Reflect/preventExtensions/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Reflect.preventExtensions({}); -}, '`new Reflect.preventExtensions({})` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/set/not-a-constructor.js b/test/built-ins/Reflect/set/not-a-constructor.js index 4a2aed58c80..f7e32f82303 100644 --- a/test/built-ins/Reflect/set/not-a-constructor.js +++ b/test/built-ins/Reflect/set/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Reflect.set), false, 'isConstructor(Reflect.set) assert.throws(TypeError, () => { new Reflect.set({}); -}, '`new Reflect.set({})` throws TypeError'); +}); diff --git a/test/built-ins/Reflect/setPrototypeOf/not-a-constructor.js b/test/built-ins/Reflect/setPrototypeOf/not-a-constructor.js index f6e35bbb4f5..c68b68c2d8f 100644 --- a/test/built-ins/Reflect/setPrototypeOf/not-a-constructor.js +++ b/test/built-ins/Reflect/setPrototypeOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new Reflect.setPrototypeOf({}, {}); -}, '`new Reflect.setPrototypeOf({}, {})` throws TypeError'); +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.match/not-a-constructor.js b/test/built-ins/RegExp/prototype/Symbol.match/not-a-constructor.js index 55a8d64a067..a3a45fcc04f 100644 --- a/test/built-ins/RegExp/prototype/Symbol.match/not-a-constructor.js +++ b/test/built-ins/RegExp/prototype/Symbol.match/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let re = new RegExp(''); new re[Symbol.match](); -}, '`let re = new RegExp(\'\'); new re[Symbol.match]()` throws TypeError'); +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.matchAll/not-a-constructor.js b/test/built-ins/RegExp/prototype/Symbol.matchAll/not-a-constructor.js index a9ce4c33137..5d0a82c9886 100644 --- a/test/built-ins/RegExp/prototype/Symbol.matchAll/not-a-constructor.js +++ b/test/built-ins/RegExp/prototype/Symbol.matchAll/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let re = new RegExp(''); new re[Symbol.matchAll](); -}, '`let re = new RegExp(\'\'); new re[Symbol.matchAll]()` throws TypeError'); +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.replace/not-a-constructor.js b/test/built-ins/RegExp/prototype/Symbol.replace/not-a-constructor.js index 27efa6ba944..69593a44eab 100644 --- a/test/built-ins/RegExp/prototype/Symbol.replace/not-a-constructor.js +++ b/test/built-ins/RegExp/prototype/Symbol.replace/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let re = new RegExp(''); new re[Symbol.replace](); -}, '`let re = new RegExp(\'\'); new re[Symbol.replace]()` throws TypeError'); +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.search/not-a-constructor.js b/test/built-ins/RegExp/prototype/Symbol.search/not-a-constructor.js index 40bcd94edc0..a0d17380d6e 100644 --- a/test/built-ins/RegExp/prototype/Symbol.search/not-a-constructor.js +++ b/test/built-ins/RegExp/prototype/Symbol.search/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let re = new RegExp(''); new re[Symbol.search](); -}, '`let re = new RegExp(\'\'); new re[Symbol.search]()` throws TypeError'); +}); diff --git a/test/built-ins/RegExp/prototype/Symbol.split/not-a-constructor.js b/test/built-ins/RegExp/prototype/Symbol.split/not-a-constructor.js index 04d5ab6b2f3..0c659cbf758 100644 --- a/test/built-ins/RegExp/prototype/Symbol.split/not-a-constructor.js +++ b/test/built-ins/RegExp/prototype/Symbol.split/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let re = new RegExp(''); new re[Symbol.split](); -}, '`let re = new RegExp(\'\'); new re[Symbol.split]()` throws TypeError'); +}); diff --git a/test/built-ins/RegExp/prototype/exec/not-a-constructor.js b/test/built-ins/RegExp/prototype/exec/not-a-constructor.js index 580c05ab339..781c13f761a 100644 --- a/test/built-ins/RegExp/prototype/exec/not-a-constructor.js +++ b/test/built-ins/RegExp/prototype/exec/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let re = new RegExp(''); new re.exec(); -}, '`let re = new RegExp(\'\'); new re.exec()` throws TypeError'); +}); diff --git a/test/built-ins/RegExp/prototype/test/not-a-constructor.js b/test/built-ins/RegExp/prototype/test/not-a-constructor.js index a32652cbb77..21a1745a2eb 100644 --- a/test/built-ins/RegExp/prototype/test/not-a-constructor.js +++ b/test/built-ins/RegExp/prototype/test/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let re = new RegExp(''); new re.test(); -}, '`let re = new RegExp(\'\'); new re.test()` throws TypeError'); +}); diff --git a/test/built-ins/RegExp/prototype/toString/not-a-constructor.js b/test/built-ins/RegExp/prototype/toString/not-a-constructor.js index 44e260bba64..1b3a48347b8 100644 --- a/test/built-ins/RegExp/prototype/toString/not-a-constructor.js +++ b/test/built-ins/RegExp/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let re = new RegExp(''); new re.toString(); -}, '`let re = new RegExp(\'\'); new re.toString()` throws TypeError'); +}); diff --git a/test/built-ins/Set/prototype/Symbol.iterator/not-a-constructor.js b/test/built-ins/Set/prototype/Symbol.iterator/not-a-constructor.js index 42a7102d3ec..fff2ddaeb50 100644 --- a/test/built-ins/Set/prototype/Symbol.iterator/not-a-constructor.js +++ b/test/built-ins/Set/prototype/Symbol.iterator/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let s = new Set([]); new s[Symbol.iterator](); -}, '`let s = new Set([]); new s[Symbol.iterator]()` throws TypeError'); +}); diff --git a/test/built-ins/Set/prototype/add/not-a-constructor.js b/test/built-ins/Set/prototype/add/not-a-constructor.js index 382480da160..6af1286e5de 100644 --- a/test/built-ins/Set/prototype/add/not-a-constructor.js +++ b/test/built-ins/Set/prototype/add/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Set.prototype.add), false, 'isConstructor(Set.pro assert.throws(TypeError, () => { let s = new Set([]); new s.add(); -}, '`let s = new Set([]); new s.add()` throws TypeError'); +}); diff --git a/test/built-ins/Set/prototype/clear/not-a-constructor.js b/test/built-ins/Set/prototype/clear/not-a-constructor.js index a77944c3c10..7ae392a4239 100644 --- a/test/built-ins/Set/prototype/clear/not-a-constructor.js +++ b/test/built-ins/Set/prototype/clear/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Set.prototype.clear), false, 'isConstructor(Set.p assert.throws(TypeError, () => { let s = new Set([]); new s.clear(); -}, '`let s = new Set([]); new s.clear()` throws TypeError'); +}); diff --git a/test/built-ins/Set/prototype/delete/not-a-constructor.js b/test/built-ins/Set/prototype/delete/not-a-constructor.js index 2f8af10509d..8f319be12b5 100644 --- a/test/built-ins/Set/prototype/delete/not-a-constructor.js +++ b/test/built-ins/Set/prototype/delete/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Set.prototype.delete), false, 'isConstructor(Set. assert.throws(TypeError, () => { let s = new Set([]); new s.delete(); -}, '`let s = new Set([]); new s.delete()` throws TypeError'); +}); diff --git a/test/built-ins/Set/prototype/difference/not-a-constructor.js b/test/built-ins/Set/prototype/difference/not-a-constructor.js index dcfaf847653..edee9edd688 100644 --- a/test/built-ins/Set/prototype/difference/not-a-constructor.js +++ b/test/built-ins/Set/prototype/difference/not-a-constructor.js @@ -17,6 +17,4 @@ assert.throws( TypeError, () => { new Set.prototype.difference(); - }, - "`new Set.prototype.difference()` throws TypeError" -); + }); diff --git a/test/built-ins/Set/prototype/entries/not-a-constructor.js b/test/built-ins/Set/prototype/entries/not-a-constructor.js index 2bf6867dac4..da2e49f84f2 100644 --- a/test/built-ins/Set/prototype/entries/not-a-constructor.js +++ b/test/built-ins/Set/prototype/entries/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let s = new Set([]); new s.entries(); -}, '`let s = new Set([]); new s.entries()` throws TypeError'); +}); diff --git a/test/built-ins/Set/prototype/forEach/not-a-constructor.js b/test/built-ins/Set/prototype/forEach/not-a-constructor.js index d62c98fa41b..3f54ab58158 100644 --- a/test/built-ins/Set/prototype/forEach/not-a-constructor.js +++ b/test/built-ins/Set/prototype/forEach/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let s = new Set([]); new s.forEach(() => {}); -}, '`let s = new Set([]); new s.forEach(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/Set/prototype/has/not-a-constructor.js b/test/built-ins/Set/prototype/has/not-a-constructor.js index 6a3d35e64e8..fcfeaa37bad 100644 --- a/test/built-ins/Set/prototype/has/not-a-constructor.js +++ b/test/built-ins/Set/prototype/has/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Set.prototype.has), false, 'isConstructor(Set.pro assert.throws(TypeError, () => { let s = new Set([]); new s.has(); -}, '`let s = new Set([]); new s.has()` throws TypeError'); +}); diff --git a/test/built-ins/Set/prototype/intersection/not-a-constructor.js b/test/built-ins/Set/prototype/intersection/not-a-constructor.js index 44c614f88bf..87776528c70 100644 --- a/test/built-ins/Set/prototype/intersection/not-a-constructor.js +++ b/test/built-ins/Set/prototype/intersection/not-a-constructor.js @@ -17,6 +17,4 @@ assert.throws( TypeError, () => { new Set.prototype.intersection(); - }, - "`new Set.prototype.intersection()` throws TypeError" -); + }); diff --git a/test/built-ins/Set/prototype/isDisjointFrom/not-a-constructor.js b/test/built-ins/Set/prototype/isDisjointFrom/not-a-constructor.js index 98345917c3b..466775874fa 100644 --- a/test/built-ins/Set/prototype/isDisjointFrom/not-a-constructor.js +++ b/test/built-ins/Set/prototype/isDisjointFrom/not-a-constructor.js @@ -17,6 +17,4 @@ assert.throws( TypeError, () => { new Set.prototype.isDisjointFrom(); - }, - "`new Set.prototype.isDisjointFrom()` throws TypeError" -); + }); diff --git a/test/built-ins/Set/prototype/isSubsetOf/not-a-constructor.js b/test/built-ins/Set/prototype/isSubsetOf/not-a-constructor.js index 27f90f1ac65..35beb587011 100644 --- a/test/built-ins/Set/prototype/isSubsetOf/not-a-constructor.js +++ b/test/built-ins/Set/prototype/isSubsetOf/not-a-constructor.js @@ -17,6 +17,4 @@ assert.throws( TypeError, () => { new Set.prototype.isSubsetOf(); - }, - "`new Set.prototype.isSubsetOf()` throws TypeError" -); + }); diff --git a/test/built-ins/Set/prototype/isSupersetOf/not-a-constructor.js b/test/built-ins/Set/prototype/isSupersetOf/not-a-constructor.js index 924cea71ca7..69d9668ff59 100644 --- a/test/built-ins/Set/prototype/isSupersetOf/not-a-constructor.js +++ b/test/built-ins/Set/prototype/isSupersetOf/not-a-constructor.js @@ -17,6 +17,4 @@ assert.throws( TypeError, () => { new Set.prototype.isSupersetOf(); - }, - "`new Set.prototype.isSupersetOf()` throws TypeError" -); + }); diff --git a/test/built-ins/Set/prototype/symmetricDifference/not-a-constructor.js b/test/built-ins/Set/prototype/symmetricDifference/not-a-constructor.js index 81e19f00e3e..53b5a0f09e6 100644 --- a/test/built-ins/Set/prototype/symmetricDifference/not-a-constructor.js +++ b/test/built-ins/Set/prototype/symmetricDifference/not-a-constructor.js @@ -17,6 +17,4 @@ assert.throws( TypeError, () => { new Set.prototype.symmetricDifference(); - }, - "`new Set.prototype.symmetricDifference()` throws TypeError" -); + }); diff --git a/test/built-ins/Set/prototype/union/not-a-constructor.js b/test/built-ins/Set/prototype/union/not-a-constructor.js index d27e4cda5e1..f8449cbb224 100644 --- a/test/built-ins/Set/prototype/union/not-a-constructor.js +++ b/test/built-ins/Set/prototype/union/not-a-constructor.js @@ -17,6 +17,4 @@ assert.throws( TypeError, () => { new Set.prototype.union(); - }, - "`new Set.prototype.union()` throws TypeError" -); + }); diff --git a/test/built-ins/Set/prototype/values/not-a-constructor.js b/test/built-ins/Set/prototype/values/not-a-constructor.js index 8eb928e23c0..18c787ea95c 100644 --- a/test/built-ins/Set/prototype/values/not-a-constructor.js +++ b/test/built-ins/Set/prototype/values/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Set.prototype.values), false, 'isConstructor(Set. assert.throws(TypeError, () => { let s = new Set([]); new s.values(); -}, '`let s = new Set([]); new s.values()` throws TypeError'); +}); diff --git a/test/built-ins/ShadowRealm/prototype/evaluate/not-constructor.js b/test/built-ins/ShadowRealm/prototype/evaluate/not-constructor.js index 6a2c3fb78ed..24361fec2a1 100644 --- a/test/built-ins/ShadowRealm/prototype/evaluate/not-constructor.js +++ b/test/built-ins/ShadowRealm/prototype/evaluate/not-constructor.js @@ -22,7 +22,7 @@ assert.sameValue( assert.throws(TypeError, () => { new ShadowRealm.prototype.evaluate(""); -}, '`new ShadowRealm.prototype.evaluate("")` throws TypeError'); +}); const r = new ShadowRealm(); r.evaluate('globalThis.x = 0'); diff --git a/test/built-ins/SharedArrayBuffer/prototype/slice/not-a-constructor.js b/test/built-ins/SharedArrayBuffer/prototype/slice/not-a-constructor.js index 91ff6371cdc..5babba95f1a 100644 --- a/test/built-ins/SharedArrayBuffer/prototype/slice/not-a-constructor.js +++ b/test/built-ins/SharedArrayBuffer/prototype/slice/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let sab = new SharedArrayBuffer(1); new sab.slice(); -}, '`let sab = new SharedArrayBuffer(1); new sab.slice()` throws TypeError'); +}); diff --git a/test/built-ins/String/fromCharCode/not-a-constructor.js b/test/built-ins/String/fromCharCode/not-a-constructor.js index 1d83e36583a..68ed625313f 100644 --- a/test/built-ins/String/fromCharCode/not-a-constructor.js +++ b/test/built-ins/String/fromCharCode/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(String.fromCharCode), false, 'isConstructor(Strin assert.throws(TypeError, () => { new String.fromCharCode(); -}, '`new String.fromCharCode()` throws TypeError'); +}); diff --git a/test/built-ins/String/fromCodePoint/not-a-constructor.js b/test/built-ins/String/fromCodePoint/not-a-constructor.js index 15e5425b9fa..d17d734f632 100644 --- a/test/built-ins/String/fromCodePoint/not-a-constructor.js +++ b/test/built-ins/String/fromCodePoint/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(String.fromCodePoint), false, 'isConstructor(Stri assert.throws(TypeError, () => { new String.fromCodePoint(); -}, '`new String.fromCodePoint()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/Symbol.iterator/not-a-constructor.js b/test/built-ins/String/prototype/Symbol.iterator/not-a-constructor.js index 0bcce071dc6..07770bade2e 100644 --- a/test/built-ins/String/prototype/Symbol.iterator/not-a-constructor.js +++ b/test/built-ins/String/prototype/Symbol.iterator/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype[Symbol.iterator](); -}, '`new String.prototype[Symbol.iterator]()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/at/index-non-numeric-argument-tointeger-invalid.js b/test/built-ins/String/prototype/at/index-non-numeric-argument-tointeger-invalid.js index 387fded1093..6d15cdb3f6a 100644 --- a/test/built-ins/String/prototype/at/index-non-numeric-argument-tointeger-invalid.js +++ b/test/built-ins/String/prototype/at/index-non-numeric-argument-tointeger-invalid.js @@ -17,4 +17,4 @@ let s = "01"; assert.throws(TypeError, () => { s.at(Symbol()); -}, '`s.at(Symbol())` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/at/return-abrupt-from-this.js b/test/built-ins/String/prototype/at/return-abrupt-from-this.js index 0908f06f057..7b960ddaa62 100644 --- a/test/built-ins/String/prototype/at/return-abrupt-from-this.js +++ b/test/built-ins/String/prototype/at/return-abrupt-from-this.js @@ -15,8 +15,8 @@ assert.sameValue(typeof String.prototype.at, 'function'); assert.throws(TypeError, () => { String.prototype.at.call(undefined); -}, '`String.prototype.at.call(undefined)` throws TypeError'); +}); assert.throws(TypeError, () => { String.prototype.at.call(null); -}, '`String.prototype.at.call(null)` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/charAt/not-a-constructor.js b/test/built-ins/String/prototype/charAt/not-a-constructor.js index 55136b10528..3cf9f8fef97 100644 --- a/test/built-ins/String/prototype/charAt/not-a-constructor.js +++ b/test/built-ins/String/prototype/charAt/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.charAt(); -}, '`new String.prototype.charAt()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/charCodeAt/not-a-constructor.js b/test/built-ins/String/prototype/charCodeAt/not-a-constructor.js index d0458dd12e8..91222c3b13c 100644 --- a/test/built-ins/String/prototype/charCodeAt/not-a-constructor.js +++ b/test/built-ins/String/prototype/charCodeAt/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.charCodeAt(); -}, '`new String.prototype.charCodeAt()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/codePointAt/not-a-constructor.js b/test/built-ins/String/prototype/codePointAt/not-a-constructor.js index f38dbb653fd..037a37d6779 100644 --- a/test/built-ins/String/prototype/codePointAt/not-a-constructor.js +++ b/test/built-ins/String/prototype/codePointAt/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.codePointAt(); -}, '`new String.prototype.codePointAt()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/concat/not-a-constructor.js b/test/built-ins/String/prototype/concat/not-a-constructor.js index e6306ef9fff..8dccce7ec21 100644 --- a/test/built-ins/String/prototype/concat/not-a-constructor.js +++ b/test/built-ins/String/prototype/concat/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.concat(); -}, '`new String.prototype.concat()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/endsWith/not-a-constructor.js b/test/built-ins/String/prototype/endsWith/not-a-constructor.js index c4280c5c019..3b22bcd96dd 100644 --- a/test/built-ins/String/prototype/endsWith/not-a-constructor.js +++ b/test/built-ins/String/prototype/endsWith/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.endsWith(); -}, '`new String.prototype.endsWith()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/includes/not-a-constructor.js b/test/built-ins/String/prototype/includes/not-a-constructor.js index c8c5a9692b9..d28f4108dc9 100644 --- a/test/built-ins/String/prototype/includes/not-a-constructor.js +++ b/test/built-ins/String/prototype/includes/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.includes(1); -}, '`new String.prototype.includes(1)` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/indexOf/not-a-constructor.js b/test/built-ins/String/prototype/indexOf/not-a-constructor.js index 02c05b0638e..fbef399c5db 100644 --- a/test/built-ins/String/prototype/indexOf/not-a-constructor.js +++ b/test/built-ins/String/prototype/indexOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.indexOf(); -}, '`new String.prototype.indexOf()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/isWellFormed/not-a-constructor.js b/test/built-ins/String/prototype/isWellFormed/not-a-constructor.js index 26e25aa5fcd..37e0d5e31c4 100644 --- a/test/built-ins/String/prototype/isWellFormed/not-a-constructor.js +++ b/test/built-ins/String/prototype/isWellFormed/not-a-constructor.js @@ -29,4 +29,4 @@ assert.sameValue( assert.throws(TypeError, function () { new String.prototype.isWellFormed(); -}, '`new String.prototype.isWellFormed()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/isWellFormed/return-abrupt-from-this.js b/test/built-ins/String/prototype/isWellFormed/return-abrupt-from-this.js index 03ea080bdf1..8c011a8d58a 100644 --- a/test/built-ins/String/prototype/isWellFormed/return-abrupt-from-this.js +++ b/test/built-ins/String/prototype/isWellFormed/return-abrupt-from-this.js @@ -15,8 +15,8 @@ assert.sameValue(typeof String.prototype.isWellFormed, 'function'); assert.throws(TypeError, function () { String.prototype.isWellFormed.call(undefined); -}, '`String.prototype.isWellFormed.call(undefined)` throws TypeError'); +}); assert.throws(TypeError, function () { String.prototype.isWellFormed.call(null); -}, '`String.prototype.isWellFormed.call(null)` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/lastIndexOf/not-a-constructor.js b/test/built-ins/String/prototype/lastIndexOf/not-a-constructor.js index 3613f4fb6ea..86db860e8fc 100644 --- a/test/built-ins/String/prototype/lastIndexOf/not-a-constructor.js +++ b/test/built-ins/String/prototype/lastIndexOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.lastIndexOf(); -}, '`new String.prototype.lastIndexOf()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/localeCompare/not-a-constructor.js b/test/built-ins/String/prototype/localeCompare/not-a-constructor.js index 4d87248ae0a..42700c60b93 100644 --- a/test/built-ins/String/prototype/localeCompare/not-a-constructor.js +++ b/test/built-ins/String/prototype/localeCompare/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.localeCompare(); -}, '`new String.prototype.localeCompare()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/match/not-a-constructor.js b/test/built-ins/String/prototype/match/not-a-constructor.js index 3b79a08a5f8..809d2fe237c 100644 --- a/test/built-ins/String/prototype/match/not-a-constructor.js +++ b/test/built-ins/String/prototype/match/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.match(); -}, '`new String.prototype.match()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/matchAll/not-a-constructor.js b/test/built-ins/String/prototype/matchAll/not-a-constructor.js index aa6b43ed32c..34039fe2abd 100644 --- a/test/built-ins/String/prototype/matchAll/not-a-constructor.js +++ b/test/built-ins/String/prototype/matchAll/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.matchAll(); -}, '`new String.prototype.matchAll()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/normalize/not-a-constructor.js b/test/built-ins/String/prototype/normalize/not-a-constructor.js index b854e495084..68d380b55cf 100644 --- a/test/built-ins/String/prototype/normalize/not-a-constructor.js +++ b/test/built-ins/String/prototype/normalize/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.normalize(); -}, '`new String.prototype.normalize()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/padEnd/not-a-constructor.js b/test/built-ins/String/prototype/padEnd/not-a-constructor.js index ad3862c1e5c..03bbf57f1e7 100644 --- a/test/built-ins/String/prototype/padEnd/not-a-constructor.js +++ b/test/built-ins/String/prototype/padEnd/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.padEnd(); -}, '`new String.prototype.padEnd()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/padStart/not-a-constructor.js b/test/built-ins/String/prototype/padStart/not-a-constructor.js index d236a688265..9b583d3e798 100644 --- a/test/built-ins/String/prototype/padStart/not-a-constructor.js +++ b/test/built-ins/String/prototype/padStart/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.padStart(); -}, '`new String.prototype.padStart()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/repeat/not-a-constructor.js b/test/built-ins/String/prototype/repeat/not-a-constructor.js index d0a4b17a872..5e3556a4311 100644 --- a/test/built-ins/String/prototype/repeat/not-a-constructor.js +++ b/test/built-ins/String/prototype/repeat/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.repeat(); -}, '`new String.prototype.repeat()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/replace/not-a-constructor.js b/test/built-ins/String/prototype/replace/not-a-constructor.js index dff9afadd91..9307071d1c7 100644 --- a/test/built-ins/String/prototype/replace/not-a-constructor.js +++ b/test/built-ins/String/prototype/replace/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.replace(); -}, '`new String.prototype.replace()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/replaceAll/not-a-constructor.js b/test/built-ins/String/prototype/replaceAll/not-a-constructor.js index 0589233c051..cb82ef8a606 100644 --- a/test/built-ins/String/prototype/replaceAll/not-a-constructor.js +++ b/test/built-ins/String/prototype/replaceAll/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.replaceAll(); -}, '`new String.prototype.replaceAll()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/search/not-a-constructor.js b/test/built-ins/String/prototype/search/not-a-constructor.js index 8b2dc50c633..baa768accd4 100644 --- a/test/built-ins/String/prototype/search/not-a-constructor.js +++ b/test/built-ins/String/prototype/search/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.search(); -}, '`new String.prototype.search()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/slice/not-a-constructor.js b/test/built-ins/String/prototype/slice/not-a-constructor.js index 334f2f3895d..82a50669850 100644 --- a/test/built-ins/String/prototype/slice/not-a-constructor.js +++ b/test/built-ins/String/prototype/slice/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.slice(); -}, '`new String.prototype.slice()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/split/not-a-constructor.js b/test/built-ins/String/prototype/split/not-a-constructor.js index 45abb4ad1e6..a0d9c41a709 100644 --- a/test/built-ins/String/prototype/split/not-a-constructor.js +++ b/test/built-ins/String/prototype/split/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.split(); -}, '`new String.prototype.split()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/startsWith/not-a-constructor.js b/test/built-ins/String/prototype/startsWith/not-a-constructor.js index 588e3e232c8..3a410a827fc 100644 --- a/test/built-ins/String/prototype/startsWith/not-a-constructor.js +++ b/test/built-ins/String/prototype/startsWith/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.startsWith(); -}, '`new String.prototype.startsWith()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/substring/not-a-constructor.js b/test/built-ins/String/prototype/substring/not-a-constructor.js index 54d8baf6058..14db74ede2f 100644 --- a/test/built-ins/String/prototype/substring/not-a-constructor.js +++ b/test/built-ins/String/prototype/substring/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.substring(); -}, '`new String.prototype.substring()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/toLocaleLowerCase/not-a-constructor.js b/test/built-ins/String/prototype/toLocaleLowerCase/not-a-constructor.js index a2573222c0f..888b65e1bbf 100644 --- a/test/built-ins/String/prototype/toLocaleLowerCase/not-a-constructor.js +++ b/test/built-ins/String/prototype/toLocaleLowerCase/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.toLocaleLowerCase(); -}, '`new String.prototype.toLocaleLowerCase()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/toLocaleUpperCase/not-a-constructor.js b/test/built-ins/String/prototype/toLocaleUpperCase/not-a-constructor.js index 08faf179131..0961c648a31 100644 --- a/test/built-ins/String/prototype/toLocaleUpperCase/not-a-constructor.js +++ b/test/built-ins/String/prototype/toLocaleUpperCase/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.toLocaleUpperCase(); -}, '`new String.prototype.toLocaleUpperCase()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/toLowerCase/not-a-constructor.js b/test/built-ins/String/prototype/toLowerCase/not-a-constructor.js index ecba2acf88b..c67d57df2a2 100644 --- a/test/built-ins/String/prototype/toLowerCase/not-a-constructor.js +++ b/test/built-ins/String/prototype/toLowerCase/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.toLowerCase(); -}, '`new String.prototype.toLowerCase()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/toString/not-a-constructor.js b/test/built-ins/String/prototype/toString/not-a-constructor.js index ddbb986b949..1cb4dd15458 100644 --- a/test/built-ins/String/prototype/toString/not-a-constructor.js +++ b/test/built-ins/String/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.toString(); -}, '`new String.prototype.toString()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/toUpperCase/not-a-constructor.js b/test/built-ins/String/prototype/toUpperCase/not-a-constructor.js index c19680c7862..272d8048cac 100644 --- a/test/built-ins/String/prototype/toUpperCase/not-a-constructor.js +++ b/test/built-ins/String/prototype/toUpperCase/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.toUpperCase(); -}, '`new String.prototype.toUpperCase()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/toWellFormed/not-a-constructor.js b/test/built-ins/String/prototype/toWellFormed/not-a-constructor.js index 4e4a4210127..7c4acb4a2cf 100644 --- a/test/built-ins/String/prototype/toWellFormed/not-a-constructor.js +++ b/test/built-ins/String/prototype/toWellFormed/not-a-constructor.js @@ -29,4 +29,4 @@ assert.sameValue( assert.throws(TypeError, function () { new String.prototype.toWellFormed(); -}, '`new String.prototype.toWellFormed()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/toWellFormed/return-abrupt-from-this.js b/test/built-ins/String/prototype/toWellFormed/return-abrupt-from-this.js index 44fbb9c814c..8c287b7ef17 100644 --- a/test/built-ins/String/prototype/toWellFormed/return-abrupt-from-this.js +++ b/test/built-ins/String/prototype/toWellFormed/return-abrupt-from-this.js @@ -15,8 +15,8 @@ assert.sameValue(typeof String.prototype.toWellFormed, 'function'); assert.throws(TypeError, function () { String.prototype.toWellFormed.call(undefined); -}, '`String.prototype.toWellFormed.call(undefined)` throws TypeError'); +}); assert.throws(TypeError, function () { String.prototype.toWellFormed.call(null); -}, '`String.prototype.toWellFormed.call(null)` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/trim/not-a-constructor.js b/test/built-ins/String/prototype/trim/not-a-constructor.js index 62932f797f7..02a5c7f80fb 100644 --- a/test/built-ins/String/prototype/trim/not-a-constructor.js +++ b/test/built-ins/String/prototype/trim/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.trim(); -}, '`new String.prototype.trim()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/trimEnd/not-a-constructor.js b/test/built-ins/String/prototype/trimEnd/not-a-constructor.js index 6ffaae933f9..1f6818d8eaf 100644 --- a/test/built-ins/String/prototype/trimEnd/not-a-constructor.js +++ b/test/built-ins/String/prototype/trimEnd/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.trimEnd(); -}, '`new String.prototype.trimEnd()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/trimStart/not-a-constructor.js b/test/built-ins/String/prototype/trimStart/not-a-constructor.js index b612215d0a7..d7dc007748a 100644 --- a/test/built-ins/String/prototype/trimStart/not-a-constructor.js +++ b/test/built-ins/String/prototype/trimStart/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.trimStart(); -}, '`new String.prototype.trimStart()` throws TypeError'); +}); diff --git a/test/built-ins/String/prototype/valueOf/not-a-constructor.js b/test/built-ins/String/prototype/valueOf/not-a-constructor.js index 5c6ded77341..65901927cbd 100644 --- a/test/built-ins/String/prototype/valueOf/not-a-constructor.js +++ b/test/built-ins/String/prototype/valueOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new String.prototype.valueOf(); -}, '`new String.prototype.valueOf()` throws TypeError'); +}); diff --git a/test/built-ins/String/raw/not-a-constructor.js b/test/built-ins/String/raw/not-a-constructor.js index 460ce2eb69d..241d5a94b91 100644 --- a/test/built-ins/String/raw/not-a-constructor.js +++ b/test/built-ins/String/raw/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(String.raw), false, 'isConstructor(String.raw) mu assert.throws(TypeError, () => { new String.raw({raw: []}, []); -}, '`new String.raw({raw: []}, [])` throws TypeError'); +}); diff --git a/test/built-ins/Symbol/for/not-a-constructor.js b/test/built-ins/Symbol/for/not-a-constructor.js index d0779591ca8..0dfc6ad7dc6 100644 --- a/test/built-ins/Symbol/for/not-a-constructor.js +++ b/test/built-ins/Symbol/for/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Symbol.for), false, 'isConstructor(Symbol.for) mu assert.throws(TypeError, () => { new Symbol.for(); -}, '`new Symbol.for()` throws TypeError'); +}); diff --git a/test/built-ins/Symbol/keyFor/not-a-constructor.js b/test/built-ins/Symbol/keyFor/not-a-constructor.js index c1da1f79f4c..2d7b0030a2e 100644 --- a/test/built-ins/Symbol/keyFor/not-a-constructor.js +++ b/test/built-ins/Symbol/keyFor/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(Symbol.keyFor), false, 'isConstructor(Symbol.keyF assert.throws(TypeError, () => { new Symbol.keyFor(Symbol()); -}, '`new Symbol.keyFor(Symbol())` throws TypeError'); +}); diff --git a/test/built-ins/Symbol/prototype/toString/not-a-constructor.js b/test/built-ins/Symbol/prototype/toString/not-a-constructor.js index 8bb6e9fb8b1..9c99aeef55c 100644 --- a/test/built-ins/Symbol/prototype/toString/not-a-constructor.js +++ b/test/built-ins/Symbol/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let symbol = Symbol(); new symbol.toString(); -}, '`let symbol = Symbol(); new symbol.toString()` throws TypeError'); +}); diff --git a/test/built-ins/Symbol/prototype/valueOf/not-a-constructor.js b/test/built-ins/Symbol/prototype/valueOf/not-a-constructor.js index cbb7e7ef18d..3d23b8152a4 100644 --- a/test/built-ins/Symbol/prototype/valueOf/not-a-constructor.js +++ b/test/built-ins/Symbol/prototype/valueOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let symbol = Symbol(); new symbol.valueOf(); -}, '`let symbol = Symbol(); new symbol.valueOf()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/from/not-a-constructor.js b/test/built-ins/TypedArray/from/not-a-constructor.js index 363fd9ce0e4..bb11761689e 100644 --- a/test/built-ins/TypedArray/from/not-a-constructor.js +++ b/test/built-ins/TypedArray/from/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(TypedArray.from), false, 'isConstructor(TypedArra assert.throws(TypeError, () => { new TypedArray.from([]); -}, '`new TypedArray.from([])` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/of/not-a-constructor.js b/test/built-ins/TypedArray/of/not-a-constructor.js index c17a599f12e..e2a75373da8 100644 --- a/test/built-ins/TypedArray/of/not-a-constructor.js +++ b/test/built-ins/TypedArray/of/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(TypedArray.of), false, 'isConstructor(TypedArray. assert.throws(TypeError, () => { new TypedArray.of(1, 2, 3, 4); -}, '`new TypedArray.of(1, 2, 3, 4)` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/Symbol.iterator/not-a-constructor.js b/test/built-ins/TypedArray/prototype/Symbol.iterator/not-a-constructor.js index a573a07e9b1..dbe9f8d9e69 100644 --- a/test/built-ins/TypedArray/prototype/Symbol.iterator/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/Symbol.iterator/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8[Symbol.iterator](); -}, '`let u8 = new Uint8Array(1); new u8[Symbol.iterator]()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/at/index-non-numeric-argument-tointeger-invalid.js b/test/built-ins/TypedArray/prototype/at/index-non-numeric-argument-tointeger-invalid.js index 703f912a996..d13441851f2 100644 --- a/test/built-ins/TypedArray/prototype/at/index-non-numeric-argument-tointeger-invalid.js +++ b/test/built-ins/TypedArray/prototype/at/index-non-numeric-argument-tointeger-invalid.js @@ -24,5 +24,5 @@ testWithTypedArrayConstructors(TA => { assert.throws(TypeError, () => { a.at(Symbol()); - }, '`a.at(Symbol())` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArray/prototype/at/return-abrupt-from-this.js b/test/built-ins/TypedArray/prototype/at/return-abrupt-from-this.js index 4b224d05bb3..7772a5a7151 100644 --- a/test/built-ins/TypedArray/prototype/at/return-abrupt-from-this.js +++ b/test/built-ins/TypedArray/prototype/at/return-abrupt-from-this.js @@ -21,20 +21,20 @@ assert.sameValue( assert.throws(TypeError, () => { TypedArray.prototype.at.call(undefined); -}, '`TypedArray.prototype.at.call(undefined)` throws TypeError'); +}); assert.throws(TypeError, () => { TypedArray.prototype.at.call(null); -}, '`TypedArray.prototype.at.call(null)` throws TypeError'); +}); testWithTypedArrayConstructors(TA => { assert.sameValue(typeof TA.prototype.at, 'function', 'The value of `typeof TA.prototype.at` is "function"'); assert.throws(TypeError, () => { TA.prototype.at.call(undefined); - }, '`TA.prototype.at.call(undefined)` throws TypeError'); + }); assert.throws(TypeError, () => { TA.prototype.at.call(null); - }, '`TA.prototype.at.call(null)` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArray/prototype/copyWithin/not-a-constructor.js b/test/built-ins/TypedArray/prototype/copyWithin/not-a-constructor.js index d07b461953c..0e55bc66b2a 100644 --- a/test/built-ins/TypedArray/prototype/copyWithin/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/copyWithin/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.copyWithin(); -}, '`let u8 = new Uint8Array(1); new u8.copyWithin()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/entries/not-a-constructor.js b/test/built-ins/TypedArray/prototype/entries/not-a-constructor.js index 88374ce28d2..6c38e143311 100644 --- a/test/built-ins/TypedArray/prototype/entries/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/entries/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.entries(); -}, '`let u8 = new Uint8Array(1); new u8.entries()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/every/not-a-constructor.js b/test/built-ins/TypedArray/prototype/every/not-a-constructor.js index 1176931d961..c84e6ea4342 100644 --- a/test/built-ins/TypedArray/prototype/every/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/every/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.every(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.every(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/fill/not-a-constructor.js b/test/built-ins/TypedArray/prototype/fill/not-a-constructor.js index 1dfa2a64072..b901c21201c 100644 --- a/test/built-ins/TypedArray/prototype/fill/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/fill/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.fill(); -}, '`let u8 = new Uint8Array(1); new u8.fill()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/filter/not-a-constructor.js b/test/built-ins/TypedArray/prototype/filter/not-a-constructor.js index 72914d77dab..ca63e4db20c 100644 --- a/test/built-ins/TypedArray/prototype/filter/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/filter/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.filter(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.filter(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/find/not-a-constructor.js b/test/built-ins/TypedArray/prototype/find/not-a-constructor.js index db1f7a8e043..00dd2fa87ce 100644 --- a/test/built-ins/TypedArray/prototype/find/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/find/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.find(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.find(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/findIndex/not-a-constructor.js b/test/built-ins/TypedArray/prototype/findIndex/not-a-constructor.js index 583bcdf4f20..8b85b75f3ed 100644 --- a/test/built-ins/TypedArray/prototype/findIndex/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/findIndex/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.findIndex(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.findIndex(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/findLast/not-a-constructor.js b/test/built-ins/TypedArray/prototype/findLast/not-a-constructor.js index 14c29d6ecd8..a5c97d2a00d 100644 --- a/test/built-ins/TypedArray/prototype/findLast/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/findLast/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.findLast(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.findLast(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/findLastIndex/not-a-constructor.js b/test/built-ins/TypedArray/prototype/findLastIndex/not-a-constructor.js index ecad495f946..3256e23bcfa 100644 --- a/test/built-ins/TypedArray/prototype/findLastIndex/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/findLastIndex/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.findLastIndex(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.findLastIndex(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/forEach/not-a-constructor.js b/test/built-ins/TypedArray/prototype/forEach/not-a-constructor.js index 1e44a19bd87..39a7502f35d 100644 --- a/test/built-ins/TypedArray/prototype/forEach/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/forEach/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.forEach(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.forEach(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/includes/not-a-constructor.js b/test/built-ins/TypedArray/prototype/includes/not-a-constructor.js index a60b5acbf76..5017b16e48c 100644 --- a/test/built-ins/TypedArray/prototype/includes/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/includes/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.includes(1); -}, '`let u8 = new Uint8Array(1); new u8.includes(1)` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/indexOf/not-a-constructor.js b/test/built-ins/TypedArray/prototype/indexOf/not-a-constructor.js index 2f0643221bb..bda7f8013d0 100644 --- a/test/built-ins/TypedArray/prototype/indexOf/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/indexOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.indexOf(); -}, '`let u8 = new Uint8Array(1); new u8.indexOf()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/join/not-a-constructor.js b/test/built-ins/TypedArray/prototype/join/not-a-constructor.js index 9557b1b98fd..5b88c3fbe2b 100644 --- a/test/built-ins/TypedArray/prototype/join/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/join/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.join(); -}, '`let u8 = new Uint8Array(1); new u8.join()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/keys/not-a-constructor.js b/test/built-ins/TypedArray/prototype/keys/not-a-constructor.js index 299f73e1ff2..d579012f959 100644 --- a/test/built-ins/TypedArray/prototype/keys/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/keys/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.keys(); -}, '`let u8 = new Uint8Array(1); new u8.keys()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/lastIndexOf/not-a-constructor.js b/test/built-ins/TypedArray/prototype/lastIndexOf/not-a-constructor.js index 321a8e8a532..591a5307249 100644 --- a/test/built-ins/TypedArray/prototype/lastIndexOf/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/lastIndexOf/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.lastIndexOf(); -}, '`let u8 = new Uint8Array(1); new u8.lastIndexOf()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/map/not-a-constructor.js b/test/built-ins/TypedArray/prototype/map/not-a-constructor.js index 80ac8f484a6..1b0d4be0c60 100644 --- a/test/built-ins/TypedArray/prototype/map/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/map/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.map(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.map(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/reduce/not-a-constructor.js b/test/built-ins/TypedArray/prototype/reduce/not-a-constructor.js index 1f6fc863995..3374e9fe2b8 100644 --- a/test/built-ins/TypedArray/prototype/reduce/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/reduce/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.reduce(() => {}, []); -}, '`let u8 = new Uint8Array(1); new u8.reduce(() => {}, [])` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/reduceRight/not-a-constructor.js b/test/built-ins/TypedArray/prototype/reduceRight/not-a-constructor.js index 3096cfdac05..1a08634ec24 100644 --- a/test/built-ins/TypedArray/prototype/reduceRight/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/reduceRight/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.reduceRight(() => {}, []); -}, '`let u8 = new Uint8Array(1); new u8.reduceRight(() => {}, [])` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/reverse/not-a-constructor.js b/test/built-ins/TypedArray/prototype/reverse/not-a-constructor.js index e08f86079a9..26e287d154d 100644 --- a/test/built-ins/TypedArray/prototype/reverse/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/reverse/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.reverse(); -}, '`let u8 = new Uint8Array(1); new u8.reverse()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/set/not-a-constructor.js b/test/built-ins/TypedArray/prototype/set/not-a-constructor.js index 3c7e20d7232..eb726ec03f5 100644 --- a/test/built-ins/TypedArray/prototype/set/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/set/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.set([0], 0); -}, '`let u8 = new Uint8Array(1); new u8.set([0], 0)` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/slice/not-a-constructor.js b/test/built-ins/TypedArray/prototype/slice/not-a-constructor.js index b0cd44da461..c6f06e1fedd 100644 --- a/test/built-ins/TypedArray/prototype/slice/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/slice/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.slice(); -}, '`let u8 = new Uint8Array(1); new u8.slice()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/some/not-a-constructor.js b/test/built-ins/TypedArray/prototype/some/not-a-constructor.js index 37476e640f8..f231d4a5bf7 100644 --- a/test/built-ins/TypedArray/prototype/some/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/some/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.some(() => {}); -}, '`let u8 = new Uint8Array(1); new u8.some(() => {})` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/sort/not-a-constructor.js b/test/built-ins/TypedArray/prototype/sort/not-a-constructor.js index 8b0c964659b..197032b1221 100644 --- a/test/built-ins/TypedArray/prototype/sort/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/sort/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.sort(); -}, '`let u8 = new Uint8Array(1); new u8.sort()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/subarray/not-a-constructor.js b/test/built-ins/TypedArray/prototype/subarray/not-a-constructor.js index 5dd8b47694d..f60afef3333 100644 --- a/test/built-ins/TypedArray/prototype/subarray/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/subarray/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.subarray(); -}, '`let u8 = new Uint8Array(1); new u8.subarray()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/toLocaleString/not-a-constructor.js b/test/built-ins/TypedArray/prototype/toLocaleString/not-a-constructor.js index d3c0162f44d..9335d175a53 100644 --- a/test/built-ins/TypedArray/prototype/toLocaleString/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/toLocaleString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.toLocaleString(); -}, '`let u8 = new Uint8Array(1); new u8.toLocaleString()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/toReversed/not-a-constructor.js b/test/built-ins/TypedArray/prototype/toReversed/not-a-constructor.js index 630eba76ed5..0464e08d767 100644 --- a/test/built-ins/TypedArray/prototype/toReversed/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/toReversed/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new TypedArray.prototype.toReversed(); -}, '`new TypedArray.prototype.toReversed()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/toSorted/not-a-constructor.js b/test/built-ins/TypedArray/prototype/toSorted/not-a-constructor.js index 6d47d98c71a..f655e0eeb18 100644 --- a/test/built-ins/TypedArray/prototype/toSorted/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/toSorted/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { new TypedArray.prototype.toSorted(); -}, '`new TypedArray.prototype.toSorted()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/toString/not-a-constructor.js b/test/built-ins/TypedArray/prototype/toString/not-a-constructor.js index a9beadaf102..a3ff41d014d 100644 --- a/test/built-ins/TypedArray/prototype/toString/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/toString/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.toString(); -}, '`let u8 = new Uint8Array(1); new u8.toString()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArray/prototype/values/not-a-constructor.js b/test/built-ins/TypedArray/prototype/values/not-a-constructor.js index 1df6d643fec..c3f7d64d5be 100644 --- a/test/built-ins/TypedArray/prototype/values/not-a-constructor.js +++ b/test/built-ins/TypedArray/prototype/values/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let u8 = new Uint8Array(1); new u8.values(); -}, '`let u8 = new Uint8Array(1); new u8.values()` throws TypeError'); +}); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/indexed-value-ab-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/indexed-value-ab-strict.js index 2bb6959e377..140206bf7c3 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/indexed-value-ab-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/indexed-value-ab-strict.js @@ -39,14 +39,14 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, () => { delete sample["0"]; - }, '`delete sample["0"]` throws TypeError'); + }); assert.throws(TypeError, () => { delete sample["1"]; - }, '`delete sample["1"]` throws TypeError'); + }); assert.throws(TypeError, () => { delete sample[0]; - }, '`delete sample[0]` throws TypeError'); + }); assert.throws(TypeError, () => { delete sample[0]; - }, '`delete sample[0]` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-canonical-index-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-canonical-index-strict.js index 5f211e2ce4c..0732874a0a7 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-canonical-index-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-canonical-index-strict.js @@ -59,7 +59,7 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, () => { delete sample[key]; - }, '`delete sample[key]` throws TypeError'); + }); delete TypedArray.prototype[key]; }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-minus-zero-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-minus-zero-strict.js index 016e8c5cde6..632f565e76b 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-minus-zero-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-minus-zero-strict.js @@ -42,5 +42,5 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.sameValue(delete sample["-0"], true, 'The value of `delete sample["-0"]` is true'); assert.throws(TypeError, () => { delete sample[-0]; - }, '`delete sample[-0]` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-numeric-index-get-throws.js b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-numeric-index-get-throws.js index f4ff4962314..b627c94ca98 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-numeric-index-get-throws.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-numeric-index-get-throws.js @@ -34,5 +34,5 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(Test262Error, () => { sample.foo; - }, '`sample.foo` throws Test262Error'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-numeric-index-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-numeric-index-strict.js index 5120af8d677..8405f1af551 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-numeric-index-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-not-numeric-index-strict.js @@ -41,7 +41,7 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, () => { delete sample.bar; - }, '`delete sample.bar` throws TypeError'); + }); assert.sameValue(delete sample.baz, true, 'The value of `delete sample.baz` is true'); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-out-of-bounds-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-out-of-bounds-strict.js index 7bd1a0767a4..bff67c0e04f 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-out-of-bounds-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/BigInt/key-is-out-of-bounds-strict.js @@ -43,11 +43,11 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, () => { delete sample["0"]; - }, '`delete sample["0"]` throws TypeError'); + }); assert.throws(TypeError, () => { delete sample[0]; - }, '`delete sample[0]` throws TypeError'); + }); assert.sameValue(delete sample["1"], true, 'The value of `delete sample["1"]` is true'); assert.sameValue(delete sample[1], true, 'The value of `delete sample[1]` is true'); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-strict.js index c02aa494db1..6947cbc890a 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/indexed-value-ab-strict.js @@ -39,14 +39,14 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, () => { delete sample["0"]; - }, '`delete sample["0"]` throws TypeError'); + }); assert.throws(TypeError, () => { delete sample["1"]; - }, '`delete sample["1"]` throws TypeError'); + }); assert.throws(TypeError, () => { delete sample[0]; - }, '`delete sample[0]` throws TypeError'); + }); assert.throws(TypeError, () => { delete sample[0]; - }, '`delete sample[0]` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-canonical-index-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-canonical-index-strict.js index bf3ce01d20e..16ab4397817 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-canonical-index-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-canonical-index-strict.js @@ -59,7 +59,7 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, () => { delete sample[key]; - }, '`delete sample[key]` throws TypeError'); + }); delete TypedArray.prototype[key]; }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-strict.js index 0318011cf87..c13080dc101 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-minus-zero-strict.js @@ -42,5 +42,5 @@ testWithTypedArrayConstructors(function(TA) { assert.sameValue(delete sample["-0"], true, 'The value of `delete sample["-0"]` is true'); assert.throws(TypeError, () => { delete sample[-0]; - }, '`delete sample[-0]` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-numeric-index-get-throws.js b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-numeric-index-get-throws.js index c0a2f3afabe..1b9badead43 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-numeric-index-get-throws.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-numeric-index-get-throws.js @@ -34,5 +34,5 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(Test262Error, () => { sample.foo; - }, '`sample.foo` throws Test262Error'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-numeric-index-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-numeric-index-strict.js index 23d3e198dbb..20096f0aedf 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-numeric-index-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-not-numeric-index-strict.js @@ -41,7 +41,7 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, () => { delete sample.bar; - }, '`delete sample.bar` throws TypeError'); + }); assert.sameValue(delete sample.baz, true, 'The value of `delete sample.baz` is true'); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-strict.js b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-strict.js index 2599956ea9d..072098a0d49 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-strict.js +++ b/test/built-ins/TypedArrayConstructors/internals/Delete/key-is-out-of-bounds-strict.js @@ -43,11 +43,11 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, () => { delete sample["0"]; - }, '`delete sample["0"]` throws TypeError'); + }); assert.throws(TypeError, () => { delete sample[0]; - }, '`delete sample[0]` throws TypeError'); + }); assert.sameValue(delete sample["1"], true, 'The value of `delete sample["1"]` is true'); assert.sameValue(delete sample[1], true, 'The value of `delete sample[1]` is true'); diff --git a/test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/abrupt-from-ordinary-has-parent-hasproperty.js b/test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/abrupt-from-ordinary-has-parent-hasproperty.js index 10985c5a87c..569c50d16b4 100644 --- a/test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/abrupt-from-ordinary-has-parent-hasproperty.js +++ b/test/built-ins/TypedArrayConstructors/internals/HasProperty/BigInt/abrupt-from-ordinary-has-parent-hasproperty.js @@ -51,7 +51,7 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(Test262Error, function() { Reflect.has(sample, "foo"); - }, '`Reflect.has(sample, "foo")` throws Test262Error'); + }); Object.defineProperty(sample, "foo", { value: 42 }); diff --git a/test/built-ins/TypedArrayConstructors/internals/HasProperty/abrupt-from-ordinary-has-parent-hasproperty.js b/test/built-ins/TypedArrayConstructors/internals/HasProperty/abrupt-from-ordinary-has-parent-hasproperty.js index 76460854c04..8e49cca9aee 100644 --- a/test/built-ins/TypedArrayConstructors/internals/HasProperty/abrupt-from-ordinary-has-parent-hasproperty.js +++ b/test/built-ins/TypedArrayConstructors/internals/HasProperty/abrupt-from-ordinary-has-parent-hasproperty.js @@ -51,7 +51,7 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(Test262Error, function() { Reflect.has(sample, "foo"); - }, '`Reflect.has(sample, "foo")` throws Test262Error'); + }); Object.defineProperty(sample, "foo", { value: 42 }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-numeric-index-set-throws.js b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-numeric-index-set-throws.js index 8d9b4632b6f..2fc95708b2d 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-numeric-index-set-throws.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-numeric-index-set-throws.js @@ -34,7 +34,7 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(Test262Error, function() { sample.test262 = 1; - }, '`sample.test262 = 1` throws Test262Error'); + }); assert.sameValue(sample.test262, undefined, 'The value of sample.test262 is expected to equal `undefined`'); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/null-tobigint.js b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/null-tobigint.js index 679c50c6903..31e0045a4b6 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/null-tobigint.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/null-tobigint.js @@ -56,6 +56,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { typedArray[0] = null; - }, '`typedArray[0] = null` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/number-tobigint.js b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/number-tobigint.js index 692b17d20b6..5adb9a6d198 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/number-tobigint.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/number-tobigint.js @@ -56,30 +56,30 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { typedArray[0] = 1; - }, '`typedArray[0] = 1` throws TypeError'); + }); assert.throws(TypeError, function() { typedArray[0] = Math.pow(2, 63); - }, '`typedArray[0] = Math.pow(2, 63)` throws TypeError'); + }); assert.throws(TypeError, function() { typedArray[0] = +0; - }, '`typedArray[0] = +0` throws TypeError'); + }); assert.throws(TypeError, function() { typedArray[0] = -0; - }, '`typedArray[0] = -0` throws TypeError'); + }); assert.throws(TypeError, function() { typedArray[0] = Infinity; - }, '`typedArray[0] = Infinity` throws TypeError'); + }); assert.throws(TypeError, function() { typedArray[0] = -Infinity; - }, '`typedArray[0] = -Infinity` throws TypeError'); + }); assert.throws(TypeError, function() { typedArray[0] = NaN; - }, '`typedArray[0] = NaN` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/string-nan-tobigint.js b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/string-nan-tobigint.js index 1a73eecc675..cafa32df253 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/string-nan-tobigint.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/string-nan-tobigint.js @@ -60,6 +60,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(SyntaxError, function() { typedArray[0] = "definately not a number"; - }, '`typedArray[0] = "definately not a number"` throws SyntaxError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/symbol-tobigint.js b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/symbol-tobigint.js index fc39ac9d600..a2e5cdc55cf 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/symbol-tobigint.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/symbol-tobigint.js @@ -58,6 +58,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { typedArray[0] = s; - }, '`typedArray[0] = s` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/undefined-tobigint.js b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/undefined-tobigint.js index ddfe1b1d37a..2232e5d3ab1 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/undefined-tobigint.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/BigInt/undefined-tobigint.js @@ -57,6 +57,6 @@ testWithBigIntTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { typedArray[0] = undefined; - }, '`typedArray[0] = undefined` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/bigint-tonumber.js b/test/built-ins/TypedArrayConstructors/internals/Set/bigint-tonumber.js index 259c5f9f314..fd172e27863 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/bigint-tonumber.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/bigint-tonumber.js @@ -55,5 +55,5 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(TypeError, function() { typedArray[0] = 1n; - }, '`typedArray[0] = 1n` throws TypeError'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js b/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js index 6c2ce33e12c..0029fd07c8e 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js @@ -51,5 +51,5 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(Test262Error, function() { sample['0'] = obj; - }, '`sample[\'0\'] = obj` throws Test262Error'); + }); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-numeric-index-set-throws.js b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-numeric-index-set-throws.js index a15b92f072a..c1bd92e8f3c 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-numeric-index-set-throws.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-numeric-index-set-throws.js @@ -34,7 +34,7 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(Test262Error, function() { sample.test262 = 1; - }, '`sample.test262 = 1` throws Test262Error'); + }); assert.sameValue(sample.test262, undefined, 'The value of sample.test262 is expected to equal `undefined`'); }); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js b/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js index f31ba315701..2c91acaa26f 100644 --- a/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js +++ b/test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js @@ -37,25 +37,25 @@ testWithTypedArrayConstructors(function(TA) { assert.throws(Test262Error, function() { sample["0"] = obj; - }, '`sample["0"] = obj` throws Test262Error'); + }); assert.throws(Test262Error, function() { sample["1.1"] = obj; - }, '`sample["1.1"] = obj` throws Test262Error'); + }); assert.throws(Test262Error, function() { sample["-0"] = obj; - }, '`sample["-0"] = obj` throws Test262Error'); + }); assert.throws(Test262Error, function() { sample["-1"] = obj; - }, '`sample["-1"] = obj` throws Test262Error'); + }); assert.throws(Test262Error, function() { sample["1"] = obj; - }, '`sample["1"] = obj` throws Test262Error'); + }); assert.throws(Test262Error, function() { sample["2"] = obj; - }, '`sample["2"] = obj` throws Test262Error'); + }); }); diff --git a/test/built-ins/WeakMap/prototype/delete/not-a-constructor.js b/test/built-ins/WeakMap/prototype/delete/not-a-constructor.js index f51ad3f1bee..af4b4218f11 100644 --- a/test/built-ins/WeakMap/prototype/delete/not-a-constructor.js +++ b/test/built-ins/WeakMap/prototype/delete/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let wm = new WeakMap(); new wm.delete(); -}, '`let wm = new WeakMap(); new wm.delete()` throws TypeError'); +}); diff --git a/test/built-ins/WeakMap/prototype/get/not-a-constructor.js b/test/built-ins/WeakMap/prototype/get/not-a-constructor.js index d27cc280a2b..f85a893dc20 100644 --- a/test/built-ins/WeakMap/prototype/get/not-a-constructor.js +++ b/test/built-ins/WeakMap/prototype/get/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let wm = new WeakMap(); new wm.get(); -}, '`let wm = new WeakMap(); new wm.get()` throws TypeError'); +}); diff --git a/test/built-ins/WeakMap/prototype/has/not-a-constructor.js b/test/built-ins/WeakMap/prototype/has/not-a-constructor.js index d8a1da2b0c8..4651f12c95c 100644 --- a/test/built-ins/WeakMap/prototype/has/not-a-constructor.js +++ b/test/built-ins/WeakMap/prototype/has/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let wm = new WeakMap(); new wm.has(); -}, '`let wm = new WeakMap(); new wm.has()` throws TypeError'); +}); diff --git a/test/built-ins/WeakMap/prototype/set/not-a-constructor.js b/test/built-ins/WeakMap/prototype/set/not-a-constructor.js index db26f10bb88..d23bf0e0505 100644 --- a/test/built-ins/WeakMap/prototype/set/not-a-constructor.js +++ b/test/built-ins/WeakMap/prototype/set/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let wm = new WeakMap(); new wm.set({}, 1); -}, '`let wm = new WeakMap(); new wm.set({}, 1)` throws TypeError'); +}); diff --git a/test/built-ins/WeakRef/prototype/deref/not-a-constructor.js b/test/built-ins/WeakRef/prototype/deref/not-a-constructor.js index a319779a33b..6d6741aa666 100644 --- a/test/built-ins/WeakRef/prototype/deref/not-a-constructor.js +++ b/test/built-ins/WeakRef/prototype/deref/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let wr = new WeakRef({}); new wr.deref(); -}, '`let wr = new WeakRef({}); new wr.deref()` throws TypeError'); +}); diff --git a/test/built-ins/WeakSet/prototype/add/not-a-constructor.js b/test/built-ins/WeakSet/prototype/add/not-a-constructor.js index caa39ce8f16..69ef76697c9 100644 --- a/test/built-ins/WeakSet/prototype/add/not-a-constructor.js +++ b/test/built-ins/WeakSet/prototype/add/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let ws = new WeakSet(); new ws.add({}); -}, '`let ws = new WeakSet(); new ws.add({})` throws TypeError'); +}); diff --git a/test/built-ins/WeakSet/prototype/delete/not-a-constructor.js b/test/built-ins/WeakSet/prototype/delete/not-a-constructor.js index b0d14ef0762..84b7c8fcfb7 100644 --- a/test/built-ins/WeakSet/prototype/delete/not-a-constructor.js +++ b/test/built-ins/WeakSet/prototype/delete/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let ws = new WeakSet(); new ws.delete(); -}, '`let ws = new WeakSet(); new ws.delete()` throws TypeError'); +}); diff --git a/test/built-ins/WeakSet/prototype/has/not-a-constructor.js b/test/built-ins/WeakSet/prototype/has/not-a-constructor.js index 67c1401bc0e..715cd58a4c1 100644 --- a/test/built-ins/WeakSet/prototype/has/not-a-constructor.js +++ b/test/built-ins/WeakSet/prototype/has/not-a-constructor.js @@ -29,5 +29,5 @@ assert.sameValue( assert.throws(TypeError, () => { let ws = new WeakSet(); new ws.has(); -}, '`let ws = new WeakSet(); new ws.has()` throws TypeError'); +}); diff --git a/test/built-ins/decodeURI/not-a-constructor.js b/test/built-ins/decodeURI/not-a-constructor.js index 43af3ce8ba2..244149213f8 100644 --- a/test/built-ins/decodeURI/not-a-constructor.js +++ b/test/built-ins/decodeURI/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(decodeURI), false, 'isConstructor(decodeURI) must assert.throws(TypeError, () => { new decodeURI(''); -}, '`new decodeURI(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/decodeURIComponent/not-a-constructor.js b/test/built-ins/decodeURIComponent/not-a-constructor.js index 2b36ae8fd0e..098ccf57324 100644 --- a/test/built-ins/decodeURIComponent/not-a-constructor.js +++ b/test/built-ins/decodeURIComponent/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(decodeURIComponent), false, 'isConstructor(decode assert.throws(TypeError, () => { new decodeURIComponent(''); -}, '`new decodeURIComponent(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/encodeURI/not-a-constructor.js b/test/built-ins/encodeURI/not-a-constructor.js index 1976bcd4177..000de04843c 100644 --- a/test/built-ins/encodeURI/not-a-constructor.js +++ b/test/built-ins/encodeURI/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(encodeURI), false, 'isConstructor(encodeURI) must assert.throws(TypeError, () => { new encodeURI(''); -}, '`new encodeURI(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/encodeURIComponent/not-a-constructor.js b/test/built-ins/encodeURIComponent/not-a-constructor.js index b14665629af..39b6b9c9aa5 100644 --- a/test/built-ins/encodeURIComponent/not-a-constructor.js +++ b/test/built-ins/encodeURIComponent/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(encodeURIComponent), false, 'isConstructor(encode assert.throws(TypeError, () => { new encodeURIComponent(''); -}, '`new encodeURIComponent(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/eval/not-a-constructor.js b/test/built-ins/eval/not-a-constructor.js index 4dbc4523d9f..7574370d787 100644 --- a/test/built-ins/eval/not-a-constructor.js +++ b/test/built-ins/eval/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(eval), false, 'isConstructor(eval) must return fa assert.throws(TypeError, () => { new eval(''); -}, '`new eval(\'\')` throws TypeError'); +}); diff --git a/test/built-ins/isFinite/not-a-constructor.js b/test/built-ins/isFinite/not-a-constructor.js index 55038c7f586..5e1cb8e0c27 100644 --- a/test/built-ins/isFinite/not-a-constructor.js +++ b/test/built-ins/isFinite/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(isFinite), false, 'isConstructor(isFinite) must r assert.throws(TypeError, () => { new isFinite(1); -}, '`new isFinite(1)` throws TypeError'); +}); diff --git a/test/built-ins/isNaN/not-a-constructor.js b/test/built-ins/isNaN/not-a-constructor.js index 72164de19e9..439301c90c9 100644 --- a/test/built-ins/isNaN/not-a-constructor.js +++ b/test/built-ins/isNaN/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(isNaN), false, 'isConstructor(isNaN) must return assert.throws(TypeError, () => { new isNaN(1); -}, '`new isNaN(1)` throws TypeError'); +}); diff --git a/test/built-ins/parseFloat/not-a-constructor.js b/test/built-ins/parseFloat/not-a-constructor.js index fc9ab8a7384..9a21105b230 100644 --- a/test/built-ins/parseFloat/not-a-constructor.js +++ b/test/built-ins/parseFloat/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(parseFloat), false, 'isConstructor(parseFloat) mu assert.throws(TypeError, () => { new parseFloat(1); -}, '`new parseFloat(1)` throws TypeError'); +}); diff --git a/test/built-ins/parseInt/not-a-constructor.js b/test/built-ins/parseInt/not-a-constructor.js index 2d004cad545..d0983da2b3a 100644 --- a/test/built-ins/parseInt/not-a-constructor.js +++ b/test/built-ins/parseInt/not-a-constructor.js @@ -25,5 +25,5 @@ assert.sameValue(isConstructor(parseInt), false, 'isConstructor(parseInt) must r assert.throws(TypeError, () => { new parseInt(1); -}, '`new parseInt(1)` throws TypeError'); +}); diff --git a/test/intl402/Locale/constructor-options-collation-invalid.js b/test/intl402/Locale/constructor-options-collation-invalid.js index c4e6868605f..2d8f842d38e 100644 --- a/test/intl402/Locale/constructor-options-collation-invalid.js +++ b/test/intl402/Locale/constructor-options-collation-invalid.js @@ -30,5 +30,5 @@ const invalidCollationOptions = [ for (const invalidCollationOption of invalidCollationOptions) { assert.throws(RangeError, function() { new Intl.Locale("en", {collation: invalidCollationOption}); - }, '`new Intl.Locale("en", {collation: invalidCollationOption})` throws RangeError'); + }); } From db7c0d149963cf2088613e248a958834fa78daa2 Mon Sep 17 00:00:00 2001 From: Rezvan Mahdavi Hezaveh Date: Mon, 25 Mar 2024 10:22:05 -0700 Subject: [PATCH 11/59] [explicit-resource-management] Add using in bytecode generator This CL adds `using` to bytecode generator. This CL does not include exception handling and JSDisposableStack methods. Also, since `using` and `const` have the same behavior (except for disposing resources), we add required checks to the existing code. Bug: v8:13559 Change-Id: I1d169859cc2a3e16c7cc9078219d5e4a466f4560 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5270855 Commit-Queue: Rezvan Mahdavi Hezaveh Reviewed-by: Leszek Swirski Cr-Commit-Position: refs/heads/main@{#93014} --- features.txt | 4 + .../Symbol/dispose/cross-realm.js | 14 ++ .../Symbol/dispose/prop-desc.js | 17 ++ .../call-dispose-methods.js | 191 ++++++++++++++++++ 4 files changed, 226 insertions(+) create mode 100644 test/staging/explicit-resource-management/Symbol/dispose/cross-realm.js create mode 100644 test/staging/explicit-resource-management/Symbol/dispose/prop-desc.js create mode 100644 test/staging/explicit-resource-management/call-dispose-methods.js diff --git a/features.txt b/features.txt index 81e64d71e68..9b55d6a5236 100644 --- a/features.txt +++ b/features.txt @@ -109,6 +109,10 @@ promise-with-resolvers # https://github.com/tc39/proposal-set-methods set-methods +# Explicit Resource Management +# https://github.com/tc39/proposal-explicit-resource-management +explicit-resource-management + ## Standard language features # # Language features that have been included in a published version of the diff --git a/test/staging/explicit-resource-management/Symbol/dispose/cross-realm.js b/test/staging/explicit-resource-management/Symbol/dispose/cross-realm.js new file mode 100644 index 00000000000..f11c73d213e --- /dev/null +++ b/test/staging/explicit-resource-management/Symbol/dispose/cross-realm.js @@ -0,0 +1,14 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Value shared by all realms +info: | + Unless otherwise specified, well-known symbols values are shared by all + realms. +features: [cross-realm, explicit-resource-management] +---*/ + +var OSymbol = $262.createRealm().global.Symbol; + +assert.sameValue(Symbol.dispose, OSymbol.dispose); diff --git a/test/staging/explicit-resource-management/Symbol/dispose/prop-desc.js b/test/staging/explicit-resource-management/Symbol/dispose/prop-desc.js new file mode 100644 index 00000000000..0913314a7bb --- /dev/null +++ b/test/staging/explicit-resource-management/Symbol/dispose/prop-desc.js @@ -0,0 +1,17 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + `Symbol.dispose` property descriptor +info: | + This property has the attributes { [[Writable]]: false, [[Enumerable]]: + false, [[Configurable]]: false }. +includes: [propertyHelper.js] +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof Symbol.dispose, 'symbol'); +verifyNotEnumerable(Symbol, 'dispose'); +verifyNotWritable(Symbol, 'dispose'); +verifyNotConfigurable(Symbol, 'dispose'); diff --git a/test/staging/explicit-resource-management/call-dispose-methods.js b/test/staging/explicit-resource-management/call-dispose-methods.js new file mode 100644 index 00000000000..4dfcdd5e28c --- /dev/null +++ b/test/staging/explicit-resource-management/call-dispose-methods.js @@ -0,0 +1,191 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called in correct syntax. +includes: [compareArray.js] +features: [explicit-resource-management] +---*/ + +// Block ---------------- +let blockValues = []; + +(function TestUsingInBlock() { + { + using x = { + value: 1, + [Symbol.dispose]() { + blockValues.push(42); + } + }; + blockValues.push(43); + } +})(); +assert.compareArray(blockValues, [43, 42]); + +// CaseBlock -------------- +let caseBlockValues = []; + +(function TestUsingInCaseBlock() { + let label = 1; + switch (label) { + case 1: + using x = { + value: 1, + [Symbol.dispose]() { + caseBlockValues.push(42); + } + }; + } + caseBlockValues.push(43); +})(); +assert.compareArray(caseBlockValues, [42, 43]); + +// ForStatement -------------- +let forStatementValues = []; + +(function TestUsingInForStatement() { + for (let i = 0; i < 3; i++) { + using x = { + value: i, + [Symbol.dispose]() { + forStatementValues.push(this.value); + } + }; + } + forStatementValues.push(3); +})(); +assert.compareArray(forStatementValues, [0, 1, 2, 3]); + +// ForInStatement -------------- +let forInStatementValues = []; + +(function TestUsingInForInStatement() { + for (let i in [0, 1]) { + using x = { + value: i, + [Symbol.dispose]() { + forInStatementValues.push(this.value); + } + }; + } + forInStatementValues.push('2'); +})(); +assert.compareArray(forInStatementValues, ['0', '1', '2']); + +// ForOfStatement -------------- +let forOfStatementValues = []; + +(function TestUsingInForOfStatement() { + for (let i of [0, 1]) { + using x = { + value: i, + [Symbol.dispose]() { + forOfStatementValues.push(this.value); + } + }; + } + forOfStatementValues.push(2); +})(); +assert.compareArray(forOfStatementValues, [0, 1, 2]); + +// FunctionBody -------------- +let functionBodyValues = []; + +(function TestUsingInFunctionBody() { + using x = { + value: 1, + [Symbol.dispose]() { + functionBodyValues.push(42); + } + }; + using y = { + value: 2, + [Symbol.dispose]() { + functionBodyValues.push(43); + } + }; +})(); +assert.compareArray(functionBodyValues, [43, 42]); + +// GeneratorBody -------------- +let generatorBodyValues = []; + +function* gen() { + using x = { + value: 1, + [Symbol.dispose]() { + generatorBodyValues.push(42); + } + }; + yield x; +} + +(function TestUsingInGeneratorBody() { + let iter = gen(); + iter.next(); + iter.next(); + generatorBodyValues.push(43); +})(); +assert.compareArray(generatorBodyValues, [42, 43]); + +// ClassStaticBlockBody -------------- +let classStaticBlockBodyValues = []; + +class staticBlockClass { + static { + using x = { + value: 1, + [Symbol.dispose]() { + classStaticBlockBodyValues.push(42); + } + }; + } +} + +(function TestUsingInAsyncFunctionBody() { + let example = new staticBlockClass(); +})(); +assert.compareArray(classStaticBlockBodyValues, [42]); + +// Derived constructor case +let derivedConstructorValues = []; + +class baseClass { + constructor() { + derivedConstructorValues.push(43); + } +} + +class subClass extends baseClass { + constructor() { + try { + using x = { + value: 1, + [Symbol.dispose]() { + derivedConstructorValues.push(42); + } + }; + } catch (e) { + return; + } finally { + super(); + } + } +} + +(function TestUsingInDerivedConstructor() { + let example = new subClass(); +})(); +assert.compareArray(derivedConstructorValues, [42, 43]); + +// Lack of dispose method +let values = []; + +function TestUsingWithoutDisposeMethod() { + { + using x = {value: 1}; + values.push(43); + } +} +assert.throws(TypeError, TestUsingWithoutDisposeMethod, 'No dispose method'); From c1d09be84050f05710331cd86de653315f8263f7 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Tue, 12 Mar 2024 11:22:24 -0700 Subject: [PATCH 12/59] add more cases for float16 coercions --- harness/byteConversionValues.js | 347 +++++++++++++++++++++++--------- 1 file changed, 256 insertions(+), 91 deletions(-) diff --git a/harness/byteConversionValues.js b/harness/byteConversionValues.js index d602f3e213b..bbec02cda76 100644 --- a/harness/byteConversionValues.js +++ b/harness/byteConversionValues.js @@ -51,7 +51,22 @@ var byteConversionValues = { -4294967296, // - ( 2 ** 32 ) Infinity, -Infinity, - 0 + 0, + 2049, // an integer which rounds down under ties-to-even when cast to float16 + 2051, // an integer which rounds up under ties-to-even when cast to float16 + 0.00006103515625, // smallest normal float16 + 0.00006097555160522461, // largest subnormal float16 + 5.960464477539063e-8, // smallest float16 + 2.9802322387695312e-8, // largest double which rounds to 0 when cast to float16 + 2.980232238769532e-8, // smallest double which does not round to 0 when cast to float16 + 8.940696716308594e-8, // a double which rounds up to a subnormal under ties-to-even when cast to float16 + 1.4901161193847656e-7, // a double which rounds down to a subnormal under ties-to-even when cast to float16 + 1.490116119384766e-7, // the next double above the one on the previous line one + 65504, // max finite float16 + 65520, // smallest double which rounds to infinity when cast to float16 + 65519.99999999999, // largest double which does not round to infinity when cast to float16 + 0.000061005353927612305, // smallest double which rounds to a non-subnormal when cast to float16 + 0.0000610053539276123 // largest double which rounds to a subnormal when cast to float16 ], expected: { @@ -96,7 +111,22 @@ var byteConversionValues = { 0, // -4294967296 0, // Infinity 0, // -Infinity - 0 + 0, // 0 + 1, // 2049 + 3, // 2051 + 0, // 0.00006103515625 + 0, // 0.00006097555160522461 + 0, // 5.960464477539063e-8 + 0, // 2.9802322387695312e-8 + 0, // 2.980232238769532e-8 + 0, // 8.940696716308594e-8 + 0, // 1.4901161193847656e-7 + 0, // 1.490116119384766e-7 + -32, // 65504 + -16, // 65520 + -17, // 65519.99999999999 + 0, // 0.000061005353927612305 + 0 // 0.0000610053539276123 ], Uint8: [ 127, // 127 @@ -139,7 +169,22 @@ var byteConversionValues = { 0, // -4294967296 0, // Infinity 0, // -Infinity - 0 + 0, // 0 + 1, // 2049 + 3, // 2051 + 0, // 0.00006103515625 + 0, // 0.00006097555160522461 + 0, // 5.960464477539063e-8 + 0, // 2.9802322387695312e-8 + 0, // 2.980232238769532e-8 + 0, // 8.940696716308594e-8 + 0, // 1.4901161193847656e-7 + 0, // 1.490116119384766e-7 + 224, // 65504 + 240, // 65520 + 239, // 65519.99999999999 + 0, // 0.000061005353927612305 + 0 // 0.0000610053539276123 ], Uint8Clamped: [ 127, // 127 @@ -182,7 +227,22 @@ var byteConversionValues = { 0, // -4294967296 255, // Infinity 0, // -Infinity - 0 + 0, // 0 + 255, // 2049 + 255, // 2051 + 0, // 0.00006103515625 + 0, // 0.00006097555160522461 + 0, // 5.960464477539063e-8 + 0, // 2.9802322387695312e-8 + 0, // 2.980232238769532e-8 + 0, // 8.940696716308594e-8 + 0, // 1.4901161193847656e-7 + 0, // 1.490116119384766e-7 + 255, // 65504 + 255, // 65520 + 255, // 65519.99999999999 + 0, // 0.000061005353927612305 + 0 // 0.0000610053539276123 ], Int16: [ 127, // 127 @@ -225,7 +285,22 @@ var byteConversionValues = { 0, // -4294967296 0, // Infinity 0, // -Infinity - 0 + 0, // 0 + 2049, // 2049 + 2051, // 2051 + 0, // 0.00006103515625 + 0, // 0.00006097555160522461 + 0, // 5.960464477539063e-8 + 0, // 2.9802322387695312e-8 + 0, // 2.980232238769532e-8 + 0, // 8.940696716308594e-8 + 0, // 1.4901161193847656e-7 + 0, // 1.490116119384766e-7 + -32, // 65504 + -16, // 65520 + -17, // 65519.99999999999 + 0, // 0.000061005353927612305 + 0 // 0.0000610053539276123 ], Uint16: [ 127, // 127 @@ -268,7 +343,22 @@ var byteConversionValues = { 0, // -4294967296 0, // Infinity 0, // -Infinity - 0 + 0, // 0 + 2049, // 2049 + 2051, // 2051 + 0, // 0.00006103515625 + 0, // 0.00006097555160522461 + 0, // 5.960464477539063e-8 + 0, // 2.9802322387695312e-8 + 0, // 2.980232238769532e-8 + 0, // 8.940696716308594e-8 + 0, // 1.4901161193847656e-7 + 0, // 1.490116119384766e-7 + 65504, // 65504 + 65520, // 65520 + 65519, // 65519.99999999999 + 0, // 0.000061005353927612305 + 0 // 0.0000610053539276123 ], Int32: [ 127, // 127 @@ -311,7 +401,22 @@ var byteConversionValues = { 0, // -4294967296 0, // Infinity 0, // -Infinity - 0 + 0, // 0 + 2049, // 2049 + 2051, // 2051 + 0, // 0.00006103515625 + 0, // 0.00006097555160522461 + 0, // 5.960464477539063e-8 + 0, // 2.9802322387695312e-8 + 0, // 2.980232238769532e-8 + 0, // 8.940696716308594e-8 + 0, // 1.4901161193847656e-7 + 0, // 1.490116119384766e-7 + 65504, // 65504 + 65520, // 65520 + 65519, // 65519.99999999999 + 0, // 0.000061005353927612305 + 0 // 0.0000610053539276123 ], Uint32: [ 127, // 127 @@ -354,93 +459,138 @@ var byteConversionValues = { 0, // -4294967296 0, // Infinity 0, // -Infinity - 0 + 0, // 0 + 2049, // 2049 + 2051, // 2051 + 0, // 0.00006103515625 + 0, // 0.00006097555160522461 + 0, // 5.960464477539063e-8 + 0, // 2.9802322387695312e-8 + 0, // 2.980232238769532e-8 + 0, // 8.940696716308594e-8 + 0, // 1.4901161193847656e-7 + 0, // 1.490116119384766e-7 + 65504, // 65504 + 65520, // 65520 + 65519, // 65519.99999999999 + 0, // 0.000061005353927612305 + 0 // 0.0000610053539276123 ], Float16: [ - 127, // 127 - 128, // 128 - 32768, // 32767 - 32768, // 32768 - Infinity, // 2147483647 - Infinity, // 2147483648 - 255, // 255 - 256, // 256 - Infinity, // 65535 - Infinity, // 65536 - Infinity, // 4294967295 - Infinity, // 4294967296 - Infinity, // 9007199254740991 - Infinity, // 9007199254740992 - 1.099609375, // 1.1 - 0.0999755859375, // 0.1 - 0.5, // 0.5 - 0.5, // 0.50000001, - 0.60009765625, // 0.6 - 0.7001953125, // 0.7 - NaN, // undefined - -1, // -1 - -0, // -0 - -0.0999755859375, // -0.1 - -1.099609375, // -1.1 - NaN, // NaN - -127, // -127 - -128, // -128 - -32768, // -32767 - -32768, // -32768 - -Infinity, // -2147483647 - -Infinity, // -2147483648 - -255, // -255 - -256, // -256 - -Infinity, // -65535 - -Infinity, // -65536 - -Infinity, // -4294967295 - -Infinity, // -4294967296 - Infinity, // Infinity - -Infinity, // -Infinity - 0 + 127, // 127 + 128, // 128 + 32768, // 32767 + 32768, // 32768 + Infinity, // 2147483647 + Infinity, // 2147483648 + 255, // 255 + 256, // 256 + Infinity, // 65535 + Infinity, // 65536 + Infinity, // 4294967295 + Infinity, // 4294967296 + Infinity, // 9007199254740991 + Infinity, // 9007199254740992 + 1.099609375, // 1.1 + 0.0999755859375, // 0.1 + 0.5, // 0.5 + 0.5, // 0.50000001, + 0.60009765625, // 0.6 + 0.7001953125, // 0.7 + NaN, // undefined + -1, // -1 + -0, // -0 + -0.0999755859375, // -0.1 + -1.099609375, // -1.1 + NaN, // NaN + -127, // -127 + -128, // -128 + -32768, // -32767 + -32768, // -32768 + -Infinity, // -2147483647 + -Infinity, // -2147483648 + -255, // -255 + -256, // -256 + -Infinity, // -65535 + -Infinity, // -65536 + -Infinity, // -4294967295 + -Infinity, // -4294967296 + Infinity, // Infinity + -Infinity, // -Infinity + 0, // 0 + 2048, // 2049 + 2052, // 2051 + 0.00006103515625, // 0.00006103515625 + 0.00006097555160522461, // 0.00006097555160522461 + 5.960464477539063e-8, // 5.960464477539063e-8 + 0, // 2.9802322387695312e-8 + 5.960464477539063e-8, // 2.980232238769532e-8 + 1.1920928955078125e-7, // 8.940696716308594e-8 + 1.1920928955078125e-7, // 1.4901161193847656e-7 + 1.7881393432617188e-7, // 1.490116119384766e-7 + 65504, // 65504 + Infinity, // 65520 + 65504, // 65519.99999999999 + 0.00006103515625, // 0.000061005353927612305 + 0.00006097555160522461 // 0.0000610053539276123 ], Float32: [ - 127, // 127 - 128, // 128 - 32767, // 32767 - 32768, // 32768 - 2147483648, // 2147483647 - 2147483648, // 2147483648 - 255, // 255 - 256, // 256 - 65535, // 65535 - 65536, // 65536 - 4294967296, // 4294967295 - 4294967296, // 4294967296 - 9007199254740992, // 9007199254740991 - 9007199254740992, // 9007199254740992 - 1.100000023841858, // 1.1 - 0.10000000149011612, // 0.1 - 0.5, // 0.5 - 0.5, // 0.50000001, - 0.6000000238418579, // 0.6 - 0.699999988079071, // 0.7 - NaN, // undefined - -1, // -1 - -0, // -0 - -0.10000000149011612, // -0.1 - -1.100000023841858, // -1.1 - NaN, // NaN - -127, // -127 - -128, // -128 - -32767, // -32767 - -32768, // -32768 - -2147483648, // -2147483647 - -2147483648, // -2147483648 - -255, // -255 - -256, // -256 - -65535, // -65535 - -65536, // -65536 - -4294967296, // -4294967295 - -4294967296, // -4294967296 - Infinity, // Infinity - -Infinity, // -Infinity - 0 + 127, // 127 + 128, // 128 + 32767, // 32767 + 32768, // 32768 + 2147483648, // 2147483647 + 2147483648, // 2147483648 + 255, // 255 + 256, // 256 + 65535, // 65535 + 65536, // 65536 + 4294967296, // 4294967295 + 4294967296, // 4294967296 + 9007199254740992, // 9007199254740991 + 9007199254740992, // 9007199254740992 + 1.100000023841858, // 1.1 + 0.10000000149011612, // 0.1 + 0.5, // 0.5 + 0.5, // 0.50000001, + 0.6000000238418579, // 0.6 + 0.699999988079071, // 0.7 + NaN, // undefined + -1, // -1 + -0, // -0 + -0.10000000149011612, // -0.1 + -1.100000023841858, // -1.1 + NaN, // NaN + -127, // -127 + -128, // -128 + -32767, // -32767 + -32768, // -32768 + -2147483648, // -2147483647 + -2147483648, // -2147483648 + -255, // -255 + -256, // -256 + -65535, // -65535 + -65536, // -65536 + -4294967296, // -4294967295 + -4294967296, // -4294967296 + Infinity, // Infinity + -Infinity, // -Infinity + 0, // 0 + 2049, // 2049 + 2051, // 2051 + 0.00006103515625, // 0.00006103515625 + 0.00006097555160522461, // 0.00006097555160522461 + 5.960464477539063e-8, // 5.960464477539063e-8 + 2.9802322387695312e-8, // 2.9802322387695312e-8 + 2.9802322387695312e-8, // 2.980232238769532e-8 + 8.940696716308594e-8, // 8.940696716308594e-8 + 1.4901161193847656e-7, // 1.4901161193847656e-7 + 1.4901161193847656e-7, // 1.490116119384766e-7 + 65504, // 65504 + 65520, // 65520 + 65520, // 65519.99999999999 + 0.000061005353927612305, // 0.000061005353927612305 + 0.000061005353927612305 // 0.0000610053539276123 ], Float64: [ 127, // 127 @@ -483,7 +633,22 @@ var byteConversionValues = { -4294967296, // -4294967296 Infinity, // Infinity -Infinity, // -Infinity - 0 + 0, // 0 + 2049, // 2049 + 2051, // 2051 + 0.00006103515625, // 0.00006103515625 + 0.00006097555160522461, // 0.00006097555160522461 + 5.960464477539063e-8, // 5.960464477539063e-8 + 2.9802322387695312e-8, // 2.9802322387695312e-8 + 2.980232238769532e-8, // 2.980232238769532e-8 + 8.940696716308594e-8, // 8.940696716308594e-8 + 1.4901161193847656e-7, // 1.4901161193847656e-7 + 1.490116119384766e-7, // 1.490116119384766e-7 + 65504, // 65504 + 65520, // 65520 + 65519.99999999999, // 65519.99999999999 + 0.000061005353927612305, // 0.000061005353927612305 + 0.0000610053539276123 // 0.0000610053539276123 ] } }; From 435dcc9f6ec07f4d63bea6492acdd150e68b46c5 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Tue, 12 Mar 2024 11:34:59 -0700 Subject: [PATCH 13/59] tests for Math.f16round --- features.txt | 4 +++ test/built-ins/Math/f16round/length.js | 17 +++++++++++++ test/built-ins/Math/f16round/name.js | 17 +++++++++++++ .../Math/f16round/not-a-constructor.js | 17 +++++++++++++ test/built-ins/Math/f16round/prop-desc.js | 14 +++++++++++ .../Math/f16round/value-convertion.js | 25 +++++++++++++++++++ 6 files changed, 94 insertions(+) create mode 100644 test/built-ins/Math/f16round/length.js create mode 100644 test/built-ins/Math/f16round/name.js create mode 100644 test/built-ins/Math/f16round/not-a-constructor.js create mode 100644 test/built-ins/Math/f16round/prop-desc.js create mode 100644 test/built-ins/Math/f16round/value-convertion.js diff --git a/features.txt b/features.txt index 9b55d6a5236..53d7f994858 100644 --- a/features.txt +++ b/features.txt @@ -113,6 +113,10 @@ set-methods # https://github.com/tc39/proposal-explicit-resource-management explicit-resource-management +# Float16Array + Math.f16round +# https://github.com/tc39/proposal-float16array +Float16Array + ## Standard language features # # Language features that have been included in a published version of the diff --git a/test/built-ins/Math/f16round/length.js b/test/built-ins/Math/f16round/length.js new file mode 100644 index 00000000000..f3ca88c4ba8 --- /dev/null +++ b/test/built-ins/Math/f16round/length.js @@ -0,0 +1,17 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-math.f16round +description: > + Math.f16round.length is 1 +features: [Float16Array] +includes: [propertyHelper.js] +---*/ + +verifyProperty(Math.f16round, 'length', { + value: 1, + enumerable: false, + writable: false, + configurable: true +}); diff --git a/test/built-ins/Math/f16round/name.js b/test/built-ins/Math/f16round/name.js new file mode 100644 index 00000000000..606210f12a1 --- /dev/null +++ b/test/built-ins/Math/f16round/name.js @@ -0,0 +1,17 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-math.f16round +description: > + Math.f16round.name is "f16round" +features: [Float16Array] +includes: [propertyHelper.js] +---*/ + +verifyProperty(Math.f16round, 'name', { + value: 'f16round', + enumerable: false, + writable: false, + configurable: true +}); diff --git a/test/built-ins/Math/f16round/not-a-constructor.js b/test/built-ins/Math/f16round/not-a-constructor.js new file mode 100644 index 00000000000..4d9cb369cc4 --- /dev/null +++ b/test/built-ins/Math/f16round/not-a-constructor.js @@ -0,0 +1,17 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + Math.f16round does not implement [[Construct]], is not new-able +features: [Float16Array] +includes: [isConstructor.js] +features: [Reflect.construct] +---*/ + +assert(!isConstructor(Math.f16round), "Math.f16round is not a constructor"); + +assert.throws(TypeError, function () { + new Math.fround(); +}); diff --git a/test/built-ins/Math/f16round/prop-desc.js b/test/built-ins/Math/f16round/prop-desc.js new file mode 100644 index 00000000000..10f94d06bdc --- /dev/null +++ b/test/built-ins/Math/f16round/prop-desc.js @@ -0,0 +1,14 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-math.f16round +description: > + "f16round" property of Math +features: [Float16Array] +includes: [propertyHelper.js] +---*/ + +verifyNotEnumerable(Math, "f16round"); +verifyWritable(Math, "f16round"); +verifyConfigurable(Math, "f16round"); diff --git a/test/built-ins/Math/f16round/value-convertion.js b/test/built-ins/Math/f16round/value-convertion.js new file mode 100644 index 00000000000..c13b77a05fe --- /dev/null +++ b/test/built-ins/Math/f16round/value-convertion.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-math.f16round +description: > + Convert to binary16 format and than to binary64 format +features: [Float16Array] +includes: [byteConversionValues.js] +---*/ + +var values = byteConversionValues.values; +var expectedValues = byteConversionValues.expected.Float16; + +values.forEach(function(value, i) { + var expected = expectedValues[i]; + + var result = Math.f16round(value); + + assert.sameValue( + result, + expected, + "value: " + value + ); +}); From 4f7a43afbda4db2b3e43c0261c4fb8f3165eccc5 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Tue, 12 Mar 2024 23:22:15 -0700 Subject: [PATCH 14/59] add tests for get/setFloat16 --- ...etached-buffer-after-toindex-byteoffset.js | 23 +++++ ...hed-buffer-before-outofrange-byteoffset.js | 21 ++++ .../prototype/getFloat16/detached-buffer.js | 18 ++++ .../getFloat16/index-is-out-of-range.js | 60 ++++++++++++ .../DataView/prototype/getFloat16/length.js | 16 ++++ .../prototype/getFloat16/minus-zero.js | 18 ++++ .../DataView/prototype/getFloat16/name.js | 16 ++++ .../getFloat16/negative-byteoffset-throws.js | 20 ++++ .../prototype/getFloat16/not-a-constructor.js | 21 ++++ .../prototype/getFloat16/resizable-buffer.js | 41 ++++++++ ...-abrupt-from-tonumber-byteoffset-symbol.js | 18 ++++ .../return-abrupt-from-tonumber-byteoffset.js | 32 +++++++ .../prototype/getFloat16/return-infinity.js | 20 ++++ .../prototype/getFloat16/return-nan.js | 20 ++++ .../return-value-clean-arraybuffer.js | 23 +++++ .../getFloat16/return-values-custom-offset.js | 26 +++++ .../prototype/getFloat16/return-values.js | 37 +++++++ .../this-has-no-dataview-internal.js | 29 ++++++ .../getFloat16/this-is-not-object.js | 39 ++++++++ .../getFloat16/to-boolean-littleendian.js | 28 ++++++ .../getFloat16/toindex-byteoffset.js | 50 ++++++++++ .../detached-buffer-after-number-value.js | 24 +++++ ...etached-buffer-after-toindex-byteoffset.js | 23 +++++ ...hed-buffer-before-outofrange-byteoffset.js | 21 ++++ .../prototype/setFloat16/detached-buffer.js | 18 ++++ .../index-check-before-value-conversion.js | 33 +++++++ .../setFloat16/index-is-out-of-range.js | 68 +++++++++++++ .../DataView/prototype/setFloat16/length.js | 16 ++++ .../DataView/prototype/setFloat16/name.js | 16 ++++ .../setFloat16/negative-byteoffset-throws.js | 22 +++++ .../prototype/setFloat16/no-value-arg.js | 17 ++++ .../prototype/setFloat16/not-a-constructor.js | 21 ++++ .../range-check-after-value-conversion.js | 25 +++++ .../prototype/setFloat16/resizable-buffer.js | 41 ++++++++ ...-abrupt-from-tonumber-byteoffset-symbol.js | 18 ++++ .../return-abrupt-from-tonumber-byteoffset.js | 32 +++++++ ...eturn-abrupt-from-tonumber-value-symbol.js | 18 ++++ .../return-abrupt-from-tonumber-value.js | 32 +++++++ .../set-values-little-endian-order.js | 22 +++++ .../setFloat16/set-values-return-undefined.js | 33 +++++++ .../this-has-no-dataview-internal.js | 29 ++++++ .../setFloat16/this-is-not-object.js | 39 ++++++++ .../setFloat16/to-boolean-littleendian.js | 34 +++++++ .../setFloat16/toindex-byteoffset.js | 96 +++++++++++++++++++ .../Math/f16round/not-a-constructor.js | 3 +- 45 files changed, 1275 insertions(+), 2 deletions(-) create mode 100644 test/built-ins/DataView/prototype/getFloat16/detached-buffer-after-toindex-byteoffset.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/detached-buffer-before-outofrange-byteoffset.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/detached-buffer.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/index-is-out-of-range.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/length.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/minus-zero.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/name.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/negative-byteoffset-throws.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/not-a-constructor.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/resizable-buffer.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/return-abrupt-from-tonumber-byteoffset-symbol.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/return-abrupt-from-tonumber-byteoffset.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/return-infinity.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/return-nan.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/return-value-clean-arraybuffer.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/return-values-custom-offset.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/return-values.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/this-has-no-dataview-internal.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/this-is-not-object.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/to-boolean-littleendian.js create mode 100644 test/built-ins/DataView/prototype/getFloat16/toindex-byteoffset.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/detached-buffer-after-number-value.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/detached-buffer-after-toindex-byteoffset.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/detached-buffer-before-outofrange-byteoffset.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/detached-buffer.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/index-check-before-value-conversion.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/index-is-out-of-range.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/length.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/name.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/negative-byteoffset-throws.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/no-value-arg.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/not-a-constructor.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/range-check-after-value-conversion.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/resizable-buffer.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-byteoffset-symbol.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-byteoffset.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-value-symbol.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-value.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/set-values-little-endian-order.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/set-values-return-undefined.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/this-has-no-dataview-internal.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/this-is-not-object.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/to-boolean-littleendian.js create mode 100644 test/built-ins/DataView/prototype/setFloat16/toindex-byteoffset.js diff --git a/test/built-ins/DataView/prototype/getFloat16/detached-buffer-after-toindex-byteoffset.js b/test/built-ins/DataView/prototype/getFloat16/detached-buffer-after-toindex-byteoffset.js new file mode 100644 index 00000000000..0ca4cf85b2b --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/detached-buffer-after-toindex-byteoffset.js @@ -0,0 +1,23 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Detached buffer is only checked after ToIndex(requestIndex) +features: [Float16Array] +includes: [detachArrayBuffer.js] +---*/ + +var buffer = new ArrayBuffer(6); +var sample = new DataView(buffer, 0); + +$DETACHBUFFER(buffer); + +assert.throws(RangeError, function() { + sample.getFloat16(-1); +}); + +assert.throws(RangeError, function() { + sample.getFloat16(Infinity); +}, "Infinity"); diff --git a/test/built-ins/DataView/prototype/getFloat16/detached-buffer-before-outofrange-byteoffset.js b/test/built-ins/DataView/prototype/getFloat16/detached-buffer-before-outofrange-byteoffset.js new file mode 100644 index 00000000000..69de06bc856 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/detached-buffer-before-outofrange-byteoffset.js @@ -0,0 +1,21 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Detached buffer is checked before out of range byteOffset's value +features: [Float16Array] +includes: [detachArrayBuffer.js] +---*/ + +var sample; +var buffer = new ArrayBuffer(12); + +sample = new DataView(buffer, 0); + +$DETACHBUFFER(buffer); + +assert.throws(TypeError, function() { + sample.getFloat16(13); +}, "13"); diff --git a/test/built-ins/DataView/prototype/getFloat16/detached-buffer.js b/test/built-ins/DataView/prototype/getFloat16/detached-buffer.js new file mode 100644 index 00000000000..d3e1ae84e14 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/detached-buffer.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Throws a TypeError if buffer is detached +features: [Float16Array] +includes: [detachArrayBuffer.js] +---*/ + +var buffer = new ArrayBuffer(1); +var sample = new DataView(buffer, 0); + +$DETACHBUFFER(buffer); +assert.throws(TypeError, function() { + sample.getFloat16(0); +}); diff --git a/test/built-ins/DataView/prototype/getFloat16/index-is-out-of-range.js b/test/built-ins/DataView/prototype/getFloat16/index-is-out-of-range.js new file mode 100644 index 00000000000..864a21ed18f --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/index-is-out-of-range.js @@ -0,0 +1,60 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Throws a RangeError if getIndex + elementSize > viewSize +features: [Float16Array] +---*/ + +var sample; +var buffer = new ArrayBuffer(12); + +sample = new DataView(buffer, 0); + +assert.throws(RangeError, function() { + sample.getFloat16(Infinity); +}, "getIndex == Infinity"); + +assert.throws(RangeError, function() { + sample.getFloat16(13); +}, "13 + 2 > 12"); + +assert.throws(RangeError, function() { + sample.getFloat16(12); +}, "12 + 2 > 12"); + +assert.throws(RangeError, function() { + sample.getFloat16(11); +}, "11 + 2 > 12"); + +sample = new DataView(buffer, 10); +assert.throws(RangeError, function() { + sample.getFloat16(1); +}, "1 + 2 > 2 (offset)"); + +sample = new DataView(buffer, 11); +assert.throws(RangeError, function() { + sample.getFloat16(0); +}, "0 + 2 > 1 (offset)"); + +sample = new DataView(buffer, 0, 2); +assert.throws(RangeError, function() { + sample.getFloat16(1); +}, "1 + 2 > 2 (length)"); + +sample = new DataView(buffer, 0, 1); +assert.throws(RangeError, function() { + sample.getFloat16(0); +}, "0 + 2 > 1 (length)"); + +sample = new DataView(buffer, 4, 2); +assert.throws(RangeError, function() { + sample.getFloat16(1); +}, "1 + 2 > 2 (offset+length)"); + +sample = new DataView(buffer, 4, 1); +assert.throws(RangeError, function() { + sample.getFloat16(0); +}, "0 + 2 > 1 (offset+length)"); diff --git a/test/built-ins/DataView/prototype/getFloat16/length.js b/test/built-ins/DataView/prototype/getFloat16/length.js new file mode 100644 index 00000000000..3c054dd1da6 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/length.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + DataView.prototype.getFloat16.length is 1. +features: [Float16Array] +includes: [propertyHelper.js] +---*/ + +assert.sameValue(DataView.prototype.getFloat16.length, 1); + +verifyNotEnumerable(DataView.prototype.getFloat16, "length"); +verifyNotWritable(DataView.prototype.getFloat16, "length"); +verifyConfigurable(DataView.prototype.getFloat16, "length"); diff --git a/test/built-ins/DataView/prototype/getFloat16/minus-zero.js b/test/built-ins/DataView/prototype/getFloat16/minus-zero.js new file mode 100644 index 00000000000..6029e541e2c --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/minus-zero.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Return -0 +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 128); +sample.setUint8(1, 0); + +var result = sample.getFloat16(0); +assert.sameValue(result, -0); diff --git a/test/built-ins/DataView/prototype/getFloat16/name.js b/test/built-ins/DataView/prototype/getFloat16/name.js new file mode 100644 index 00000000000..6d8f4ffb465 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/name.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + DataView.prototype.getFloat16.name is "getFloat16". +features: [Float16Array] +includes: [propertyHelper.js] +---*/ + +assert.sameValue(DataView.prototype.getFloat16.name, "getFloat16"); + +verifyNotEnumerable(DataView.prototype.getFloat16, "name"); +verifyNotWritable(DataView.prototype.getFloat16, "name"); +verifyConfigurable(DataView.prototype.getFloat16, "name"); diff --git a/test/built-ins/DataView/prototype/getFloat16/negative-byteoffset-throws.js b/test/built-ins/DataView/prototype/getFloat16/negative-byteoffset-throws.js new file mode 100644 index 00000000000..c1df1c77bbd --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/negative-byteoffset-throws.js @@ -0,0 +1,20 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Throws a RangeError if ToInteger(byteOffset) < 0 +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +assert.throws(RangeError, function() { + sample.getFloat16(-1); +}, "-1"); + +assert.throws(RangeError, function() { + sample.getFloat16(-Infinity); +}, "-Infinity"); diff --git a/test/built-ins/DataView/prototype/getFloat16/not-a-constructor.js b/test/built-ins/DataView/prototype/getFloat16/not-a-constructor.js new file mode 100644 index 00000000000..192b5dae152 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/not-a-constructor.js @@ -0,0 +1,21 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + DataView.prototype.getFloat16 does not implement [[Construct]], is not new-able +includes: [isConstructor.js] +features: [Float16Array, Reflect.construct, DataView, arrow-function, ArrayBuffer] +---*/ + +assert.sameValue( + isConstructor(DataView.prototype.getFloat16), + false, + 'isConstructor(DataView.prototype.getFloat16) must return false' +); + +assert.throws(TypeError, () => { + let dv = new DataView(new ArrayBuffer(16)); new dv.getFloat16(0, 0); +}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getFloat16(0, 0)` throws TypeError'); + diff --git a/test/built-ins/DataView/prototype/getFloat16/resizable-buffer.js b/test/built-ins/DataView/prototype/getFloat16/resizable-buffer.js new file mode 100644 index 00000000000..56ffc94d797 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/resizable-buffer.js @@ -0,0 +1,41 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-dataview.prototype.getfloat16 +description: Throws a TypeError if buffer is out-of-bounds +features: [Float16Array, DataView, ArrayBuffer, resizable-arraybuffer] +---*/ + +assert.sameValue( + typeof ArrayBuffer.prototype.resize, + 'function', + 'implements ArrayBuffer.prototype.resize' +); + +var buffer = new ArrayBuffer(24, {maxByteLength: 32}); +var sample = new DataView(buffer, 0, 16); + +try { + buffer.resize(32); +} catch (_) {} + +assert.sameValue(sample.getFloat16(0), 0, 'following grow'); + +try { + buffer.resize(16); +} catch (_) {} + +assert.sameValue(sample.getFloat16(0), 0, 'following shrink (within bounds)'); + +var expectedError; +try { + buffer.resize(8); + expectedError = TypeError; +} catch (_) { + expectedError = Test262Error; +} + +assert.throws(expectedError, function() { + sample.getFloat16(0); + throw new Test262Error('the operation completed successfully'); +}); diff --git a/test/built-ins/DataView/prototype/getFloat16/return-abrupt-from-tonumber-byteoffset-symbol.js b/test/built-ins/DataView/prototype/getFloat16/return-abrupt-from-tonumber-byteoffset-symbol.js new file mode 100644 index 00000000000..1af75e54c79 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/return-abrupt-from-tonumber-byteoffset-symbol.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Return abrupt from ToNumber(symbol byteOffset) +features: [Float16Array, Symbol] +---*/ + +var buffer = new ArrayBuffer(1); +var sample = new DataView(buffer, 0); + +var s = Symbol("1"); + +assert.throws(TypeError, function() { + sample.getFloat16(s); +}); diff --git a/test/built-ins/DataView/prototype/getFloat16/return-abrupt-from-tonumber-byteoffset.js b/test/built-ins/DataView/prototype/getFloat16/return-abrupt-from-tonumber-byteoffset.js new file mode 100644 index 00000000000..ecd04cb8c8c --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/return-abrupt-from-tonumber-byteoffset.js @@ -0,0 +1,32 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Return abrupt from ToNumber(byteOffset) +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(1); +var sample = new DataView(buffer, 0); + +var bo1 = { + valueOf: function() { + throw new Test262Error(); + } +}; + +var bo2 = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + sample.getFloat16(bo1); +}, "valueOf"); + +assert.throws(Test262Error, function() { + sample.getFloat16(bo2); +}, "toString"); diff --git a/test/built-ins/DataView/prototype/getFloat16/return-infinity.js b/test/built-ins/DataView/prototype/getFloat16/return-infinity.js new file mode 100644 index 00000000000..4b74ea40da2 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/return-infinity.js @@ -0,0 +1,20 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Return Infinity values +features: [Float16Array, DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(4); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 124); // 0b01111100 +sample.setUint8(1, 0); +sample.setUint8(2, 252); // 0b11111100 +sample.setUint8(3, 0); + +assert.sameValue(sample.getFloat16(0), Infinity); +assert.sameValue(sample.getFloat16(2), -Infinity); diff --git a/test/built-ins/DataView/prototype/getFloat16/return-nan.js b/test/built-ins/DataView/prototype/getFloat16/return-nan.js new file mode 100644 index 00000000000..a8284b23ae9 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/return-nan.js @@ -0,0 +1,20 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Return NaN values +features: [Float16Array, DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 126); // 0b01111110 +sample.setUint8(1, 0); +sample.setUint8(2, 254); // 0b11111110 +sample.setUint8(3, 0); + +assert.sameValue(sample.getFloat16(0), NaN); +assert.sameValue(sample.getFloat16(2), NaN); diff --git a/test/built-ins/DataView/prototype/getFloat16/return-value-clean-arraybuffer.js b/test/built-ins/DataView/prototype/getFloat16/return-value-clean-arraybuffer.js new file mode 100644 index 00000000000..3bec89c1b54 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/return-value-clean-arraybuffer.js @@ -0,0 +1,23 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Return value from Buffer using a clean ArrayBuffer +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +assert.sameValue(sample.getFloat16(0, true), 0, "sample.getFloat16(0, true)"); +assert.sameValue(sample.getFloat16(1, true), 0, "sample.getFloat16(1, true)"); +assert.sameValue(sample.getFloat16(2, true), 0, "sample.getFloat16(2, true)"); +assert.sameValue(sample.getFloat16(3, true), 0, "sample.getFloat16(3, true)"); +assert.sameValue(sample.getFloat16(4, true), 0, "sample.getFloat16(4, true)"); +assert.sameValue(sample.getFloat16(0, false), 0, "sample.getFloat16(0, false)"); +assert.sameValue(sample.getFloat16(1, false), 0, "sample.getFloat16(1, false)"); +assert.sameValue(sample.getFloat16(2, false), 0, "sample.getFloat16(2, false)"); +assert.sameValue(sample.getFloat16(3, false), 0, "sample.getFloat16(3, false)"); +assert.sameValue(sample.getFloat16(4, false), 0, "sample.getFloat16(4, false)"); diff --git a/test/built-ins/DataView/prototype/getFloat16/return-values-custom-offset.js b/test/built-ins/DataView/prototype/getFloat16/return-values-custom-offset.js new file mode 100644 index 00000000000..25181dcb847 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/return-values-custom-offset.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Return values from Buffer using a custom offset +features: [Float16Array, DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +sample.setUint8(4, 75); // 01001011 +sample.setUint8(5, 75); // 01001011 +sample.setUint8(6, 76); // 01001100 +sample.setUint8(7, 77); // 01001101 + +sample = new DataView(buffer, 4); + +assert.sameValue(sample.getFloat16(0, false), 14.5859375, "0, false"); // 01001011 01001011 +assert.sameValue(sample.getFloat16(1, false), 14.59375, "1, false"); // 01001011 01001100 +assert.sameValue(sample.getFloat16(2, false), 17.203125, "2, false"); // 01001100 01001101 +assert.sameValue(sample.getFloat16(0, true), 14.5859375, "0, true"); // 01001011 01001011 +assert.sameValue(sample.getFloat16(1, true), 17.171875, "1, true"); // 01001100 01001011 +assert.sameValue(sample.getFloat16(2, true), 21.1875, "2, true"); // 01001101 01001100 diff --git a/test/built-ins/DataView/prototype/getFloat16/return-values.js b/test/built-ins/DataView/prototype/getFloat16/return-values.js new file mode 100644 index 00000000000..b2bb77ead16 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/return-values.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Return values from Buffer +features: [Float16Array, DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(4); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 66); // 01000010 +sample.setUint8(1, 40); // 00101000 +sample.setUint8(2, 64); // 01000000 +sample.setUint8(3, 224); // 11100000 + +assert.sameValue(sample.getFloat16(0, false), 3.078125, "0, false"); // 01000010 00101000 +assert.sameValue(sample.getFloat16(1, false), 0.033203125, "1, false"); // 00101000 01000000 +assert.sameValue(sample.getFloat16(2, false), 2.4375, "2, false"); // 01000000 11100000 + +assert.sameValue(sample.getFloat16(0, true), 0.03326416015625, "0, true"); // 00101000 01000010 +assert.sameValue(sample.getFloat16(1, true), 2.078125, "1, true"); // 01000000 00101000 +assert.sameValue(sample.getFloat16(2, true), -544, "2, true"); // 11100000 01000000 + +sample.setUint8(0, 75); // 01001011 +sample.setUint8(1, 75); // 01001011 +sample.setUint8(2, 76); // 01001100 +sample.setUint8(3, 76); // 01001101 + +assert.sameValue(sample.getFloat16(0, false), 14.5859375, "0, false"); // 01001011 01001011 +assert.sameValue(sample.getFloat16(1, false), 14.59375, "1, false"); // 01001011 01001100 +assert.sameValue(sample.getFloat16(2, false), 17.1875, "2, false"); // 01001100 01001101 +assert.sameValue(sample.getFloat16(0, true), 14.5859375, "0, true"); // 01001011 01001011 +assert.sameValue(sample.getFloat16(1, true), 17.171875, "1, true"); // 01001100 01001011 +assert.sameValue(sample.getFloat16(2, true), 17.1875, "2, true"); // 01001100 01001101 diff --git a/test/built-ins/DataView/prototype/getFloat16/this-has-no-dataview-internal.js b/test/built-ins/DataView/prototype/getFloat16/this-has-no-dataview-internal.js new file mode 100644 index 00000000000..75049d85b2d --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/this-has-no-dataview-internal.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Throws a TypeError if this does not have a [[DataView]] internal slot +features: [Float16Array, Int8Array] +---*/ + +var getFloat16 = DataView.prototype.getFloat16; + +assert.throws(TypeError, function() { + getFloat16.call({}); +}, "{}"); + +assert.throws(TypeError, function() { + getFloat16.call([]); +}, "[]"); + +var ab = new ArrayBuffer(1); +assert.throws(TypeError, function() { + getFloat16.call(ab); +}, "ArrayBuffer"); + +var ta = new Int8Array(); +assert.throws(TypeError, function() { + getFloat16.call(ta); +}, "TypedArray"); diff --git a/test/built-ins/DataView/prototype/getFloat16/this-is-not-object.js b/test/built-ins/DataView/prototype/getFloat16/this-is-not-object.js new file mode 100644 index 00000000000..311d76633af --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/this-is-not-object.js @@ -0,0 +1,39 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: Throws a TypeError if this is not Object +features: [Float16Array, Symbol] +---*/ + +var getFloat16 = DataView.prototype.getFloat16; + +assert.throws(TypeError, function() { + getFloat16.call(undefined); +}, "undefined"); + +assert.throws(TypeError, function() { + getFloat16.call(null); +}, "null"); + +assert.throws(TypeError, function() { + getFloat16.call(1); +}, "1"); + +assert.throws(TypeError, function() { + getFloat16.call("string"); +}, "string"); + +assert.throws(TypeError, function() { + getFloat16.call(true); +}, "true"); + +assert.throws(TypeError, function() { + getFloat16.call(false); +}, "false"); + +var s = Symbol("1"); +assert.throws(TypeError, function() { + getFloat16.call(s); +}, "symbol"); diff --git a/test/built-ins/DataView/prototype/getFloat16/to-boolean-littleendian.js b/test/built-ins/DataView/prototype/getFloat16/to-boolean-littleendian.js new file mode 100644 index 00000000000..685039d732d --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/to-boolean-littleendian.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getfloat16 +description: > + Boolean littleEndian argument coerced in ToBoolean +features: [Float16Array, DataView.prototype.setUint8, Symbol] +---*/ + +var buffer = new ArrayBuffer(2); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 75); +sample.setUint8(1, 76); + +// False +assert.sameValue(sample.getFloat16(0), 14.59375, "no arg"); +assert.sameValue(sample.getFloat16(0, undefined), 14.59375, "undefined"); +assert.sameValue(sample.getFloat16(0, null), 14.59375, "null"); +assert.sameValue(sample.getFloat16(0, 0), 14.59375, "0"); +assert.sameValue(sample.getFloat16(0, ""), 14.59375, "the empty string"); + +// True +assert.sameValue(sample.getFloat16(0, {}), 17.171875, "{}"); +assert.sameValue(sample.getFloat16(0, Symbol("1")), 17.171875, "symbol"); +assert.sameValue(sample.getFloat16(0, 1), 17.171875, "1"); +assert.sameValue(sample.getFloat16(0, "string"), 17.171875, "string"); diff --git a/test/built-ins/DataView/prototype/getFloat16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/getFloat16/toindex-byteoffset.js new file mode 100644 index 00000000000..987f75a0540 --- /dev/null +++ b/test/built-ins/DataView/prototype/getFloat16/toindex-byteoffset.js @@ -0,0 +1,50 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.getFloat16 +description: > + ToIndex conversions on byteOffset +features: [Float16Array, DataView.prototype.setUint8] +---*/ + +var buffer = new ArrayBuffer(6); +var sample = new DataView(buffer, 0); + +sample.setUint8(0, 75); +sample.setUint8(1, 76); +sample.setUint8(2, 77); +sample.setUint8(3, 78); +sample.setUint8(4, 79); +sample.setUint8(5, 80); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 2; + } +}; + +assert.sameValue(sample.getFloat16(-0), 14.59375, "-0"); +assert.sameValue(sample.getFloat16(obj1), 25.234375, "object's valueOf"); +assert.sameValue(sample.getFloat16(obj2), 21.21875, "object's toString"); +assert.sameValue(sample.getFloat16(""), 14.59375, "the Empty string"); +assert.sameValue(sample.getFloat16("0"), 14.59375, "string '0'"); +assert.sameValue(sample.getFloat16("2"), 21.21875, "string '2'"); +assert.sameValue(sample.getFloat16(true), 17.203125, "true"); +assert.sameValue(sample.getFloat16(false), 14.59375, "false"); +assert.sameValue(sample.getFloat16(NaN), 14.59375, "NaN"); +assert.sameValue(sample.getFloat16(null), 14.59375, "null"); +assert.sameValue(sample.getFloat16(0.1), 14.59375, "0.1"); +assert.sameValue(sample.getFloat16(0.9), 14.59375, "0.9"); +assert.sameValue(sample.getFloat16(1.1), 17.203125, "1.1"); +assert.sameValue(sample.getFloat16(1.9), 17.203125, "1.9"); +assert.sameValue(sample.getFloat16(-0.1), 14.59375, "-0.1"); +assert.sameValue(sample.getFloat16(-0.99999), 14.59375, "-0.99999"); +assert.sameValue(sample.getFloat16(undefined), 14.59375, "undefined"); +assert.sameValue(sample.getFloat16(), 14.59375, "no arg"); diff --git a/test/built-ins/DataView/prototype/setFloat16/detached-buffer-after-number-value.js b/test/built-ins/DataView/prototype/setFloat16/detached-buffer-after-number-value.js new file mode 100644 index 00000000000..9c48d2603dd --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/detached-buffer-after-number-value.js @@ -0,0 +1,24 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Detached buffer is checked after ToNumber(value) +features: [Float16Array] +includes: [detachArrayBuffer.js] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +var v = { + valueOf: function() { + throw new Test262Error(); + } +}; + +$DETACHBUFFER(buffer); +assert.throws(Test262Error, function() { + sample.setFloat16(0, v); +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/detached-buffer-after-toindex-byteoffset.js b/test/built-ins/DataView/prototype/setFloat16/detached-buffer-after-toindex-byteoffset.js new file mode 100644 index 00000000000..43a156de695 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/detached-buffer-after-toindex-byteoffset.js @@ -0,0 +1,23 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Detached buffer is only checked after ToIndex(requestIndex) +features: [Float16Array] +includes: [detachArrayBuffer.js] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +$DETACHBUFFER(buffer); + +assert.throws(RangeError, function() { + sample.setFloat16(Infinity, 0); +}, "Infinity"); + +assert.throws(RangeError, function() { + sample.setFloat16(-1, 0); +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/detached-buffer-before-outofrange-byteoffset.js b/test/built-ins/DataView/prototype/setFloat16/detached-buffer-before-outofrange-byteoffset.js new file mode 100644 index 00000000000..3313a90052e --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/detached-buffer-before-outofrange-byteoffset.js @@ -0,0 +1,21 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Detached buffer is checked before out of range byteOffset's value +features: [Float16Array] +includes: [detachArrayBuffer.js] +---*/ + +var sample; +var buffer = new ArrayBuffer(12); + +sample = new DataView(buffer, 0); + +$DETACHBUFFER(buffer); + +assert.throws(TypeError, function() { + sample.setFloat16(13, 0); +}, "13"); diff --git a/test/built-ins/DataView/prototype/setFloat16/detached-buffer.js b/test/built-ins/DataView/prototype/setFloat16/detached-buffer.js new file mode 100644 index 00000000000..fea18e79561 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/detached-buffer.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Throws a TypeError if buffer is detached +features: [Float16Array] +includes: [detachArrayBuffer.js] +---*/ + +var buffer = new ArrayBuffer(1); +var sample = new DataView(buffer, 0); + +$DETACHBUFFER(buffer); +assert.throws(TypeError, function() { + sample.setFloat16(0, 0); +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/index-check-before-value-conversion.js b/test/built-ins/DataView/prototype/setFloat16/index-check-before-value-conversion.js new file mode 100644 index 00000000000..d837a8749d0 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/index-check-before-value-conversion.js @@ -0,0 +1,33 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + RangeError exception for negative index is thrown before the value conversion. +features: [Float16Array] +---*/ + +var dataView = new DataView(new ArrayBuffer(8), 0); + +var poisoned = { + valueOf: function() { + throw new Test262Error("valueOf called"); + } +}; + +assert.throws(RangeError, function() { + dataView.setFloat16(-1.5, poisoned); +}, "setFloat16(-1.5, poisoned)"); + +assert.throws(RangeError, function() { + dataView.setFloat16(-1, poisoned); +}, "setFloat16(-1, poisoned)"); + +assert.throws(RangeError, function() { + dataView.setFloat16(-Infinity, poisoned); +}, "setFloat16(-Infinity, poisoned)"); + +assert.throws(RangeError, function() { + dataView.setFloat16(Infinity, poisoned); +}, "setFloat16(Infinity, poisoned)"); diff --git a/test/built-ins/DataView/prototype/setFloat16/index-is-out-of-range.js b/test/built-ins/DataView/prototype/setFloat16/index-is-out-of-range.js new file mode 100644 index 00000000000..98581d9ae7f --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/index-is-out-of-range.js @@ -0,0 +1,68 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Throws a RangeError if getIndex + elementSize > viewSize +features: [Float16Array] +---*/ + +var sample; +var buffer = new ArrayBuffer(12); + +sample = new DataView(buffer, 0); + +assert.throws(RangeError, function() { + sample.setFloat16(Infinity, 39); +}, "getIndex == Infinity"); + +assert.throws(RangeError, function() { + sample.setFloat16(13, 39); +}, "13 + 2 > 12"); + +assert.throws(RangeError, function() { + sample.setFloat16(12, 39); +}, "12 + 2 > 12"); + +assert.throws(RangeError, function() { + sample.setFloat16(11, 39); +}, "11 + 2 > 12"); + +sample = new DataView(buffer, 10); +assert.throws(RangeError, function() { + sample.setFloat16(1, 39); +}, "1 + 2 > 2 (offset)"); + +sample = new DataView(buffer, 11); +assert.throws(RangeError, function() { + sample.setFloat16(0, 39); +}, "0 + 2 > 1 (offset)"); + +sample = new DataView(buffer, 0, 2); +assert.throws(RangeError, function() { + sample.setFloat16(1, 39); +}, "1 + 2 > 2 (length)"); + +sample = new DataView(buffer, 0, 1); +assert.throws(RangeError, function() { + sample.setFloat16(0, 39); +}, "0 + 2 > 1 (length)"); + +sample = new DataView(buffer, 4, 2); +assert.throws(RangeError, function() { + sample.setFloat16(1, 39); +}, "1 + 2 > 2 (offset+length)"); + +sample = new DataView(buffer, 4, 1); +assert.throws(RangeError, function() { + sample.setFloat16(0, 39); +}, "0 + 2 > 1 (offset+length)"); + +sample = new DataView(buffer, 0); +assert.sameValue(sample.getFloat16(0), 0, "[0] no value was set"); +assert.sameValue(sample.getFloat16(2), 0, "[1] no value was set"); +assert.sameValue(sample.getFloat16(4), 0, "[2] no value was set"); +assert.sameValue(sample.getFloat16(6), 0, "[3] no value was set"); +assert.sameValue(sample.getFloat16(8), 0, "[4] no value was set"); +assert.sameValue(sample.getFloat16(10), 0, "[5] no value was set"); diff --git a/test/built-ins/DataView/prototype/setFloat16/length.js b/test/built-ins/DataView/prototype/setFloat16/length.js new file mode 100644 index 00000000000..6d8f07c8e43 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/length.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + DataView.prototype.setFloat16.length is 2. +features: [Float16Array] +includes: [propertyHelper.js] +---*/ + +assert.sameValue(DataView.prototype.setFloat16.length, 2); + +verifyNotEnumerable(DataView.prototype.setFloat16, "length"); +verifyNotWritable(DataView.prototype.setFloat16, "length"); +verifyConfigurable(DataView.prototype.setFloat16, "length"); diff --git a/test/built-ins/DataView/prototype/setFloat16/name.js b/test/built-ins/DataView/prototype/setFloat16/name.js new file mode 100644 index 00000000000..47101fde406 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/name.js @@ -0,0 +1,16 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + DataView.prototype.setFloat16.name is "setFloat16". +features: [Float16Array] +includes: [propertyHelper.js] +---*/ + +assert.sameValue(DataView.prototype.setFloat16.name, "setFloat16"); + +verifyNotEnumerable(DataView.prototype.setFloat16, "name"); +verifyNotWritable(DataView.prototype.setFloat16, "name"); +verifyConfigurable(DataView.prototype.setFloat16, "name"); diff --git a/test/built-ins/DataView/prototype/setFloat16/negative-byteoffset-throws.js b/test/built-ins/DataView/prototype/setFloat16/negative-byteoffset-throws.js new file mode 100644 index 00000000000..1c9e36e1cb2 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/negative-byteoffset-throws.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Throws a RangeError if getIndex < 0 +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(12); +var sample = new DataView(buffer, 0); + +assert.throws(RangeError, function() { + sample.setFloat16(-1, 39); +}, "-1"); +assert.sameValue(sample.getFloat32(0), 0, "-1 - no value was set"); + +assert.throws(RangeError, function() { + sample.setFloat16(-Infinity, 39); +}, "-Infinity"); +assert.sameValue(sample.getFloat32(0), 0, "-Infinity - no value was set"); diff --git a/test/built-ins/DataView/prototype/setFloat16/no-value-arg.js b/test/built-ins/DataView/prototype/setFloat16/no-value-arg.js new file mode 100644 index 00000000000..fb2a5ddb351 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/no-value-arg.js @@ -0,0 +1,17 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Set value as undefined (cast to NaN) when value argument is not present +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(8); +var sample = new DataView(buffer, 0); + +var result = sample.setFloat16(0); + +assert.sameValue(sample.getFloat16(0), NaN); +assert.sameValue(result, undefined); diff --git a/test/built-ins/DataView/prototype/setFloat16/not-a-constructor.js b/test/built-ins/DataView/prototype/setFloat16/not-a-constructor.js new file mode 100644 index 00000000000..d9d26940c95 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/not-a-constructor.js @@ -0,0 +1,21 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + DataView.prototype.setFloat16 does not implement [[Construct]], is not new-able +includes: [isConstructor.js] +features: [Float16Array, Reflect.construct, DataView, arrow-function, ArrayBuffer] +---*/ + +assert.sameValue( + isConstructor(DataView.prototype.setFloat16), + false, + 'isConstructor(DataView.prototype.setFloat16) must return false' +); + +assert.throws(TypeError, () => { + let dv = new DataView(new ArrayBuffer(16)); new dv.setFloat16(0, 0); +}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setFloat16(0, 0)` throws TypeError'); + diff --git a/test/built-ins/DataView/prototype/setFloat16/range-check-after-value-conversion.js b/test/built-ins/DataView/prototype/setFloat16/range-check-after-value-conversion.js new file mode 100644 index 00000000000..d2443e7d7a7 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/range-check-after-value-conversion.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setFloat16 +description: > + Index bounds checks are performed after value conversion. +features: [Float16Array] +---*/ + +var dataView = new DataView(new ArrayBuffer(8), 0); + +var poisoned = { + valueOf: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + dataView.setFloat16(100, poisoned); +}, "setFloat16(100, poisoned)"); + +assert.throws(Test262Error, function() { + dataView.setFloat16('100', poisoned); +}, "setFloat16('100', poisoned)"); diff --git a/test/built-ins/DataView/prototype/setFloat16/resizable-buffer.js b/test/built-ins/DataView/prototype/setFloat16/resizable-buffer.js new file mode 100644 index 00000000000..eec4cc22c31 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/resizable-buffer.js @@ -0,0 +1,41 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-dataview.prototype.setfloat16 +description: Throws a TypeError if buffer is out-of-bounds +features: [Float16Array, DataView, ArrayBuffer, resizable-arraybuffer] +---*/ + +assert.sameValue( + typeof ArrayBuffer.prototype.resize, + 'function', + 'implements ArrayBuffer.prototype.resize' +); + +var buffer = new ArrayBuffer(24, {maxByteLength: 32}); +var sample = new DataView(buffer, 0, 16); + +try { + buffer.resize(32); +} catch (_) {} + +assert.sameValue(sample.setFloat16(0, 10), undefined, 'following grow'); + +try { + buffer.resize(16); +} catch (_) {} + +assert.sameValue(sample.setFloat16(0, 20), undefined, 'following shrink (within bounds)'); + +var expectedError; +try { + buffer.resize(8); + expectedError = TypeError; +} catch (_) { + expectedError = Test262Error; +} + +assert.throws(expectedError, function() { + sample.setFloat16(0, 30); + throw new Test262Error('the operation completed successfully'); +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-byteoffset-symbol.js b/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-byteoffset-symbol.js new file mode 100644 index 00000000000..845066493b9 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-byteoffset-symbol.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Return abrupt from ToNumber(symbol byteOffset) +features: [Float16Array, Symbol] +---*/ + +var buffer = new ArrayBuffer(1); +var sample = new DataView(buffer, 0); + +var s = Symbol("1"); + +assert.throws(TypeError, function() { + sample.setFloat16(s); +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-byteoffset.js b/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-byteoffset.js new file mode 100644 index 00000000000..5b6e91bb8a8 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-byteoffset.js @@ -0,0 +1,32 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Return abrupt from ToNumber(byteOffset) +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(1); +var sample = new DataView(buffer, 0); + +var bo1 = { + valueOf: function() { + throw new Test262Error(); + } +}; + +var bo2 = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + sample.setFloat16(bo1, 1); +}, "valueOf"); + +assert.throws(Test262Error, function() { + sample.setFloat16(bo2, 1); +}, "toString"); diff --git a/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-value-symbol.js b/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-value-symbol.js new file mode 100644 index 00000000000..ebb2cdd188f --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-value-symbol.js @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Return abrupt from ToNumber(symbol value) +features: [Float16Array, Symbol] +---*/ + +var buffer = new ArrayBuffer(4); +var sample = new DataView(buffer, 0); + +var s = Symbol("1"); + +assert.throws(TypeError, function() { + sample.setFloat16(0, s); +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-value.js b/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-value.js new file mode 100644 index 00000000000..5a53b9b6168 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/return-abrupt-from-tonumber-value.js @@ -0,0 +1,32 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Return abrupt from ToNumber(value) +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(4); +var sample = new DataView(buffer, 0); + +var bo1 = { + valueOf: function() { + throw new Test262Error(); + } +}; + +var bo2 = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + sample.setFloat16(0, bo1); +}, "valueOf"); + +assert.throws(Test262Error, function() { + sample.setFloat16(0, bo2); +}, "toString"); diff --git a/test/built-ins/DataView/prototype/setFloat16/set-values-little-endian-order.js b/test/built-ins/DataView/prototype/setFloat16/set-values-little-endian-order.js new file mode 100644 index 00000000000..07ac61cff2a --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/set-values-little-endian-order.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Set values with little endian order. +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(2); +var sample = new DataView(buffer, 0); + +var result; + +result = sample.setFloat16(0, 42, true); // 01010001 01000000 +assert.sameValue(result, undefined, "returns undefined #1"); +assert.sameValue(sample.getFloat16(0), 2.158203125); // 01000000 01010001 + +result = sample.setFloat16(0, 2.158203125, true); +assert.sameValue(result, undefined, "returns undefined #2"); +assert.sameValue(sample.getFloat16(0), 42); diff --git a/test/built-ins/DataView/prototype/setFloat16/set-values-return-undefined.js b/test/built-ins/DataView/prototype/setFloat16/set-values-return-undefined.js new file mode 100644 index 00000000000..affe25ee4a3 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/set-values-return-undefined.js @@ -0,0 +1,33 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Set values and return undefined +features: [Float16Array] +includes: [byteConversionValues.js] +---*/ + +var buffer = new ArrayBuffer(2); +var sample = new DataView(buffer, 0); +var values = byteConversionValues.values; +var expectedValues = byteConversionValues.expected.Float16; + +values.forEach(function(value, i) { + var result; + var expected = expectedValues[i]; + + result = sample.setFloat16(0, value, false); + + assert.sameValue( + sample.getFloat16(0), + expected, + "value: " + value + ); + assert.sameValue( + result, + undefined, + "return is undefined, value: " + value + ); +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/this-has-no-dataview-internal.js b/test/built-ins/DataView/prototype/setFloat16/this-has-no-dataview-internal.js new file mode 100644 index 00000000000..75ad66b399c --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/this-has-no-dataview-internal.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Throws a TypeError if this does not have a [[DataView]] internal slot +features: [Float16Array, Int8Array] +---*/ + +var setFloat16 = DataView.prototype.setFloat16; + +assert.throws(TypeError, function() { + setFloat16.call({}); +}, "{}"); + +assert.throws(TypeError, function() { + setFloat16.call([]); +}, "[]"); + +var ab = new ArrayBuffer(1); +assert.throws(TypeError, function() { + setFloat16.call(ab); +}, "ArrayBuffer"); + +var ta = new Int8Array(); +assert.throws(TypeError, function() { + setFloat16.call(ta); +}, "TypedArray"); diff --git a/test/built-ins/DataView/prototype/setFloat16/this-is-not-object.js b/test/built-ins/DataView/prototype/setFloat16/this-is-not-object.js new file mode 100644 index 00000000000..0096d506205 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/this-is-not-object.js @@ -0,0 +1,39 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: Throws a TypeError if this is not Object +features: [Float16Array, Symbol] +---*/ + +var setFloat16 = DataView.prototype.setFloat16; + +assert.throws(TypeError, function() { + setFloat16.call(undefined); +}, "undefined"); + +assert.throws(TypeError, function() { + setFloat16.call(null); +}, "null"); + +assert.throws(TypeError, function() { + setFloat16.call(1); +}, "1"); + +assert.throws(TypeError, function() { + setFloat16.call("string"); +}, "string"); + +assert.throws(TypeError, function() { + setFloat16.call(true); +}, "true"); + +assert.throws(TypeError, function() { + setFloat16.call(false); +}, "false"); + +var s = Symbol("1"); +assert.throws(TypeError, function() { + setFloat16.call(s); +}, "symbol"); diff --git a/test/built-ins/DataView/prototype/setFloat16/to-boolean-littleendian.js b/test/built-ins/DataView/prototype/setFloat16/to-boolean-littleendian.js new file mode 100644 index 00000000000..12fa7322492 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/to-boolean-littleendian.js @@ -0,0 +1,34 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + Boolean littleEndian argument coerced in ToBoolean +features: [Float16Array, Symbol] +---*/ + +var buffer = new ArrayBuffer(2); +var sample = new DataView(buffer, 0); + +// False +sample.setFloat16(0, 1); +assert.sameValue(sample.getFloat16(0), 1, "no arg"); +sample.setFloat16(0, 2, undefined); +assert.sameValue(sample.getFloat16(0), 2, "undefined"); +sample.setFloat16(0, 3, null); +assert.sameValue(sample.getFloat16(0), 3, "null"); +sample.setFloat16(0, 4, 0); +assert.sameValue(sample.getFloat16(0), 4, "0"); +sample.setFloat16(0, 5, ""); +assert.sameValue(sample.getFloat16(0), 5, "the empty string"); + +// True +sample.setFloat16(0, 6, {}); // 01000110 00000000 +assert.sameValue(sample.getFloat16(0), 0.000004172325134277344, "{}"); // 00000000 01000110 +sample.setFloat16(0, 7, Symbol("1")); // 01000111 00000000 +assert.sameValue(sample.getFloat16(0), 0.000004231929779052734, "symbol"); // 00000000 01000111 +sample.setFloat16(0, 8, 1); // 01001000 00000000 +assert.sameValue(sample.getFloat16(0), 0.000004291534423828125, "1"); // 00000000 01001000 +sample.setFloat16(0, 9, "string"); // 01001000 10000000 +assert.sameValue(sample.getFloat16(0), -0.000004291534423828125, "string"); // 10000000 01001000 diff --git a/test/built-ins/DataView/prototype/setFloat16/toindex-byteoffset.js b/test/built-ins/DataView/prototype/setFloat16/toindex-byteoffset.js new file mode 100644 index 00000000000..fa0d95841f6 --- /dev/null +++ b/test/built-ins/DataView/prototype/setFloat16/toindex-byteoffset.js @@ -0,0 +1,96 @@ +// Copyright (C) 2024 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview.prototype.setfloat16 +description: > + ToIndex conversions on byteOffset +features: [Float16Array] +---*/ + +var buffer = new ArrayBuffer(6); +var sample = new DataView(buffer, 0); + +var obj1 = { + valueOf: function() { + return 3; + } +}; + +var obj2 = { + toString: function() { + return 4; + } +}; + +sample.setFloat16(0, 0); +sample.setFloat16(-0, 42); +assert.sameValue(sample.getFloat16(0), 42, "-0"); + +sample.setFloat16(3, 0); +sample.setFloat16(obj1, 42); +assert.sameValue(sample.getFloat16(3), 42, "object's valueOf"); + +sample.setFloat16(4, 0); +sample.setFloat16(obj2, 42); +assert.sameValue(sample.getFloat16(4), 42, "object's toString"); + +sample.setFloat16(0, 0); +sample.setFloat16("", 42); +assert.sameValue(sample.getFloat16(0), 42, "the Empty string"); + +sample.setFloat16(0, 0); +sample.setFloat16("0", 42); +assert.sameValue(sample.getFloat16(0), 42, "string '0'"); + +sample.setFloat16(2, 0); +sample.setFloat16("2", 42); +assert.sameValue(sample.getFloat16(2), 42, "string '2'"); + +sample.setFloat16(1, 0); +sample.setFloat16(true, 42); +assert.sameValue(sample.getFloat16(1), 42, "true"); + +sample.setFloat16(0, 0); +sample.setFloat16(false, 42); +assert.sameValue(sample.getFloat16(0), 42, "false"); + +sample.setFloat16(0, 0); +sample.setFloat16(NaN, 42); +assert.sameValue(sample.getFloat16(0), 42, "NaN"); + +sample.setFloat16(0, 0); +sample.setFloat16(null, 42); +assert.sameValue(sample.getFloat16(0), 42, "null"); + +sample.setFloat16(0, 0); +sample.setFloat16(0.1, 42); +assert.sameValue(sample.getFloat16(0), 42, "0.1"); + +sample.setFloat16(0, 0); +sample.setFloat16(0.9, 42); +assert.sameValue(sample.getFloat16(0), 42, "0.9"); + +sample.setFloat16(1, 0); +sample.setFloat16(1.1, 42); +assert.sameValue(sample.getFloat16(1), 42, "1.1"); + +sample.setFloat16(1, 0); +sample.setFloat16(1.9, 42); +assert.sameValue(sample.getFloat16(1), 42, "1.9"); + +sample.setFloat16(0, 0); +sample.setFloat16(-0.1, 42); +assert.sameValue(sample.getFloat16(0), 42, "-0.1"); + +sample.setFloat16(0, 0); +sample.setFloat16(-0.99999, 42); +assert.sameValue(sample.getFloat16(0), 42, "-0.99999"); + +sample.setFloat16(0, 0); +sample.setFloat16(undefined, 42); +assert.sameValue(sample.getFloat16(0), 42, "undefined"); + +sample.setFloat16(0, 7); +sample.setFloat16(); +assert.sameValue(sample.getFloat16(0), NaN, "no arg"); diff --git a/test/built-ins/Math/f16round/not-a-constructor.js b/test/built-ins/Math/f16round/not-a-constructor.js index 4d9cb369cc4..08bffccccbe 100644 --- a/test/built-ins/Math/f16round/not-a-constructor.js +++ b/test/built-ins/Math/f16round/not-a-constructor.js @@ -5,9 +5,8 @@ esid: sec-ecmascript-standard-built-in-objects description: > Math.f16round does not implement [[Construct]], is not new-able -features: [Float16Array] includes: [isConstructor.js] -features: [Reflect.construct] +features: [Float16Array, Reflect.construct] ---*/ assert(!isConstructor(Math.f16round), "Math.f16round is not a constructor"); From 927a70d4df5cb46fadb5975b4e46b6a02f33eda8 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Wed, 13 Mar 2024 10:46:10 -0700 Subject: [PATCH 15/59] fix typo in test name --- .../Math/f16round/{value-convertion.js => value-conversion.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/built-ins/Math/f16round/{value-convertion.js => value-conversion.js} (100%) diff --git a/test/built-ins/Math/f16round/value-convertion.js b/test/built-ins/Math/f16round/value-conversion.js similarity index 100% rename from test/built-ins/Math/f16round/value-convertion.js rename to test/built-ins/Math/f16round/value-conversion.js From decf9f2526b31f055eba0f2b7f7e8b1ae04885bb Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Mon, 25 Mar 2024 12:45:09 -0700 Subject: [PATCH 16/59] re-run rewrite scripts --- .../built-ins/DataView/prototype/getFloat16/length.js | 11 ++++++----- test/built-ins/DataView/prototype/getFloat16/name.js | 11 ++++++----- .../prototype/getFloat16/not-a-constructor.js | 2 +- .../built-ins/DataView/prototype/setFloat16/length.js | 11 ++++++----- test/built-ins/DataView/prototype/setFloat16/name.js | 11 ++++++----- .../prototype/setFloat16/not-a-constructor.js | 2 +- 6 files changed, 26 insertions(+), 22 deletions(-) diff --git a/test/built-ins/DataView/prototype/getFloat16/length.js b/test/built-ins/DataView/prototype/getFloat16/length.js index 3c054dd1da6..2f4c52a53fb 100644 --- a/test/built-ins/DataView/prototype/getFloat16/length.js +++ b/test/built-ins/DataView/prototype/getFloat16/length.js @@ -9,8 +9,9 @@ features: [Float16Array] includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getFloat16.length, 1); - -verifyNotEnumerable(DataView.prototype.getFloat16, "length"); -verifyNotWritable(DataView.prototype.getFloat16, "length"); -verifyConfigurable(DataView.prototype.getFloat16, "length"); +verifyProperty(DataView.prototype.getFloat16, "length", { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getFloat16/name.js b/test/built-ins/DataView/prototype/getFloat16/name.js index 6d8f4ffb465..dd8310ab85c 100644 --- a/test/built-ins/DataView/prototype/getFloat16/name.js +++ b/test/built-ins/DataView/prototype/getFloat16/name.js @@ -9,8 +9,9 @@ features: [Float16Array] includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.getFloat16.name, "getFloat16"); - -verifyNotEnumerable(DataView.prototype.getFloat16, "name"); -verifyNotWritable(DataView.prototype.getFloat16, "name"); -verifyConfigurable(DataView.prototype.getFloat16, "name"); +verifyProperty(DataView.prototype.getFloat16, "name", { + value: "getFloat16", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/getFloat16/not-a-constructor.js b/test/built-ins/DataView/prototype/getFloat16/not-a-constructor.js index 192b5dae152..3ccac890597 100644 --- a/test/built-ins/DataView/prototype/getFloat16/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/getFloat16/not-a-constructor.js @@ -17,5 +17,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.getFloat16(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.getFloat16(0, 0)` throws TypeError'); +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/length.js b/test/built-ins/DataView/prototype/setFloat16/length.js index 6d8f07c8e43..70ba7a3b865 100644 --- a/test/built-ins/DataView/prototype/setFloat16/length.js +++ b/test/built-ins/DataView/prototype/setFloat16/length.js @@ -9,8 +9,9 @@ features: [Float16Array] includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setFloat16.length, 2); - -verifyNotEnumerable(DataView.prototype.setFloat16, "length"); -verifyNotWritable(DataView.prototype.setFloat16, "length"); -verifyConfigurable(DataView.prototype.setFloat16, "length"); +verifyProperty(DataView.prototype.setFloat16, "length", { + value: 2, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/name.js b/test/built-ins/DataView/prototype/setFloat16/name.js index 47101fde406..a6a9dd305d5 100644 --- a/test/built-ins/DataView/prototype/setFloat16/name.js +++ b/test/built-ins/DataView/prototype/setFloat16/name.js @@ -9,8 +9,9 @@ features: [Float16Array] includes: [propertyHelper.js] ---*/ -assert.sameValue(DataView.prototype.setFloat16.name, "setFloat16"); - -verifyNotEnumerable(DataView.prototype.setFloat16, "name"); -verifyNotWritable(DataView.prototype.setFloat16, "name"); -verifyConfigurable(DataView.prototype.setFloat16, "name"); +verifyProperty(DataView.prototype.setFloat16, "name", { + value: "setFloat16", + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/DataView/prototype/setFloat16/not-a-constructor.js b/test/built-ins/DataView/prototype/setFloat16/not-a-constructor.js index d9d26940c95..32344827e57 100644 --- a/test/built-ins/DataView/prototype/setFloat16/not-a-constructor.js +++ b/test/built-ins/DataView/prototype/setFloat16/not-a-constructor.js @@ -17,5 +17,5 @@ assert.sameValue( assert.throws(TypeError, () => { let dv = new DataView(new ArrayBuffer(16)); new dv.setFloat16(0, 0); -}, '`let dv = new DataView(new ArrayBuffer(16)); new dv.setFloat16(0, 0)` throws TypeError'); +}); From 39168e26c8b17782994388f8a7b59a8173f5de83 Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Mon, 25 Mar 2024 12:03:44 -0700 Subject: [PATCH 17/59] DurationFormat: changed metadata to list 'en' instead of 'en-US' as locale for tests that actually test 'en' rather than 'en-US' --- .../prototype/format/negative-duration-style-default-en.js | 2 +- .../prototype/format/negative-duration-style-short-en.js | 2 +- .../prototype/format/negative-durationstyle-digital-en.js | 2 +- .../prototype/format/negative-durationstyle-long-en.js | 2 +- .../prototype/format/negative-durationstyle-narrow-en.js | 2 +- .../numeric-hour-with-zero-minutes-and-non-zero-seconds.js | 2 +- .../prototype/format/precision-exact-mathematical-values.js | 2 +- .../intl402/DurationFormat/prototype/format/style-default-en.js | 2 +- .../intl402/DurationFormat/prototype/format/style-digital-en.js | 2 +- .../prototype/format/style-digital-fractionalDigits-en.js | 2 +- .../format/style-digital-fractionalDigits-undefined-en.js | 2 +- test/intl402/DurationFormat/prototype/format/style-long-en.js | 2 +- test/intl402/DurationFormat/prototype/format/style-narrow-en.js | 2 +- test/intl402/DurationFormat/prototype/format/style-short-en.js | 2 +- .../negative-duration-formatToParts-style-default-en.js | 2 +- .../negative-duration-formatToParts-style-digital-en.js | 2 +- .../negative-duration-formatToParts-style-long-en.js | 2 +- .../negative-duration-formatToParts-style-narrow-en.js | 2 +- .../negative-duration-formatToParts-style-short-en.js | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/test/intl402/DurationFormat/prototype/format/negative-duration-style-default-en.js b/test/intl402/DurationFormat/prototype/format/negative-duration-style-default-en.js index 955d9f08ee9..b6eebf86524 100644 --- a/test/intl402/DurationFormat/prototype/format/negative-duration-style-default-en.js +++ b/test/intl402/DurationFormat/prototype/format/negative-duration-style-default-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.format description: > Test format method with negative duration and default style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/negative-duration-style-short-en.js b/test/intl402/DurationFormat/prototype/format/negative-duration-style-short-en.js index f92540e6a54..71a93c8e5e3 100644 --- a/test/intl402/DurationFormat/prototype/format/negative-duration-style-short-en.js +++ b/test/intl402/DurationFormat/prototype/format/negative-duration-style-short-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.format description: > Test format method with negative duration and "short" style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/negative-durationstyle-digital-en.js b/test/intl402/DurationFormat/prototype/format/negative-durationstyle-digital-en.js index 8c90ea49423..f6eba67a803 100644 --- a/test/intl402/DurationFormat/prototype/format/negative-durationstyle-digital-en.js +++ b/test/intl402/DurationFormat/prototype/format/negative-durationstyle-digital-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.format description: > Test format method with negative duration and "digital" style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/negative-durationstyle-long-en.js b/test/intl402/DurationFormat/prototype/format/negative-durationstyle-long-en.js index 97f577caf61..6d9c05ccd88 100644 --- a/test/intl402/DurationFormat/prototype/format/negative-durationstyle-long-en.js +++ b/test/intl402/DurationFormat/prototype/format/negative-durationstyle-long-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.format description: > Test format method with negative duration and "long" style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/negative-durationstyle-narrow-en.js b/test/intl402/DurationFormat/prototype/format/negative-durationstyle-narrow-en.js index 49dd23792d6..cfe8eff956c 100644 --- a/test/intl402/DurationFormat/prototype/format/negative-durationstyle-narrow-en.js +++ b/test/intl402/DurationFormat/prototype/format/negative-durationstyle-narrow-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.format description: > Test format method with negative duration and "narrow" style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/numeric-hour-with-zero-minutes-and-non-zero-seconds.js b/test/intl402/DurationFormat/prototype/format/numeric-hour-with-zero-minutes-and-non-zero-seconds.js index 5280e485225..1d23fb38cb4 100644 --- a/test/intl402/DurationFormat/prototype/format/numeric-hour-with-zero-minutes-and-non-zero-seconds.js +++ b/test/intl402/DurationFormat/prototype/format/numeric-hour-with-zero-minutes-and-non-zero-seconds.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.format description: > Minutes with numeric or 2-digit style are included in the output when between displayed hours and seconds, even when the minutes value is zero. -locale: [en-US] +locale: [en] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/precision-exact-mathematical-values.js b/test/intl402/DurationFormat/prototype/format/precision-exact-mathematical-values.js index dab01d7dddc..a3277b87dd8 100644 --- a/test/intl402/DurationFormat/prototype/format/precision-exact-mathematical-values.js +++ b/test/intl402/DurationFormat/prototype/format/precision-exact-mathematical-values.js @@ -24,7 +24,7 @@ info: | 7. Let parts be ! PartitionNumberPattern(nf, value). ... -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/style-default-en.js b/test/intl402/DurationFormat/prototype/format/style-default-en.js index 7c2966f34df..ed54b344966 100644 --- a/test/intl402/DurationFormat/prototype/format/style-default-en.js +++ b/test/intl402/DurationFormat/prototype/format/style-default-en.js @@ -4,7 +4,7 @@ /*--- esid: sec-Intl.DurationFormat.prototype.format description: Test if format method formats duration correctly with different "style" arguments -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/style-digital-en.js b/test/intl402/DurationFormat/prototype/format/style-digital-en.js index 8bb77a63883..7c4724a7eea 100644 --- a/test/intl402/DurationFormat/prototype/format/style-digital-en.js +++ b/test/intl402/DurationFormat/prototype/format/style-digital-en.js @@ -5,7 +5,7 @@ /*--- esid: sec-Intl.DurationFormat.prototype.format description: Test if format method formats duration correctly with different "style" arguments -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-en.js b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-en.js index 775883f2419..d16e1e539e2 100644 --- a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-en.js +++ b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-en.js @@ -13,7 +13,7 @@ info: | 5. Else, a. Perform ! CreateDataPropertyOrThrow(nfOpts, "maximumFractionDigits", durationFormat.[[FractionalDigits]]). b. Perform ! CreateDataPropertyOrThrow(nfOpts, "minimumFractionDigits", durationFormat.[[FractionalDigits]]). -locale: [en-US] +locale: [en] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js index 78afb358ec8..9706f55319f 100644 --- a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js +++ b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js @@ -13,7 +13,7 @@ info: | 5. Else, a. Perform ! CreateDataPropertyOrThrow(nfOpts, "maximumFractionDigits", durationFormat.[[FractionalDigits]]). b. Perform ! CreateDataPropertyOrThrow(nfOpts, "minimumFractionDigits", durationFormat.[[FractionalDigits]]). -locale: [en-US] +locale: [en] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/style-long-en.js b/test/intl402/DurationFormat/prototype/format/style-long-en.js index 19209f767ba..dd422a3f2aa 100644 --- a/test/intl402/DurationFormat/prototype/format/style-long-en.js +++ b/test/intl402/DurationFormat/prototype/format/style-long-en.js @@ -4,7 +4,7 @@ /*--- esid: sec-Intl.DurationFormat.prototype.format description: Test if format method formats duration correctly with different "style" arguments -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/style-narrow-en.js b/test/intl402/DurationFormat/prototype/format/style-narrow-en.js index b0b06c1312b..39a51b12375 100644 --- a/test/intl402/DurationFormat/prototype/format/style-narrow-en.js +++ b/test/intl402/DurationFormat/prototype/format/style-narrow-en.js @@ -4,7 +4,7 @@ /*--- esid: sec-Intl.DurationFormat.prototype.format description: Test if format method formats duration correctly with different "style" arguments -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/format/style-short-en.js b/test/intl402/DurationFormat/prototype/format/style-short-en.js index 5ba8ce4a2f7..031773b11c9 100644 --- a/test/intl402/DurationFormat/prototype/format/style-short-en.js +++ b/test/intl402/DurationFormat/prototype/format/style-short-en.js @@ -4,7 +4,7 @@ /*--- esid: sec-Intl.DurationFormat.prototype.format description: Test if format method formats duration correctly with different "style" arguments -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-default-en.js b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-default-en.js index 5c4a230c913..24107940c3b 100644 --- a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-default-en.js +++ b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-default-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.formatToParts description: > Test formatToParts method with negative duration and default style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-digital-en.js b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-digital-en.js index dc42b6591bc..6b0c84fe360 100644 --- a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-digital-en.js +++ b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-digital-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.formatToParts description: > Test formatToParts method with negative duration and "digital" style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-long-en.js b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-long-en.js index 58f16514e75..d36c32b79bf 100644 --- a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-long-en.js +++ b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-long-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.formatToParts description: > Test formatToParts method with negative duration and "long" style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-narrow-en.js b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-narrow-en.js index 8aca8b85680..531c3a7a919 100644 --- a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-narrow-en.js +++ b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-narrow-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.formatToParts description: > Test formatToParts method with negative duration and "narrow" style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ diff --git a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-short-en.js b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-short-en.js index 44d1b75e3cb..cab3a0cab56 100644 --- a/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-short-en.js +++ b/test/intl402/DurationFormat/prototype/formatToParts/negative-duration-formatToParts-style-short-en.js @@ -5,7 +5,7 @@ esid: sec-Intl.DurationFormat.prototype.formatToParts description: > Test formatToParts method with negative duration and "short" style -locale: [en-US] +locale: [en] includes: [testIntl.js] features: [Intl.DurationFormat] ---*/ From 86b6eee25b2a80e4750508c4faad5e48ffbd1ced Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Mon, 25 Mar 2024 20:44:03 -0700 Subject: [PATCH 18/59] Correct Intl.DateTimeFormat and Intl.DisplayNames metadata incorrectly identifying tests for 'en' locale as tests for 'en-US' --- .../DateTimeFormat/prototype/format/dayPeriod-long-en.js | 2 +- .../DateTimeFormat/prototype/format/dayPeriod-narrow-en.js | 2 +- .../DateTimeFormat/prototype/format/dayPeriod-short-en.js | 2 +- .../DateTimeFormat/prototype/format/fractionalSecondDigits.js | 2 +- .../prototype/formatToParts/fractionalSecondDigits.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/intl402/DateTimeFormat/prototype/format/dayPeriod-long-en.js b/test/intl402/DateTimeFormat/prototype/format/dayPeriod-long-en.js index c2c5b20ae5b..023ad2e29fa 100644 --- a/test/intl402/DateTimeFormat/prototype/format/dayPeriod-long-en.js +++ b/test/intl402/DateTimeFormat/prototype/format/dayPeriod-long-en.js @@ -5,7 +5,7 @@ esid: sec-createdatetimeformat description: Checks basic handling of dayPeriod, long format. features: [Intl.DateTimeFormat-dayPeriod] -locale: [en-US] +locale: [en] ---*/ const d0000 = new Date(2017, 11, 12, 0, 0, 0, 0); diff --git a/test/intl402/DateTimeFormat/prototype/format/dayPeriod-narrow-en.js b/test/intl402/DateTimeFormat/prototype/format/dayPeriod-narrow-en.js index bf185f6ccc3..2c78b205dd6 100644 --- a/test/intl402/DateTimeFormat/prototype/format/dayPeriod-narrow-en.js +++ b/test/intl402/DateTimeFormat/prototype/format/dayPeriod-narrow-en.js @@ -5,7 +5,7 @@ esid: sec-createdatetimeformat description: Checks basic handling of dayPeriod, narrow format. features: [Intl.DateTimeFormat-dayPeriod] -locale: [en-US] +locale: [en] ---*/ const d0000 = new Date(2017, 11, 12, 0, 0, 0, 0); diff --git a/test/intl402/DateTimeFormat/prototype/format/dayPeriod-short-en.js b/test/intl402/DateTimeFormat/prototype/format/dayPeriod-short-en.js index 3a450c51811..190142b109a 100644 --- a/test/intl402/DateTimeFormat/prototype/format/dayPeriod-short-en.js +++ b/test/intl402/DateTimeFormat/prototype/format/dayPeriod-short-en.js @@ -5,7 +5,7 @@ esid: sec-initializedatetimeformat description: Checks basic handling of dayPeriod, short format. features: [Intl.DateTimeFormat-dayPeriod] -locale: [en-US] +locale: [en] ---*/ const d0000 = new Date(2017, 11, 12, 0, 0, 0, 0); diff --git a/test/intl402/DateTimeFormat/prototype/format/fractionalSecondDigits.js b/test/intl402/DateTimeFormat/prototype/format/fractionalSecondDigits.js index 8bf72dd04a6..da196a43ef7 100644 --- a/test/intl402/DateTimeFormat/prototype/format/fractionalSecondDigits.js +++ b/test/intl402/DateTimeFormat/prototype/format/fractionalSecondDigits.js @@ -5,7 +5,7 @@ esid: sec-createdatetimeformat description: Checks basic handling of fractionalSecondDigits. features: [Intl.DateTimeFormat-fractionalSecondDigits] -locale: [en-US] +locale: [en] ---*/ const d1 = new Date(2019, 7, 10, 1, 2, 3, 234); diff --git a/test/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js b/test/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js index ff150509559..c70c2592d4a 100644 --- a/test/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js +++ b/test/intl402/DateTimeFormat/prototype/formatToParts/fractionalSecondDigits.js @@ -5,7 +5,7 @@ esid: sec-createdatetimeformat description: Checks basic handling of fractionalSecondDigits. features: [Intl.DateTimeFormat-fractionalSecondDigits] -locale: [en-US] +locale: [en] ---*/ const d1 = new Date(2019, 7, 10, 1, 2, 3, 234); From 634933a489f1bb8cf074a2a9b8616ade5f2f5cac Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Mon, 25 Mar 2024 16:04:54 -0700 Subject: [PATCH 19/59] DurationFormat: test formatting for units using combinations of "long", "short", and "narrow" styles --- .../format/mixed-non-numeric-styles-es.js | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 test/intl402/DurationFormat/prototype/format/mixed-non-numeric-styles-es.js diff --git a/test/intl402/DurationFormat/prototype/format/mixed-non-numeric-styles-es.js b/test/intl402/DurationFormat/prototype/format/mixed-non-numeric-styles-es.js new file mode 100644 index 00000000000..ce596239b08 --- /dev/null +++ b/test/intl402/DurationFormat/prototype/format/mixed-non-numeric-styles-es.js @@ -0,0 +1,85 @@ +// Copyright 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-Intl.DurationFormat.prototype.format +description: Test if format method formats duration correctly with mixed non-numeric settings for unit styles. Compares output from format method to output produced through using NumberFormat and ListFormat as used by DurationFormat. +info: | + PartitionDurationFormatPattern ( durationFormat, duration ) + ... + 9. While done is false, repeat for each row in Table 2 in table order, except the header row: + ... + k. If value is not 0 or display is not "auto" or displayRequired is "true", then + ... + v. If style is not "fractional", "numeric", or "2-digit", then + 1. Perform ! CreateDataPropertyOrThrow(nfOpts, "style", "unit"). + 2. Perform ! CreateDataPropertyOrThrow(nfOpts, "unit", numberFormatUnit). + 3. Perform ! CreateDataPropertyOrThrow(nfOpts, "unitDisplay", style). + ... + ix. Let parts be ! PartitionNumberPattern(nf, value). + ... + 14. Perform ! CreateDataPropertyOrThrow(lfOpts, "style", listStyle). + 15. Let lf be ! Construct(%ListFormat%, « durationFormat.[[Locale]], lfOpts »). + ... + 18. Let formatted be CreatePartsFromList(lf, strings). + +locale: [es] +features: [Intl.DurationFormat] +---*/ + +function formatDuration(locale, duration, dfOpts){ + let result = []; + for (const unit in duration){ + let nfUnit = unit.substring(0, unit.length - 1); + let nf = new Intl.NumberFormat(locale, {style: "unit", unit: nfUnit, unitDisplay: dfOpts[unit]}); + result.push(nf.format(duration[unit])); + } + + for (const baseStyle of ["long", "short", "narrow"]){ + let lf = new Intl.ListFormat(locale, {type: "unit", style: baseStyle}); + let expected = lf.format(result); + dfOpts.style = baseStyle; + let df = new Intl.DurationFormat(locale, dfOpts); + let actual = df.format(duration); + assert.sameValue(actual, expected); + } +} + +const duration = { + years: 1, + months: 2, + weeks: 3, + days: 0, + hours: 4, + minutes: 5, + seconds: 6, + milliseconds: 7, + microseconds: 8, + nanoseconds: 9, +}; + +const locale = "es"; + +formatDuration(locale, duration, { + years: "narrow", + months: "narrow", + weeks: "narrow", + days: "short", + hours: "short", + minutes: "short", + seconds: "long", + milliseconds: "long", + microseconds: "long", + nanoseconds: "narrow", }); + +formatDuration(locale, duration, { + years: "long", + months: "short", + weeks: "narrow", + days: "long", + hours: "short", + minutes: "narrow", + seconds: "long", + milliseconds: "short", + microseconds: "narrow", + nanoseconds: "long", }); From 71f95c29bdfe02ff54019b5104aadfe17284a764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Wed, 7 Feb 2024 13:31:10 +0100 Subject: [PATCH 20/59] Add tests for resizable array buffer views Covers spec compliance issues in at least one of JSC, V8, or SM. --- ...validated-against-initial-buffer-length.js | 44 ++++++++++++++ .../from/from-array-mapper-detaches-result.js | 37 ++++++++++++ ...array-mapper-makes-result-out-of-bounds.js | 37 ++++++++++++ ...rray-into-itself-mapper-detaches-result.js | 37 ++++++++++++ ...tself-mapper-makes-result-out-of-bounds.js | 37 ++++++++++++ .../from-typedarray-mapper-detaches-result.js | 37 ++++++++++++ ...array-mapper-makes-result-out-of-bounds.js | 37 ++++++++++++ .../iterated-array-changed-by-tonumber.js | 37 ++++++++++++ ...ith-out-of-bounds-and-in-bounds-indices.js | 57 +++++++++++++++++++ ...nt-indices-computed-from-initial-length.js | 51 +++++++++++++++++ ...ed-against-initial-length-out-of-bounds.js | 51 +++++++++++++++++ .../index-compared-against-initial-length.js | 47 +++++++++++++++ .../separator-tostring-once-after-resized.js | 39 +++++++++++++ .../result-byteOffset-from-out-of-bounds.js | 49 ++++++++++++++++ .../values/make-in-bounds-after-exhausted.js | 55 ++++++++++++++++++ .../make-out-of-bounds-after-exhausted.js | 49 ++++++++++++++++ .../index-validated-against-current-length.js | 53 +++++++++++++++++ .../iterated-array-changed-by-tonumber.js | 43 ++++++++++++++ ...ated-array-with-modified-array-iterator.js | 49 ++++++++++++++++ ...esized-out-of-bounds-to-in-bounds-index.js | 37 ++++++++++++ 20 files changed, 883 insertions(+) create mode 100644 test/built-ins/DataView/byteOffset-validated-against-initial-buffer-length.js create mode 100644 test/built-ins/TypedArray/from/from-array-mapper-detaches-result.js create mode 100644 test/built-ins/TypedArray/from/from-array-mapper-makes-result-out-of-bounds.js create mode 100644 test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-detaches-result.js create mode 100644 test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-makes-result-out-of-bounds.js create mode 100644 test/built-ins/TypedArray/from/from-typedarray-mapper-detaches-result.js create mode 100644 test/built-ins/TypedArray/from/from-typedarray-mapper-makes-result-out-of-bounds.js create mode 100644 test/built-ins/TypedArray/from/iterated-array-changed-by-tonumber.js create mode 100644 test/built-ins/TypedArray/of/resized-with-out-of-bounds-and-in-bounds-indices.js create mode 100644 test/built-ins/TypedArray/prototype/fill/absent-indices-computed-from-initial-length.js create mode 100644 test/built-ins/TypedArray/prototype/includes/index-compared-against-initial-length-out-of-bounds.js create mode 100644 test/built-ins/TypedArray/prototype/includes/index-compared-against-initial-length.js create mode 100644 test/built-ins/TypedArray/prototype/join/separator-tostring-once-after-resized.js create mode 100644 test/built-ins/TypedArray/prototype/subarray/result-byteOffset-from-out-of-bounds.js create mode 100644 test/built-ins/TypedArray/prototype/values/make-in-bounds-after-exhausted.js create mode 100644 test/built-ins/TypedArray/prototype/values/make-out-of-bounds-after-exhausted.js create mode 100644 test/built-ins/TypedArray/prototype/with/index-validated-against-current-length.js create mode 100644 test/built-ins/TypedArrayConstructors/ctors/object-arg/iterated-array-changed-by-tonumber.js create mode 100644 test/built-ins/TypedArrayConstructors/ctors/object-arg/iterated-array-with-modified-array-iterator.js create mode 100644 test/built-ins/TypedArrayConstructors/internals/Set/resized-out-of-bounds-to-in-bounds-index.js diff --git a/test/built-ins/DataView/byteOffset-validated-against-initial-buffer-length.js b/test/built-ins/DataView/byteOffset-validated-against-initial-buffer-length.js new file mode 100644 index 00000000000..58b3ef970f4 --- /dev/null +++ b/test/built-ins/DataView/byteOffset-validated-against-initial-buffer-length.js @@ -0,0 +1,44 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-dataview-buffer-byteoffset-bytelength +description: > + The byteOffset argument is validated against the initial buffer length. +info: | + DataView ( buffer [ , byteOffset [ , byteLength ] ] ) + + ... + 3. Let offset be ? ToIndex(byteOffset). + ... + 5. Let bufferByteLength be ArrayBufferByteLength(buffer, seq-cst). + 6. If offset > bufferByteLength, throw a RangeError exception. + ... + 10. Let O be ? OrdinaryCreateFromConstructor(NewTarget, "%DataView.prototype%", + « [[DataView]], [[ViewedArrayBuffer]], [[ByteLength]], [[ByteOffset]] »). + ... + + OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) + + ... + 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). + ... + +features: [Reflect.construct] +---*/ + +let newTarget = Object.defineProperty(function(){}.bind(), "prototype", { + get() { + throw new Test262Error("GetPrototypeFromConstructor not executed"); + } +}); + +// Zero length buffer. +let ab = new ArrayBuffer(0); + +// Byte offset is larger than the buffer length, which is zero. +let byteOffset = 10; + +assert.throws(RangeError, () => { + Reflect.construct(DataView, [ab, byteOffset], newTarget); +}); diff --git a/test/built-ins/TypedArray/from/from-array-mapper-detaches-result.js b/test/built-ins/TypedArray/from/from-array-mapper-detaches-result.js new file mode 100644 index 00000000000..2a7ee9733a0 --- /dev/null +++ b/test/built-ins/TypedArray/from/from-array-mapper-detaches-result.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.from +description: > + Mapper function detaches result typed array. +info: | + %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) + + ... + 12. Repeat, while k < len, + ... + c. If mapping is true, then + i. Let mappedValue be ? Call(mapfn, thisArg, « kValue, 𝔽(k) »). + ... + e. Perform ? Set(targetObj, Pk, mappedValue, true). + ... +includes: [detachArrayBuffer.js] +features: [TypedArray] +---*/ + +let ab = new ArrayBuffer(3); +let target = new Int8Array(ab); +let values = [0, 1, 2]; + +let result = Int32Array.from.call(function() { + return target; +}, values, v => { + if (v === 1) { + $DETACHBUFFER(ab); + } + return v + 10; +}); + +assert.sameValue(result, target); +assert.sameValue(result.length, 0); diff --git a/test/built-ins/TypedArray/from/from-array-mapper-makes-result-out-of-bounds.js b/test/built-ins/TypedArray/from/from-array-mapper-makes-result-out-of-bounds.js new file mode 100644 index 00000000000..1e984f3ca72 --- /dev/null +++ b/test/built-ins/TypedArray/from/from-array-mapper-makes-result-out-of-bounds.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.from +description: > + Mapper function makes result typed array out-of-bounds. +info: | + %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) + + ... + 12. Repeat, while k < len, + ... + c. If mapping is true, then + i. Let mappedValue be ? Call(mapfn, thisArg, « kValue, 𝔽(k) »). + ... + e. Perform ? Set(targetObj, Pk, mappedValue, true). + ... +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(3, {maxByteLength: 5}); +let target = new Int8Array(rab); +let values = [0, 1, 2]; + +let result = Int32Array.from.call(function() { + return target; +}, values, v => { + if (v === 1) { + rab.resize(1); + } + return v + 10; +}); + +assert.sameValue(result, target); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], 10); diff --git a/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-detaches-result.js b/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-detaches-result.js new file mode 100644 index 00000000000..b32641cc8b4 --- /dev/null +++ b/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-detaches-result.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.from +description: > + Mapper function detaches result typed array. +info: | + %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) + + ... + 12. Repeat, while k < len, + ... + c. If mapping is true, then + i. Let mappedValue be ? Call(mapfn, thisArg, « kValue, 𝔽(k) »). + ... + e. Perform ? Set(targetObj, Pk, mappedValue, true). + ... +includes: [detachArrayBuffer.js] +features: [TypedArray] +---*/ + +let ab = new ArrayBuffer(3); +let target = new Int8Array(ab); +target.set([0, 1, 2]); + +let result = Int32Array.from.call(function() { + return target; +}, target, v => { + if (v === 1) { + $DETACHBUFFER(ab); + } + return v + 10; +}); + +assert.sameValue(result, target); +assert.sameValue(result.length, 0); diff --git a/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-makes-result-out-of-bounds.js b/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-makes-result-out-of-bounds.js new file mode 100644 index 00000000000..b740d673d60 --- /dev/null +++ b/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-makes-result-out-of-bounds.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.from +description: > + Mapper function makes result typed array out-of-bounds. +info: | + %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) + + ... + 12. Repeat, while k < len, + ... + c. If mapping is true, then + i. Let mappedValue be ? Call(mapfn, thisArg, « kValue, 𝔽(k) »). + ... + e. Perform ? Set(targetObj, Pk, mappedValue, true). + ... +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(3, {maxByteLength: 5}); +let target = new Int8Array(rab); +target.set([0, 1, 2]); + +let result = Int32Array.from.call(function() { + return target; +}, target, v => { + if (v === 1) { + rab.resize(1); + } + return v + 10; +}); + +assert.sameValue(result, target); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], 10); diff --git a/test/built-ins/TypedArray/from/from-typedarray-mapper-detaches-result.js b/test/built-ins/TypedArray/from/from-typedarray-mapper-detaches-result.js new file mode 100644 index 00000000000..10aa83400ad --- /dev/null +++ b/test/built-ins/TypedArray/from/from-typedarray-mapper-detaches-result.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.from +description: > + Mapper function detaches result typed array. +info: | + %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) + + ... + 12. Repeat, while k < len, + ... + c. If mapping is true, then + i. Let mappedValue be ? Call(mapfn, thisArg, « kValue, 𝔽(k) »). + ... + e. Perform ? Set(targetObj, Pk, mappedValue, true). + ... +includes: [detachArrayBuffer.js] +features: [TypedArray] +---*/ + +let ab = new ArrayBuffer(3); +let target = new Int8Array(ab); +let values = new Int8Array([0, 1, 2]); + +let result = Int32Array.from.call(function() { + return target; +}, values, v => { + if (v === 1) { + $DETACHBUFFER(ab); + } + return v + 10; +}); + +assert.sameValue(result, target); +assert.sameValue(result.length, 0); diff --git a/test/built-ins/TypedArray/from/from-typedarray-mapper-makes-result-out-of-bounds.js b/test/built-ins/TypedArray/from/from-typedarray-mapper-makes-result-out-of-bounds.js new file mode 100644 index 00000000000..d88718bfb36 --- /dev/null +++ b/test/built-ins/TypedArray/from/from-typedarray-mapper-makes-result-out-of-bounds.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.from +description: > + Mapper function makes result typed array out-of-bounds. +info: | + %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) + + ... + 12. Repeat, while k < len, + ... + c. If mapping is true, then + i. Let mappedValue be ? Call(mapfn, thisArg, « kValue, 𝔽(k) »). + ... + e. Perform ? Set(targetObj, Pk, mappedValue, true). + ... +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(3, {maxByteLength: 5}); +let target = new Int8Array(rab); +let values = new Int8Array([0, 1, 2]); + +let result = Int32Array.from.call(function() { + return target; +}, values, v => { + if (v === 1) { + rab.resize(1); + } + return v + 10; +}); + +assert.sameValue(result, target); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], 10); diff --git a/test/built-ins/TypedArray/from/iterated-array-changed-by-tonumber.js b/test/built-ins/TypedArray/from/iterated-array-changed-by-tonumber.js new file mode 100644 index 00000000000..ca97a5981ad --- /dev/null +++ b/test/built-ins/TypedArray/from/iterated-array-changed-by-tonumber.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.from +description: > + Modifications to input array after iteration are handled correctly. +info: | + %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) + + ... + 6. If usingIterator is not undefined, then + a. Let values be ? IteratorToList(? GetIteratorFromMethod(source, usingIterator)). + b. Let len be the number of elements in values. + ... + e. Repeat, while k < len, + ... + vi. Perform ? Set(targetObj, Pk, mappedValue, true). + ... +features: [TypedArray] +---*/ + +let values = [0, { + valueOf() { + // Removes all array elements. Caller must have saved all elements. + values.length = 0; + return 100; + } +}, 2]; + +// `from` called with array which uses the built-in array iterator. +let ta = Int32Array.from(values); + +assert.sameValue(ta.length, 3); +assert.sameValue(ta[0], 0); +assert.sameValue(ta[1], 100); +assert.sameValue(ta[2], 2); diff --git a/test/built-ins/TypedArray/of/resized-with-out-of-bounds-and-in-bounds-indices.js b/test/built-ins/TypedArray/of/resized-with-out-of-bounds-and-in-bounds-indices.js new file mode 100644 index 00000000000..aa16ae4896e --- /dev/null +++ b/test/built-ins/TypedArray/of/resized-with-out-of-bounds-and-in-bounds-indices.js @@ -0,0 +1,57 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.of +description: > + Performs Set operation which ignores out-of-bounds indices. +info: | + %TypedArray%.of ( ...items ) + + ... + 6. Repeat, while k < len, + ... + c. Perform ? Set(newObj, Pk, kValue, true). + ... + +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(3, {maxByteLength: 4}); +let ta = new Int8Array(rab); + +let one = { + valueOf() { + // Shrink buffer. Assignment to `ta[0]` should be ignored. + rab.resize(0); + return 1; + } +}; + +let two = { + valueOf() { + // Grow buffer. All following assignment should succeed. + rab.resize(4); + return 2; + } +}; + +// Typed array is correctly zero initialised. +assert.sameValue(ta.length, 3); +assert.sameValue(ta[0], 0); +assert.sameValue(ta[1], 0); +assert.sameValue(ta[2], 0); + +let result = Int8Array.of.call(function() { + return ta; +}, one, two, 3); + +// Correct result value. +assert.sameValue(result, ta); + +// Values are correctly set. +assert.sameValue(ta.length, 4); +assert.sameValue(ta[0], 0); +assert.sameValue(ta[1], 2); +assert.sameValue(ta[2], 3); +assert.sameValue(ta[3], 0); diff --git a/test/built-ins/TypedArray/prototype/fill/absent-indices-computed-from-initial-length.js b/test/built-ins/TypedArray/prototype/fill/absent-indices-computed-from-initial-length.js new file mode 100644 index 00000000000..110b5733092 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/fill/absent-indices-computed-from-initial-length.js @@ -0,0 +1,51 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype.fill +description: > + Absent start and end parameters are computed from initial length. +info: | + %TypedArray%.prototype.fill ( value [ , start [ , end ] ] ) + + ... + 2. Let taRecord be ? ValidateTypedArray(O, seq-cst). + 3. Let len be TypedArrayLength(taRecord). + ... + 5. Otherwise, set value to ? ToNumber(value). + 6. Let relativeStart be ? ToIntegerOrInfinity(start). + ... + 9. Else, let startIndex be min(relativeStart, len). + 10. If end is undefined, let relativeEnd be len; else let relativeEnd be ? ToIntegerOrInfinity(end). + ... + 13. Else, let endIndex be min(relativeEnd, len). + ... + +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(1, {maxByteLength: 4}); +let ta = new Int8Array(rab); + +let value = { + valueOf() { + // Set buffer to maximum byte length. + rab.resize(4); + + // Return the fill value. + return 123; + } +}; + +// Ensure typed array is correctly initialised. +assert.sameValue(ta.length, 1); +assert.sameValue(ta[0], 0); + +ta.fill(value); + +// Ensure typed array has correct length and only the first element was filled. +assert.sameValue(ta.length, 4); +assert.sameValue(ta[0], 123); +assert.sameValue(ta[1], 0); +assert.sameValue(ta[2], 0); +assert.sameValue(ta[3], 0); diff --git a/test/built-ins/TypedArray/prototype/includes/index-compared-against-initial-length-out-of-bounds.js b/test/built-ins/TypedArray/prototype/includes/index-compared-against-initial-length-out-of-bounds.js new file mode 100644 index 00000000000..823fa1dd8b5 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/includes/index-compared-against-initial-length-out-of-bounds.js @@ -0,0 +1,51 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype.includes +description: > + Index is compared against the initial length when typed array is made out-of-bounds. +info: | + %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] ) + + ... + 2. Let taRecord be ? ValidateTypedArray(O, seq-cst). + 3. Let len be TypedArrayLength(taRecord). + ... + 5. Let n be ? ToIntegerOrInfinity(fromIndex). + ... + 9. If n ≥ 0, then + a. Let k be n. + ... + 11. Repeat, while k < len, + ... + +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(4, {maxByteLength: 20}); + +// Uses byteOffset to make typed array out-of-bounds when shrinking size to zero. +let byteOffset = 1; + +let ta = new Int8Array(rab, byteOffset); + +let index = { + valueOf() { + // Shrink buffer to zero. + rab.resize(0); + + // Index is larger than the initial length. + return 10; + } +}; + +// Typed array is in-bounds. +assert.sameValue(ta.length, 3); + +let result = ta.includes(undefined, index); + +// Typed array is out-of-bounds. +assert.sameValue(ta.length, 0); + +assert.sameValue(result, false); diff --git a/test/built-ins/TypedArray/prototype/includes/index-compared-against-initial-length.js b/test/built-ins/TypedArray/prototype/includes/index-compared-against-initial-length.js new file mode 100644 index 00000000000..06bcca60072 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/includes/index-compared-against-initial-length.js @@ -0,0 +1,47 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype.includes +description: > + Index is compared against the initial length. +info: | + %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] ) + + ... + 2. Let taRecord be ? ValidateTypedArray(O, seq-cst). + 3. Let len be TypedArrayLength(taRecord). + ... + 5. Let n be ? ToIntegerOrInfinity(fromIndex). + ... + 9. If n ≥ 0, then + a. Let k be n. + ... + 11. Repeat, while k < len, + ... + +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(4, {maxByteLength: 20}); +let ta = new Int8Array(rab); + +let index = { + valueOf() { + // Shrink buffer to zero. + rab.resize(0); + + // Index is larger than the initial length. + return 10; + } +}; + +// Auto-length is correctly tracked. +assert.sameValue(ta.length, 4); + +let result = ta.includes(undefined, index); + +// Auto-length is correctly set to zero. +assert.sameValue(ta.length, 0); + +assert.sameValue(result, false); diff --git a/test/built-ins/TypedArray/prototype/join/separator-tostring-once-after-resized.js b/test/built-ins/TypedArray/prototype/join/separator-tostring-once-after-resized.js new file mode 100644 index 00000000000..e39ccd1a1df --- /dev/null +++ b/test/built-ins/TypedArray/prototype/join/separator-tostring-once-after-resized.js @@ -0,0 +1,39 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype.join +description: > + ToString is called once when the array is resized. +info: | + %TypedArray%.prototype.join ( separator ) + + ... + 2. Let taRecord be ? ValidateTypedArray(O, seq-cst). + 3. Let len be TypedArrayLength(taRecord). + ... + 5. Else, let sep be ? ToString(separator). + ... + +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(3, {maxByteLength: 5}); +let ta = new Int8Array(rab); + +let callCount = 0; + +let index = { + toString() { + callCount++; + rab.resize(0); + return "-"; + } +}; + +assert.sameValue(callCount, 0); + +let r = ta.join(index); + +assert.sameValue(callCount, 1); +assert.sameValue(r, "--"); diff --git a/test/built-ins/TypedArray/prototype/subarray/result-byteOffset-from-out-of-bounds.js b/test/built-ins/TypedArray/prototype/subarray/result-byteOffset-from-out-of-bounds.js new file mode 100644 index 00000000000..72434b2d131 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/subarray/result-byteOffset-from-out-of-bounds.js @@ -0,0 +1,49 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype.subarray +description: > + Result has correct the byteOffset when input is initially out-of-bounds. +info: | + %TypedArray%.prototype.subarray ( start, end ) + + ... + 13. Let srcByteOffset be O.[[ByteOffset]]. + 14. Let beginByteOffset be srcByteOffset + (startIndex × elementSize). + 15. If O.[[ArrayLength]] is auto and end is undefined, then + a. Let argumentsList be « buffer, 𝔽(beginByteOffset) ». + 16. + ... + e. Let newLength be max(endIndex - startIndex, 0). + f. Let argumentsList be « buffer, 𝔽(beginByteOffset), 𝔽(newLength) ». + 17. Return ? TypedArraySpeciesCreate(O, argumentsList). +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(10, {maxByteLength: 10}); + +let autoLength = new Int8Array(rab, 4); +let withLength = new Int8Array(rab, 4, 2); + +let start = { + valueOf() { + // Make |autoLength| and |withLength| in-bounds again. + rab.resize(10); + return 1; + } +}; + +// Make |autoLength| out-of-bounds. +rab.resize(0); + +let resultAutoLength = autoLength.subarray(start); +assert.sameValue(resultAutoLength.byteOffset, 4); +assert.sameValue(resultAutoLength.length, 6); + +// Make |withLength| out-of-bounds. +rab.resize(0); + +let resultWithLength = withLength.subarray(start); +assert.sameValue(resultWithLength.byteOffset, 4); +assert.sameValue(resultWithLength.length, 0); diff --git a/test/built-ins/TypedArray/prototype/values/make-in-bounds-after-exhausted.js b/test/built-ins/TypedArray/prototype/values/make-in-bounds-after-exhausted.js new file mode 100644 index 00000000000..294ebcbba5c --- /dev/null +++ b/test/built-ins/TypedArray/prototype/values/make-in-bounds-after-exhausted.js @@ -0,0 +1,55 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype.values +description: > + Iterator is still exhausted when typedarray is changed to in-bounds. +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(3, {maxByteLength: 5}); +let ta = new Int8Array(rab); + +// Ensure the TypedArray is correctly initialised. +assert.sameValue(ta.length, 3); +assert.sameValue(ta.byteOffset, 0); + +ta[0] = 11; +ta[1] = 22; +ta[2] = 33; + +let it = ta.values(); +let r; + +// Fetch the first value. +r = it.next(); +assert.sameValue(r.done, false); +assert.sameValue(r.value, 11); + +// Resize buffer to zero. +rab.resize(0); + +// TypedArray is now out-of-bounds. +assert.sameValue(ta.length, 0); +assert.sameValue(ta.byteOffset, 0); + +// Resize buffer to zero. +rab.resize(0); + +// Attempt to fetch the next value. This exhausts the iterator. +r = it.next(); +assert.sameValue(r.done, true); +assert.sameValue(r.value, undefined); + +// Resize buffer so the typed array is again in-bounds. +rab.resize(5); + +// TypedArray is now in-bounds. +assert.sameValue(ta.length, 5); +assert.sameValue(ta.byteOffset, 0); + +// Attempt to fetch another value from an already exhausted iterator. +r = it.next(); +assert.sameValue(r.done, true); +assert.sameValue(r.value, undefined); diff --git a/test/built-ins/TypedArray/prototype/values/make-out-of-bounds-after-exhausted.js b/test/built-ins/TypedArray/prototype/values/make-out-of-bounds-after-exhausted.js new file mode 100644 index 00000000000..2c8fd997d93 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/values/make-out-of-bounds-after-exhausted.js @@ -0,0 +1,49 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype.values +description: > + Calling next on an out-of-bounds typedarray throws no error when iterator exhausted. +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(3, {maxByteLength: 5}); +let ta = new Int8Array(rab, 1); + +// Ensure the TypedArray is correctly initialised. +assert.sameValue(ta.length, 2); +assert.sameValue(ta.byteOffset, 1); + +ta[0] = 11; +ta[1] = 22; + +let it = ta.values(); +let r; + +// Fetch the first value. +r = it.next(); +assert.sameValue(r.done, false); +assert.sameValue(r.value, 11); + +// Fetch the second value. +r = it.next(); +assert.sameValue(r.done, false); +assert.sameValue(r.value, 22); + +// Iterator is now exhausted. +r = it.next(); +assert.sameValue(r.done, true); +assert.sameValue(r.value, undefined); + +// Resize buffer to zero. +rab.resize(0); + +// TypedArray is now out-of-bounds. +assert.sameValue(ta.length, 0); +assert.sameValue(ta.byteOffset, 0); + +// Calling next doesn't throw an error. +r = it.next(); +assert.sameValue(r.done, true); +assert.sameValue(r.value, undefined); diff --git a/test/built-ins/TypedArray/prototype/with/index-validated-against-current-length.js b/test/built-ins/TypedArray/prototype/with/index-validated-against-current-length.js new file mode 100644 index 00000000000..e0fe8f12043 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/with/index-validated-against-current-length.js @@ -0,0 +1,53 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype.with +description: > + The index is validated against the current length. +info: | + %TypedArray%.prototype.with ( index, value ) + + ... + 8. Else, let numericValue be ? ToNumber(value). + 9. If IsValidIntegerIndex(O, 𝔽(actualIndex)) is false, throw a RangeError exception. + ... + +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(2, {maxByteLength: 5}); +let ta = new Int8Array(rab); + +ta[0] = 11; +ta[1] = 22; + +// Ensure typed array is correctly initialised. +assert.sameValue(ta.length, 2); +assert.sameValue(ta[0], 11); +assert.sameValue(ta[1], 22); + +// Index is initially out-of-bounds. +let index = 4; + +let value = { + valueOf() { + rab.resize(5); + return 123; + } +}; + +let result = ta.with(index, value); + +// Typed array has been resized. +assert.sameValue(ta.length, 5); +assert.sameValue(ta[0], 11); +assert.sameValue(ta[1], 22); +assert.sameValue(ta[2], 0); +assert.sameValue(ta[3], 0); +assert.sameValue(ta[4], 0); + +// Result is correctly initialised. +assert.sameValue(result.length, 2); +assert.sameValue(result[0], 11); +assert.sameValue(result[1], 22); diff --git a/test/built-ins/TypedArrayConstructors/ctors/object-arg/iterated-array-changed-by-tonumber.js b/test/built-ins/TypedArrayConstructors/ctors/object-arg/iterated-array-changed-by-tonumber.js new file mode 100644 index 00000000000..1fe2a18b352 --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/ctors/object-arg/iterated-array-changed-by-tonumber.js @@ -0,0 +1,43 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-typedarray +description: > + Modifications to input array after iteration are handled correctly. +info: | + TypedArray ( ...args ) + + ... + 6. Else, + ... + b. If firstArgument is an Object, then + ... + iv. Else, + ... + 2. Let usingIterator be ? GetMethod(firstArgument, @@iterator). + 3. If usingIterator is not undefined, then + a. Let values be ? IteratorToList(? GetIteratorFromMethod(firstArgument, usingIterator)). + b. Perform ? InitializeTypedArrayFromList(O, values). + ... +includes: [testTypedArray.js] +features: [TypedArray] +---*/ + +testWithTypedArrayConstructors(function(TypedArray) { + let values = [0, { + valueOf() { + // Removes all array elements. Caller must have saved all elements. + values.length = 0; + return 100; + } + }, 2]; + + // Constructor called with array which uses the built-in array iterator. + var ta = new TypedArray(values); + + assert.sameValue(ta.length, 3); + assert.sameValue(ta[0], 0); + assert.sameValue(ta[1], 100); + assert.sameValue(ta[2], 2); +}); diff --git a/test/built-ins/TypedArrayConstructors/ctors/object-arg/iterated-array-with-modified-array-iterator.js b/test/built-ins/TypedArrayConstructors/ctors/object-arg/iterated-array-with-modified-array-iterator.js new file mode 100644 index 00000000000..adaef9eaffc --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/ctors/object-arg/iterated-array-with-modified-array-iterator.js @@ -0,0 +1,49 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-typedarray +description: > + Modifications to input array after iteration are handled correctly. +info: | + TypedArray ( ...args ) + + ... + 6. Else, + ... + b. If firstArgument is an Object, then + ... + iv. Else, + ... + 2. Let usingIterator be ? GetMethod(firstArgument, @@iterator). + 3. If usingIterator is not undefined, then + a. Let values be ? IteratorToList(? GetIteratorFromMethod(firstArgument, usingIterator)). + b. Perform ? InitializeTypedArrayFromList(O, values). + ... +includes: [testTypedArray.js] +features: [TypedArray] +---*/ + +let ArrayIteratorPrototype = Object.getPrototypeOf([].values()); +let values; + +// Modify the built-in ArrayIteratorPrototype `next` method. +ArrayIteratorPrototype.next = function() { + let done = values.length === 0; + let value = values.pop(); + return {value, done}; +}; + +testWithTypedArrayConstructors(function(TypedArray) { + // Reset `values` array. + values = [1, 2, 3, 4]; + + // Constructor called with array which uses the modified array iterator. + var ta = new TypedArray([0]); + + assert.sameValue(ta.length, 4); + assert.sameValue(ta[0], 4); + assert.sameValue(ta[1], 3); + assert.sameValue(ta[2], 2); + assert.sameValue(ta[3], 1); +}); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/resized-out-of-bounds-to-in-bounds-index.js b/test/built-ins/TypedArrayConstructors/internals/Set/resized-out-of-bounds-to-in-bounds-index.js new file mode 100644 index 00000000000..f60d4c2b1aa --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/internals/Set/resized-out-of-bounds-to-in-bounds-index.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-typedarraysetelement +description: > + Index is validated after converting the right-hand side operand. +info: | + TypedArraySetElement ( O, index, value ) + ... + 2. Otherwise, let numValue be ? ToNumber(value). + 3. If IsValidIntegerIndex(O, index) is true, then + ... + +features: [TypedArray, resizable-arraybuffer] +---*/ + +let rab = new ArrayBuffer(0, {maxByteLength: 1}); +let ta = new Int8Array(rab); + +// Index is initially out-of-bounds. +let index = 0; + +let value = { + valueOf() { + // Make `index` an in-bounds access. + rab.resize(1); + return 100; + } +}; + +assert.sameValue(ta.length, 0); + +ta[index] = value; + +assert.sameValue(ta.length, 1); +assert.sameValue(ta[0], 100); From 837def66ac1700ce398df4a3b4eaeea915aa1df5 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Wed, 27 Mar 2024 17:44:35 -0700 Subject: [PATCH 21/59] Apply suggestions from code review Co-authored-by: Ioanna M Dimitriou H <9728696+ioannad@users.noreply.github.com> --- .../TypedArray/from/from-array-mapper-detaches-result.js | 2 +- .../from/from-array-mapper-makes-result-out-of-bounds.js | 2 +- .../from-typedarray-into-itself-mapper-detaches-result.js | 2 +- ...darray-into-itself-mapper-makes-result-out-of-bounds.js | 2 +- .../from/from-typedarray-mapper-detaches-result.js | 2 +- .../from-typedarray-mapper-makes-result-out-of-bounds.js | 2 +- .../subarray/result-byteOffset-from-out-of-bounds.js | 2 +- .../with/index-validated-against-current-length.js | 7 ++++++- 8 files changed, 13 insertions(+), 8 deletions(-) diff --git a/test/built-ins/TypedArray/from/from-array-mapper-detaches-result.js b/test/built-ins/TypedArray/from/from-array-mapper-detaches-result.js index 2a7ee9733a0..c5f4632e9d1 100644 --- a/test/built-ins/TypedArray/from/from-array-mapper-detaches-result.js +++ b/test/built-ins/TypedArray/from/from-array-mapper-detaches-result.js @@ -4,7 +4,7 @@ /*--- esid: sec-%typedarray%.from description: > - Mapper function detaches result typed array. + If the mapper function detaches the result typed array, .from performs Set operation which ignores out-of-bounds indices. info: | %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) diff --git a/test/built-ins/TypedArray/from/from-array-mapper-makes-result-out-of-bounds.js b/test/built-ins/TypedArray/from/from-array-mapper-makes-result-out-of-bounds.js index 1e984f3ca72..56b9d558be8 100644 --- a/test/built-ins/TypedArray/from/from-array-mapper-makes-result-out-of-bounds.js +++ b/test/built-ins/TypedArray/from/from-array-mapper-makes-result-out-of-bounds.js @@ -4,7 +4,7 @@ /*--- esid: sec-%typedarray%.from description: > - Mapper function makes result typed array out-of-bounds. + If the mapper function makes result typed array out-of-bounds, .from performs Set operation which ignores out-of-bounds indices. info: | %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) diff --git a/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-detaches-result.js b/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-detaches-result.js index b32641cc8b4..ca031bf3eec 100644 --- a/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-detaches-result.js +++ b/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-detaches-result.js @@ -4,7 +4,7 @@ /*--- esid: sec-%typedarray%.from description: > - Mapper function detaches result typed array. + If the mapper function detaches the result typed array, .from performs Set operation which ignores out-of-bounds indices. info: | %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) diff --git a/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-makes-result-out-of-bounds.js b/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-makes-result-out-of-bounds.js index b740d673d60..d79899f7417 100644 --- a/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-makes-result-out-of-bounds.js +++ b/test/built-ins/TypedArray/from/from-typedarray-into-itself-mapper-makes-result-out-of-bounds.js @@ -4,7 +4,7 @@ /*--- esid: sec-%typedarray%.from description: > - Mapper function makes result typed array out-of-bounds. + If the mapper function makes result typed array out-of-bounds, .from performs Set operation which ignores out-of-bounds indices. info: | %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) diff --git a/test/built-ins/TypedArray/from/from-typedarray-mapper-detaches-result.js b/test/built-ins/TypedArray/from/from-typedarray-mapper-detaches-result.js index 10aa83400ad..d9f8b3d5fd1 100644 --- a/test/built-ins/TypedArray/from/from-typedarray-mapper-detaches-result.js +++ b/test/built-ins/TypedArray/from/from-typedarray-mapper-detaches-result.js @@ -4,7 +4,7 @@ /*--- esid: sec-%typedarray%.from description: > - Mapper function detaches result typed array. + If the mapper function detaches the result typed array, .from performs Set operation which ignores out-of-bounds indices. info: | %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) diff --git a/test/built-ins/TypedArray/from/from-typedarray-mapper-makes-result-out-of-bounds.js b/test/built-ins/TypedArray/from/from-typedarray-mapper-makes-result-out-of-bounds.js index d88718bfb36..c863b2eb9ee 100644 --- a/test/built-ins/TypedArray/from/from-typedarray-mapper-makes-result-out-of-bounds.js +++ b/test/built-ins/TypedArray/from/from-typedarray-mapper-makes-result-out-of-bounds.js @@ -4,7 +4,7 @@ /*--- esid: sec-%typedarray%.from description: > - Mapper function makes result typed array out-of-bounds. + If the mapper function makes result typed array out-of-bounds, .from performs Set operation which ignores out-of-bounds indices. info: | %TypedArray%.from ( source [ , mapfn [ , thisArg ] ] ) diff --git a/test/built-ins/TypedArray/prototype/subarray/result-byteOffset-from-out-of-bounds.js b/test/built-ins/TypedArray/prototype/subarray/result-byteOffset-from-out-of-bounds.js index 72434b2d131..dc9bf7e80f3 100644 --- a/test/built-ins/TypedArray/prototype/subarray/result-byteOffset-from-out-of-bounds.js +++ b/test/built-ins/TypedArray/prototype/subarray/result-byteOffset-from-out-of-bounds.js @@ -4,7 +4,7 @@ /*--- esid: sec-%typedarray%.prototype.subarray description: > - Result has correct the byteOffset when input is initially out-of-bounds. + Result has the correct byteOffset when input is initially out-of-bounds. info: | %TypedArray%.prototype.subarray ( start, end ) diff --git a/test/built-ins/TypedArray/prototype/with/index-validated-against-current-length.js b/test/built-ins/TypedArray/prototype/with/index-validated-against-current-length.js index e0fe8f12043..3bdbd3a7165 100644 --- a/test/built-ins/TypedArray/prototype/with/index-validated-against-current-length.js +++ b/test/built-ins/TypedArray/prototype/with/index-validated-against-current-length.js @@ -8,10 +8,15 @@ description: > info: | %TypedArray%.prototype.with ( index, value ) + 1. Let O be the this value. + 2. Let taRecord be ? ValidateTypedArray(O, SEQ-CST). + 3. Let len be TypedArrayLength(taRecord). ... 8. Else, let numericValue be ? ToNumber(value). - 9. If IsValidIntegerIndex(O, 𝔽(actualIndex)) is false, throw a RangeError exception. ... + 10. Let A be ? TypedArrayCreateSameType(O, « 𝔽(len) »). + ... + 13. Return A. features: [TypedArray, resizable-arraybuffer] ---*/ From d19cb1557c3044b9266f6ebbc89894262845be8d Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Mon, 1 Apr 2024 13:17:59 +0900 Subject: [PATCH 22/59] Fix `Array.groupBy` to `Object.groupBy` in `features.txt` --- features.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features.txt b/features.txt index 53d7f994858..28a9fbdcd37 100644 --- a/features.txt +++ b/features.txt @@ -61,7 +61,7 @@ Temporal # https://github.com/tc39/proposal-realms ShadowRealm -# Array.groupBy & Map.groupBy +# Object.groupBy & Map.groupBy # https://github.com/tc39/proposal-array-grouping array-grouping From 984f3cc284b45b518f6e02d7bbad452426a2047f Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Fri, 19 Jan 2024 14:28:16 -0800 Subject: [PATCH 23/59] Temporal: Tests for correct intermediate value in ZonedDateTime difference/rounding These test cases ensure that DST disambiguation does not take place on intermediate values that are not the start or the end of the calculation. Note that NormalizedTimeDurationToDays is no longer called inside Temporal.Duration.prototype.add/subtract, so a few tests can be deleted. Other tests need to be adjusted because NormalizedTimeDurationToDays is no longer called inside Temporal.ZonedDateTime.prototype.since/until via DifferenceZonedDateTime, although it is still called as part of rounding. In addition, new tests for the now-fixed edge case are added, and for the day corrections that can happen to intermediates. See https://github.com/tc39/proposal-temporal/pull/2760 --- ...r-dateadd-called-with-options-undefined.js | 2 +- ...eddatetime-inconsistent-custom-calendar.js | 52 +++++++ ...-time-duration-to-days-loop-arbitrarily.js | 46 ------ .../prototype/add/order-of-operations.js | 12 +- ...ized-time-duration-to-days-range-errors.js | 143 ------------------ .../prototype/round/dst-rounding-result.js | 45 ++++++ ...r-dateadd-called-with-options-undefined.js | 2 +- ...eddatetime-inconsistent-custom-calendar.js | 52 +++++++ ...-time-duration-to-days-loop-arbitrarily.js | 46 ------ .../prototype/subtract/order-of-operations.js | 12 +- ...ized-time-duration-to-days-range-errors.js | 141 ----------------- .../prototype/total/dst-rounding-result.js | 37 +++++ ...r-dateadd-called-with-options-undefined.js | 16 +- ...eddatetime-inconsistent-custom-calendar.js | 53 +++++++ .../prototype/since/dst-rounding-result.js | 45 ++++++ .../since/find-intermediate-instant.js | 73 +++++++++ ...-time-duration-to-days-loop-arbitrarily.js | 16 +- ...ized-time-duration-to-days-range-errors.js | 26 +++- .../prototype/since/order-of-operations.js | 15 +- ...r-dateadd-called-with-options-undefined.js | 16 +- ...eddatetime-inconsistent-custom-calendar.js | 53 +++++++ .../prototype/until/dst-rounding-result.js | 45 ++++++ .../until/find-intermediate-instant.js | 69 +++++++++ ...-time-duration-to-days-loop-arbitrarily.js | 16 +- ...ized-time-duration-to-days-range-errors.js | 26 +++- .../prototype/until/order-of-operations.js | 15 +- 26 files changed, 592 insertions(+), 482 deletions(-) create mode 100644 test/built-ins/Temporal/Duration/prototype/add/differencezoneddatetime-inconsistent-custom-calendar.js delete mode 100644 test/built-ins/Temporal/Duration/prototype/add/normalized-time-duration-to-days-loop-arbitrarily.js delete mode 100644 test/built-ins/Temporal/Duration/prototype/add/relativeto-zoneddatetime-normalized-time-duration-to-days-range-errors.js create mode 100644 test/built-ins/Temporal/Duration/prototype/round/dst-rounding-result.js create mode 100644 test/built-ins/Temporal/Duration/prototype/subtract/differencezoneddatetime-inconsistent-custom-calendar.js delete mode 100644 test/built-ins/Temporal/Duration/prototype/subtract/normalized-time-duration-to-days-loop-arbitrarily.js delete mode 100644 test/built-ins/Temporal/Duration/prototype/subtract/relativeto-zoneddatetime-normalized-time-duration-to-days-range-errors.js create mode 100644 test/built-ins/Temporal/Duration/prototype/total/dst-rounding-result.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/since/differencezoneddatetime-inconsistent-custom-calendar.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-rounding-result.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/since/find-intermediate-instant.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/until/differencezoneddatetime-inconsistent-custom-calendar.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-rounding-result.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/until/find-intermediate-instant.js diff --git a/test/built-ins/Temporal/Duration/prototype/add/calendar-dateadd-called-with-options-undefined.js b/test/built-ins/Temporal/Duration/prototype/add/calendar-dateadd-called-with-options-undefined.js index 1da239a1a5f..8b4e9a63538 100644 --- a/test/built-ins/Temporal/Duration/prototype/add/calendar-dateadd-called-with-options-undefined.js +++ b/test/built-ins/Temporal/Duration/prototype/add/calendar-dateadd-called-with-options-undefined.js @@ -14,4 +14,4 @@ const calendar = TemporalHelpers.calendarDateAddUndefinedOptions(); const timeZone = TemporalHelpers.oneShiftTimeZone(new Temporal.Instant(0n), 3600e9); const instance = new Temporal.Duration(1, 1, 1, 1); instance.add(instance, { relativeTo: new Temporal.ZonedDateTime(0n, timeZone, calendar) }); -assert.sameValue(calendar.dateAddCallCount, 3); +assert.sameValue(calendar.dateAddCallCount, 2); diff --git a/test/built-ins/Temporal/Duration/prototype/add/differencezoneddatetime-inconsistent-custom-calendar.js b/test/built-ins/Temporal/Duration/prototype/add/differencezoneddatetime-inconsistent-custom-calendar.js new file mode 100644 index 00000000000..056e7186135 --- /dev/null +++ b/test/built-ins/Temporal/Duration/prototype/add/differencezoneddatetime-inconsistent-custom-calendar.js @@ -0,0 +1,52 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.duration.prototype.add +description: > + Throws a RangeError when custom calendar method returns inconsistent result +info: | + DifferenceZonedDateTime ( ... ) + 8. Repeat 3 times: + ... + g. If _sign_ = 0, or _timeSign_ = 0, or _sign_ = _timeSign_, then + ... + viii. Return ? CreateNormalizedDurationRecord(_dateDifference_.[[Years]], + _dateDifference_.[[Months]], _dateDifference_.[[Weeks]], + _dateDifference_.[[Days]], _norm_). + h. Set _dayCorrection_ to _dayCorrection_ + 1. + 9. NOTE: This step is only reached when custom calendar or time zone methods + return inconsistent values. + 10. Throw a *RangeError* exception. +features: [Temporal] +---*/ + +// Based partly on a test case by André Bargull + +const duration1 = new Temporal.Duration(0, 0, /* weeks = */ 7, 0, /* hours = */ 12); +const duration2 = new Temporal.Duration(0, 0, 0, /* days = */ 1); + +{ + const tz = new (class extends Temporal.TimeZone { + getPossibleInstantsFor(dateTime) { + return super.getPossibleInstantsFor(dateTime.add({ days: 3 })); + } + })("UTC"); + + const relativeTo = new Temporal.ZonedDateTime(0n, tz); + + assert.throws(RangeError, () => duration1.add(duration2, { relativeTo }), + "Calendar calculation where more than 2 days correction is needed should cause RangeError"); +} + +{ + const cal = new (class extends Temporal.Calendar { + dateUntil(one, two, options) { + return super.dateUntil(one, two, options).negated(); + } + })("iso8601"); + + const relativeTo = new Temporal.ZonedDateTime(0n, "UTC", cal); + + assert.throws(RangeError, () => duration1.add(duration2, { relativeTo }), + "Calendar calculation causing mixed-sign values should cause RangeError"); +} diff --git a/test/built-ins/Temporal/Duration/prototype/add/normalized-time-duration-to-days-loop-arbitrarily.js b/test/built-ins/Temporal/Duration/prototype/add/normalized-time-duration-to-days-loop-arbitrarily.js deleted file mode 100644 index b661510e8f8..00000000000 --- a/test/built-ins/Temporal/Duration/prototype/add/normalized-time-duration-to-days-loop-arbitrarily.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (C) 2022 Igalia, S.L. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-temporal.duration.prototype.add -description: > - NormalizedTimeDurationToDays should not be able to loop arbitrarily. -info: | - NormalizedTimeDurationToDays ( norm, zonedRelativeTo, timeZoneRec [ , precalculatedPlainDatetime ] ) - ... - 22. If NormalizedTimeDurationSign(_oneDayLess_) × _sign_ ≥ 0, then - a. Set _norm_ to _oneDayLess_. - b. Set _relativeResult_ to _oneDayFarther_. - c. Set _days_ to _days_ + _sign_. - d. Set _oneDayFarther_ to ? AddDaysToZonedDateTime(_relativeResult_.[[Instant]], _relativeResult_.[[DateTime]], _timeZoneRec_, _zonedRelativeTo_.[[Calendar]], _sign_). - e. Set dayLengthNs to NormalizedTimeDurationFromEpochNanosecondsDifference(_oneDayFarther.[[EpochNanoseconds]], relativeResult.[[EpochNanoseconds]]). - f. If NormalizedTimeDurationSign(? SubtractNormalizedTimeDuration(_norm_, _dayLengthNs_)) × _sign_ ≥ 0, then - i. Throw a *RangeError* exception. -features: [Temporal] ----*/ - -const duration = Temporal.Duration.from({ days: 1 }); - -const dayLengthNs = 86400000000000n; -const dayInstant = new Temporal.Instant(dayLengthNs); -let calls = 0; -const timeZone = new class extends Temporal.TimeZone { - getPossibleInstantsFor() { - calls++; - return [dayInstant]; - } -}("UTC"); - -const relativeTo = new Temporal.ZonedDateTime(0n, timeZone); - -assert.throws(RangeError, () => duration.add(duration, { relativeTo }), "arbitrarily long loop is prevented"); -assert.sameValue(calls, 5, "getPossibleInstantsFor is not called in an arbitrarily long loop"); - // Expected calls: - // AddDuration -> - // AddZonedDateTime (1) - // AddZonedDateTime (2) - // DifferenceZonedDateTime -> - // NormalizedTimeDurationToDays -> - // AddDaysToZonedDateTime (3, step 12) - // AddDaysToZonedDateTime (4, step 15) - // AddDaysToZonedDateTime (5, step 18.d) diff --git a/test/built-ins/Temporal/Duration/prototype/add/order-of-operations.js b/test/built-ins/Temporal/Duration/prototype/add/order-of-operations.js index d59a7cf0b83..a8025e195c6 100644 --- a/test/built-ins/Temporal/Duration/prototype/add/order-of-operations.js +++ b/test/built-ins/Temporal/Duration/prototype/add/order-of-operations.js @@ -338,18 +338,8 @@ const expectedOpsForZonedRelativeTo = expected.concat([ "call options.relativeTo.timeZone.getPossibleInstantsFor", // AddDuration → DifferenceZonedDateTime "call options.relativeTo.timeZone.getOffsetNanosecondsFor", - // AddDuration → DifferenceZonedDateTime → DifferenceISODateTime - "call options.relativeTo.calendar.dateUntil", - // AddDuration → DifferenceZonedDateTime → AddZonedDateTime - "call options.relativeTo.calendar.dateAdd", - "call options.relativeTo.timeZone.getPossibleInstantsFor", - // AddDuration → DifferenceZonedDateTime → NanosecondsToDays - "call options.relativeTo.timeZone.getOffsetNanosecondsFor", - "call options.relativeTo.timeZone.getOffsetNanosecondsFor", - // AddDuration → DifferenceZonedDateTime → NanosecondsToDays → AddZonedDateTime 1 - "call options.relativeTo.timeZone.getPossibleInstantsFor", - // AddDuration → DifferenceZonedDateTime → NanosecondsToDays → AddZonedDateTime 2 "call options.relativeTo.timeZone.getPossibleInstantsFor", + "call options.relativeTo.calendar.dateUntil", ]); const zonedRelativeTo = TemporalHelpers.propertyBagObserver(actual, { diff --git a/test/built-ins/Temporal/Duration/prototype/add/relativeto-zoneddatetime-normalized-time-duration-to-days-range-errors.js b/test/built-ins/Temporal/Duration/prototype/add/relativeto-zoneddatetime-normalized-time-duration-to-days-range-errors.js deleted file mode 100644 index 85901d2f0e4..00000000000 --- a/test/built-ins/Temporal/Duration/prototype/add/relativeto-zoneddatetime-normalized-time-duration-to-days-range-errors.js +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright (C) 2022 Igalia, S.L. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-temporal.duration.prototype.add -description: > - Abstract operation NormalizedTimeDurationToDays can throw four different - RangeErrors. -info: | - NormalizedTimeDurationToDays ( norm, zonedRelativeTo, timeZoneRec [ , precalculatedPlainDateTime ] ) - 23. If days < 0 and sign = 1, throw a RangeError exception. - 24. If days > 0 and sign = -1, throw a RangeError exception. - ... - 26. If NormalizedTimeDurationSign(_norm_) = 1 and sign = -1, throw a RangeError exception. - ... - 29. If dayLength ≥ 2⁵³, throw a RangeError exception. -features: [Temporal, BigInt] -includes: [temporalHelpers.js] ----*/ - -const dayNs = 86_400_000_000_000; -const dayDuration = Temporal.Duration.from({ days: 1 }); -const epochInstant = new Temporal.Instant(0n); - -function timeZoneSubstituteValues( - getPossibleInstantsFor, - getOffsetNanosecondsFor -) { - const tz = new Temporal.TimeZone("UTC"); - TemporalHelpers.substituteMethod( - tz, - "getPossibleInstantsFor", - getPossibleInstantsFor - ); - TemporalHelpers.substituteMethod( - tz, - "getOffsetNanosecondsFor", - getOffsetNanosecondsFor - ); - return tz; -} - -// Step 23: days < 0 and sign = 1 -let zdt = new Temporal.ZonedDateTime( - -1n, // Set DifferenceZonedDateTime _ns1_ - timeZoneSubstituteValues( - [ - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for first call, AddDuration step 15 - [epochInstant], // Returned in AddDuration step 16, setting _endNs_ -> DifferenceZonedDateTime _ns2_ - [epochInstant], // Returned in step 16, setting _relativeResult_ - ], - [ - // Behave normally in 3 calls made prior to NormalizedTimeDurationToDays - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - dayNs - 1, // Returned in step 8, setting _startDateTime_ - -dayNs + 1, // Returned in step 9, setting _endDateTime_ - ] - ) -); -assert.throws(RangeError, () => - // Adding day to day sets largestUnit to 'day', avoids having any week/month/year components in differences - dayDuration.add(dayDuration, { - relativeTo: zdt, - }), - "days < 0 and sign = 1" -); - -// Step 24: days > 0 and sign = -1 -zdt = new Temporal.ZonedDateTime( - 1n, // Set DifferenceZonedDateTime _ns1_ - timeZoneSubstituteValues( - [ - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for first call, AddDuration step 15 - [epochInstant], // Returned in AddDuration step 16, setting _endNs_ -> DifferenceZonedDateTime _ns2_ - [epochInstant], // Returned in step 16, setting _relativeResult_ - ], - [ - // Behave normally in 3 calls made prior to NanosecondsToDays - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - -dayNs + 1, // Returned in step 8, setting _startDateTime_ - dayNs - 1, // Returned in step 9, setting _endDateTime_ - ] - ) -); -assert.throws(RangeError, () => - // Adding day to day sets largestUnit to 'day', avoids having any week/month/year components in differences - dayDuration.add(dayDuration, { - relativeTo: zdt, - }), - "days > 0 and sign = -1" -); - -// Step 26: nanoseconds > 0 and sign = -1 -zdt = new Temporal.ZonedDateTime( - 0n, // Set DifferenceZonedDateTime _ns1_ - timeZoneSubstituteValues( - [ - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for first call, AddDuration step 15 - [new Temporal.Instant(-1n)], // Returned in AddDuration step 16, setting _endNs_ -> DifferenceZonedDateTime _ns2_ - [new Temporal.Instant(-2n)], // Returned in step 16, setting _relativeResult_ - [new Temporal.Instant(-4n)], // Returned in step 19, setting _oneDayFarther_ - ], - [ - // Behave normally in 3 calls made prior to NanosecondsToDays - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - dayNs - 1, // Returned in step 8, setting _startDateTime_ - -dayNs + 1, // Returned in step 9, setting _endDateTime_ - ] - ) -); -assert.throws(RangeError, () => - // Adding day to day sets largestUnit to 'day', avoids having any week/month/year components in differences - dayDuration.add(dayDuration, { - relativeTo: zdt, - }), - "nanoseconds > 0 and sign = -1" -); - -// Step 29: day length is an unsafe integer -zdt = new Temporal.ZonedDateTime( - 0n, - timeZoneSubstituteValues( - [ - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for AddDuration step 15 - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for AddDuration step 16 - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for step 16, setting _relativeResult_ - // Returned in step 19, making _oneDayFarther_ 2^53 ns later than _relativeResult_ - [new Temporal.Instant(2n ** 53n + 2n * BigInt(dayNs))], - ], - [] - ) -); -assert.throws(RangeError, () => - dayDuration.add(dayDuration, { - relativeTo: zdt, - }), - "Should throw RangeError when time zone calculates an outrageous day length" -); diff --git a/test/built-ins/Temporal/Duration/prototype/round/dst-rounding-result.js b/test/built-ins/Temporal/Duration/prototype/round/dst-rounding-result.js new file mode 100644 index 00000000000..a2744257e29 --- /dev/null +++ b/test/built-ins/Temporal/Duration/prototype/round/dst-rounding-result.js @@ -0,0 +1,45 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.duration.prototype.round +description: > + Rounding the resulting duration takes the time zone's UTC offset shifts + into account +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const timeZone = TemporalHelpers.springForwardFallBackTimeZone(); + +// Based on a test case by Adam Shaw + +{ + // Date part of duration lands on skipped DST hour, causing disambiguation + const duration = new Temporal.Duration(0, 1, 0, 15, 12); + const relativeTo = new Temporal.ZonedDateTime( + 950868000_000_000_000n /* = 2000-02-18T10Z */, + timeZone); /* = 2000-02-18T02-08 in local time */ + + TemporalHelpers.assertDuration(duration.round({ smallestUnit: "months", relativeTo }), + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + "1 month 15 days 12 hours should be exactly 1.5 months, which rounds up to 2 months"); + TemporalHelpers.assertDuration(duration.round({ smallestUnit: "months", roundingMode: 'halfTrunc', relativeTo }), + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + "1 month 15 days 12 hours should be exactly 1.5 months, which rounds down to 1 month"); +} + +{ + // Month-only part of duration lands on skipped DST hour, should not cause + // disambiguation + const duration = new Temporal.Duration(0, 1, 0, 15); + const relativeTo = new Temporal.ZonedDateTime( + 951991200_000_000_000n /* = 2000-03-02T10Z */, + timeZone); /* = 2000-03-02T02-08 in local time */ + + TemporalHelpers.assertDuration(duration.round({ smallestUnit: "months", relativeTo }), + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, + "1 month 15 days should be exactly 1.5 months, which rounds up to 2 months"); + TemporalHelpers.assertDuration(duration.round({ smallestUnit: "months", roundingMode: 'halfTrunc', relativeTo }), + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + "1 month 15 days should be exactly 1.5 months, which rounds down to 1 month"); +} diff --git a/test/built-ins/Temporal/Duration/prototype/subtract/calendar-dateadd-called-with-options-undefined.js b/test/built-ins/Temporal/Duration/prototype/subtract/calendar-dateadd-called-with-options-undefined.js index 6f297fd2df1..941bee531a7 100644 --- a/test/built-ins/Temporal/Duration/prototype/subtract/calendar-dateadd-called-with-options-undefined.js +++ b/test/built-ins/Temporal/Duration/prototype/subtract/calendar-dateadd-called-with-options-undefined.js @@ -14,4 +14,4 @@ const calendar = TemporalHelpers.calendarDateAddUndefinedOptions(); const timeZone = TemporalHelpers.oneShiftTimeZone(new Temporal.Instant(0n), 3600e9); const instance = new Temporal.Duration(1, 1, 1, 1); instance.subtract(new Temporal.Duration(-1, -1, -1, -1), { relativeTo: new Temporal.ZonedDateTime(0n, timeZone, calendar) }); -assert.sameValue(calendar.dateAddCallCount, 3); +assert.sameValue(calendar.dateAddCallCount, 2); diff --git a/test/built-ins/Temporal/Duration/prototype/subtract/differencezoneddatetime-inconsistent-custom-calendar.js b/test/built-ins/Temporal/Duration/prototype/subtract/differencezoneddatetime-inconsistent-custom-calendar.js new file mode 100644 index 00000000000..7be8462702e --- /dev/null +++ b/test/built-ins/Temporal/Duration/prototype/subtract/differencezoneddatetime-inconsistent-custom-calendar.js @@ -0,0 +1,52 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.duration.prototype.subtract +description: > + Throws a RangeError when custom calendar method returns inconsistent result +info: | + DifferenceZonedDateTime ( ... ) + 8. Repeat 3 times: + ... + g. If _sign_ = 0, or _timeSign_ = 0, or _sign_ = _timeSign_, then + ... + viii. Return ? CreateNormalizedDurationRecord(_dateDifference_.[[Years]], + _dateDifference_.[[Months]], _dateDifference_.[[Weeks]], + _dateDifference_.[[Days]], _norm_). + h. Set _dayCorrection_ to _dayCorrection_ + 1. + 9. NOTE: This step is only reached when custom calendar or time zone methods + return inconsistent values. + 10. Throw a *RangeError* exception. +features: [Temporal] +---*/ + +// Based partly on a test case by André Bargull + +const duration1 = new Temporal.Duration(0, 0, /* weeks = */ 7, 0, /* hours = */ 12); +const duration2 = new Temporal.Duration(0, 0, 0, /* days = */ -1); + +{ + const tz = new (class extends Temporal.TimeZone { + getPossibleInstantsFor(dateTime) { + return super.getPossibleInstantsFor(dateTime.add({ days: 3 })); + } + })("UTC"); + + const relativeTo = new Temporal.ZonedDateTime(0n, tz); + + assert.throws(RangeError, () => duration1.subtract(duration2, { relativeTo }), + "Calendar calculation where more than 2 days correction is needed should cause RangeError"); +} + +{ + const cal = new (class extends Temporal.Calendar { + dateUntil(one, two, options) { + return super.dateUntil(one, two, options).negated(); + } + })("iso8601"); + + const relativeTo = new Temporal.ZonedDateTime(0n, "UTC", cal); + + assert.throws(RangeError, () => duration1.subtract(duration2, { relativeTo }), + "Calendar calculation causing mixed-sign values should cause RangeError"); +} diff --git a/test/built-ins/Temporal/Duration/prototype/subtract/normalized-time-duration-to-days-loop-arbitrarily.js b/test/built-ins/Temporal/Duration/prototype/subtract/normalized-time-duration-to-days-loop-arbitrarily.js deleted file mode 100644 index 4f207894d62..00000000000 --- a/test/built-ins/Temporal/Duration/prototype/subtract/normalized-time-duration-to-days-loop-arbitrarily.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (C) 2022 Igalia, S.L. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-temporal.duration.prototype.subtract -description: > - NormalizedTimeDurationToDays should not be able to loop arbitrarily. -info: | - NormalizedTimeDurationToDays ( norm, zonedRelativeTo, timeZoneRec [ , precalculatedPlainDatetime ] ) - ... - 22. If NormalizedTimeDurationSign(_oneDayLess_) × _sign_ ≥ 0, then - a. Set _norm_ to _oneDayLess_. - b. Set _relativeResult_ to _oneDayFarther_. - c. Set _days_ to _days_ + _sign_. - d. Set _oneDayFarther_ to ? AddDaysToZonedDateTime(_relativeResult_.[[Instant]], _relativeResult_.[[DateTime]], _timeZoneRec_, _zonedRelativeTo_.[[Calendar]], _sign_). - e. Set dayLengthNs to NormalizedTimeDurationFromEpochNanosecondsDifference(_oneDayFarther.[[EpochNanoseconds]], relativeResult.[[EpochNanoseconds]]). - f. If NormalizedTimeDurationSign(? SubtractNormalizedTimeDuration(_norm_, _dayLengthNs_)) × _sign_ ≥ 0, then - i. Throw a *RangeError* exception. -features: [Temporal] ----*/ - -const duration = Temporal.Duration.from({ days: 1 }); - -const dayLengthNs = 86400000000000n; -const dayInstant = new Temporal.Instant(dayLengthNs); -let calls = 0; -const timeZone = new class extends Temporal.TimeZone { - getPossibleInstantsFor() { - calls++; - return [dayInstant]; - } -}("UTC"); - -const relativeTo = new Temporal.ZonedDateTime(0n, timeZone); - -assert.throws(RangeError, () => duration.subtract(duration, { relativeTo }), "indefinite loop is prevented"); -assert.sameValue(calls, 5, "getPossibleInstantsFor is not called indefinitely"); - // Expected calls: - // AddDuration -> - // AddZonedDateTime (1) - // AddZonedDateTime (2) - // DifferenceZonedDateTime -> - // NormalizedTimeDurationToDays -> - // AddDaysToZonedDateTime (3, step 12) - // AddDaysToZonedDateTime (4, step 15) - // AddDaysToZonedDateTime (5, step 18.d) diff --git a/test/built-ins/Temporal/Duration/prototype/subtract/order-of-operations.js b/test/built-ins/Temporal/Duration/prototype/subtract/order-of-operations.js index 107a1a7bae4..b2fec25b20e 100644 --- a/test/built-ins/Temporal/Duration/prototype/subtract/order-of-operations.js +++ b/test/built-ins/Temporal/Duration/prototype/subtract/order-of-operations.js @@ -338,18 +338,8 @@ const expectedOpsForZonedRelativeTo = expected.concat([ "call options.relativeTo.timeZone.getPossibleInstantsFor", // AddDuration → DifferenceZonedDateTime "call options.relativeTo.timeZone.getOffsetNanosecondsFor", - // AddDuration → DifferenceZonedDateTime → DifferenceISODateTime - "call options.relativeTo.calendar.dateUntil", - // AddDuration → DifferenceZonedDateTime → AddZonedDateTime - "call options.relativeTo.calendar.dateAdd", - "call options.relativeTo.timeZone.getPossibleInstantsFor", - // AddDuration → DifferenceZonedDateTime → NanosecondsToDays - "call options.relativeTo.timeZone.getOffsetNanosecondsFor", - "call options.relativeTo.timeZone.getOffsetNanosecondsFor", - // AddDuration → DifferenceZonedDateTime → NanosecondsToDays → AddZonedDateTime 1 - "call options.relativeTo.timeZone.getPossibleInstantsFor", - // AddDuration → DifferenceZonedDateTime → NanosecondsToDays → AddZonedDateTime 2 "call options.relativeTo.timeZone.getPossibleInstantsFor", + "call options.relativeTo.calendar.dateUntil", ]); const zonedRelativeTo = TemporalHelpers.propertyBagObserver(actual, { diff --git a/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-zoneddatetime-normalized-time-duration-to-days-range-errors.js b/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-zoneddatetime-normalized-time-duration-to-days-range-errors.js deleted file mode 100644 index 4ba27ff5f23..00000000000 --- a/test/built-ins/Temporal/Duration/prototype/subtract/relativeto-zoneddatetime-normalized-time-duration-to-days-range-errors.js +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright (C) 2022 Igalia, S.L. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-temporal.duration.prototype.subtract -description: > - Abstract operation NormalizedTimeDurationToDays can throw four different - RangeErrors. -info: | - NormalizedTimeDurationToDays ( norm, zonedRelativeTo, timeZoneRec [ , precalculatedPlainDateTime ] ) - 23. If days < 0 and sign = 1, throw a RangeError exception. - 24. If days > 0 and sign = -1, throw a RangeError exception. - ... - 26. If NormalizedTimeDurationSign(_norm_) = 1 and sign = -1, throw a RangeError exception. - ... - 29. If dayLength ≥ 2⁵³, throw a RangeError exception. -features: [Temporal, BigInt] -includes: [temporalHelpers.js] ----*/ - -const dayNs = 86_400_000_000_000; -const dayDuration = Temporal.Duration.from({ days: 1 }); -const epochInstant = new Temporal.Instant(0n); - -function timeZoneSubstituteValues( - getPossibleInstantsFor, - getOffsetNanosecondsFor -) { - const tz = new Temporal.TimeZone("UTC"); - TemporalHelpers.substituteMethod( - tz, - "getPossibleInstantsFor", - getPossibleInstantsFor - ); - TemporalHelpers.substituteMethod( - tz, - "getOffsetNanosecondsFor", - getOffsetNanosecondsFor - ); - return tz; -} - -// Step 23: days < 0 and sign = 1 -let zdt = new Temporal.ZonedDateTime( - -1n, // Set DifferenceZonedDateTime _ns1_ - timeZoneSubstituteValues( - [ - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for first call, AddDuration step 15 - [epochInstant], // Returned in AddDuration step 16, setting _endNs_ -> DifferenceZonedDateTime _ns2_ - [epochInstant], // Returned in step 16, setting _relativeResult_ - ], - [ - // Behave normally in 3 calls made prior to NormalizedTimeDurationToDays - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - dayNs - 1, // Returned in step 8, setting _startDateTime_ - -dayNs + 1, // Returned in step 9, setting _endDateTime_ - ] - ) -); -assert.throws(RangeError, () => - // Subtracting day from day sets largestUnit to 'day', avoids having any week/month/year components in difference - dayDuration.subtract(dayDuration, { - relativeTo: zdt, - }) -); - -// Step 24: days > 0 and sign = -1 -zdt = new Temporal.ZonedDateTime( - 1n, // Set DifferenceZonedDateTime _ns1_ - timeZoneSubstituteValues( - [ - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for first call, AddDuration step 15 - [epochInstant], // Returned in AddDuration step 16, setting _endNs_ -> DifferenceZonedDateTime _ns2_ - [epochInstant], // Returned in step 16, setting _relativeResult_ - ], - [ - // Behave normally in 3 calls made prior to NanosecondsToDays - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - -dayNs + 1, // Returned in step 8, setting _startDateTime_ - dayNs - 1, // Returned in step 9, setting _endDateTime_ - ] - ) -); -assert.throws(RangeError, () => - // Subtracting day from day sets largestUnit to 'day', avoids having any week/month/year components in difference - dayDuration.subtract(dayDuration, { - relativeTo: zdt, - }) -); - -// Step 26: nanoseconds > 0 and sign = -1 -zdt = new Temporal.ZonedDateTime( - 0n, // Set DifferenceZonedDateTime _ns1_ - timeZoneSubstituteValues( - [ - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for first call, AddDuration step 15 - [new Temporal.Instant(-1n)], // Returned in AddDuration step 16, setting _endNs_ -> DifferenceZonedDateTime _ns2_ - [new Temporal.Instant(-2n)], // Returned in step 16, setting _relativeResult_ - [new Temporal.Instant(-4n)], // Returned in step 19, setting _oneDayFarther_ - ], - [ - // Behave normally in 3 calls made prior to NanosecondsToDays - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - TemporalHelpers.SUBSTITUTE_SKIP, - dayNs - 1, // Returned in step 8, setting _startDateTime_ - -dayNs + 1, // Returned in step 9, setting _endDateTime_ - ] - ) -); -assert.throws(RangeError, () => - // Subtracting day from day sets largestUnit to 'day', avoids having any week/month/year components in difference - dayDuration.subtract(dayDuration, { - relativeTo: zdt, - }) -); - -// Step 29: day length is an unsafe integer -zdt = new Temporal.ZonedDateTime( - 0n, - timeZoneSubstituteValues( - [ - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for AddDuration step 15 - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for AddDuration step 16 - TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally for step 16, setting _relativeResult_ - // Returned in step 19, making _oneDayFarther_ 2^53 ns later than _relativeResult_ - [new Temporal.Instant(2n ** 53n - 3n * BigInt(dayNs))], - ], - [] - ) -); -const twoDaysDuration = new Temporal.Duration(0, 0, 0, 2); -assert.throws(RangeError, () => - dayDuration.subtract(twoDaysDuration, { - relativeTo: zdt, - }), - "Should throw RangeError when time zone calculates an outrageous day length" -); diff --git a/test/built-ins/Temporal/Duration/prototype/total/dst-rounding-result.js b/test/built-ins/Temporal/Duration/prototype/total/dst-rounding-result.js new file mode 100644 index 00000000000..47e1d3de751 --- /dev/null +++ b/test/built-ins/Temporal/Duration/prototype/total/dst-rounding-result.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.duration.prototype.total +description: > + Rounding the resulting duration takes the time zone's UTC offset shifts + into account +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const timeZone = TemporalHelpers.springForwardFallBackTimeZone(); + +// Based on a test case by Adam Shaw + +{ + // Date part of duration lands on skipped DST hour, causing disambiguation + const duration = new Temporal.Duration(0, 1, 0, 15, 12); + const relativeTo = new Temporal.ZonedDateTime( + 950868000_000_000_000n /* = 2000-02-18T10Z */, + timeZone); /* = 2000-02-18T02-08 in local time */ + + assert.sameValue(duration.total({ unit: "months", relativeTo }), 1.5, + "1 month 15 days 12 hours should be exactly 1.5 months"); +} + +{ + // Month-only part of duration lands on skipped DST hour, should not cause + // disambiguation + const duration = new Temporal.Duration(0, 1, 0, 15); + const relativeTo = new Temporal.ZonedDateTime( + 951991200_000_000_000n /* = 2000-03-02T10Z */, + timeZone); /* = 2000-03-02T02-08 in local time */ + + assert.sameValue(duration.total({ unit: "months", relativeTo }), 1.5, + "1 month 15 days should be exactly 1.5 months"); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/calendar-dateadd-called-with-options-undefined.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/calendar-dateadd-called-with-options-undefined.js index 72048fde25e..5f5aba3bab0 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/since/calendar-dateadd-called-with-options-undefined.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/calendar-dateadd-called-with-options-undefined.js @@ -13,25 +13,15 @@ features: [Temporal] const calendar = TemporalHelpers.calendarDateAddUndefinedOptions(); const timeZone = TemporalHelpers.oneShiftTimeZone(new Temporal.Instant(0n), 3600e9); const earlier = new Temporal.ZonedDateTime(0n, timeZone, calendar); - -// Basic difference with largestUnit larger than days. -// The call comes from this path: -// ZonedDateTime.since() -> DifferenceZonedDateTime -> AddZonedDateTime -> calendar.dateAdd() - -const later1 = new Temporal.ZonedDateTime(1_213_200_000_000_000n, timeZone, calendar); -later1.since(earlier, { largestUnit: "weeks" }); -assert.sameValue(calendar.dateAddCallCount, 1, "basic difference with largestUnit >days"); +const later = new Temporal.ZonedDateTime(1_213_200_000_000_000n, timeZone, calendar); // Difference with rounding, with smallestUnit a calendar unit. // The calls come from these paths: // ZonedDateTime.since() -> -// DifferenceZonedDateTime -> AddZonedDateTime -> calendar.dateAdd() // RoundDuration -> // MoveRelativeZonedDateTime -> AddZonedDateTime -> calendar.dateAdd() // MoveRelativeDate -> calendar.dateAdd() // BalanceDurationRelative -> MoveRelativeDate -> calendar.dateAdd() -calendar.dateAddCallCount = 0; - -later1.since(earlier, { smallestUnit: "weeks" }); -assert.sameValue(calendar.dateAddCallCount, 4, "rounding difference with calendar smallestUnit"); +later.since(earlier, { smallestUnit: "weeks" }); +assert.sameValue(calendar.dateAddCallCount, 3, "rounding difference with calendar smallestUnit"); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/differencezoneddatetime-inconsistent-custom-calendar.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/differencezoneddatetime-inconsistent-custom-calendar.js new file mode 100644 index 00000000000..e15f9c360ad --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/differencezoneddatetime-inconsistent-custom-calendar.js @@ -0,0 +1,53 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.prototype.since +description: > + Throws a RangeError when custom calendar method returns inconsistent result +info: | + DifferenceZonedDateTime ( ... ) + 8. Repeat 3 times: + ... + g. If _sign_ = 0, or _timeSign_ = 0, or _sign_ = _timeSign_, then + ... + viii. Return ? CreateNormalizedDurationRecord(_dateDifference_.[[Years]], + _dateDifference_.[[Months]], _dateDifference_.[[Weeks]], + _dateDifference_.[[Days]], _norm_). + h. Set _dayCorrection_ to _dayCorrection_ + 1. + 9. NOTE: This step is only reached when custom calendar or time zone methods + return inconsistent values. + 10. Throw a *RangeError* exception. +features: [Temporal] +---*/ + +// Based partly on a test case by André Bargull + +const fiftyDays12Hours = 50n * 86400_000_000_000n + 12n * 3600_000_000_000n; + +{ + const tz = new (class extends Temporal.TimeZone { + getPossibleInstantsFor(dateTime) { + return super.getPossibleInstantsFor(dateTime.subtract({ days: 3 })); + } + })("UTC"); + + const zdt1 = new Temporal.ZonedDateTime(0n, tz); + const zdt2 = new Temporal.ZonedDateTime(fiftyDays12Hours, tz); + + assert.throws(RangeError, () => zdt2.since(zdt1, { largestUnit: "weeks" }), + "Calendar calculation where more than 2 days correction is needed should cause RangeError"); +} + +{ + const cal = new (class extends Temporal.Calendar { + dateUntil(one, two, options) { + return super.dateUntil(one, two, options).negated(); + } + })("iso8601"); + + const zdt1 = new Temporal.ZonedDateTime(0n, "UTC", cal); + const zdt2 = new Temporal.ZonedDateTime(fiftyDays12Hours, "UTC", cal); + + assert.throws(RangeError, () => zdt2.since(zdt1, { largestUnit: "weeks" }), + "Calendar calculation causing mixed-sign values should cause RangeError"); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-rounding-result.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-rounding-result.js new file mode 100644 index 00000000000..b47be48140f --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-rounding-result.js @@ -0,0 +1,45 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.prototype.since +description: > + Rounding the resulting duration takes the time zone's UTC offset shifts + into account +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// Based on a test case by Adam Shaw + +const timeZone = TemporalHelpers.springForwardFallBackTimeZone(); + +{ + // Month-only part of duration lands on skipped DST hour, should not cause + // disambiguation + const start = new Temporal.ZonedDateTime( + 950868000_000_000_000n /* = 2000-02-18T10Z */, + timeZone); /* = 2000-02-18T02-08 in local time */ + const end = new Temporal.ZonedDateTime( + 954709200_000_000_000n /* = 2000-04-02T21Z */, + timeZone); /* = 2000-04-02T14-07 in local time */ + + const duration = start.since(end, { largestUnit: "months" }); + TemporalHelpers.assertDuration(duration, 0, -1, 0, -15, -11, 0, 0, 0, 0, 0, + "1-month rounding window is shortened by DST"); +} + + +{ + // Month-only part of duration lands on skipped DST hour, should not cause + // disambiguation + const start = new Temporal.ZonedDateTime( + 951991200_000_000_000n /* = 2000-03-02T10Z */, + timeZone); /* = 2000-03-02T02-08 in local time */ + const end = new Temporal.ZonedDateTime( + 956005200_000_000_000n /* = 2000-04-17T21Z */, + timeZone); /* = 2000-04-17T14-07 in local time */ + + const duration = start.since(end, { largestUnit: "months" }); + TemporalHelpers.assertDuration(duration, 0, -1, 0, -15, -12, 0, 0, 0, 0, 0, + "1-month rounding window is not shortened by DST"); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/find-intermediate-instant.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/find-intermediate-instant.js new file mode 100644 index 00000000000..75408ddb830 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/find-intermediate-instant.js @@ -0,0 +1,73 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: > + Up to 3 intermediate instants may be tried when calculating ZonedDateTime + difference +includes: [compareArray.js, temporalHelpers.js] +features: [BigInt, Temporal] +---*/ + +const calls = []; + +const springFallZone = TemporalHelpers.springForwardFallBackTimeZone(); +TemporalHelpers.observeMethod(calls, springFallZone, "getPossibleInstantsFor"); + +const dateLineZone = TemporalHelpers.crossDateLineTimeZone(); +TemporalHelpers.observeMethod(calls, dateLineZone, "getPossibleInstantsFor"); + +const zdt2 = new Temporal.ZonedDateTime(946722600_000_000_000n /* = 2000-01-01T02:30 local */, springFallZone); + +{ + const zdt1 = new Temporal.ZonedDateTime(949442400_000_000_000n /* = 2000-02-01T14:00 local */, springFallZone); + const result = zdt1.since(zdt2, { largestUnit: "years" }); + TemporalHelpers.assertDuration(result, 0, 1, 0, 0, 11, 30, 0, 0, 0, 0, "Normal case: no overflow, no DST"); + assert.compareArray(calls, [ + "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime + ], "one intermediate should be tried"); +} + +calls.splice(0); // clear + +{ + const zdt1 = new Temporal.ZonedDateTime(949395600_000_000_000n /* = 2000-02-01T01:00 local */, springFallZone); + const result = zdt1.since(zdt2, { largestUnit: "years" }); + TemporalHelpers.assertDuration(result, 0, 0, 0, 30, 22, 30, 0, 0, 0, 0, "One day correction: overflow, no DST"); + assert.compareArray(calls, [ + "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime + "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime + ], "two intermediates should be tried"); +} + +calls.splice(0); // clear + +{ + const end = new Temporal.ZonedDateTime(957258000_000_000_000n /* = 2000-05-02T02:00 local */, springFallZone); + const start = new Temporal.ZonedDateTime(954671400_000_000_000n /* = 2000-04-02T03:30-07:00 local */, springFallZone); + const result = end.since(start, { largestUnit: "years" }); + TemporalHelpers.assertDuration(result, 0, 0, 0, 29, 22, 30, 0, 0, 0, 0, "One day correction: no overflow, DST"); + assert.compareArray(calls, [ + "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime + "call getPossibleInstantsFor", // DisambiguatePossibleInstants on first intermediate + "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime + ], "two intermediates should be tried, with disambiguation"); +} + +calls.splice(0); // clear + +// Two days correction: overflow and DST +// (Not possible when going backwards. This test is just the same as the +// corresponding one in until(), but negative.) +{ + const start = new Temporal.ZonedDateTime(1325102400_000_000_000n /* = 2011-12-28T10:00 local */, dateLineZone); + const end = new Temporal.ZonedDateTime(1325257200_000_000_000n /* = 2011-12-31T05:00 local */, dateLineZone); + const result = start.since(end, { largestUnit: "days" }); + TemporalHelpers.assertDuration(result, 0, 0, 0, -1, -19, 0, 0, 0, 0, 0, "Two days correction: overflow and DST"); + assert.compareArray(calls, [ + "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime + "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime + "call getPossibleInstantsFor", // DisambiguatePossibleInstants on second intermediate + "call getPossibleInstantsFor", // third intermediate in DifferenceZonedDateTime + ], "three intermediates should be tried, with disambiguation"); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-loop-arbitrarily.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-loop-arbitrarily.js index 5328a887e85..e8ecae39bc4 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-loop-arbitrarily.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-loop-arbitrarily.js @@ -30,12 +30,14 @@ const timeZone = new class extends Temporal.TimeZone { }("UTC"); const zdt = new Temporal.ZonedDateTime(0n, timeZone); -const other = new Temporal.ZonedDateTime(dayLengthNs, "UTC", "iso8601"); +const other = new Temporal.ZonedDateTime(dayLengthNs * 2n, "UTC", "iso8601"); -assert.throws(RangeError, () => zdt.since(other, { largestUnit: "day" }), "indefinite loop is prevented"); -assert.sameValue(calls, 3, "getPossibleInstantsFor is not called indefinitely"); +assert.throws(RangeError, () => zdt.since(other, { largestUnit: "day", smallestUnit: "second" }), "indefinite loop is prevented"); +assert.sameValue(calls, 4, "getPossibleInstantsFor is not called indefinitely"); // Expected calls: - // DifferenceZonedDateTime -> NormalizedTimeDurationToDays -> - // AddDaysToZonedDateTime (3, step 12) - // AddDaysToZonedDateTime (4, step 15) - // AddDaysToZonedDateTime (5, step 18.d) + // DifferenceTemporalZonedDateTime -> + // DifferenceZonedDateTime -> GetInstantFor (1) + // NormalizedTimeDurationToDays -> + // AddDaysToZonedDateTime (2, step 12) + // AddDaysToZonedDateTime (3, step 15) + // AddDaysToZonedDateTime (4, step 18.d) diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-range-errors.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-range-errors.js index 99025931b31..997e060c595 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-range-errors.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-range-errors.js @@ -39,13 +39,16 @@ const dayNs = 86_400_000_000_000; const zeroZDT = new Temporal.ZonedDateTime(0n, "UTC"); const oneZDT = new Temporal.ZonedDateTime(1n, "UTC"); const epochInstant = new Temporal.Instant(0n); -const options = { largestUnit: "days" }; +const options = { largestUnit: "days", smallestUnit: "seconds", roundingMode: "expand" }; // Step 23: days < 0 and sign = 1 let start = new Temporal.ZonedDateTime( 0n, // Sets DifferenceZonedDateTime _ns1_ timeZoneSubstituteValues( - [[epochInstant]], // Returned in step 16, setting _relativeResult_ + [ + TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally in DifferenceZonedDateTime + [epochInstant], // Returned in step 16, setting _relativeResult_ + ], [ // Behave normally in 2 calls made prior to NormalizedTimeDurationToDays TemporalHelpers.SUBSTITUTE_SKIP, @@ -66,7 +69,10 @@ assert.throws(RangeError, () => start = new Temporal.ZonedDateTime( 1n, // Sets DifferenceZonedDateTime _ns1_ timeZoneSubstituteValues( - [[epochInstant]], // Returned in step 16, setting _relativeResult_ + [ + TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally in DifferenceZonedDateTime + [epochInstant], // Returned in step 16, setting _relativeResult_ + ], [ // Behave normally in 2 calls made prior to NormalizedTimeDurationToDays TemporalHelpers.SUBSTITUTE_SKIP, @@ -87,7 +93,10 @@ assert.throws(RangeError, () => start = new Temporal.ZonedDateTime( 1n, // Sets DifferenceZonedDateTime _ns1_ timeZoneSubstituteValues( - [[new Temporal.Instant(-1n)]], // Returned in step 16, setting _relativeResult_ + [ + TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally in DifferenceZonedDateTime + [new Temporal.Instant(-2_000_000_000n)], // Returned in step 16, setting _relativeResult_ + ], [ // Behave normally in 2 calls made prior to NormalizedTimeDurationToDays TemporalHelpers.SUBSTITUTE_SKIP, @@ -108,9 +117,12 @@ assert.throws(RangeError, () => start = new Temporal.ZonedDateTime( 0n, timeZoneSubstituteValues( - // Not called in step 16 because _days_ = 0 - // Returned in step 19, making _oneDayFarther_ 2^53 ns later than _relativeResult_ - [[new Temporal.Instant(2n ** 53n)]], + [ + TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally in DifferenceZonedDateTime + // Not called in step 16 because _days_ = 0 + // Returned in step 19, making _oneDayFarther_ 2^53 ns later than _relativeResult_ + [new Temporal.Instant(2n ** 53n)], + ], [] ) ); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/order-of-operations.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/order-of-operations.js index 1478687e2ae..6449ae7195d 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/since/order-of-operations.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/order-of-operations.js @@ -305,10 +305,6 @@ assert.compareArray(actual, [ // DifferenceZonedDateTime "call this.timeZone.getOffsetNanosecondsFor", "call this.timeZone.getOffsetNanosecondsFor", - // NanosecondsToDays - "call this.timeZone.getOffsetNanosecondsFor", - "call this.timeZone.getOffsetNanosecondsFor", - // NanosecondsToDays → AddDaysToZonedDateTime "call this.timeZone.getPossibleInstantsFor", ], "order of operations with identical wall-clock times and largestUnit a calendar unit"); actual.splice(0); // clear @@ -327,17 +323,8 @@ const expectedOpsForCalendarDifference = [ "call this.timeZone.getOffsetNanosecondsFor", // DifferenceZonedDateTime "call this.timeZone.getOffsetNanosecondsFor", - // DifferenceISODateTime - "call this.calendar.dateUntil", - // AddZonedDateTime - "call this.calendar.dateAdd", - "call this.timeZone.getPossibleInstantsFor", - // NanosecondsToDays - "call this.timeZone.getOffsetNanosecondsFor", - "call this.timeZone.getOffsetNanosecondsFor", - // NanosecondsToDays → AddDaysToZonedDateTime - "call this.timeZone.getPossibleInstantsFor", "call this.timeZone.getPossibleInstantsFor", + "call this.calendar.dateUntil", ]; const expectedOpsForCalendarRounding = [ diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/calendar-dateadd-called-with-options-undefined.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/calendar-dateadd-called-with-options-undefined.js index f09efe1221b..145a22b4d19 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/until/calendar-dateadd-called-with-options-undefined.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/calendar-dateadd-called-with-options-undefined.js @@ -13,25 +13,15 @@ features: [Temporal] const calendar = TemporalHelpers.calendarDateAddUndefinedOptions(); const timeZone = TemporalHelpers.oneShiftTimeZone(new Temporal.Instant(0n), 3600e9); const earlier = new Temporal.ZonedDateTime(0n, timeZone, calendar); - -// Basic difference with largestUnit larger than days. -// The call comes from this path: -// ZonedDateTime.until() -> DifferenceZonedDateTime -> AddZonedDateTime -> calendar.dateAdd() - -const later1 = new Temporal.ZonedDateTime(1_213_200_000_000_000n, timeZone, calendar); -earlier.until(later1, { largestUnit: "weeks" }); -assert.sameValue(calendar.dateAddCallCount, 1, "basic difference with largestUnit >days"); +const later = new Temporal.ZonedDateTime(1_213_200_000_000_000n, timeZone, calendar); // Difference with rounding, with smallestUnit a calendar unit. // The calls come from these paths: // ZonedDateTime.until() -> -// DifferenceZonedDateTime -> AddZonedDateTime -> calendar.dateAdd() // RoundDuration -> // MoveRelativeZonedDateTime -> AddZonedDateTime -> calendar.dateAdd() // MoveRelativeDate -> calendar.dateAdd() // BalanceDurationRelative -> MoveRelativeDate -> calendar.dateAdd() -calendar.dateAddCallCount = 0; - -earlier.until(later1, { smallestUnit: "weeks" }); -assert.sameValue(calendar.dateAddCallCount, 4, "rounding difference with calendar smallestUnit"); +earlier.until(later, { smallestUnit: "weeks" }); +assert.sameValue(calendar.dateAddCallCount, 3, "rounding difference with calendar smallestUnit"); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/differencezoneddatetime-inconsistent-custom-calendar.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/differencezoneddatetime-inconsistent-custom-calendar.js new file mode 100644 index 00000000000..de60e3c21c5 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/differencezoneddatetime-inconsistent-custom-calendar.js @@ -0,0 +1,53 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: > + Throws a RangeError when custom calendar method returns inconsistent result +info: | + DifferenceZonedDateTime ( ... ) + 8. Repeat 3 times: + ... + g. If _sign_ = 0, or _timeSign_ = 0, or _sign_ = _timeSign_, then + ... + viii. Return ? CreateNormalizedDurationRecord(_dateDifference_.[[Years]], + _dateDifference_.[[Months]], _dateDifference_.[[Weeks]], + _dateDifference_.[[Days]], _norm_). + h. Set _dayCorrection_ to _dayCorrection_ + 1. + 9. NOTE: This step is only reached when custom calendar or time zone methods + return inconsistent values. + 10. Throw a *RangeError* exception. +features: [Temporal] +---*/ + +// Based partly on a test case by André Bargull + +const fiftyDays12Hours = 50n * 86400_000_000_000n + 12n * 3600_000_000_000n; + +{ + const tz = new (class extends Temporal.TimeZone { + getPossibleInstantsFor(dateTime) { + return super.getPossibleInstantsFor(dateTime.add({ days: 3 })); + } + })("UTC"); + + const zdt1 = new Temporal.ZonedDateTime(0n, tz); + const zdt2 = new Temporal.ZonedDateTime(fiftyDays12Hours, tz); + + assert.throws(RangeError, () => zdt1.until(zdt2, { largestUnit: "weeks" }), + "Calendar calculation where more than 2 days correction is needed should cause RangeError"); +} + +{ + const cal = new (class extends Temporal.Calendar { + dateUntil(one, two, options) { + return super.dateUntil(one, two, options).negated(); + } + })("iso8601"); + + const zdt1 = new Temporal.ZonedDateTime(0n, "UTC", cal); + const zdt2 = new Temporal.ZonedDateTime(fiftyDays12Hours, "UTC", cal); + + assert.throws(RangeError, () => zdt1.until(zdt2, { largestUnit: "weeks" }), + "Calendar calculation causing mixed-sign values should cause RangeError"); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-rounding-result.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-rounding-result.js new file mode 100644 index 00000000000..86323f27f10 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-rounding-result.js @@ -0,0 +1,45 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: > + Rounding the resulting duration takes the time zone's UTC offset shifts + into account +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// Based on a test case by Adam Shaw + +const timeZone = TemporalHelpers.springForwardFallBackTimeZone(); + +{ + // Month-only part of duration lands on skipped DST hour, should not cause + // disambiguation + const start = new Temporal.ZonedDateTime( + 950868000_000_000_000n /* = 2000-02-18T10Z */, + timeZone); /* = 2000-02-18T02-08 in local time */ + const end = new Temporal.ZonedDateTime( + 954709200_000_000_000n /* = 2000-04-02T21Z */, + timeZone); /* = 2000-04-02T14-07 in local time */ + + const duration = start.until(end, { largestUnit: "months" }); + TemporalHelpers.assertDuration(duration, 0, 1, 0, 15, 11, 0, 0, 0, 0, 0, + "1-month rounding window is shortened by DST"); +} + + +{ + // Month-only part of duration lands on skipped DST hour, should not cause + // disambiguation + const start = new Temporal.ZonedDateTime( + 951991200_000_000_000n /* = 2000-03-02T10Z */, + timeZone); /* = 2000-03-02T02-08 in local time */ + const end = new Temporal.ZonedDateTime( + 956005200_000_000_000n /* = 2000-04-17T21Z */, + timeZone); /* = 2000-04-17T14-07 in local time */ + + const duration = start.until(end, { largestUnit: "months" }); + TemporalHelpers.assertDuration(duration, 0, 1, 0, 15, 12, 0, 0, 0, 0, 0, + "1-month rounding window is not shortened by DST"); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/find-intermediate-instant.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/find-intermediate-instant.js new file mode 100644 index 00000000000..8d123d956ca --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/find-intermediate-instant.js @@ -0,0 +1,69 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: > + Up to 3 intermediate instants may be tried when calculating ZonedDateTime + difference +includes: [compareArray.js, temporalHelpers.js] +features: [BigInt, Temporal] +---*/ + +const calls = []; + +const springFallZone = TemporalHelpers.springForwardFallBackTimeZone(); +TemporalHelpers.observeMethod(calls, springFallZone, "getPossibleInstantsFor"); + +const dateLineZone = TemporalHelpers.crossDateLineTimeZone(); +TemporalHelpers.observeMethod(calls, dateLineZone, "getPossibleInstantsFor"); + +const zdt1 = new Temporal.ZonedDateTime(946722600_000_000_000n /* = 2000-01-01T02:30 local */, springFallZone); + +{ + const zdt2 = new Temporal.ZonedDateTime(949442400_000_000_000n /* = 2000-02-01T14:00 local */, springFallZone); + const result = zdt1.until(zdt2, { largestUnit: "years" }); + TemporalHelpers.assertDuration(result, 0, 1, 0, 0, 11, 30, 0, 0, 0, 0, "Normal case: no overflow, no DST"); + assert.compareArray(calls, [ + "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime + ], "one intermediate should be tried"); +} + +calls.splice(0); // clear + +{ + const zdt2 = new Temporal.ZonedDateTime(949395600_000_000_000n /* = 2000-02-01T01:00 local */, springFallZone); + const result = zdt1.until(zdt2, { largestUnit: "years" }); + TemporalHelpers.assertDuration(result, 0, 0, 0, 30, 22, 30, 0, 0, 0, 0, "One day correction: overflow, no DST"); + assert.compareArray(calls, [ + "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime + "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime + ], "two intermediates should be tried"); +} + +calls.splice(0); // clear + +{ + const zdt2 = new Temporal.ZonedDateTime(954669600_000_000_000n /* = 2000-04-02T02:00 local */, springFallZone); + const result = zdt1.until(zdt2, { largestUnit: "years" }); + TemporalHelpers.assertDuration(result, 0, 3, 0, 0, 23, 30, 0, 0, 0, 0, "One day correction: no overflow, DST"); + assert.compareArray(calls, [ + "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime + "call getPossibleInstantsFor", // DisambiguatePossibleInstants on first intermediate + "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime + ], "two intermediates should be tried, with disambiguation"); +} + +calls.splice(0); // clear + +{ + const start = new Temporal.ZonedDateTime(1325102400_000_000_000n /* = 2011-12-28T10:00 local */, dateLineZone); + const end = new Temporal.ZonedDateTime(1325257200_000_000_000n /* = 2011-12-31T05:00 local */, dateLineZone); + const result = start.until(end, { largestUnit: "days" }); + TemporalHelpers.assertDuration(result, 0, 0, 0, 1, 19, 0, 0, 0, 0, 0, "Two days correction: overflow and DST"); + assert.compareArray(calls, [ + "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime + "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime + "call getPossibleInstantsFor", // DisambiguatePossibleInstants on second intermediate + "call getPossibleInstantsFor", // third intermediate in DifferenceZonedDateTime + ], "three intermediates should be tried, with disambiguation"); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-loop-arbitrarily.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-loop-arbitrarily.js index 004ce0838b9..5f38d19ed49 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-loop-arbitrarily.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-loop-arbitrarily.js @@ -30,12 +30,14 @@ const timeZone = new class extends Temporal.TimeZone { }("UTC"); const zdt = new Temporal.ZonedDateTime(0n, timeZone); -const other = new Temporal.ZonedDateTime(dayLengthNs, "UTC", "iso8601"); +const other = new Temporal.ZonedDateTime(dayLengthNs * 2n, "UTC", "iso8601"); -assert.throws(RangeError, () => zdt.until(other, { largestUnit: "day" }), "indefinite loop is prevented"); -assert.sameValue(calls, 3, "getPossibleInstantsFor is not called indefinitely"); +assert.throws(RangeError, () => zdt.until(other, { largestUnit: "day", smallestUnit: "second" }), "indefinite loop is prevented"); +assert.sameValue(calls, 4, "getPossibleInstantsFor is not called indefinitely"); // Expected calls: - // DifferenceZonedDateTime -> NormalizedTimeDurationToDays -> - // AddDaysToZonedDateTime (3, step 12) - // AddDaysToZonedDateTime (4, step 15) - // AddDaysToZonedDateTime (5, step 18.d) + // DifferenceTemporalZonedDateTime -> + // DifferenceZonedDateTime -> GetInstantFor (1) + // NormalizedTimeDurationToDays -> + // AddDaysToZonedDateTime (2, step 12) + // AddDaysToZonedDateTime (3, step 15) + // AddDaysToZonedDateTime (4, step 18.d) diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-range-errors.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-range-errors.js index 307559877b3..ea2ebabe430 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-range-errors.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-range-errors.js @@ -39,13 +39,16 @@ const dayNs = 86_400_000_000_000; const zeroZDT = new Temporal.ZonedDateTime(0n, "UTC"); const oneZDT = new Temporal.ZonedDateTime(1n, "UTC"); const epochInstant = new Temporal.Instant(0n); -const options = { largestUnit: "days" }; +const options = { largestUnit: "days", smallestUnit: "seconds", roundingMode: "expand" }; // Step 23: days < 0 and sign = 1 let start = new Temporal.ZonedDateTime( 0n, // Sets DifferenceZonedDateTime _ns1_ timeZoneSubstituteValues( - [[epochInstant]], // Returned in step 16, setting _relativeResult_ + [ + TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally in DifferenceZonedDateTime + [epochInstant], // Returned in step 16, setting _relativeResult_ + ], [ // Behave normally in 2 calls made prior to NormalizedTimeDurationToDays TemporalHelpers.SUBSTITUTE_SKIP, @@ -66,7 +69,10 @@ assert.throws(RangeError, () => start = new Temporal.ZonedDateTime( 1n, // Sets DifferenceZonedDateTime _ns1_ timeZoneSubstituteValues( - [[epochInstant]], // Returned in step 16, setting _relativeResult_ + [ + TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally in DifferenceZonedDateTime + [epochInstant], // Returned in step 16, setting _relativeResult_ + ], [ // Behave normally in 2 calls made prior to NormalizedTimeDurationToDays TemporalHelpers.SUBSTITUTE_SKIP, @@ -87,7 +93,10 @@ assert.throws(RangeError, () => start = new Temporal.ZonedDateTime( 1n, // Sets DifferenceZonedDateTime _ns1_ timeZoneSubstituteValues( - [[new Temporal.Instant(-1n)]], // Returned in step 16, setting _relativeResult_ + [ + TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally in DifferenceZonedDateTime + [new Temporal.Instant(-2_000_000_000n)], // Returned in step 16, setting _relativeResult_ + ], [ // Behave normally in 2 calls made prior to NormalizedTimeDurationToDays TemporalHelpers.SUBSTITUTE_SKIP, @@ -108,9 +117,12 @@ assert.throws(RangeError, () => start = new Temporal.ZonedDateTime( 0n, timeZoneSubstituteValues( - // Not called in step 16 because _days_ = 0 - // Returned in step 19, making _oneDayFarther_ 2^53 ns later than _relativeResult_ - [[new Temporal.Instant(2n ** 53n)]], + [ + TemporalHelpers.SUBSTITUTE_SKIP, // Behave normally in DifferenceZonedDateTime + // Not called in step 16 because _days_ = 0 + // Returned in step 19, making _oneDayFarther_ 2^53 ns later than _relativeResult_ + [new Temporal.Instant(2n ** 53n)], + ], [] ) ); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/order-of-operations.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/order-of-operations.js index 23a8e3fe371..502fa13eb6c 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/until/order-of-operations.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/order-of-operations.js @@ -305,10 +305,6 @@ assert.compareArray(actual, [ // DifferenceZonedDateTime "call this.timeZone.getOffsetNanosecondsFor", "call this.timeZone.getOffsetNanosecondsFor", - // NanosecondsToDays - "call this.timeZone.getOffsetNanosecondsFor", - "call this.timeZone.getOffsetNanosecondsFor", - // NanosecondsToDays → AddDaysToZonedDateTime "call this.timeZone.getPossibleInstantsFor", ], "order of operations with identical wall-clock times and largestUnit a calendar unit"); actual.splice(0); // clear @@ -327,17 +323,8 @@ const expectedOpsForCalendarDifference = [ "call this.timeZone.getOffsetNanosecondsFor", // DifferenceZonedDateTime "call this.timeZone.getOffsetNanosecondsFor", - // DifferenceISODateTime - "call this.calendar.dateUntil", - // AddZonedDateTime - "call this.calendar.dateAdd", - "call this.timeZone.getPossibleInstantsFor", - // NanosecondsToDays - "call this.timeZone.getOffsetNanosecondsFor", - "call this.timeZone.getOffsetNanosecondsFor", - // NanosecondsToDays → AddDaysToZonedDateTime - "call this.timeZone.getPossibleInstantsFor", "call this.timeZone.getPossibleInstantsFor", + "call this.calendar.dateUntil", ]; const expectedOpsForCalendarRounding = [ From 96718952b0517d6ddab194ee9a31d65f170517e6 Mon Sep 17 00:00:00 2001 From: Adam Shaw Date: Fri, 29 Mar 2024 12:43:58 -0400 Subject: [PATCH 24/59] updated tests for ZDT diffing w/ backoffs --- .../since/find-intermediate-instant.js | 36 +++++++++++-------- .../until/find-intermediate-instant.js | 29 ++++++++++----- 2 files changed, 43 insertions(+), 22 deletions(-) diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/find-intermediate-instant.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/find-intermediate-instant.js index 75408ddb830..34f564dd0fc 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/since/find-intermediate-instant.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/find-intermediate-instant.js @@ -19,10 +19,12 @@ TemporalHelpers.observeMethod(calls, dateLineZone, "getPossibleInstantsFor"); const zdt2 = new Temporal.ZonedDateTime(946722600_000_000_000n /* = 2000-01-01T02:30 local */, springFallZone); +// Future -> past, without wall-clock overshoot +// Expects valid intermediate Instant WITHOUT day correction (computed once) { const zdt1 = new Temporal.ZonedDateTime(949442400_000_000_000n /* = 2000-02-01T14:00 local */, springFallZone); const result = zdt1.since(zdt2, { largestUnit: "years" }); - TemporalHelpers.assertDuration(result, 0, 1, 0, 0, 11, 30, 0, 0, 0, 0, "Normal case: no overflow, no DST"); + TemporalHelpers.assertDuration(result, 0, 1, 0, 0, 11, 30, 0, 0, 0, 0, "no wall-clock overshoot, no DST"); assert.compareArray(calls, [ "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime ], "one intermediate should be tried"); @@ -30,44 +32,50 @@ const zdt2 = new Temporal.ZonedDateTime(946722600_000_000_000n /* = 2000-01-01T0 calls.splice(0); // clear +// Future -> past, WITH wall-clock overshoot +// Expects valid intermediate Instant with guaranteed 1-DAY correction (computed once) { const zdt1 = new Temporal.ZonedDateTime(949395600_000_000_000n /* = 2000-02-01T01:00 local */, springFallZone); const result = zdt1.since(zdt2, { largestUnit: "years" }); - TemporalHelpers.assertDuration(result, 0, 0, 0, 30, 22, 30, 0, 0, 0, 0, "One day correction: overflow, no DST"); + TemporalHelpers.assertDuration(result, 0, 0, 0, 30, 22, 30, 0, 0, 0, 0, "wall-clock overshoot, no DST"); assert.compareArray(calls, [ "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime - "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime - ], "two intermediates should be tried"); + ], "one intermediate should be tried"); } calls.splice(0); // clear +// Future -> past, WITH wall-clock overshoot +// Expects valid intermediate Instant with guaranteed 1-DAY correction (computed once) +// Intermediate Instant falls within spring DST gap and gets pushed forward, +// but since moving from future -> past, not possible to exacerbate overflow, +// so no other day corrections. { const end = new Temporal.ZonedDateTime(957258000_000_000_000n /* = 2000-05-02T02:00 local */, springFallZone); const start = new Temporal.ZonedDateTime(954671400_000_000_000n /* = 2000-04-02T03:30-07:00 local */, springFallZone); const result = end.since(start, { largestUnit: "years" }); - TemporalHelpers.assertDuration(result, 0, 0, 0, 29, 22, 30, 0, 0, 0, 0, "One day correction: no overflow, DST"); + TemporalHelpers.assertDuration(result, 0, 0, 0, 29, 22, 30, 0, 0, 0, 0, "wall-clock overshoot, inconsiquential DST"); assert.compareArray(calls, [ "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime - "call getPossibleInstantsFor", // DisambiguatePossibleInstants on first intermediate - "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime - ], "two intermediates should be tried, with disambiguation"); + ], "one intermediate should be tried"); } calls.splice(0); // clear -// Two days correction: overflow and DST -// (Not possible when going backwards. This test is just the same as the -// corresponding one in until(), but negative.) +// Past -> future, WITH wall-clock overshoot +// Tries intermediate Instant with 1-DAY correction (first compute) +// Then, ANOTHER day correction because updated intermediate Instant falls within dateline DST gap, +// pushing it forward, causing wall-clock overshoot again +// (Not possible when going backwards) +// (This test is just the same as the corresponding one in until(), but negative) { const start = new Temporal.ZonedDateTime(1325102400_000_000_000n /* = 2011-12-28T10:00 local */, dateLineZone); const end = new Temporal.ZonedDateTime(1325257200_000_000_000n /* = 2011-12-31T05:00 local */, dateLineZone); const result = start.since(end, { largestUnit: "days" }); - TemporalHelpers.assertDuration(result, 0, 0, 0, -1, -19, 0, 0, 0, 0, 0, "Two days correction: overflow and DST"); + TemporalHelpers.assertDuration(result, 0, 0, 0, -1, -19, 0, 0, 0, 0, 0, "wall-clock overshoot, consiquential DST"); assert.compareArray(calls, [ "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime "call getPossibleInstantsFor", // DisambiguatePossibleInstants on second intermediate - "call getPossibleInstantsFor", // third intermediate in DifferenceZonedDateTime - ], "three intermediates should be tried, with disambiguation"); + ], "two intermediates should be tried, with disambiguation"); } diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/find-intermediate-instant.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/find-intermediate-instant.js index 8d123d956ca..ee751a9152e 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/until/find-intermediate-instant.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/find-intermediate-instant.js @@ -19,10 +19,12 @@ TemporalHelpers.observeMethod(calls, dateLineZone, "getPossibleInstantsFor"); const zdt1 = new Temporal.ZonedDateTime(946722600_000_000_000n /* = 2000-01-01T02:30 local */, springFallZone); +// Past -> future, without wall-clock overshoot +// Expects valid intermediate Instant WITHOUT day correction (computed once) { const zdt2 = new Temporal.ZonedDateTime(949442400_000_000_000n /* = 2000-02-01T14:00 local */, springFallZone); const result = zdt1.until(zdt2, { largestUnit: "years" }); - TemporalHelpers.assertDuration(result, 0, 1, 0, 0, 11, 30, 0, 0, 0, 0, "Normal case: no overflow, no DST"); + TemporalHelpers.assertDuration(result, 0, 1, 0, 0, 11, 30, 0, 0, 0, 0, "no wall-clock overshoot, no DST"); assert.compareArray(calls, [ "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime ], "one intermediate should be tried"); @@ -30,22 +32,28 @@ const zdt1 = new Temporal.ZonedDateTime(946722600_000_000_000n /* = 2000-01-01T0 calls.splice(0); // clear +// Past -> future, WITH wall-clock overshoot +// Expects valid intermediate Instant with guaranteed 1-DAY correction (computed once) { const zdt2 = new Temporal.ZonedDateTime(949395600_000_000_000n /* = 2000-02-01T01:00 local */, springFallZone); const result = zdt1.until(zdt2, { largestUnit: "years" }); - TemporalHelpers.assertDuration(result, 0, 0, 0, 30, 22, 30, 0, 0, 0, 0, "One day correction: overflow, no DST"); + TemporalHelpers.assertDuration(result, 0, 0, 0, 30, 22, 30, 0, 0, 0, 0, "wall-clock overshoot, no DST"); assert.compareArray(calls, [ "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime - "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime - ], "two intermediates should be tried"); + ], "one intermediate should be tried"); } calls.splice(0); // clear +// Past -> future, WITH wall-clock overshoot +// Tries intermediate Instant with 1-DAY correction (first compute) +// Then, ANOTHER correction because updated intermediate Instant falls within spring DST gap, +// pushing it forward, causing wall-clock overshoot again +// (Not possible when going backwards) { const zdt2 = new Temporal.ZonedDateTime(954669600_000_000_000n /* = 2000-04-02T02:00 local */, springFallZone); const result = zdt1.until(zdt2, { largestUnit: "years" }); - TemporalHelpers.assertDuration(result, 0, 3, 0, 0, 23, 30, 0, 0, 0, 0, "One day correction: no overflow, DST"); + TemporalHelpers.assertDuration(result, 0, 3, 0, 0, 23, 30, 0, 0, 0, 0, "wall-clock overshoot, small consiquential DST"); assert.compareArray(calls, [ "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime "call getPossibleInstantsFor", // DisambiguatePossibleInstants on first intermediate @@ -55,15 +63,20 @@ calls.splice(0); // clear calls.splice(0); // clear +// Past -> future, WITH wall-clock overshoot +// Tries intermediate Instant with 1-DAY correction (first compute) +// Then, ANOTHER correction because updated intermediate Instant falls within dateline DST gap, +// pushing it forward, causing wall-clock overshoot again +// (Not possible when going backwards) +// (This test is just the same as the corresponding one in since(), but negative) { const start = new Temporal.ZonedDateTime(1325102400_000_000_000n /* = 2011-12-28T10:00 local */, dateLineZone); const end = new Temporal.ZonedDateTime(1325257200_000_000_000n /* = 2011-12-31T05:00 local */, dateLineZone); const result = start.until(end, { largestUnit: "days" }); - TemporalHelpers.assertDuration(result, 0, 0, 0, 1, 19, 0, 0, 0, 0, 0, "Two days correction: overflow and DST"); + TemporalHelpers.assertDuration(result, 0, 0, 0, 1, 19, 0, 0, 0, 0, 0, "wall-clock overshoot, big consiquential DST"); assert.compareArray(calls, [ "call getPossibleInstantsFor", // first intermediate in DifferenceZonedDateTime "call getPossibleInstantsFor", // second intermediate in DifferenceZonedDateTime "call getPossibleInstantsFor", // DisambiguatePossibleInstants on second intermediate - "call getPossibleInstantsFor", // third intermediate in DifferenceZonedDateTime - ], "three intermediates should be tried, with disambiguation"); + ], "two intermediates should be tried, with disambiguation"); } From 1e3d8cbb37476cd957a6a5c7295004901f30b2c4 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Fri, 29 Mar 2024 18:04:06 -0700 Subject: [PATCH 25/59] Add extra tests for newly fixed bug --- .../prototype/since/dst-month-day-boundary.js | 26 +++++++++++++++++++ .../prototype/until/dst-month-day-boundary.js | 26 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-month-day-boundary.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-month-day-boundary.js diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-month-day-boundary.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-month-day-boundary.js new file mode 100644 index 00000000000..ce9aad31d36 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/dst-month-day-boundary.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.since +description: > + Difference with the endpoint being the end of a skipped hour, chooses the + smaller of two possible durations +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// Based on a test case by Adam Shaw + +const timeZone = TemporalHelpers.springForwardFallBackTimeZone(); + +const d1 = new Temporal.ZonedDateTime(957258000_000_000_000n /* = 2000-05-02T02:00-07:00 */, timeZone); +const d2 = new Temporal.ZonedDateTime(954669600_000_000_000n /* = 2000-04-02T03:00-07:00 */, timeZone); +// NOTE: nonexistent hour just before d2 + +const result = d1.since(d2, { largestUnit: "months" }); + +TemporalHelpers.assertDuration( + result, 0, 0, 0, 29, 23, 0, 0, 0, 0, 0, + "Result should not balance up to months, but pick the smaller of two possible durations" +); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-month-day-boundary.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-month-day-boundary.js new file mode 100644 index 00000000000..dcb2d20c343 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/dst-month-day-boundary.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: > + Difference with the endpoint being the end of a skipped hour, chooses the + smaller of two possible durations +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// Based on a test case by Adam Shaw + +const timeZone = TemporalHelpers.springForwardFallBackTimeZone(); + +const d1 = new Temporal.ZonedDateTime(957258000_000_000_000n /* = 2000-05-02T02:00-07:00 */, timeZone); +const d2 = new Temporal.ZonedDateTime(954669600_000_000_000n /* = 2000-04-02T03:00-07:00 */, timeZone); +// NOTE: nonexistent hour just before d2 + +const result = d1.until(d2, { largestUnit: "months" }); + +TemporalHelpers.assertDuration( + result, 0, 0, 0, -29, -23, 0, 0, 0, 0, 0, + "Result should not balance up to months, but pick the smaller of two possible durations" +); From 9e539a07d71a74731b4e93e29f61f52b7bb5f9fc Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 1 Apr 2024 12:34:42 -0700 Subject: [PATCH 26/59] Remove ChakraCore CI job Installation of ChakraCore by ESVU for some reason has been flaky for quite a long time. Can't reproduce locally. This CI job doesn't add much value by itself, so just remove it until some future time. Closes: #3953 --- .circleci/config.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 56ee6bdf658..f376736a31e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -95,15 +95,15 @@ jobs: hostPath: spidermonkey hostName: spidermonkey <<: [*execution_steps] - "ChakraCore: New or modified tests execution": - docker: - - image: *node_image - working_directory: ~/test262 - environment: - hostType: ch - hostPath: chakra - hostName: chakra - <<: [*execution_steps] + # "ChakraCore: New or modified tests execution": + # docker: + # - image: *node_image + # working_directory: ~/test262 + # environment: + # hostType: ch + # hostPath: chakra + # hostName: chakra + # <<: [*execution_steps] "JSC: New or modified tests execution": docker: - image: *node_image @@ -140,7 +140,7 @@ workflows: - "Test262: verify tools; build & lint tests" Tests execution: jobs: - - "ChakraCore: New or modified tests execution" + # - "ChakraCore: New or modified tests execution" - "JSC: New or modified tests execution" - "SpiderMonkey: New or modified tests execution" - "V8: New or modified tests execution" From f4f33d272cfcfc1a443108a3a130c5ce6eec5c8c Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Thu, 8 Feb 2024 11:42:43 -0800 Subject: [PATCH 27/59] Temporal: Fix assertion message --- test/built-ins/Temporal/Duration/from/argument-duration-max.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/built-ins/Temporal/Duration/from/argument-duration-max.js b/test/built-ins/Temporal/Duration/from/argument-duration-max.js index eb068085251..b1aab36c884 100644 --- a/test/built-ins/Temporal/Duration/from/argument-duration-max.js +++ b/test/built-ins/Temporal/Duration/from/argument-duration-max.js @@ -10,7 +10,7 @@ features: [Temporal] const maxCases = [ ["P4294967295Y104249991374DT7H36M31.999999999S", "string with max years"], [{ years: 4294967295, days: 104249991374, nanoseconds: 27391999999999 }, "property bag with max years"], - ["P4294967295M104249991374DT7H36M31.999999999S", "string with max weeks"], + ["P4294967295M104249991374DT7H36M31.999999999S", "string with max months"], [{ months: 4294967295, days: 104249991374, nanoseconds: 27391999999999 }, "property bag with max months"], ["P4294967295W104249991374DT7H36M31.999999999S", "string with max weeks"], [{ weeks: 4294967295, days: 104249991374, nanoseconds: 27391999999999 }, "property bag with max weeks"], From 8b781361a951eeacf34597be839f6033d503e97a Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 12 Feb 2024 17:44:42 -0800 Subject: [PATCH 28/59] Temporal: Add test for last step of UnbalanceDateDurationRelative throwing Based on a test case by Anba. See https://github.com/tc39/proposal-temporal/pull/2690#issuecomment-1938768702 --- ...ration-out-of-range-added-to-relativeto.js | 27 +++++++++++ ...ration-out-of-range-added-to-relativeto.js | 45 ++++++++++++++----- ...ration-out-of-range-added-to-relativeto.js | 45 ++++++++++++++----- 3 files changed, 95 insertions(+), 22 deletions(-) create mode 100644 test/built-ins/Temporal/Duration/compare/duration-out-of-range-added-to-relativeto.js diff --git a/test/built-ins/Temporal/Duration/compare/duration-out-of-range-added-to-relativeto.js b/test/built-ins/Temporal/Duration/compare/duration-out-of-range-added-to-relativeto.js new file mode 100644 index 00000000000..8b961dc34d7 --- /dev/null +++ b/test/built-ins/Temporal/Duration/compare/duration-out-of-range-added-to-relativeto.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.duration.compare +description: RangeError thrown when calendar part of duration added to relativeTo is out of range +features: [Temporal] +info: | + UnbalanceDateDurationRelative: + 11. Let _yearsMonthsWeeksDuration_ be ! CreateTemporalDuration(_years_, _months_, _weeks_, 0, 0, 0, 0, 0, 0, 0). + 12. Let _later_ be ? CalendarDateAdd(_calendaRec_, _plainRelativeTo_, _yearsMonthsWeeksDuration_). + 13. Let _yearsMonthsWeeksInDays_ be DaysUntil(_plainRelativeTo_, _later_). + 14. Return ? CreateDateDurationRecord(0, 0, 0, _days_ + _yearsMonthsWeeksInDays_). +---*/ + +// Based on a test case by André Bargull + +const relativeTo = new Temporal.PlainDate(2000, 1, 1); +const zero = new Temporal.Duration(); + +const instance = new Temporal.Duration(0, 0, /* weeks = */ 1, /* days = */ Math.trunc((2 ** 53) / 86_400)); +assert.throws(RangeError, () => Temporal.Duration.compare(instance, zero, {relativeTo}), "weeks + days out of range, positive, first argument"); +assert.throws(RangeError, () => Temporal.Duration.compare(zero, instance, {relativeTo}), "weeks + days out of range, positive, second argument"); + +const negInstance = new Temporal.Duration(0, 0, /* weeks = */ -1, /* days = */ -Math.trunc((2 ** 53) / 86_400)); +assert.throws(RangeError, () => Temporal.Duration.compare(negInstance, zero, {relativeTo}), "weeks + days out of range, negative, first argument"); +assert.throws(RangeError, () => Temporal.Duration.compare(zero, negInstance, {relativeTo}), "weeks + days out of range, negative, second argument"); diff --git a/test/built-ins/Temporal/Duration/prototype/round/duration-out-of-range-added-to-relativeto.js b/test/built-ins/Temporal/Duration/prototype/round/duration-out-of-range-added-to-relativeto.js index dbc2e00f6ab..567d219fec4 100644 --- a/test/built-ins/Temporal/Duration/prototype/round/duration-out-of-range-added-to-relativeto.js +++ b/test/built-ins/Temporal/Duration/prototype/round/duration-out-of-range-added-to-relativeto.js @@ -7,19 +7,42 @@ description: RangeError thrown when calendar part of duration added to relativeT features: [Temporal] info: | RoundDuration: - 8.k. Let _isoResult_ be ! AddISODate(_plainRelativeTo_.[[ISOYear]]. _plainRelativeTo_.[[ISOMonth]], _plainRelativeTo_.[[ISODay]], 0, 0, 0, truncate(_fractionalDays_), *"constrain"*). - l. Let _wholeDaysLater_ be ? CreateTemporalDate(_isoResult_.[[Year]], _isoResult_.[[Month]], _isoResult_.[[Day]], _calendar_). + 10.h. Let _isoResult_ be ! AddISODate(_plainRelativeTo_.[[ISOYear]]. _plainRelativeTo_.[[ISOMonth]], _plainRelativeTo_.[[ISODay]], 0, 0, 0, truncate(_fractionalDays_), *"constrain"*). + i. Let _wholeDaysLater_ be ? CreateTemporalDate(_isoResult_.[[Year]], _isoResult_.[[Month]], _isoResult_.[[Day]], _calendar_). + ... + 11.h. Let _isoResult_ be ! AddISODate(_plainRelativeTo_.[[ISOYear]]. _plainRelativeTo_.[[ISOMonth]], _plainRelativeTo_.[[ISODay]], 0, 0, 0, truncate(_fractionalDays_), *"constrain"*). + i. Let _wholeDaysLater_ be ? CreateTemporalDate(_isoResult_.[[Year]], _isoResult_.[[Month]], _isoResult_.[[Day]], _calendar_). + ... + 12.a. Let _isoResult_ be ! AddISODate(_plainRelativeTo_.[[ISOYear]]. _plainRelativeTo_.[[ISOMonth]], _plainRelativeTo_.[[ISODay]], 0, 0, 0, truncate(_fractionalDays_), *"constrain"*). + b. Let _wholeDaysLater_ be ? CreateTemporalDate(_isoResult_.[[Year]], _isoResult_.[[Month]], _isoResult_.[[Day]], _calendar_). + + UnbalanceDateDurationRelative: + 11. Let _yearsMonthsWeeksDuration_ be ! CreateTemporalDuration(_years_, _months_, _weeks_, 0, 0, 0, 0, 0, 0, 0). + 12. Let _later_ be ? CalendarDateAdd(_calendaRec_, _plainRelativeTo_, _yearsMonthsWeeksDuration_). + 13. Let _yearsMonthsWeeksInDays_ be DaysUntil(_plainRelativeTo_, _later_). + 14. Return ? CreateDateDurationRecord(0, 0, 0, _days_ + _yearsMonthsWeeksInDays_). ---*/ // Based on a test case by André Bargull -const instance = new Temporal.Duration(0, 0, 0, /* days = */ 500_000_000); const relativeTo = new Temporal.PlainDate(2000, 1, 1); -assert.throws(RangeError, () => instance.round({relativeTo, smallestUnit: "years"})); -assert.throws(RangeError, () => instance.round({relativeTo, smallestUnit: "months"})); -assert.throws(RangeError, () => instance.round({relativeTo, smallestUnit: "weeks"})); - -const negInstance = new Temporal.Duration(0, 0, 0, /* days = */ -500_000_000); -assert.throws(RangeError, () => negInstance.round({relativeTo, smallestUnit: "years"})); -assert.throws(RangeError, () => negInstance.round({relativeTo, smallestUnit: "months"})); -assert.throws(RangeError, () => negInstance.round({relativeTo, smallestUnit: "weeks"})); + +{ + const instance = new Temporal.Duration(0, 0, 0, /* days = */ 500_000_000); + assert.throws(RangeError, () => instance.round({relativeTo, smallestUnit: "years"}), "days out of range, positive, smallestUnit years"); + assert.throws(RangeError, () => instance.round({relativeTo, smallestUnit: "months"}), "days out of range, positive, smallestUnit months"); + assert.throws(RangeError, () => instance.round({relativeTo, smallestUnit: "weeks"}), "days out of range, positive, smallestUnit weeks"); + + const negInstance = new Temporal.Duration(0, 0, 0, /* days = */ -500_000_000); + assert.throws(RangeError, () => negInstance.round({relativeTo, smallestUnit: "years"}), "days out of range, negative, smallestUnit years"); + assert.throws(RangeError, () => negInstance.round({relativeTo, smallestUnit: "months"}), "days out of range, negative, smallestUnit months"); + assert.throws(RangeError, () => negInstance.round({relativeTo, smallestUnit: "weeks"}), "days out of range, negative, smallestUnit weeks"); +} + +{ + const instance = new Temporal.Duration(0, 0, /* weeks = */ 1, /* days = */ Math.trunc((2 ** 53) / 86_400)); + assert.throws(RangeError, () => instance.round({relativeTo, largestUnit: "days"}), "weeks + days out of range, positive"); + + const negInstance = new Temporal.Duration(0, 0, /* weeks = */ -1, /* days = */ -Math.trunc((2 ** 53) / 86_400)); + assert.throws(RangeError, () => instance.round({relativeTo, largestUnit: "days"}), "weeks + days out of range, negative"); +} diff --git a/test/built-ins/Temporal/Duration/prototype/total/duration-out-of-range-added-to-relativeto.js b/test/built-ins/Temporal/Duration/prototype/total/duration-out-of-range-added-to-relativeto.js index 04ab6300f54..81d9397748e 100644 --- a/test/built-ins/Temporal/Duration/prototype/total/duration-out-of-range-added-to-relativeto.js +++ b/test/built-ins/Temporal/Duration/prototype/total/duration-out-of-range-added-to-relativeto.js @@ -7,19 +7,42 @@ description: RangeError thrown when calendar part of duration added to relativeT features: [Temporal] info: | RoundDuration: - 8.k. Let _isoResult_ be ! AddISODate(_plainRelativeTo_.[[ISOYear]]. _plainRelativeTo_.[[ISOMonth]], _plainRelativeTo_.[[ISODay]], 0, 0, 0, truncate(_fractionalDays_), *"constrain"*). - l. Let _wholeDaysLater_ be ? CreateTemporalDate(_isoResult_.[[Year]], _isoResult_.[[Month]], _isoResult_.[[Day]], _calendar_). + 10.h. Let _isoResult_ be ! AddISODate(_plainRelativeTo_.[[ISOYear]]. _plainRelativeTo_.[[ISOMonth]], _plainRelativeTo_.[[ISODay]], 0, 0, 0, truncate(_fractionalDays_), *"constrain"*). + i. Let _wholeDaysLater_ be ? CreateTemporalDate(_isoResult_.[[Year]], _isoResult_.[[Month]], _isoResult_.[[Day]], _calendar_). + ... + 11.h. Let _isoResult_ be ! AddISODate(_plainRelativeTo_.[[ISOYear]]. _plainRelativeTo_.[[ISOMonth]], _plainRelativeTo_.[[ISODay]], 0, 0, 0, truncate(_fractionalDays_), *"constrain"*). + i. Let _wholeDaysLater_ be ? CreateTemporalDate(_isoResult_.[[Year]], _isoResult_.[[Month]], _isoResult_.[[Day]], _calendar_). + ... + 12.a. Let _isoResult_ be ! AddISODate(_plainRelativeTo_.[[ISOYear]]. _plainRelativeTo_.[[ISOMonth]], _plainRelativeTo_.[[ISODay]], 0, 0, 0, truncate(_fractionalDays_), *"constrain"*). + b. Let _wholeDaysLater_ be ? CreateTemporalDate(_isoResult_.[[Year]], _isoResult_.[[Month]], _isoResult_.[[Day]], _calendar_). + + UnbalanceDateDurationRelative: + 11. Let _yearsMonthsWeeksDuration_ be ! CreateTemporalDuration(_years_, _months_, _weeks_, 0, 0, 0, 0, 0, 0, 0). + 12. Let _later_ be ? CalendarDateAdd(_calendaRec_, _plainRelativeTo_, _yearsMonthsWeeksDuration_). + 13. Let _yearsMonthsWeeksInDays_ be DaysUntil(_plainRelativeTo_, _later_). + 14. Return ? CreateDateDurationRecord(0, 0, 0, _days_ + _yearsMonthsWeeksInDays_). ---*/ // Based on a test case by André Bargull -const instance = new Temporal.Duration(0, 0, 0, /* days = */ 500_000_000); const relativeTo = new Temporal.PlainDate(2000, 1, 1); -assert.throws(RangeError, () => instance.total({relativeTo, unit: "years"})); -assert.throws(RangeError, () => instance.total({relativeTo, unit: "months"})); -assert.throws(RangeError, () => instance.total({relativeTo, unit: "weeks"})); - -const negInstance = new Temporal.Duration(0, 0, 0, /* days = */ -500_000_000); -assert.throws(RangeError, () => negInstance.total({relativeTo, unit: "years"})); -assert.throws(RangeError, () => negInstance.total({relativeTo, unit: "months"})); -assert.throws(RangeError, () => negInstance.total({relativeTo, unit: "weeks"})); + +{ + const instance = new Temporal.Duration(0, 0, 0, /* days = */ 500_000_000); + assert.throws(RangeError, () => instance.total({relativeTo, unit: "years"}), "days out of range, positive, unit years"); + assert.throws(RangeError, () => instance.total({relativeTo, unit: "months"}), "days out of range, positive, unit months"); + assert.throws(RangeError, () => instance.total({relativeTo, unit: "weeks"}), "days out of range, positive, unit weeks"); + + const negInstance = new Temporal.Duration(0, 0, 0, /* days = */ -500_000_000); + assert.throws(RangeError, () => negInstance.total({relativeTo, unit: "years"}), "days out of range, negative, unit years"); + assert.throws(RangeError, () => negInstance.total({relativeTo, unit: "months"}), "days out of range, negative, unit months"); + assert.throws(RangeError, () => negInstance.total({relativeTo, unit: "weeks"}), "days out of range, negative, unit weeks"); +} + +{ + const instance = new Temporal.Duration(0, 0, /* weeks = */ 1, /* days = */ Math.trunc((2 ** 53) / 86_400)); + assert.throws(RangeError, () => instance.total({relativeTo, unit: "days"}), "weeks + days out of range, positive"); + + const negInstance = new Temporal.Duration(0, 0, /* weeks = */ -1, /* days = */ -Math.trunc((2 ** 53) / 86_400)); + assert.throws(RangeError, () => instance.total({relativeTo, unit: "days"}), "weeks + days out of range, negative"); +} From 0c12b8424411f1dadfb430e0401405096b52d30e Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Tue, 13 Feb 2024 17:36:54 -0800 Subject: [PATCH 29/59] Temporal: Add tests for incorrectly capitalized annotation keys As per IETF, annotation keys may only consist of lowercase letters, dashes, and digits, and an optional leading underscore. Uppercase letters are non-syntactical. Add tests covering this. --- harness/temporalHelpers.js | 8 +++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 27 +++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 29 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 27 +++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 28 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 28 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 27 +++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 28 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 33 +++++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 28 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 28 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 28 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 28 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 27 +++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 29 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 29 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 23 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 23 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 23 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 29 ++++++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ ...-string-calendar-annotation-invalid-key.js | 22 +++++++++++++ 65 files changed, 1520 insertions(+) create mode 100644 test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/dateUntil/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/day/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/month/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/monthCode/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/year/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Instant/compare/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Instant/from/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Instant/prototype/equals/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Instant/prototype/since/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/Instant/prototype/until/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDate/compare/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDate/from/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/equals/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/since/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/until/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDateTime/compare/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDateTime/from/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/since/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/until/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainMonthDay/from/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainTime/compare/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainTime/from/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainTime/prototype/since/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainTime/prototype/until/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/compare/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/from/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getNextTransition/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getPreviousTransition/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/compare/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/from/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/intl402/Temporal/Calendar/prototype/era/argument-string-calendar-annotation-invalid-key.js create mode 100644 test/intl402/Temporal/Calendar/prototype/eraYear/argument-string-calendar-annotation-invalid-key.js diff --git a/harness/temporalHelpers.js b/harness/temporalHelpers.js index 113db3da674..91f05cbd8aa 100644 --- a/harness/temporalHelpers.js +++ b/harness/temporalHelpers.js @@ -2020,6 +2020,9 @@ var TemporalHelpers = { "11-18junk", "11-18[u-ca=gregory]", "11-18[u-ca=hebrew]", + "11-18[U-CA=iso8601]", + "11-18[u-CA=iso8601]", + "11-18[FOO=bar]", ]; }, @@ -2107,6 +2110,11 @@ var TemporalHelpers = { plainYearMonthStringsInvalid() { return [ "2020-13", + "1976-11[u-ca=gregory]", + "1976-11[u-ca=hebrew]", + "1976-11[U-CA=iso8601]", + "1976-11[u-CA=iso8601]", + "1976-11[FOO=bar]", ]; }, diff --git a/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..718b83c6bd9 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.dateadd +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.dateAdd(arg, new Temporal.Duration()), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/dateUntil/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/dateUntil/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..28260458d4e --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/dateUntil/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.dateuntil +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.dateUntil(arg, new Temporal.PlainDate(1977, 11, 19)), + `annotation keys must be lowercase: ${arg} - ${descr} (first argument)` + ); + assert.throws( + RangeError, + () => instance.dateUntil(new Temporal.PlainDate(1977, 11, 19), arg), + `annotation keys must be lowercase: ${arg} - ${descr} (second argument)` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/day/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/day/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..c883f62f1e5 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/day/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.day +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.day(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..67defe4d91b --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.dayofweek +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.dayOfWeek(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..11583c26993 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.dayofyear +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.dayOfYear(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..be5615d56fb --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.daysinmonth +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.daysInMonth(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..ea1697559e6 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.daysinweek +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.daysInWeek(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..8720589b58d --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.daysinyear +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.daysInYear(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..8c3d445d7f4 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.inleapyear +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.inLeapYear(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/month/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/month/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..872a8dd73d0 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/month/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.month +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.month(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..829eda0614a --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.monthcode +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.monthCode(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..d04ea566edf --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.monthsinyear +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.monthsInYear(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..0587d163db1 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.weekofyear +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.weekOfYear(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/year/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/year/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..b6d34e38fe0 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/year/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.year +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.year(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..b379ca83736 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.yearofweek +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.yearOfWeek(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Instant/compare/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Instant/compare/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..47b63154eef --- /dev/null +++ b/test/built-ins/Temporal/Instant/compare/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.instant.compare +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const epoch = new Temporal.Instant(0n); + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.Instant.compare(arg, epoch), + `annotation keys must be lowercase: ${arg} - ${descr} (first argument)` + ); + assert.throws( + RangeError, + () => Temporal.Instant.compare(epoch, arg), + `annotation keys must be lowercase: ${arg} - ${descr} (second argument)` + ); +}); diff --git a/test/built-ins/Temporal/Instant/from/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Instant/from/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..f965e0da01d --- /dev/null +++ b/test/built-ins/Temporal/Instant/from/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.instant.from +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.Instant.from(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Instant/prototype/equals/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Instant/prototype/equals/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..c6b4928850b --- /dev/null +++ b/test/built-ins/Temporal/Instant/prototype/equals/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.instant.prototype.equals +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Instant(0n); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.equals(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Instant/prototype/since/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Instant/prototype/since/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..44a78f05678 --- /dev/null +++ b/test/built-ins/Temporal/Instant/prototype/since/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.instant.prototype.since +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Instant(0n); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.since(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/Instant/prototype/until/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/Instant/prototype/until/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..217e034564e --- /dev/null +++ b/test/built-ins/Temporal/Instant/prototype/until/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.instant.prototype.until +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Instant(0n); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.until(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDate/compare/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDate/compare/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..8004b62da91 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/compare/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.compare +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainDate.compare(arg, new Temporal.PlainDate(1976, 11, 18)), + `annotation keys must be lowercase: ${arg} - ${descr} (first argument)` + ); + assert.throws( + RangeError, + () => Temporal.PlainDate.compare(new Temporal.PlainDate(1976, 11, 18), arg), + `annotation keys must be lowercase: ${arg} - ${descr} (second argument)` + ); +}); diff --git a/test/built-ins/Temporal/PlainDate/from/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDate/from/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..d96700ba6a4 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/from/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.from +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainDate.from(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDate/prototype/equals/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDate/prototype/equals/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..a63e7b419c4 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/equals/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.equals +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDate(2000, 5, 2); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.equals(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDate/prototype/since/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDate/prototype/since/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..ba42ce24301 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/since/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.since +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDate(2000, 5, 2); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.since(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..8fb5465b94f --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/toPlainDateTime/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.toplaindatetime +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDate(2000, 5, 2); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.toPlainDateTime(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..8fd9ea77565 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/toZonedDateTime/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.tozoneddatetime +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDate(2000, 5, 2); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.toZonedDateTime({ plainTime: arg, timeZone: "UTC" }), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDate/prototype/until/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDate/prototype/until/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..148b04e1f79 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/until/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.until +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDate(2000, 5, 2); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.until(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDateTime/compare/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDateTime/compare/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..3f80f317113 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/compare/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.compare +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainDateTime.compare(arg, new Temporal.PlainDateTime(1976, 11, 18)), + `annotation keys must be lowercase: ${arg} - ${descr} (first argument)` + ); + assert.throws( + RangeError, + () => Temporal.PlainDateTime.compare(new Temporal.PlainDateTime(1976, 11, 18), arg), + `annotation keys must be lowercase: ${arg} - ${descr} (second argument)` + ); +}); diff --git a/test/built-ins/Temporal/PlainDateTime/from/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDateTime/from/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..b735be7854c --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/from/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.from +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainDateTime.from(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..4f4bd62ab6a --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.equals +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.equals(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..dc2929175c2 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.since +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.since(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..9fdf98b7d5a --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.until +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.until(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..231a4bdefb3 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.withplaindate +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.withPlainDate(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..bde8161a9f4 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainTime/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.withplaintime +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.withPlainTime(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainMonthDay/from/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainMonthDay/from/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..21cd225fba2 --- /dev/null +++ b/test/built-ins/Temporal/PlainMonthDay/from/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.from +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainMonthDay.from(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..2d70e98e423 --- /dev/null +++ b/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.prototype.equals +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainMonthDay(5, 2); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.equals(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainTime/compare/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainTime/compare/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..6d6431aa1a4 --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/compare/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,33 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.compare +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainTime.compare(arg, new Temporal.PlainTime(12, 34, 56, 987, 654, 321)), + `annotation keys must be lowercase: ${arg} - ${descr} (first argument)` + ); + assert.throws( + RangeError, + () => Temporal.PlainTime.compare(new Temporal.PlainTime(12, 34, 56, 987, 654, 321), arg), + `annotation keys must be lowercase: ${arg} - ${descr} (second argument)` + ); +}); diff --git a/test/built-ins/Temporal/PlainTime/from/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainTime/from/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..51a4c42e602 --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/from/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.from +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainTime.from(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..c109c395ad3 --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.prototype.equals +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.equals(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainTime/prototype/since/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainTime/prototype/since/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..f267f393c2b --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/prototype/since/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.prototype.since +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.since(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..a43626e456a --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.prototype.toplaindatetime +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.toPlainDateTime(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..ca20c7806e1 --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.prototype.tozoneddatetime +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.toZonedDateTime({ plainDate: arg, timeZone: "UTC" }), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainTime/prototype/until/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainTime/prototype/until/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..eeaaebf0822 --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/prototype/until/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.prototype.until +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.until(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainYearMonth/compare/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainYearMonth/compare/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..d845def48df --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/compare/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.compare +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainYearMonth.compare(arg, new Temporal.PlainYearMonth(2019, 6)), + `annotation keys must be lowercase: ${arg} - ${descr} (first argument)` + ); + assert.throws( + RangeError, + () => Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(2019, 6), arg), + `annotation keys must be lowercase: ${arg} - ${descr} (second argument)` + ); +}); diff --git a/test/built-ins/Temporal/PlainYearMonth/from/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainYearMonth/from/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..962cb8a3915 --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/from/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.from +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.PlainYearMonth.from(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..8444ffd1ddd --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.equals +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainYearMonth(2000, 5); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.equals(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..ebdec3dd0a6 --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.since +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainYearMonth(2000, 5); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.since(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..ff05b679cb5 --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.until +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.PlainYearMonth(2000, 5); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.until(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..0ab9cb35bc2 --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getinstantfor +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.TimeZone("UTC"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.getInstantFor(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/TimeZone/prototype/getNextTransition/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/TimeZone/prototype/getNextTransition/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..c70b2259b5f --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getNextTransition/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getnexttransition +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.TimeZone("UTC"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.getNextTransition(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..72093a11d88 --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getOffsetNanosecondsFor/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getoffsetnanosecondsfor +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.TimeZone("UTC"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.getOffsetNanosecondsFor(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..85567f5e5d5 --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getOffsetStringFor/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getoffsetstringfor +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.TimeZone("UTC"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.getOffsetStringFor(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..2708de707a9 --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getplaindatetimefor +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.TimeZone("UTC"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.getPlainDateTimeFor(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..ebbf696eacd --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getpossibleinstantsfor +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.TimeZone("UTC"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.getPossibleInstantsFor(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/TimeZone/prototype/getPreviousTransition/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/TimeZone/prototype/getPreviousTransition/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..24c567b1df7 --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getPreviousTransition/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getprevioustransition +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00Z[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00Z[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00Z[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.TimeZone("UTC"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.getPreviousTransition(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/ZonedDateTime/compare/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/ZonedDateTime/compare/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..932470864a8 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/compare/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.compare +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const datetime = new Temporal.ZonedDateTime(0n, "UTC"); + +const invalidStrings = [ + ["1970-01-01T00:00[UTC][U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[UTC][u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[UTC][FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.ZonedDateTime.compare(arg, datetime), + `annotation keys must be lowercase: ${arg} - ${descr} (first argument)` + ); + assert.throws( + RangeError, + () => Temporal.ZonedDateTime.compare(datetime, arg), + `annotation keys must be lowercase: ${arg} - ${descr} (second argument)` + ); +}); diff --git a/test/built-ins/Temporal/ZonedDateTime/from/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/ZonedDateTime/from/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..b73df838401 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/from/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.from +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[UTC][U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[UTC][u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[UTC][FOO=bar]", "invalid capitalized unrecognized key"], +]; + +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => Temporal.ZonedDateTime.from(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); + for (const offset of ["use", "prefer", "ignore", "reject"]) { + assert.throws( + RangeError, + () => Temporal.ZonedDateTime.from(arg, { offset }), + `annotation keys must be lowercase: ${arg} - ${descr} (offset ${offset})` + ); + } +}); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..5384695e4fc --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.equals +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[UTC][U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[UTC][u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[UTC][FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.ZonedDateTime(0n, "UTC"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.equals(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..c1705471d40 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,23 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.since +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[UTC][U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[UTC][u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[UTC][FOO=bar]", "invalid capitalized unrecognized key"], +]; +const timeZone = new Temporal.TimeZone("UTC"); +const instance = new Temporal.ZonedDateTime(0n, timeZone); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.since(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..43756371181 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,23 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01T00:00[UTC][U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01T00:00[UTC][u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01T00:00[UTC][FOO=bar]", "invalid capitalized unrecognized key"], +]; +const timeZone = new Temporal.TimeZone("UTC"); +const instance = new Temporal.ZonedDateTime(0n, timeZone); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.until(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..4afe3bf7949 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,23 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.withplaindate +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const timeZone = new Temporal.TimeZone("UTC"); +const instance = new Temporal.ZonedDateTime(0n, timeZone); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.withPlainDate(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-calendar-annotation-invalid-key.js b/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..32b59887c07 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainTime/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.withplaintime +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["00:00[U-CA=iso8601]", "invalid capitalized key, time-only"], + ["T00:00[U-CA=iso8601]", "invalid capitalized key, time designator"], + ["1970-01-01T00:00[U-CA=iso8601]", "invalid capitalized key"], + ["00:00[u-CA=iso8601]", "invalid partially-capitalized key, time-only"], + ["T00:00[u-CA=iso8601]", "invalid partially-capitalized key, time designator"], + ["1970-01-01T00:00[u-CA=iso8601]", "invalid partially-capitalized key"], + ["00:00[FOO=bar]", "invalid capitalized unrecognized key, time-only"], + ["T00:00[FOO=bar]", "invalid capitalized unrecognized key, time designator"], + ["1970-01-01T00:00[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const timeZone = new Temporal.TimeZone("UTC"); +const instance = new Temporal.ZonedDateTime(0n, timeZone); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.withPlainTime(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/intl402/Temporal/Calendar/prototype/era/argument-string-calendar-annotation-invalid-key.js b/test/intl402/Temporal/Calendar/prototype/era/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..8d570e5b222 --- /dev/null +++ b/test/intl402/Temporal/Calendar/prototype/era/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.era +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.era(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); diff --git a/test/intl402/Temporal/Calendar/prototype/eraYear/argument-string-calendar-annotation-invalid-key.js b/test/intl402/Temporal/Calendar/prototype/eraYear/argument-string-calendar-annotation-invalid-key.js new file mode 100644 index 00000000000..ac1c686e8b2 --- /dev/null +++ b/test/intl402/Temporal/Calendar/prototype/eraYear/argument-string-calendar-annotation-invalid-key.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.erayear +description: Annotation keys are lowercase-only +features: [Temporal] +---*/ + +const invalidStrings = [ + ["1970-01-01[U-CA=iso8601]", "invalid capitalized key"], + ["1970-01-01[u-CA=iso8601]", "invalid partially-capitalized key"], + ["1970-01-01[FOO=bar]", "invalid capitalized unrecognized key"], +]; +const instance = new Temporal.Calendar("iso8601"); +invalidStrings.forEach(([arg, descr]) => { + assert.throws( + RangeError, + () => instance.eraYear(arg), + `annotation keys must be lowercase: ${arg} - ${descr}` + ); +}); From c8a876b1d9c309417706f909ab4800fc6bcd0478 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Fri, 23 Feb 2024 08:17:53 -0800 Subject: [PATCH 30/59] Temporal: Add clarifying assertion messages normalized-time-duration-to-days-range-errors.js tests for several error cases in the AO NormalizedTimeDurationToDays. Adding assertion messages helps to know which one you are debugging. --- .../normalized-time-duration-to-days-range-errors.js | 9 ++++++--- .../normalized-time-duration-to-days-range-errors.js | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-range-errors.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-range-errors.js index 997e060c595..b579a2e2d61 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-range-errors.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/normalized-time-duration-to-days-range-errors.js @@ -62,7 +62,8 @@ assert.throws(RangeError, () => start.since( oneZDT, // Sets DifferenceZonedDateTime _ns2_ options - ) + ), + "days < 0 and sign = 1" ); // Step 24: days > 0 and sign = -1 @@ -86,7 +87,8 @@ assert.throws(RangeError, () => start.since( zeroZDT, // Sets DifferenceZonedDateTime _ns2_ options - ) + ), + "days > 0 and sign = -1" ); // Step 26: nanoseconds > 0 and sign = -1 @@ -110,7 +112,8 @@ assert.throws(RangeError, () => start.since( zeroZDT, // Sets DifferenceZonedDateTime _ns2_ options - ) + ), + "norm > 0 and sign = -1" ); // Step 29: day length is an unsafe integer diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-range-errors.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-range-errors.js index ea2ebabe430..e96491630f2 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-range-errors.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/normalized-time-duration-to-days-range-errors.js @@ -62,7 +62,8 @@ assert.throws(RangeError, () => start.until( oneZDT, // Sets DifferenceZonedDateTime _ns2_ options - ) + ), + "days < 0 and sign = 1" ); // Step 24: days > 0 and sign = -1 @@ -86,7 +87,8 @@ assert.throws(RangeError, () => start.until( zeroZDT, // Sets DifferenceZonedDateTime _ns2_ options - ) + ), + "days > 0 and sign = -1" ); // Step 26: nanoseconds > 0 and sign = -1 @@ -110,7 +112,8 @@ assert.throws(RangeError, () => start.until( zeroZDT, // Sets DifferenceZonedDateTime _ns2_ options - ) + ), + "norm > 0 and sign = -1" ); // Step 29: day length is an unsafe integer From c4f57786710a60f0fbf5f49b6a7fd8828651594e Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Fri, 23 Feb 2024 17:25:45 -0800 Subject: [PATCH 31/59] Temporal: Add tests for mixed signs in DifferenceTemporalPlainDateTime With test cases kindly provided by Anba, this adds test coverage for the abrupt completion in the last step of DifferenceTemporalPlainDateTime, where the resulting Duration components have mixed signs. See: https://github.com/tc39/proposal-temporal/issues/2783 --- .../prototype/since/result-mixed-sign.js | 26 +++++++++++++++++++ .../prototype/until/result-mixed-sign.js | 26 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/since/result-mixed-sign.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/until/result-mixed-sign.js diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/since/result-mixed-sign.js b/test/built-ins/Temporal/PlainDateTime/prototype/since/result-mixed-sign.js new file mode 100644 index 00000000000..f3ad9710e6d --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/since/result-mixed-sign.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.since +description: > + RangeError when inconsistent custom calendar method causes mixed signs of + Duration components +features: [Temporal] +---*/ + +// Test case provided by André Bargull + +const cal = new (class extends Temporal.Calendar { + dateAdd(date, duration, options) { + return super.dateAdd(date, duration.negated(), options); + } +})("iso8601"); + +const one = new Temporal.PlainDateTime(2000, 1, 1, 0, 0, 0, 0, 0, 0, cal); +const two = new Temporal.PlainDateTime(2020, 5, 10, 12, 12, 0, 0, 0, 0, cal); + +assert.throws(RangeError, () => two.since(one, { + largestUnit: "years", + smallestUnit: "hours" +})); diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/until/result-mixed-sign.js b/test/built-ins/Temporal/PlainDateTime/prototype/until/result-mixed-sign.js new file mode 100644 index 00000000000..a0a00d07234 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/until/result-mixed-sign.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.until +description: > + RangeError when inconsistent custom calendar method causes mixed signs of + Duration components +features: [Temporal] +---*/ + +// Test case provided by André Bargull + +const cal = new (class extends Temporal.Calendar { + dateAdd(date, duration, options) { + return super.dateAdd(date, duration.negated(), options); + } +})("iso8601"); + +const one = new Temporal.PlainDateTime(2000, 1, 1, 0, 0, 0, 0, 0, 0, cal); +const two = new Temporal.PlainDateTime(2020, 5, 10, 12, 12, 0, 0, 0, 0, cal); + +assert.throws(RangeError, () => one.until(two, { + largestUnit: "years", + smallestUnit: "hours" +})); From f03883c7bb7ef0aaeca00439e014eccc7b4d7dc5 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Fri, 23 Feb 2024 17:58:22 -0800 Subject: [PATCH 32/59] Temporal: Fix assertion message about float64-representable integer This test isn't testing what the assertion message previously said it was testing. The integer is allowed to be unsafe, but in this case its float64-representation is out of range. See: https://github.com/tc39/proposal-temporal/issues/2785 --- .../out-of-range-when-converting-from-normalized-duration.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/built-ins/Temporal/Duration/prototype/round/out-of-range-when-converting-from-normalized-duration.js b/test/built-ins/Temporal/Duration/prototype/round/out-of-range-when-converting-from-normalized-duration.js index a6f47963ff2..bcac75e573f 100644 --- a/test/built-ins/Temporal/Duration/prototype/round/out-of-range-when-converting-from-normalized-duration.js +++ b/test/built-ins/Temporal/Duration/prototype/round/out-of-range-when-converting-from-normalized-duration.js @@ -13,4 +13,4 @@ const d = new Temporal.Duration(0, 0, 0, 0, 0, 0, /* s = */ Number.MAX_SAFE_INTE assert.throws(RangeError, () => d.round({ largestUnit: "nanoseconds", roundingIncrement: 1, -}), "nanoseconds component is an unsafe integer after balancing"); +}), "nanoseconds component after balancing as a float64-representable integer is out of range"); From d7aec8e178369bec755d308adb0613d760a7c864 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 11 Mar 2024 18:19:33 -0700 Subject: [PATCH 33/59] Temporal: Add test for Duration going out of range after rounding After rounding relative to a ZonedDateTime, we have to potentially adjust for DST. With a time zone providing nonsensical values, the duration may go out of range. See: tc39/proposal-temporal#2801 --- ...ut-of-range-when-adjusting-rounded-days.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 test/built-ins/Temporal/Duration/prototype/round/out-of-range-when-adjusting-rounded-days.js diff --git a/test/built-ins/Temporal/Duration/prototype/round/out-of-range-when-adjusting-rounded-days.js b/test/built-ins/Temporal/Duration/prototype/round/out-of-range-when-adjusting-rounded-days.js new file mode 100644 index 00000000000..e88abfd374d --- /dev/null +++ b/test/built-ins/Temporal/Duration/prototype/round/out-of-range-when-adjusting-rounded-days.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.duration.prototype.round +description: > + When adjusting the rounded days after rounding relative to a ZonedDateTime, + the duration may go out of range +features: [Temporal] +includes: [temporalHelpers.js] +---*/ + +// Based on a test case by André Bargull + +const d = new Temporal.Duration(0, 0, 0, /* days = */ 1, 0, 0, /* s = */ Number.MAX_SAFE_INTEGER - 86400, 0, 0, /* ns = */ 999_999_999); + +const timeZone = new Temporal.TimeZone("UTC"); +TemporalHelpers.substituteMethod(timeZone, 'getPossibleInstantsFor', [ + TemporalHelpers.SUBSTITUTE_SKIP, + [new Temporal.Instant(1n)], +]); + +const relativeTo = new Temporal.ZonedDateTime(0n, timeZone); + +assert.throws(RangeError, () => d.round({ + largestUnit: 'nanoseconds', + roundingIncrement: 2, + relativeTo +})); From 0cb219ffe066b67c988a0d5ff91efe3d3ea65708 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 18 Mar 2024 16:59:54 -0700 Subject: [PATCH 34/59] Temporal: Fix argument-propertybag-calendar-number testing the wrong methods Due to overlooked copy-paste errors we were creating the wrong type of instance in these tests, and therefore testing the wrong method. (Add blank line for consistency with the other instances of these tests.) --- .../prototype/dateAdd/argument-propertybag-calendar-number.js | 3 ++- .../prototype/since/argument-propertybag-calendar-number.js | 3 ++- .../prototype/until/argument-propertybag-calendar-number.js | 3 ++- .../withPlainDate/argument-propertybag-calendar-number.js | 3 ++- .../toPlainDateTime/argument-propertybag-calendar-number.js | 3 ++- .../prototype/since/argument-propertybag-calendar-number.js | 3 ++- .../prototype/until/argument-propertybag-calendar-number.js | 3 ++- 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-number.js b/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-number.js index 9af992bec5f..3f027c64fd2 100644 --- a/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-number.js +++ b/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-number.js @@ -7,7 +7,7 @@ description: A number as calendar in a property bag is not accepted features: [Temporal] ---*/ -const instance = new Temporal.PlainDate(1976, 11, 18); +const instance = new Temporal.Calendar("iso8601"); const numbers = [ 1, @@ -15,6 +15,7 @@ const numbers = [ -19970327, 1234567890, ]; + for (const calendar of numbers) { const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; assert.throws( diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-number.js b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-number.js index 809a68f3caf..866053f4898 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-number.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-number.js @@ -7,7 +7,7 @@ description: A number as calendar in a property bag is not accepted features: [Temporal] ---*/ -const instance = new Temporal.PlainDate(1976, 11, 18); +const instance = new Temporal.PlainDateTime(1976, 11, 18); const numbers = [ 1, @@ -15,6 +15,7 @@ const numbers = [ -19970327, 1234567890, ]; + for (const calendar of numbers) { const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; assert.throws( diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-number.js b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-number.js index 96077077da0..42eb4522659 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-number.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-number.js @@ -7,7 +7,7 @@ description: A number as calendar in a property bag is not accepted features: [Temporal] ---*/ -const instance = new Temporal.PlainDate(1976, 11, 18); +const instance = new Temporal.PlainDateTime(1976, 11, 18); const numbers = [ 1, @@ -15,6 +15,7 @@ const numbers = [ -19970327, 1234567890, ]; + for (const calendar of numbers) { const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; assert.throws( diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-number.js b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-number.js index 3a403956fda..b96d19e5047 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-number.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-number.js @@ -7,7 +7,7 @@ description: A number as calendar in a property bag is not accepted features: [Temporal] ---*/ -const instance = new Temporal.PlainDate(1976, 11, 18); +const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); const numbers = [ 1, @@ -15,6 +15,7 @@ const numbers = [ -19970327, 1234567890, ]; + for (const calendar of numbers) { const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; assert.throws( diff --git a/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-number.js b/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-number.js index 2b2a6d8b318..0bf7766f5da 100644 --- a/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-number.js +++ b/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-number.js @@ -7,7 +7,7 @@ description: A number as calendar in a property bag is not accepted features: [Temporal] ---*/ -const instance = new Temporal.PlainDate(1976, 11, 18); +const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); const numbers = [ 1, @@ -15,6 +15,7 @@ const numbers = [ -19970327, 1234567890, ]; + for (const calendar of numbers) { const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; assert.throws( diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-number.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-number.js index 791b0eda621..07cec8d7847 100644 --- a/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-number.js +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-number.js @@ -7,7 +7,7 @@ description: A number as calendar in a property bag is not accepted features: [Temporal] ---*/ -const instance = new Temporal.PlainDate(1976, 11, 18); +const instance = new Temporal.PlainYearMonth(2019, 6); const numbers = [ 1, @@ -15,6 +15,7 @@ const numbers = [ -19970327, 1234567890, ]; + for (const calendar of numbers) { const arg = { year: 2019, monthCode: "M06", calendar }; assert.throws( diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-number.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-number.js index 2e99be53293..af85b1d2129 100644 --- a/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-number.js +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-number.js @@ -7,7 +7,7 @@ description: A number as calendar in a property bag is not accepted features: [Temporal] ---*/ -const instance = new Temporal.PlainDate(1976, 11, 18); +const instance = new Temporal.PlainYearMonth(2019, 6); const numbers = [ 1, @@ -15,6 +15,7 @@ const numbers = [ -19970327, 1234567890, ]; + for (const calendar of numbers) { const arg = { year: 2019, monthCode: "M06", calendar }; assert.throws( From b4b574fca11238cb558f188403c2bd46f23d41d2 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 18 Mar 2024 17:02:04 -0700 Subject: [PATCH 35/59] Temporal: argument-propertybag-calendar-year-zero testing the wrong thing These tests were supposed to test an invalid ISO string being used as the `calendar` property in a property bag. Instead they were testing being used as an invalid ISO string directly where a PlainDate input was needed. (That is also already covered elsewhere.) --- .../dateAdd/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/day/argument-propertybag-calendar-year-zero.js | 3 ++- .../dayOfWeek/argument-propertybag-calendar-year-zero.js | 3 ++- .../dayOfYear/argument-propertybag-calendar-year-zero.js | 3 ++- .../daysInMonth/argument-propertybag-calendar-year-zero.js | 3 ++- .../daysInWeek/argument-propertybag-calendar-year-zero.js | 3 ++- .../daysInYear/argument-propertybag-calendar-year-zero.js | 3 ++- .../inLeapYear/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/month/argument-propertybag-calendar-year-zero.js | 3 ++- .../monthCode/argument-propertybag-calendar-year-zero.js | 3 ++- .../monthsInYear/argument-propertybag-calendar-year-zero.js | 3 ++- .../weekOfYear/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/year/argument-propertybag-calendar-year-zero.js | 3 ++- .../yearOfWeek/argument-propertybag-calendar-year-zero.js | 3 ++- .../PlainDate/from/argument-propertybag-calendar-year-zero.js | 3 ++- .../equals/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/since/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/until/argument-propertybag-calendar-year-zero.js | 3 ++- .../from/argument-propertybag-calendar-year-zero.js | 3 ++- .../equals/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/since/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/until/argument-propertybag-calendar-year-zero.js | 3 ++- .../withPlainDate/argument-propertybag-calendar-year-zero.js | 3 ++- .../from/argument-propertybag-calendar-year-zero.js | 3 ++- .../equals/argument-propertybag-calendar-year-zero.js | 3 ++- .../toPlainDateTime/argument-propertybag-calendar-year-zero.js | 3 ++- .../toZonedDateTime/argument-propertybag-calendar-year-zero.js | 3 ++- .../from/argument-propertybag-calendar-year-zero.js | 3 ++- .../equals/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/since/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/until/argument-propertybag-calendar-year-zero.js | 3 ++- .../getInstantFor/argument-propertybag-calendar-year-zero.js | 3 ++- .../argument-propertybag-calendar-year-zero.js | 3 ++- .../from/argument-propertybag-calendar-year-zero.js | 3 ++- .../equals/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/since/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/until/argument-propertybag-calendar-year-zero.js | 3 ++- .../withPlainDate/argument-propertybag-calendar-year-zero.js | 3 ++- .../prototype/era/argument-propertybag-calendar-year-zero.js | 3 ++- .../eraYear/argument-propertybag-calendar-year-zero.js | 3 ++- 40 files changed, 80 insertions(+), 40 deletions(-) diff --git a/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-year-zero.js index e5d004cb0b6..300b7d26161 100644 --- a/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.dateAdd(arg, new Temporal.Duration()), diff --git a/test/built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-year-zero.js index cf64d454b0e..db6c1e0a3a3 100644 --- a/test/built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.day(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-year-zero.js index 871fd744633..c7dfa7db059 100644 --- a/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.dayOfWeek(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-year-zero.js index 7335b890c4d..a5217dbd38c 100644 --- a/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.dayOfYear(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-year-zero.js index 1f273d6d431..462d8e42c44 100644 --- a/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.daysInMonth(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-year-zero.js index 0c27c02bfaa..70335a5d01c 100644 --- a/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.daysInWeek(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-year-zero.js index 62a9e6d18e9..3ba5ba745e2 100644 --- a/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.daysInYear(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-year-zero.js index 4a5b92aea81..bcfca66ad95 100644 --- a/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.inLeapYear(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-year-zero.js index 1d41054f50a..24d8f499a0a 100644 --- a/test/built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.month(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-year-zero.js index 1f385c2203e..10ea00aee6d 100644 --- a/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.monthCode(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-year-zero.js index 1d4af99f7ba..aa7239a6a59 100644 --- a/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.monthsInYear(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-year-zero.js index 5f8dcccc986..f7cc984a481 100644 --- a/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.weekOfYear(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-year-zero.js index 6f68cf3e847..ac7684893e8 100644 --- a/test/built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.year(arg), diff --git a/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-year-zero.js index 3ea0af23ac6..b142817d28c 100644 --- a/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.yearOfWeek(arg), diff --git a/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-year-zero.js index daafcd37aa3..55b6e464ca2 100644 --- a/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => Temporal.PlainDate.from(arg), diff --git a/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-year-zero.js index 6263cc5a70c..a3ecf55b98e 100644 --- a/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainDate(2000, 5, 2); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.equals(arg), diff --git a/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-year-zero.js index 10fe06753d0..030e2d07ca6 100644 --- a/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainDate(2000, 5, 2); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.since(arg), diff --git a/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-year-zero.js index 6ed6fb9e30c..61939cd4255 100644 --- a/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainDate(2000, 5, 2); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.until(arg), diff --git a/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-year-zero.js index 833ed2f08dd..470eed5ac3b 100644 --- a/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => Temporal.PlainDateTime.from(arg), diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-year-zero.js index 2ada66e34e4..cfac1a84107 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.equals(arg), diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-year-zero.js index 26dd4d767b0..2cb8e97180e 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.since(arg), diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-year-zero.js index 37739804972..87243748176 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.until(arg), diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-year-zero.js index bb85c7bec1e..2f0296344c2 100644 --- a/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.withPlainDate(arg), diff --git a/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-year-zero.js index c71ce5ee2d7..da02a580d67 100644 --- a/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => Temporal.PlainMonthDay.from(arg), diff --git a/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-year-zero.js index b50c75421c3..cf0655eb06e 100644 --- a/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainMonthDay(5, 2); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.equals(arg), diff --git a/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-year-zero.js index 802381765cf..d38f883b16c 100644 --- a/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.toPlainDateTime(arg), diff --git a/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-year-zero.js index fb6c3eca800..48e03d27acf 100644 --- a/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.toZonedDateTime({ plainDate: arg, timeZone: "UTC" }), diff --git a/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-year-zero.js index 60b0d944909..1f08bc321c8 100644 --- a/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => Temporal.PlainYearMonth.from(arg), diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-year-zero.js index b5e0c3045ca..0caeb9c56a8 100644 --- a/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainYearMonth(2000, 5); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.equals(arg), diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-year-zero.js index c4701a3aeb9..dea52a4b067 100644 --- a/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainYearMonth(2000, 5); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.since(arg), diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-year-zero.js index d8a718b0add..1a54bc46d13 100644 --- a/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.PlainYearMonth(2000, 5); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.until(arg), diff --git a/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-year-zero.js index f282e30534b..8efeeb208e3 100644 --- a/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.TimeZone("UTC"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.getInstantFor(arg), diff --git a/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-year-zero.js index 44bb062dcdc..4a9389ca8b0 100644 --- a/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.TimeZone("UTC"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.getPossibleInstantsFor(arg), diff --git a/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-year-zero.js index ffabba823fc..ce53e72f179 100644 --- a/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => Temporal.ZonedDateTime.from(arg), diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-year-zero.js index 007750f2044..dd1eae6d6a3 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-year-zero.js @@ -16,7 +16,8 @@ const invalidStrings = [ ]; const timeZone = new Temporal.TimeZone("UTC"); const instance = new Temporal.ZonedDateTime(0n, timeZone); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.equals(arg), diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-year-zero.js index 30d5f0cf5f7..5c294a53737 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-year-zero.js @@ -16,7 +16,8 @@ const invalidStrings = [ ]; const timeZone = new Temporal.TimeZone("UTC"); const instance = new Temporal.ZonedDateTime(0n, timeZone); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.since(arg), diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-year-zero.js index f3355384ff3..be524e3ecb6 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-year-zero.js @@ -16,7 +16,8 @@ const invalidStrings = [ ]; const timeZone = new Temporal.TimeZone("UTC"); const instance = new Temporal.ZonedDateTime(0n, timeZone); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.until(arg), diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-year-zero.js b/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-year-zero.js index 5bd85409f33..6841131845e 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-year-zero.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-year-zero.js @@ -16,7 +16,8 @@ const invalidStrings = [ ]; const timeZone = new Temporal.TimeZone("UTC"); const instance = new Temporal.ZonedDateTime(1_000_000_000_000_000_000n, timeZone); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.withPlainDate(arg), diff --git a/test/intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-year-zero.js b/test/intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-year-zero.js index ccdbfd47285..6d22ba17196 100644 --- a/test/intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-year-zero.js +++ b/test/intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.era(arg), diff --git a/test/intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-year-zero.js b/test/intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-year-zero.js index 3007055aeca..d3ca806afdb 100644 --- a/test/intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-year-zero.js +++ b/test/intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-year-zero.js @@ -15,7 +15,8 @@ const invalidStrings = [ "-000000-10-31T17:45+00:00[UTC]", ]; const instance = new Temporal.Calendar("iso8601"); -invalidStrings.forEach((arg) => { +invalidStrings.forEach((str) => { + const arg = { year: 1976, month: 11, day: 18, calendar: str }; assert.throws( RangeError, () => instance.eraYear(arg), From a8da70622daa11ba89c455582802a056c38eba42 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Wed, 20 Mar 2024 16:08:12 -0700 Subject: [PATCH 36/59] Temporal: Tests for calendar.dateFromFields options in PYM/PMD.toPlainDate It was previously not tested what options value a custom calendar's dateFromFields() method would be called with, when called from the toPlainDate() method of PlainYearMonth/PlainMonthDay. See tc39/proposal-temporal#2803 --- ...romfields-called-with-undefined-options.js | 22 +++++++++++++++++++ ...romfields-called-with-undefined-options.js | 22 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 test/built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/calendar-fromfields-called-with-undefined-options.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/calendar-fromfields-called-with-undefined-options.js diff --git a/test/built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/calendar-fromfields-called-with-undefined-options.js b/test/built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/calendar-fromfields-called-with-undefined-options.js new file mode 100644 index 00000000000..a28e2208b67 --- /dev/null +++ b/test/built-ins/Temporal/PlainMonthDay/prototype/toPlainDate/calendar-fromfields-called-with-undefined-options.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.prototype.toplaindate +description: Calendar.dateFromFields method is called with undefined options +features: [Temporal] +---*/ + +let count = 0; + +const calendar = new class extends Temporal.Calendar { + dateFromFields(fields, options) { + count++; + assert.sameValue(options, undefined, "dateFromFields should be called with undefined options"); + return super.dateFromFields(fields, options); + } +}("iso8601"); + +const instance = new Temporal.PlainMonthDay(5, 2, calendar); +instance.toPlainDate({ year: 2019 }); +assert.sameValue(count, 1, "dateFromFields should have been called on the calendar"); diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/calendar-fromfields-called-with-undefined-options.js b/test/built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/calendar-fromfields-called-with-undefined-options.js new file mode 100644 index 00000000000..2b3f8fc8bf9 --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/toPlainDate/calendar-fromfields-called-with-undefined-options.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.toplaindate +description: Calendar.dateFromFields method is called with undefined options +features: [Temporal] +---*/ + +let count = 0; + +const calendar = new class extends Temporal.Calendar { + dateFromFields(fields, options) { + count++; + assert.sameValue(options, undefined, "dateFromFields should be called with undefined options"); + return super.dateFromFields(fields, options); + } +}("iso8601"); + +const instance = new Temporal.PlainYearMonth(2000, 5, calendar); +instance.toPlainDate({ day: 24 }); +assert.sameValue(count, 1, "dateFromFields should have been called on the calendar"); From a074d97c5bdc8d230b5bfb815cc006a3afbbf6ab Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Tue, 26 Mar 2024 09:58:25 -0700 Subject: [PATCH 37/59] Temporal: Tests for conversion of ISO 8601 string to ISO 8601 calendar See https://github.com/tc39/proposal-temporal/issues/2105. This was not covered yet in test262. --- .../Calendar/from/calendar-iso-string.js | 22 +++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 28 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ .../toZonedDateTime/calendar-iso-string.js | 24 ++++++++++ .../Now/plainDate/calendar-iso-string.js | 22 +++++++++ .../Now/plainDateTime/calendar-iso-string.js | 22 +++++++++ .../Now/zonedDateTime/calendar-iso-string.js | 22 +++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ .../withCalendar/calendar-iso-string.js | 46 +++++++++++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ .../withCalendar/calendar-iso-string.js | 46 +++++++++++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ .../calendar-iso-string.js | 24 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 27 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 27 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 27 +++++++++++ .../withCalendar/calendar-iso-string.js | 46 +++++++++++++++++++ ...rgument-propertybag-calendar-iso-string.js | 26 +++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ ...rgument-propertybag-calendar-iso-string.js | 25 ++++++++++ 54 files changed, 1420 insertions(+) create mode 100644 test/built-ins/Temporal/Calendar/from/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/dateUntil/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Now/plainDate/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Now/plainDateTime/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/Now/zonedDateTime/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-iso-string.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-iso-string.js create mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-iso-string.js create mode 100644 test/intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-iso-string.js create mode 100644 test/intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-iso-string.js diff --git a/test/built-ins/Temporal/Calendar/from/calendar-iso-string.js b/test/built-ins/Temporal/Calendar/from/calendar-iso-string.js new file mode 100644 index 00000000000..b7793d7875f --- /dev/null +++ b/test/built-ins/Temporal/Calendar/from/calendar-iso-string.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.from +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = Temporal.Calendar.from(arg); + assert.sameValue(result.id, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..f69e45bfac8 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/dateAdd/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.dateadd +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.dateAdd(arg, new Temporal.Duration()); + TemporalHelpers.assertPlainDate(result, 1976, 11, "M11", 18, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/dateUntil/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/dateUntil/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..a86e90aaa64 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/dateUntil/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.dateuntil +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result1 = instance.dateUntil(arg, new Temporal.PlainDate(1976, 11, 19)); + TemporalHelpers.assertDuration(result1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}" (first argument)`); + const result2 = instance.dateUntil(new Temporal.PlainDate(1976, 11, 19), arg); + TemporalHelpers.assertDuration(result2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}" (second argument)`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..3b27c619703 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/day/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.day +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.day(arg); + assert.sameValue(result, 18, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..7b631ec7c28 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/dayOfWeek/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.dayofweek +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.dayOfWeek(arg); + assert.sameValue(result, 4, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..d33484f8a22 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/dayOfYear/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.dayofyear +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.dayOfYear(arg); + assert.sameValue(result, 323, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..e78affabc26 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/daysInMonth/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.daysinmonth +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.daysInMonth(arg); + assert.sameValue(result, 30, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..d6165f639fb --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/daysInWeek/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.daysinweek +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.daysInWeek(arg); + assert.sameValue(result, 7, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..1fc57421437 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/daysInYear/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.daysinyear +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.daysInYear(arg); + assert.sameValue(result, 366, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..01b3ac6f8fc --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/inLeapYear/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.inleapyear +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.inLeapYear(arg); + assert.sameValue(result, true, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..6588ae23183 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/month/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.month +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.month(arg); + assert.sameValue(result, 11, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..8e546fbfe63 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/monthCode/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.monthcode +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.monthCode(arg); + assert.sameValue(result, "M11", `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..920e9f49d1e --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/monthsInYear/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.monthsinyear +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.monthsInYear(arg); + assert.sameValue(result, 12, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..33e0ecf68d1 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/weekOfYear/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.weekofyear +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.weekOfYear(arg); + assert.sameValue(result, 47, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..7f27c234084 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/year/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.year +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.year(arg); + assert.sameValue(result, 1976, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..bd8661a00f5 --- /dev/null +++ b/test/built-ins/Temporal/Calendar/prototype/yearOfWeek/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.yearofweek +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.yearOfWeek(arg); + assert.sameValue(result, 1976, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-iso-string.js b/test/built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-iso-string.js new file mode 100644 index 00000000000..d915430467d --- /dev/null +++ b/test/built-ins/Temporal/Instant/prototype/toZonedDateTime/calendar-iso-string.js @@ -0,0 +1,24 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.instant.prototype.tozoneddatetime +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Instant(1_000_000_000_000_000_000n); + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = instance.toZonedDateTime({ calendar: arg, timeZone: "UTC" }); + assert.sameValue(result.getISOFields().calendar, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/Now/plainDate/calendar-iso-string.js b/test/built-ins/Temporal/Now/plainDate/calendar-iso-string.js new file mode 100644 index 00000000000..0a087831a78 --- /dev/null +++ b/test/built-ins/Temporal/Now/plainDate/calendar-iso-string.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.now.plaindate +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = Temporal.Now.plainDate(arg); + assert.sameValue(result.getISOFields().calendar, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/Now/plainDateTime/calendar-iso-string.js b/test/built-ins/Temporal/Now/plainDateTime/calendar-iso-string.js new file mode 100644 index 00000000000..cd4a2081001 --- /dev/null +++ b/test/built-ins/Temporal/Now/plainDateTime/calendar-iso-string.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.now.plaindatetime +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = Temporal.Now.plainDateTime(arg); + assert.sameValue(result.getISOFields().calendar, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/Now/zonedDateTime/calendar-iso-string.js b/test/built-ins/Temporal/Now/zonedDateTime/calendar-iso-string.js new file mode 100644 index 00000000000..a370080d317 --- /dev/null +++ b/test/built-ins/Temporal/Now/zonedDateTime/calendar-iso-string.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.now.zoneddatetime +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = Temporal.Now.zonedDateTime(arg); + assert.sameValue(result.getISOFields().calendar, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..d54e4992d2c --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/compare/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.compare +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result1 = Temporal.PlainDate.compare(arg, new Temporal.PlainDate(1976, 11, 18)); + assert.sameValue(result1, 0, `Calendar created from string "${calendar}" (first argument)`); + const result2 = Temporal.PlainDate.compare(new Temporal.PlainDate(1976, 11, 18), arg); + assert.sameValue(result2, 0, `Calendar created from string "${calendar}" (second argument)`); +} diff --git a/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..0b02a975098 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/from/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.from +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = Temporal.PlainDate.from(arg); + TemporalHelpers.assertPlainDate(result, 1976, 11, "M11", 18, `Calendar created from string "${calendar}"`); + assert.sameValue(result.getISOFields().calendar, "iso8601", "calendar slot stores a string"); +} diff --git a/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..354fccf7c4b --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/equals/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.equals +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDate(1976, 11, 18); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.equals(arg); + assert.sameValue(result, true, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..12e684e9c13 --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/since/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.since +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDate(1976, 11, 18); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.since(arg); + TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..daf9356f97c --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/until/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.until +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDate(1976, 11, 18); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.until(arg); + TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-iso-string.js b/test/built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-iso-string.js new file mode 100644 index 00000000000..aa99e6cae0a --- /dev/null +++ b/test/built-ins/Temporal/PlainDate/prototype/withCalendar/calendar-iso-string.js @@ -0,0 +1,46 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.withcalendar +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDate(1976, 11, 18, { + dateAdd() {}, + dateFromFields() {}, + dateUntil() {}, + day() {}, + dayOfWeek() {}, + dayOfYear() {}, + daysInMonth() {}, + daysInWeek() {}, + daysInYear() {}, + fields() {}, + id: "replace-me", + inLeapYear() {}, + mergeFields() {}, + month() {}, + monthCode() {}, + monthDayFromFields() {}, + monthsInYear() {}, + weekOfYear() {}, + year() {}, + yearMonthFromFields() {}, + yearOfWeek() {}, +}); + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = instance.withCalendar(arg); + assert.sameValue(result.getISOFields().calendar, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..1c1982b4925 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/compare/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.compare +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result1 = Temporal.PlainDateTime.compare(arg, new Temporal.PlainDateTime(1976, 11, 18)); + assert.sameValue(result1, 0, `Calendar created from string "${calendar}" (first argument)`); + const result2 = Temporal.PlainDateTime.compare(new Temporal.PlainDateTime(1976, 11, 18), arg); + assert.sameValue(result2, 0, `Calendar created from string "${calendar}" (second argument)`); +} diff --git a/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..46bf466c9e1 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/from/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.from +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = Temporal.PlainDateTime.from(arg); + TemporalHelpers.assertPlainDateTime(result, 1976, 11, "M11", 18, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); + assert.sameValue(result.getISOFields().calendar, "iso8601", "calendar slot stores a string"); +} diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..42e5c7304f0 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/equals/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.equals +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(1976, 11, 18); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.equals(arg); + assert.sameValue(result, true, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..687eddc03b8 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/since/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.since +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(1976, 11, 18); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.since(arg); + TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..a780fb8b272 --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/until/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.until +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(1976, 11, 18); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.until(arg); + TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-iso-string.js b/test/built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-iso-string.js new file mode 100644 index 00000000000..b6f4899488d --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/withCalendar/calendar-iso-string.js @@ -0,0 +1,46 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.withcalendar +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(1976, 11, 18, 15, 23, 30, 123, 456, 789, { + dateAdd() {}, + dateFromFields() {}, + dateUntil() {}, + day() {}, + dayOfWeek() {}, + dayOfYear() {}, + daysInMonth() {}, + daysInWeek() {}, + daysInYear() {}, + fields() {}, + id: "replace-me", + inLeapYear() {}, + mergeFields() {}, + month() {}, + monthCode() {}, + monthDayFromFields() {}, + monthsInYear() {}, + weekOfYear() {}, + year() {}, + yearMonthFromFields() {}, + yearOfWeek() {}, +}); + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = instance.withCalendar(arg); + assert.sameValue(result.getISOFields().calendar, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..cea0b68244c --- /dev/null +++ b/test/built-ins/Temporal/PlainDateTime/prototype/withPlainDate/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.withplaindate +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.PlainDateTime(2000, 5, 2, 12, 34, 56, 987, 654, 321); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.withPlainDate(arg); + TemporalHelpers.assertPlainDateTime(result, 1976, 11, "M11", 18, 12, 34, 56, 987, 654, 321, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..d19bf877cc0 --- /dev/null +++ b/test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.from +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { monthCode: "M11", day: 18, calendar }; + const result = Temporal.PlainMonthDay.from(arg); + TemporalHelpers.assertPlainMonthDay(result, "M11", 18, `Calendar created from string "${calendar}"`); + assert.sameValue(result.getISOFields().calendar, "iso8601", "calendar slot stores a string"); +} diff --git a/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..00ec8c8eab8 --- /dev/null +++ b/test/built-ins/Temporal/PlainMonthDay/prototype/equals/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.prototype.equals +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.PlainMonthDay(11, 18); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { monthCode: "M11", day: 18, calendar }; + const result = instance.equals(arg); + assert.sameValue(result, true, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..f15caa7beeb --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/prototype/toPlainDateTime/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.prototype.toplaindatetime +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.toPlainDateTime(arg); + TemporalHelpers.assertPlainDateTime(result, 1976, 11, "M11", 18, 12, 34, 56, 987, 654, 321, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..61f5112e54f --- /dev/null +++ b/test/built-ins/Temporal/PlainTime/prototype/toZonedDateTime/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaintime.prototype.tozoneddatetime +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.PlainTime(12, 34, 56, 987, 654, 321); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.toZonedDateTime({ plainDate: arg, timeZone: "UTC" }); + assert.sameValue(result.epochNanoseconds, 217_168_496_987_654_321n, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..22dab44b66b --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/compare/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.compare +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 2019, monthCode: "M06", calendar }; + const result1 = Temporal.PlainYearMonth.compare(arg, new Temporal.PlainYearMonth(2019, 6)); + assert.sameValue(result1, 0, `Calendar created from string "${calendar}" (first argument)`); + const result2 = Temporal.PlainYearMonth.compare(new Temporal.PlainYearMonth(2019, 6), arg); + assert.sameValue(result2, 0, `Calendar created from string "${calendar}" (second argument)`); +} diff --git a/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..152900e85fb --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.from +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 2019, monthCode: "M06", calendar }; + const result = Temporal.PlainYearMonth.from(arg); + TemporalHelpers.assertPlainYearMonth(result, 2019, 6, "M06", `Calendar created from string "${calendar}"`); + assert.sameValue(result.getISOFields().calendar, "iso8601", "calendar slot stores a string"); +} diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..b99bc3a6c61 --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/equals/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.equals +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.PlainYearMonth(2019, 6); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 2019, monthCode: "M06", calendar }; + const result = instance.equals(arg); + assert.sameValue(result, true, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..c4535f774ed --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/since/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.since +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.PlainYearMonth(2019, 6); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 2019, monthCode: "M06", calendar }; + const result = instance.since(arg); + TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..004e53c88db --- /dev/null +++ b/test/built-ins/Temporal/PlainYearMonth/prototype/until/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.until +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const instance = new Temporal.PlainYearMonth(2019, 6); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 2019, monthCode: "M06", calendar }; + const result = instance.until(arg); + TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..17f6f3f7f14 --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getInstantFor/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getinstantfor +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.TimeZone("UTC"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.getInstantFor(arg); + assert.sameValue(result.epochNanoseconds, 217_123_200_000_000_000n, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/calendar-iso-string.js b/test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/calendar-iso-string.js new file mode 100644 index 00000000000..0eff62ba92b --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getPlainDateTimeFor/calendar-iso-string.js @@ -0,0 +1,24 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getplaindatetimefor +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.TimeZone("UTC"); + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = instance.getPlainDateTimeFor(new Temporal.Instant(0n), arg); + assert.sameValue(result.getISOFields().calendar, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..fa837475959 --- /dev/null +++ b/test/built-ins/Temporal/TimeZone/prototype/getPossibleInstantsFor/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.timezone.prototype.getpossibleinstantsfor +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [compareArray.js] +features: [Temporal] +---*/ + +const instance = new Temporal.TimeZone("UTC"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.getPossibleInstantsFor(arg); + assert.compareArray(result.map(i => i.epochNanoseconds), [217_123_200_000_000_000n], `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..6ad62aeba9e --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/compare/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.compare +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const datetime = new Temporal.ZonedDateTime(0n, "UTC"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1970, monthCode: "M01", day: 1, timeZone: "UTC", calendar }; + const result1 = Temporal.ZonedDateTime.compare(arg, datetime); + assert.sameValue(result1, 0, `Calendar created from string "${calendar}" (first argument)`); + const result2 = Temporal.ZonedDateTime.compare(datetime, arg); + assert.sameValue(result2, 0, `Calendar created from string "${calendar}" (second argument)`); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..f26955131d7 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/from/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.from +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const timeZone = new Temporal.TimeZone("UTC"); +const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; + const result = Temporal.ZonedDateTime.from(arg); + assert.sameValue(result.calendarId, "iso8601", `Calendar created from string "${calendar}"`); + assert.sameValue(result.getISOFields().calendar, "iso8601", "calendar slot stores a string"); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..3012fc4a3b0 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/equals/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.equals +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const timeZone = new Temporal.TimeZone("UTC"); +const instance = new Temporal.ZonedDateTime(0n, timeZone); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; + const result = instance.equals(arg); + assert.sameValue(result, true, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..8d6e9b9e09e --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/since/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.since +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const timeZone = new Temporal.TimeZone("UTC"); +const instance = new Temporal.ZonedDateTime(0n, timeZone); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; + const result = instance.since(arg); + TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..b3dac55ef3d --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/until/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.until +description: An ISO 8601 string can be converted to a calendar ID in Calendar +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const timeZone = new Temporal.TimeZone("UTC"); +const instance = new Temporal.ZonedDateTime(0n, timeZone); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1970, monthCode: "M01", day: 1, timeZone, calendar }; + const result = instance.until(arg); + TemporalHelpers.assertDuration(result, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, `Calendar created from string "${calendar}"`); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-iso-string.js b/test/built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-iso-string.js new file mode 100644 index 00000000000..0c1fcad9ee3 --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/withCalendar/calendar-iso-string.js @@ -0,0 +1,46 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.withcalendar +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.ZonedDateTime(1_000_000_000_000_000_000n, "UTC", { + dateAdd() {}, + dateFromFields() {}, + dateUntil() {}, + day() {}, + dayOfWeek() {}, + dayOfYear() {}, + daysInMonth() {}, + daysInWeek() {}, + daysInYear() {}, + fields() {}, + id: "replace-me", + inLeapYear() {}, + mergeFields() {}, + month() {}, + monthCode() {}, + monthDayFromFields() {}, + monthsInYear() {}, + weekOfYear() {}, + year() {}, + yearMonthFromFields() {}, + yearOfWeek() {}, +}); + +for (const arg of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const result = instance.withCalendar(arg); + assert.sameValue(result.getISOFields().calendar, "iso8601", `Calendar created from string "${arg}"`); +} diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-iso-string.js b/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..42d0bdc628e --- /dev/null +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/withPlainDate/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.prototype.withplaindate +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const timeZone = new Temporal.TimeZone("UTC"); +const instance = new Temporal.ZonedDateTime(1_000_000_000_000_000_000n, timeZone); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.withPlainDate(arg); + assert.sameValue(result.epochNanoseconds, 217_129_600_000_000_000n, `Calendar created from string "${calendar}"`); +} diff --git a/test/intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-iso-string.js b/test/intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..76da70fa30c --- /dev/null +++ b/test/intl402/Temporal/Calendar/prototype/era/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.era +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.era(arg); + assert.sameValue(result, undefined, `Calendar created from string "${calendar}"`); +} diff --git a/test/intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-iso-string.js b/test/intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-iso-string.js new file mode 100644 index 00000000000..f367f44a568 --- /dev/null +++ b/test/intl402/Temporal/Calendar/prototype/eraYear/argument-propertybag-calendar-iso-string.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.calendar.prototype.erayear +description: An ISO 8601 string can be converted to a calendar ID in Calendar +features: [Temporal] +---*/ + +const instance = new Temporal.Calendar("iso8601"); + +for (const calendar of [ + "2020-01-01", + "2020-01-01[u-ca=iso8601]", + "2020-01-01T00:00:00.000000000", + "2020-01-01T00:00:00.000000000[u-ca=iso8601]", + "01-01", + "01-01[u-ca=iso8601]", + "2020-01", + "2020-01[u-ca=iso8601]", +]) { + const arg = { year: 1976, monthCode: "M11", day: 18, calendar }; + const result = instance.eraYear(arg); + assert.sameValue(result, undefined, `Calendar created from string "${calendar}"`); +} From 63933d1da5946cc39763981ff63b704795feaf58 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Tue, 26 Mar 2024 11:26:14 -0700 Subject: [PATCH 38/59] Temporal: Tests that dateStyle affects toLocaleString output For each Temporal type, add a test (which should not be sensitive to the exact locale format) that ensures dateStyle affects the output, for a Gregorian and non-Gregorian calendar. See https://github.com/tc39/proposal-temporal/issues/2058 --- .../prototype/toLocaleString/dateStyle.js | 28 +++++++++++++++++ .../prototype/toLocaleString/dateStyle.js | 31 +++++++++++++++++++ .../prototype/toLocaleString/dateStyle.js | 31 +++++++++++++++++++ .../prototype/toLocaleString/dateStyle.js | 31 +++++++++++++++++++ .../prototype/toLocaleString/dateStyle.js | 31 +++++++++++++++++++ .../prototype/toLocaleString/dateStyle.js | 31 +++++++++++++++++++ 6 files changed, 183 insertions(+) create mode 100644 test/intl402/Temporal/Instant/prototype/toLocaleString/dateStyle.js create mode 100644 test/intl402/Temporal/PlainDate/prototype/toLocaleString/dateStyle.js create mode 100644 test/intl402/Temporal/PlainDateTime/prototype/toLocaleString/dateStyle.js create mode 100644 test/intl402/Temporal/PlainMonthDay/prototype/toLocaleString/dateStyle.js create mode 100644 test/intl402/Temporal/PlainYearMonth/prototype/toLocaleString/dateStyle.js create mode 100644 test/intl402/Temporal/ZonedDateTime/prototype/toLocaleString/dateStyle.js diff --git a/test/intl402/Temporal/Instant/prototype/toLocaleString/dateStyle.js b/test/intl402/Temporal/Instant/prototype/toLocaleString/dateStyle.js new file mode 100644 index 00000000000..fc2ca84f3d1 --- /dev/null +++ b/test/intl402/Temporal/Instant/prototype/toLocaleString/dateStyle.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.instant.prototype.tolocalestring +description: Basic tests that dateStyle option affects output +locale: [en-u-ca-gregory, en-u-ca-islamic] +features: [Temporal, Intl.DateTimeFormat-datetimestyle] +---*/ + +const instant = new Temporal.Instant(1711475200_000_000_000n); + +assert( + instant.toLocaleString("en-u-ca-gregory", { dateStyle: "long" }).includes("March"), + "dateStyle: long writes month of March out in full" +); +assert( + !instant.toLocaleString("en-u-ca-gregory", { dateStyle: "short" }).includes("March"), + "dateStyle: short does not write month of March out in full" +); +assert( + instant.toLocaleString("en-u-ca-islamic", { dateStyle: "long" }).includes("Ramadan"), + "dateStyle: long writes month of Ramadan out in full" +); +assert( + !instant.toLocaleString("en-u-ca-islamic", { dateStyle: "short" }).includes("Ramadan"), + "dateStyle: short does not write month of Ramadan out in full" +); diff --git a/test/intl402/Temporal/PlainDate/prototype/toLocaleString/dateStyle.js b/test/intl402/Temporal/PlainDate/prototype/toLocaleString/dateStyle.js new file mode 100644 index 00000000000..68db35e0b22 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/prototype/toLocaleString/dateStyle.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.tolocalestring +description: Basic tests that dateStyle option affects output +locale: [en-u-ca-gregory, en-u-ca-islamic] +features: [Temporal, Intl.DateTimeFormat-datetimestyle] +---*/ + +const dateGregorian = new Temporal.PlainDate(2024, 3, 26, "gregory"); + +assert( + dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "long" }).includes("March"), + "dateStyle: long writes month of March out in full" +); +assert( + !dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "short" }).includes("March"), + "dateStyle: short does not write month of March out in full" +); + +const dateIslamic = new Temporal.PlainDate(2024, 3, 26, "islamic"); + +assert( + dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "long" }).includes("Ramadan"), + "dateStyle: long writes month of Ramadan out in full" +); +assert( + !dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "short" }).includes("Ramadan"), + "dateStyle: short does not write month of Ramadan out in full" +); diff --git a/test/intl402/Temporal/PlainDateTime/prototype/toLocaleString/dateStyle.js b/test/intl402/Temporal/PlainDateTime/prototype/toLocaleString/dateStyle.js new file mode 100644 index 00000000000..39f07d6dadf --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/prototype/toLocaleString/dateStyle.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.prototype.tolocalestring +description: Basic tests that dateStyle option affects output +locale: [en-u-ca-gregory, en-u-ca-islamic] +features: [Temporal, Intl.DateTimeFormat-datetimestyle] +---*/ + +const dateGregorian = new Temporal.PlainDateTime(2024, 3, 26, 10, 30, 0, 0, 0, 0, "gregory"); + +assert( + dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "long" }).includes("March"), + "dateStyle: long writes month of March out in full" +); +assert( + !dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "short" }).includes("March"), + "dateStyle: short does not write month of March out in full" +); + +const dateIslamic = new Temporal.PlainDateTime(2024, 3, 26, 10, 30, 0, 0, 0, 0, "islamic"); + +assert( + dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "long" }).includes("Ramadan"), + "dateStyle: long writes month of Ramadan out in full" +); +assert( + !dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "short" }).includes("Ramadan"), + "dateStyle: short does not write month of Ramadan out in full" +); diff --git a/test/intl402/Temporal/PlainMonthDay/prototype/toLocaleString/dateStyle.js b/test/intl402/Temporal/PlainMonthDay/prototype/toLocaleString/dateStyle.js new file mode 100644 index 00000000000..55c855ae54f --- /dev/null +++ b/test/intl402/Temporal/PlainMonthDay/prototype/toLocaleString/dateStyle.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.prototype.tolocalestring +description: Basic tests that dateStyle option affects output +locale: [en-u-ca-gregory, en-u-ca-islamic] +features: [Temporal, Intl.DateTimeFormat-datetimestyle] +---*/ + +const dateGregorian = Temporal.PlainMonthDay.from({ monthCode: "M03", day: 26, calendar: "gregory" }); + +assert( + dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "long" }).includes("March"), + "dateStyle: long writes month of March out in full" +); +assert( + !dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "short" }).includes("March"), + "dateStyle: short does not write month of March out in full" +); + +const dateIslamic = Temporal.PlainMonthDay.from({ monthCode: "M09", day: 16, calendar: "islamic" }); + +assert( + dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "long" }).includes("Ramadan"), + "dateStyle: long writes month of Ramadan out in full" +); +assert( + !dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "short" }).includes("Ramadan"), + "dateStyle: short does not write month of Ramadan out in full" +); diff --git a/test/intl402/Temporal/PlainYearMonth/prototype/toLocaleString/dateStyle.js b/test/intl402/Temporal/PlainYearMonth/prototype/toLocaleString/dateStyle.js new file mode 100644 index 00000000000..0fbb25adeac --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/prototype/toLocaleString/dateStyle.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.prototype.tolocalestring +description: Basic tests that dateStyle option affects output +locale: [en-u-ca-gregory, en-u-ca-islamic] +features: [Temporal, Intl.DateTimeFormat-datetimestyle] +---*/ + +const dateGregorian = Temporal.PlainYearMonth.from({ year: 2024, monthCode: "M03", calendar: "gregory" }); + +assert( + dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "long" }).includes("March"), + "dateStyle: long writes month of March out in full" +); +assert( + !dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "short" }).includes("March"), + "dateStyle: short does not write month of March out in full" +); + +const dateIslamic = Temporal.PlainYearMonth.from({ year: 1445, monthCode: "M09", calendar: "islamic" }); + +assert( + dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "long" }).includes("Ramadan"), + "dateStyle: long writes month of Ramadan out in full" +); +assert( + !dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "short" }).includes("Ramadan"), + "dateStyle: short does not write month of Ramadan out in full" +); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/toLocaleString/dateStyle.js b/test/intl402/Temporal/ZonedDateTime/prototype/toLocaleString/dateStyle.js new file mode 100644 index 00000000000..a27d5e9e94c --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/toLocaleString/dateStyle.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.prototype.tolocalestring +description: Basic tests that dateStyle option affects output +locale: [en-u-ca-gregory, en-u-ca-islamic] +features: [Temporal, Intl.DateTimeFormat-datetimestyle] +---*/ + +const dateGregorian = new Temporal.ZonedDateTime(1711475200_000_000_000n, "UTC", "gregory"); + +assert( + dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "long" }).includes("March"), + "dateStyle: long writes month of March out in full" +); +assert( + !dateGregorian.toLocaleString("en-u-ca-gregory", { dateStyle: "short" }).includes("March"), + "dateStyle: short does not write month of March out in full" +); + +const dateIslamic = new Temporal.ZonedDateTime(1711475200_000_000_000n, "UTC", "islamic"); + +assert( + dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "long" }).includes("Ramadan"), + "dateStyle: long writes month of Ramadan out in full" +); +assert( + !dateIslamic.toLocaleString("en-u-ca-islamic", { dateStyle: "short" }).includes("Ramadan"), + "dateStyle: short does not write month of Ramadan out in full" +); From e0a0c277964f37d6b32b555cda1c47821141ffe0 Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Wed, 3 Apr 2024 09:09:00 -0700 Subject: [PATCH 39/59] DurationFormat: added tests for default styles for units following numeric-styled units (#4032) --- .../constructor-unit-style-defaults.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/intl402/DurationFormat/constructor-unit-style-defaults.js diff --git a/test/intl402/DurationFormat/constructor-unit-style-defaults.js b/test/intl402/DurationFormat/constructor-unit-style-defaults.js new file mode 100644 index 00000000000..376220b0fcd --- /dev/null +++ b/test/intl402/DurationFormat/constructor-unit-style-defaults.js @@ -0,0 +1,31 @@ +// Copyright 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-Intl.DurationFormat +description: Verifies that default style settings for units following units with "numeric" or "2-digit" style are honored. +info: | + GetDurationUnitOptions (unit, options, baseStyle, stylesList, digitalBase, prevStyle) + (...) + 3. If style is undefined, then + (...) + i. If prevStyle is "fractional", "numeric" or "2-digit", then + (...) + 2. Set style to "numeric". + (...) + 9. If prevStyle is "numeric" or "2-digit", then + (...) + b. If unit is "minutes" or "seconds", then + i. Set style to "2-digit". +features: [Intl.DurationFormat] +---*/ + +for (const numericLikeStyle of ["numeric", "2-digit"]){ + var opts = new Intl.DurationFormat([], {hours: numericLikeStyle}).resolvedOptions(); + + assert.sameValue(opts.minutes, "2-digit", `minutes default value should be '2-digit' when following any ${numericLikeStyle}-styled unit`); + assert.sameValue(opts.seconds, "2-digit", `seconds default value should be '2-digit' when following any ${numericLikeStyle}-styled unit`); + assert.sameValue(opts.milliseconds, "numeric", `milliseconds default value should be 'numeric' when following any ${numericLikeStyle}-styled unit`); + assert.sameValue(opts.microseconds, "numeric", `microseconds default value should be 'numeric' when following any ${numericLikeStyle}-styled unit`); + assert.sameValue(opts.nanoseconds, "numeric", `nanoseconds default value should be 'numeric' when following any ${numericLikeStyle}-styled unit`); +} From 112cf25567c03bd8a9aa212f18a33fda62ecfa03 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Mon, 1 Apr 2024 13:26:03 +0900 Subject: [PATCH 40/59] Add tests for `Object.groupBy` and `Map.groupBy` with string items --- test/built-ins/Map/groupBy/string.js | 22 ++++++++++++++++++++++ test/built-ins/Object/groupBy/string.js | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 test/built-ins/Map/groupBy/string.js create mode 100644 test/built-ins/Object/groupBy/string.js diff --git a/test/built-ins/Map/groupBy/string.js b/test/built-ins/Map/groupBy/string.js new file mode 100644 index 00000000000..5e7d1c92ece --- /dev/null +++ b/test/built-ins/Map/groupBy/string.js @@ -0,0 +1,22 @@ +// Copyright (c) 2023 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-map.groupby +description: Map.groupBy works for string items +info: | + Map.groupBy ( items, callbackfn ) + ... +includes: [compareArray.js] +features: [array-grouping, Map] +---*/ + +const string = 'abcd'; + +const map = Map.groupBy(string, function (char) { + return char < 'c' ? 'before' : 'after'; +}); + +assert.compareArray(Array.from(map.keys()), ['before', 'after']); +assert.compareArray(map.get('before'), ['a', 'b']); +assert.compareArray(map.get('odd'), ['c', 'd']); diff --git a/test/built-ins/Object/groupBy/string.js b/test/built-ins/Object/groupBy/string.js new file mode 100644 index 00000000000..8e9ec46d24e --- /dev/null +++ b/test/built-ins/Object/groupBy/string.js @@ -0,0 +1,22 @@ +// Copyright (c) 2023 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object.groupby +description: Object.groupBy works for string items +info: | + Object.groupBy ( items, callbackfn ) + ... +includes: [compareArray.js] +features: [array-grouping] +---*/ + +const string = 'abcd'; + +const obj = Object.groupBy(string, function (char) { + return char < 'c' ? 'before' : 'after'; +}); + +assert.compareArray(Object.keys(obj), ['before', 'after']); +assert.compareArray(obj['before'], ['a', 'b']); +assert.compareArray(obj['after'], ['c', 'd']); From 8245443f8fcb52fe35ac448b1ddd10dd4affbc36 Mon Sep 17 00:00:00 2001 From: SUZUKI Sosuke Date: Mon, 1 Apr 2024 13:35:21 +0900 Subject: [PATCH 41/59] Update test/built-ins/Map/groupBy/string.js Co-authored-by: Jordan Harband --- test/built-ins/Map/groupBy/string.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/built-ins/Map/groupBy/string.js b/test/built-ins/Map/groupBy/string.js index 5e7d1c92ece..a0ca91c6d59 100644 --- a/test/built-ins/Map/groupBy/string.js +++ b/test/built-ins/Map/groupBy/string.js @@ -19,4 +19,4 @@ const map = Map.groupBy(string, function (char) { assert.compareArray(Array.from(map.keys()), ['before', 'after']); assert.compareArray(map.get('before'), ['a', 'b']); -assert.compareArray(map.get('odd'), ['c', 'd']); +assert.compareArray(map.get('after'), ['c', 'd']); From 065ccc121e2bc7897c0dc075e0023de78df0f0c4 Mon Sep 17 00:00:00 2001 From: SUZUKI Sosuke Date: Mon, 1 Apr 2024 13:35:26 +0900 Subject: [PATCH 42/59] Update test/built-ins/Object/groupBy/string.js Co-authored-by: Jordan Harband --- test/built-ins/Object/groupBy/string.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/built-ins/Object/groupBy/string.js b/test/built-ins/Object/groupBy/string.js index 8e9ec46d24e..bd0f5440e8c 100644 --- a/test/built-ins/Object/groupBy/string.js +++ b/test/built-ins/Object/groupBy/string.js @@ -18,5 +18,5 @@ const obj = Object.groupBy(string, function (char) { }); assert.compareArray(Object.keys(obj), ['before', 'after']); -assert.compareArray(obj['before'], ['a', 'b']); -assert.compareArray(obj['after'], ['c', 'd']); +assert.compareArray(obj.before, ['a', 'b']); +assert.compareArray(obj.after, ['c', 'd']); From b73f7d662d51584bfee6d3ed274b676d313b646a Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Mon, 1 Apr 2024 14:04:52 +0900 Subject: [PATCH 43/59] Use emoji strings --- test/built-ins/Map/groupBy/string.js | 8 ++++---- test/built-ins/Object/groupBy/string.js | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/built-ins/Map/groupBy/string.js b/test/built-ins/Map/groupBy/string.js index a0ca91c6d59..5c5e8378c07 100644 --- a/test/built-ins/Map/groupBy/string.js +++ b/test/built-ins/Map/groupBy/string.js @@ -11,12 +11,12 @@ includes: [compareArray.js] features: [array-grouping, Map] ---*/ -const string = 'abcd'; +const string = '🥰💩🙏😈'; const map = Map.groupBy(string, function (char) { - return char < 'c' ? 'before' : 'after'; + return char < '🙏' ? 'before' : 'after'; }); assert.compareArray(Array.from(map.keys()), ['before', 'after']); -assert.compareArray(map.get('before'), ['a', 'b']); -assert.compareArray(map.get('after'), ['c', 'd']); +assert.compareArray(map.get('before'), ['💩', '😈']); +assert.compareArray(map.get('after'), ['🥰', '🙏']); diff --git a/test/built-ins/Object/groupBy/string.js b/test/built-ins/Object/groupBy/string.js index bd0f5440e8c..cec1547175b 100644 --- a/test/built-ins/Object/groupBy/string.js +++ b/test/built-ins/Object/groupBy/string.js @@ -11,12 +11,12 @@ includes: [compareArray.js] features: [array-grouping] ---*/ -const string = 'abcd'; +const string = '🥰💩🙏😈'; const obj = Object.groupBy(string, function (char) { - return char < 'c' ? 'before' : 'after'; + return char < '🙏' ? 'before' : 'after'; }); assert.compareArray(Object.keys(obj), ['before', 'after']); -assert.compareArray(obj.before, ['a', 'b']); -assert.compareArray(obj.after, ['c', 'd']); +assert.compareArray(obj.before, ['💩', '😈']); +assert.compareArray(obj.after, ['🥰', '🙏']); From 6c35fba9b28a8c6ec8144e62f05cfbdc91ae55ae Mon Sep 17 00:00:00 2001 From: Adam Shaw Date: Thu, 7 Mar 2024 14:10:17 -0500 Subject: [PATCH 44/59] adjust tests for round-zdt-day bugfix --- .../ZonedDateTime/prototype/round/div-zero.js | 8 ++-- ...dsfor-out-of-range-forward-offset-shift.js | 41 ------------------ ...nstantsfor-called-with-iso8601-calendar.js | 4 +- .../prototype/round/order-of-operations.js | 42 +------------------ .../round/smallest-unit-day-rounding-modes.js | 23 +++++----- ...imezone-getpossibleinstantsfor-iterable.js | 2 - .../Temporal/ZonedDateTime/old/round.js | 10 +++-- 7 files changed, 24 insertions(+), 106 deletions(-) delete mode 100644 test/built-ins/Temporal/ZonedDateTime/prototype/round/getoffsetnanosecondsfor-out-of-range-forward-offset-shift.js diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/round/div-zero.js b/test/built-ins/Temporal/ZonedDateTime/prototype/round/div-zero.js index 00214e760fa..52819eb64fb 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/round/div-zero.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/round/div-zero.js @@ -17,8 +17,6 @@ class TimeZone extends Temporal.TimeZone { } } -const units = ["hour", "minute", "second", "millisecond", "microsecond", "nanosecond"]; -for (const smallestUnit of units) { - const zdt = new Temporal.ZonedDateTime(0n, new TimeZone("UTC")); - assert.throws(RangeError, () => zdt.round({ smallestUnit, roundingIncrement: 2 }), `zero day-length with smallestUnit ${smallestUnit}`); -} +const zdt = new Temporal.ZonedDateTime(0n, new TimeZone("UTC")); + +assert.throws(RangeError, () => zdt.round({ smallestUnit: "day" }), `zero day-length with smallestUnit 'day'`); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/round/getoffsetnanosecondsfor-out-of-range-forward-offset-shift.js b/test/built-ins/Temporal/ZonedDateTime/prototype/round/getoffsetnanosecondsfor-out-of-range-forward-offset-shift.js deleted file mode 100644 index 9ef300c3a31..00000000000 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/round/getoffsetnanosecondsfor-out-of-range-forward-offset-shift.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2024 Igalia, S.L. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-temporal.zoneddatetime.prototype.round -description: > - UTC offset shift returned by adjacent invocations of getOffsetNanosecondsFor - in DisambiguatePossibleInstants cannot be greater than 24 hours. -features: [Temporal] -info: | - DisambiguatePossibleInstants: - 18. If abs(_nanoseconds_) > nsPerDay, throw a *RangeError* exception. ----*/ - -class ShiftLonger24Hour extends Temporal.TimeZone { - id = 'TestTimeZone'; - _shiftEpochNs = 12n * 3600n * 1_000_000_000n; // 1970-01-01T12:00Z - - constructor() { - super('UTC'); - } - - getOffsetNanosecondsFor(instant) { - if (instant.epochNanoseconds < this._shiftEpochNs) return -12 * 3600e9; - return 12 * 3600e9 + 1; - } - - getPossibleInstantsFor(plainDateTime) { - const [utcInstant] = super.getPossibleInstantsFor(plainDateTime); - const { year, month, day } = plainDateTime; - - if (year < 1970) return [utcInstant.subtract({ hours: 12 })]; - if (year === 1970 && month === 1 && day === 1) return []; - return [utcInstant.add({ hours: 12, nanoseconds: 1 })]; - } -} - -const timeZone = new ShiftLonger24Hour(); - -const instance = new Temporal.ZonedDateTime(0n, timeZone); -assert.throws(RangeError, () => instance.round({ smallestUnit: "hours" }), "RangeError should be thrown"); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/round/getpossibleinstantsfor-called-with-iso8601-calendar.js b/test/built-ins/Temporal/ZonedDateTime/prototype/round/getpossibleinstantsfor-called-with-iso8601-calendar.js index 46664ccc629..3645752d2ec 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/round/getpossibleinstantsfor-called-with-iso8601-calendar.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/round/getpossibleinstantsfor-called-with-iso8601-calendar.js @@ -50,6 +50,6 @@ const nonBuiltinISOCalendar = new Temporal.Calendar("iso8601"); const timeZone = new SkippedDateTime(); const instance = new Temporal.ZonedDateTime(0n, timeZone, nonBuiltinISOCalendar); -instance.round({ smallestUnit: "hours" }); +instance.round({ smallestUnit: "day" }); -assert.sameValue(timeZone.calls, 6, "getPossibleInstantsFor should have been called 6 times"); +assert.sameValue(timeZone.calls, 4, "getPossibleInstantsFor should have been called 4 times"); diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/round/order-of-operations.js b/test/built-ins/Temporal/ZonedDateTime/prototype/round/order-of-operations.js index e578ba3a6f1..9692dd5b233 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/round/order-of-operations.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/round/order-of-operations.js @@ -23,10 +23,6 @@ const expected = [ "get this.timeZone.getPossibleInstantsFor", // GetPlainDateTimeFor on receiver's instant "call this.timeZone.getOffsetNanosecondsFor", - // GetInstantFor on preceding midnight - "call this.timeZone.getPossibleInstantsFor", - // AddDaysToZonedDateTime - "call this.timeZone.getPossibleInstantsFor", // InterpretISODateTimeOffset "call this.timeZone.getPossibleInstantsFor", "call this.timeZone.getOffsetNanosecondsFor", @@ -83,36 +79,8 @@ beforeFallBackInstance.round(nextHourOptions); assert.compareArray(actual, expected, "order of operations with rounding result at repeated wall-clock time"); actual.splice(0); // clear -const expectedSkippedDateTime = [ - "get options.roundingIncrement", - "get options.roundingIncrement.valueOf", - "call options.roundingIncrement.valueOf", - "get options.roundingMode", - "get options.roundingMode.toString", - "call options.roundingMode.toString", - "get options.smallestUnit", - "get options.smallestUnit.toString", - "call options.smallestUnit.toString", - // lookup - "get this.timeZone.getOffsetNanosecondsFor", - "get this.timeZone.getPossibleInstantsFor", - // GetPlainDateTimeFor on receiver's instant - "call this.timeZone.getOffsetNanosecondsFor", - // GetInstantFor on preceding midnight - "call this.timeZone.getPossibleInstantsFor", - // DisambiguatePossibleInstants - "call this.timeZone.getOffsetNanosecondsFor", - "call this.timeZone.getOffsetNanosecondsFor", - "call this.timeZone.getPossibleInstantsFor", - // AddZonedDateTime - "call this.timeZone.getPossibleInstantsFor", - // InterpretISODateTimeOffset - "call this.timeZone.getPossibleInstantsFor", - "call this.timeZone.getOffsetNanosecondsFor", -]; - springForwardInstance.round(options); -assert.compareArray(actual, expectedSkippedDateTime, "order of operations with preceding midnight at skipped wall-clock time"); +assert.compareArray(actual, expected, "order of operations with preceding midnight at skipped wall-clock time"); actual.splice(0); // clear const expectedSkippedResult = [ @@ -130,14 +98,6 @@ const expectedSkippedResult = [ "get this.timeZone.getPossibleInstantsFor", // GetPlainDateTimeFor on receiver's instant "call this.timeZone.getOffsetNanosecondsFor", - // GetInstantFor on preceding midnight - "call this.timeZone.getPossibleInstantsFor", - // AddDaysToZonedDateTime - "call this.timeZone.getPossibleInstantsFor", - // DisambiguatePossibleInstants - "call this.timeZone.getOffsetNanosecondsFor", - "call this.timeZone.getOffsetNanosecondsFor", - "call this.timeZone.getPossibleInstantsFor", // InterpretISODateTimeOffset "call this.timeZone.getPossibleInstantsFor", // DisambiguatePossibleInstants diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/round/smallest-unit-day-rounding-modes.js b/test/built-ins/Temporal/ZonedDateTime/prototype/round/smallest-unit-day-rounding-modes.js index cff0b81929c..39a2c7bbdf0 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/round/smallest-unit-day-rounding-modes.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/round/smallest-unit-day-rounding-modes.js @@ -63,31 +63,32 @@ function test(epochNanoseconds, tomorrowEpochNanoseconds, testCases) { const oneDay = 24n * 60n * 60n * 1000n * 1000n * 1000n; -// Test positive divisor (dayLengthNs). test(3n, 10n, { - ceil: oneDay, + ceil: 10n, // end-of-day according to TimeZone protocol floor: 0n, trunc: 0n, halfExpand: 0n, }); test(-3n, 10n, { - ceil: 0n, + ceil: 10n, // end-of-day according to TimeZone protocol floor: -oneDay, trunc: -oneDay, - halfExpand: 0n, + halfExpand: 10n, // end-of-day according to TimeZone protocol }); -test(-3n, -10n, { - ceil: oneDay, - floor: 0n, - trunc: 0n, - halfExpand: 0n, -}); +assert.throws(RangeError, () => { + test(-3n, -10n, { + ceil: oneDay, + floor: 0n, + trunc: 0n, + halfExpand: 0n, + }); +}, "instant is after TimeZone protocol's end-of-day") // Test values at int64 boundaries. test(3n, /*INT64_MAX=*/ 9223372036854775807n, { - ceil: oneDay, + ceil: /*INT64_MAX=*/ 9223372036854775807n, // end-of-day according to TimeZone protocol floor: 0n, trunc: 0n, halfExpand: 0n, diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/round/timezone-getpossibleinstantsfor-iterable.js b/test/built-ins/Temporal/ZonedDateTime/prototype/round/timezone-getpossibleinstantsfor-iterable.js index b76a3b08a5b..4908568ae2c 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/round/timezone-getpossibleinstantsfor-iterable.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/round/timezone-getpossibleinstantsfor-iterable.js @@ -22,8 +22,6 @@ features: [Temporal] ---*/ const expected = [ - "2001-09-09T00:00:00", // called once on midnight of the input datetime - "2001-09-10T00:00:00", // called once on the previous value plus one calendar day "2001-09-09T02:00:00", // called once on the rounding result ]; diff --git a/test/staging/Temporal/ZonedDateTime/old/round.js b/test/staging/Temporal/ZonedDateTime/old/round.js index 0cc9a943d17..32c1efc6067 100644 --- a/test/staging/Temporal/ZonedDateTime/old/round.js +++ b/test/staging/Temporal/ZonedDateTime/old/round.js @@ -216,17 +216,19 @@ var bal = Temporal.ZonedDateTime.from("1976-11-18T23:59:59.999999999+01:00[+01:0 var timeZone = TemporalHelpers.springForwardFallBackTimeZone(); // rounds correctly to a 25-hour day +// (the 12.5 hour is the halfway point, which is 11:30 local time, since 2:00-2:59 repeats) var roundTo = { smallestUnit: "day" }; -var roundMeDown = Temporal.PlainDateTime.from("2000-10-29T12:29:59").toZonedDateTime(timeZone); +var roundMeDown = Temporal.PlainDateTime.from("2000-10-29T11:29:59").toZonedDateTime(timeZone); assert.sameValue(`${ roundMeDown.round(roundTo) }`, "2000-10-29T00:00:00-07:00[Custom/Spring_Fall]"); -var roundMeUp = Temporal.PlainDateTime.from("2000-10-29T12:30:01").toZonedDateTime(timeZone); +var roundMeUp = Temporal.PlainDateTime.from("2000-10-29T11:30:01").toZonedDateTime(timeZone); assert.sameValue(`${ roundMeUp.round(roundTo) }`, "2000-10-30T00:00:00-08:00[Custom/Spring_Fall]"); // rounds correctly to a 23-hour day +// (the 11.5 hour is the halfway point, which is 12:30 local time, since 2:00-2:59 skips) var roundTo = { smallestUnit: "day" }; -var roundMeDown = Temporal.PlainDateTime.from("2000-04-02T11:29:59").toZonedDateTime(timeZone); +var roundMeDown = Temporal.PlainDateTime.from("2000-04-02T12:29:59").toZonedDateTime(timeZone); assert.sameValue(`${ roundMeDown.round(roundTo) }`, "2000-04-02T00:00:00-08:00[Custom/Spring_Fall]"); -var roundMeUp = Temporal.PlainDateTime.from("2000-04-02T11:30:01").toZonedDateTime(timeZone); +var roundMeUp = Temporal.PlainDateTime.from("2000-04-02T12:30:01").toZonedDateTime(timeZone); assert.sameValue(`${ roundMeUp.round(roundTo) }`, "2000-04-03T00:00:00-07:00[Custom/Spring_Fall]"); // rounding up to a nonexistent wall-clock time From 6c60904d42b4872a3aa1224fc7ad2c4c733e9685 Mon Sep 17 00:00:00 2001 From: Adam Shaw Date: Wed, 20 Mar 2024 22:43:16 -0400 Subject: [PATCH 45/59] test for all overflow/underflow scenarios --- .../round/smallest-unit-day-rounding-modes.js | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/test/built-ins/Temporal/ZonedDateTime/prototype/round/smallest-unit-day-rounding-modes.js b/test/built-ins/Temporal/ZonedDateTime/prototype/round/smallest-unit-day-rounding-modes.js index 39a2c7bbdf0..a3f1a250770 100644 --- a/test/built-ins/Temporal/ZonedDateTime/prototype/round/smallest-unit-day-rounding-modes.js +++ b/test/built-ins/Temporal/ZonedDateTime/prototype/round/smallest-unit-day-rounding-modes.js @@ -40,21 +40,22 @@ class TimeZone extends Temporal.TimeZone { #count = 0; #nanoseconds; - constructor(nanoseconds) { + constructor(todayEpochNanoseconds, tomorrowEpochNanoseconds) { super("UTC"); - this.#nanoseconds = nanoseconds; + this.#nanoseconds = [todayEpochNanoseconds, tomorrowEpochNanoseconds]; } getPossibleInstantsFor(dateTime) { - if (++this.#count === 2) { - return [new Temporal.Instant(this.#nanoseconds)]; + const nanoseconds = this.#nanoseconds[this.#count++]; + if (nanoseconds === undefined) { + return super.getPossibleInstantsFor(dateTime); } - return super.getPossibleInstantsFor(dateTime); + return [new Temporal.Instant(nanoseconds)]; } } -function test(epochNanoseconds, tomorrowEpochNanoseconds, testCases) { +function test(epochNanoseconds, todayEpochNanoseconds, tomorrowEpochNanoseconds, testCases) { for (let [roundingMode, expected] of Object.entries(testCases)) { - let timeZone = new TimeZone(tomorrowEpochNanoseconds); + let timeZone = new TimeZone(todayEpochNanoseconds, tomorrowEpochNanoseconds); let zoned = new Temporal.ZonedDateTime(epochNanoseconds, timeZone); let result = zoned.round({ smallestUnit: "days", roundingMode }); assert.sameValue(result.epochNanoseconds, expected); @@ -63,14 +64,14 @@ function test(epochNanoseconds, tomorrowEpochNanoseconds, testCases) { const oneDay = 24n * 60n * 60n * 1000n * 1000n * 1000n; -test(3n, 10n, { +test(3n, undefined, 10n, { ceil: 10n, // end-of-day according to TimeZone protocol floor: 0n, trunc: 0n, halfExpand: 0n, }); -test(-3n, 10n, { +test(-3n, undefined, 10n, { ceil: 10n, // end-of-day according to TimeZone protocol floor: -oneDay, trunc: -oneDay, @@ -78,16 +79,19 @@ test(-3n, 10n, { }); assert.throws(RangeError, () => { - test(-3n, -10n, { - ceil: oneDay, - floor: 0n, - trunc: 0n, - halfExpand: 0n, - }); -}, "instant is after TimeZone protocol's end-of-day") + test(-3n, 0n, 10n, { ceil: undefined }); +}, "instant is before TimeZone protocol's start-of-day"); + +assert.throws(RangeError, () => { + test(-3n, undefined, -10n, { ceil: undefined }); +}, "instant is after TimeZone protocol's end-of-day"); + +assert.throws(RangeError, () => { + test(0n, 0n, 0n, { ceil: undefined }); +}, "instant is within zero-duration day"); // Test values at int64 boundaries. -test(3n, /*INT64_MAX=*/ 9223372036854775807n, { +test(3n, undefined, /*INT64_MAX=*/ 9223372036854775807n, { ceil: /*INT64_MAX=*/ 9223372036854775807n, // end-of-day according to TimeZone protocol floor: 0n, trunc: 0n, From 9537de33afee3d7862874cb69ef48e8c4f4cca65 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Tue, 9 Apr 2024 12:41:35 -0700 Subject: [PATCH 46/59] Remove performance logging from non-iso-calendars.js staging test The performance logging was left over from when this test lived in the proposal-temporal repo. It was already switched off anyway. --- .../Intl402/Temporal/old/non-iso-calendars.js | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/test/staging/Intl402/Temporal/old/non-iso-calendars.js b/test/staging/Intl402/Temporal/old/non-iso-calendars.js index b72092ed8ba..4dc7f7c1577 100644 --- a/test/staging/Intl402/Temporal/old/non-iso-calendars.js +++ b/test/staging/Intl402/Temporal/old/non-iso-calendars.js @@ -330,8 +330,6 @@ var fromWithCases = { year1: RangeError } }; -var logPerf = false; -var totalNow = 0; for (var [id, tests] of Object.entries(fromWithCases)) { var dates = { year2000: Temporal.PlainDate.from("2000-01-01"), @@ -341,7 +339,6 @@ for (var [id, tests] of Object.entries(fromWithCases)) { var values = tests[name]; var errorExpected = values === RangeError; if ((id === "chinese" || id === "dangi") && hasOutdatedChineseIcuData ) { - var now = globalThis.performance ? globalThis.performance.now() : Date.now(); if (errorExpected) { assert.throws(RangeError, () => { var inCal = date.withCalendar(id); @@ -410,13 +407,8 @@ for (var [id, tests] of Object.entries(fromWithCases)) { monthCode: values.monthCode, year: values.year })); - var ms = (globalThis.performance ? globalThis.performance.now() : Date.now()) - now; - totalNow += ms; - if (logPerf) - console.log(`from: ${ id } ${ name }: ${ ms.toFixed(2) }ms, total: ${ totalNow.toFixed(2) }ms`); }; if ((id === "chinese" || id === "dangi") && hasOutdatedChineseIcuData ) { - var now = globalThis.performance ? globalThis.performance.now() : Date.now(); var inCal = date.withCalendar(id); if (errorExpected) { assert.throws(RangeError, () => inCal.with({ day: 1 }).year); @@ -436,10 +428,6 @@ for (var [id, tests] of Object.entries(fromWithCases)) { assert.sameValue(`${ t } year: ${ afterWithYear.year }`, `${ t } year: 2220`); assert.sameValue(`${ t } month: ${ afterWithYear.month }`, `${ t } month: 1`); assert.sameValue(`${ t } day: ${ afterWithYear.day }`, `${ t } day: 1`); - var ms = (globalThis.performance ? globalThis.performance.now() : Date.now()) - now; - totalNow += ms; - if (logPerf) - console.log(`with: ${ id } ${ name }: ${ ms.toFixed(2) }ms, total: ${ totalNow.toFixed(2) }ms`); }; } } @@ -665,7 +653,6 @@ for (var id of calendars) { var values = results[id]; duration = Temporal.Duration.from(duration); if ((id === "chinese" || id === "dangi") && hasOutdatedChineseIcuData ) { - var now = globalThis.performance ? globalThis.performance.now() : Date.now(); if (values === RangeError) { assert.throws(RangeError, () => Temporal.PlainDate.from({ ...startDate, @@ -721,10 +708,6 @@ for (var id of calendars) { assert.sameValue(`subtract from end-of-month ${ unit } ${ id } month: ${ startReverseNextDay.month }`, `subtract from end-of-month ${ unit } ${ id } month: ${ start.month }`); assert.sameValue(`subtract from end-of-month ${ unit } ${ id } monthCode: ${ startReverseNextDay.monthCode }`, `subtract from end-of-month ${ unit } ${ id } monthCode: ${ start.monthCode }`); } - var ms = (globalThis.performance ? globalThis.performance.now() : Date.now()) - now; - totalNow += ms; - if (logPerf) - console.log(`${ id } add ${ duration }: ${ ms.toFixed(2) }ms, total: ${ totalNow.toFixed(2) }ms`); }; } } @@ -1097,7 +1080,6 @@ for (var id of calendars) { } }; if ((id === "chinese" || id === "dangi") && hasOutdatedChineseIcuData ) { - var now = globalThis.performance ? globalThis.performance.now() : Date.now(); var {monthsInYear} = date; assert.sameValue(monthsInYear, days.length); for (var i = monthsInYear, leapMonthIndex = undefined, monthStart = undefined; i >= 1; i--) { @@ -1141,10 +1123,6 @@ for (var id of calendars) { var oneDayPastMonthEnd = monthStart.with({ day: daysInMonth + 1 }); assert.sameValue(oneDayPastMonthEnd.day, daysInMonth); } - var ms = (globalThis.performance ? globalThis.performance.now() : Date.now()) - now; - totalNow += ms; - if (logPerf) - console.log(`${ id } months check ${ id }: ${ ms.toFixed(2) }ms, total: ${ totalNow.toFixed(2) }ms`); }; } var monthDayCases = [ From bce41ea609e10175829d321be8517f79ab4111d8 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Tue, 9 Apr 2024 12:43:44 -0700 Subject: [PATCH 47/59] Reduce locale-dependence in non-iso-calendars.js Previously, this test checked for a particular format. This would break depending on which engine executed it. Instead, test for the presence of particular types and their values in the output of formatToParts(). (There's an existing comment which suggests that this should already have been testing formatToParts().) --- .../Intl402/Temporal/old/non-iso-calendars.js | 311 +++++++++++++++--- 1 file changed, 259 insertions(+), 52 deletions(-) diff --git a/test/staging/Intl402/Temporal/old/non-iso-calendars.js b/test/staging/Intl402/Temporal/old/non-iso-calendars.js index 4dc7f7c1577..b1b8c5c9978 100644 --- a/test/staging/Intl402/Temporal/old/non-iso-calendars.js +++ b/test/staging/Intl402/Temporal/old/non-iso-calendars.js @@ -5,6 +5,26 @@ esid: sec-temporal-intl description: Non-ISO Calendars features: [Temporal, Array.prototype.includes] +locale: + - en-US-u-ca-iso8601 + - en-US-u-ca-buddhist + - en-US-u-ca-chinese + - en-US-u-ca-coptic + - en-US-u-ca-dangi + - en-US-u-ca-ethioaa + - en-US-u-ca-ethiopic + - en-US-u-ca-gregory + - en-US-u-ca-hebrew + - en-US-u-ca-indian + - en-US-u-ca-islamic + - en-US-u-ca-islamic-umalqura + - en-US-u-ca-islamic-tbla + - en-US-u-ca-islamic-civil + - en-US-u-ca-islamic-rgsa + - en-US-u-ca-islamicc + - en-US-u-ca-japanese + - en-US-u-ca-persian + - en-US-u-ca-roc ---*/ var testChineseData = new Date("2001-02-01T00:00Z").toLocaleString("en-US-u-ca-chinese", { @@ -17,69 +37,256 @@ var testChineseData = new Date("2001-02-01T00:00Z").toLocaleString("en-US-u-ca-c var hasOutdatedChineseIcuData = !testChineseData.endsWith("2001"); // verify that Intl.DateTimeFormat.formatToParts output matches snapshot data -var getLocalizedDates = isoString => { - var calendars = [ - "iso8601", - "buddhist", - "chinese", - "coptic", - "dangi", - "ethioaa", - "ethiopic", - "gregory", - "hebrew", - "indian", - "islamic", - "islamic-umalqura", - "islamic-tbla", - "islamic-civil", - "islamic-rgsa", - "islamicc", - "japanese", - "persian", - "roc" - ]; - var date = new Date(isoString); - return calendars.map(id => `${ id }: ${ date.toLocaleDateString(`en-US-u-ca-${ id }`, { timeZone: "UTC" }) }`).join("\n"); -}; -var year2000Content = getLocalizedDates("2000-01-01T00:00Z"); -var year1Content = getLocalizedDates("0001-01-01T00:00Z"); -var year2000Snapshot = "iso8601: 1/1/2000\n" + "buddhist: 1/1/2543 BE\n" + "chinese: 11/25/1999\n" + "coptic: 4/22/1716 ERA1\n" + "dangi: 11/25/1999\n" + "ethioaa: 4/22/7492 ERA0\n" + "ethiopic: 4/22/1992 ERA1\n" + "gregory: 1/1/2000\n" + "hebrew: 23 Tevet 5760\n" + "indian: 10/11/1921 Saka\n" + "islamic: 9/25/1420 AH\n" + "islamic-umalqura: 9/24/1420 AH\n" + "islamic-tbla: 9/25/1420 AH\n" + "islamic-civil: 9/24/1420 AH\n" + "islamic-rgsa: 9/25/1420 AH\n" + "islamicc: 9/24/1420 AH\n" + "japanese: 1/1/12 H\n" + "persian: 10/11/1378 AP\n" + "roc: 1/1/89 Minguo"; -assert.sameValue(year2000Content, year2000Snapshot); +function compareFormatToPartsSnapshot(isoString, expected) { + const date = new Date(isoString); + Object.entries(expected).forEach(([calendar, expectedComponents]) => { + const formatter = new Intl.DateTimeFormat(`en-US-u-ca-${calendar}`, { timeZone: "UTC" }); + const actualComponents = formatter.formatToParts(date); + Object.entries(expectedComponents).forEach(([expectedType, expectedValue]) => { + const part = actualComponents.find(({type}) => type === expectedType); + const contextMessage = `${expectedType} component of ${isoString} formatted in ${calendar}`; + assert.notSameValue(part, undefined, contextMessage); + assert.sameValue(part.value, `${expectedValue}`, contextMessage); + }); + }); +} + +compareFormatToPartsSnapshot("2000-01-01T00:00Z", { + iso8601: { + year: 2000, + month: 1, + day: 1, + }, + buddhist: { + year: 2543, + era: "BE", + month: 1, + day: 1, + }, + chinese: { + relatedYear: 1999, + month: 11, + day: 25, + }, + coptic: { + year: 1716, + era: "ERA1", + month: 4, + day: 22, + }, + dangi: { + relatedYear: 1999, + month: 11, + day: 25, + }, + ethioaa: { + year: 7492, + era: "ERA0", + month: 4, + day: 22, + }, + ethiopic: { + year: 1992, + era: "ERA1", + month: 4, + day: 22, + }, + gregory: { + year: 2000, + month: 1, + day: 1, + }, + hebrew: { + year: 5760, + month: "Tevet", + day: 23, + }, + indian: { + year: 1921, + era: "Saka", + month: 10, + day: 11, + }, + islamic: { + year: 1420, + era: "AH", + month: 9, + day: 25, + }, + "islamic-umalqura": { + year: 1420, + era: "AH", + month: 9, + day: 24, + }, + "islamic-tbla": { + year: 1420, + era: "AH", + month: 9, + day: 25, + }, + "islamic-civil": { + year: 1420, + era: "AH", + month: 9, + day: 24, + }, + "islamic-rgsa": { + year: 1420, + era: "AH", + month: 9, + day: 25, + }, + islamicc: { + year: 1420, + era: "AH", + month: 9, + day: 24, + }, + japanese: { + year: 12, + era: "H", + month: 1, + day: 1, + }, + persian: { + year: 1378, + era: "AP", + month: 10, + day: 11, + }, + roc: { + year: 89, + era: "Minguo", + month: 1, + day: 1, + }, +}); // Several calendars based on the Gregorian calendar use Julian dates (not // proleptic Gregorian dates) before the Gregorian switchover in Oct 1582. See // https://bugs.chromium.org/p/chromium/issues/detail?id=1173158. The code below // allows these tests to pass regardless of the bug, while still remaining // sensitive to other bugs that may crop up. -const yearOneMonthDay = new Map( +const yearOneDay = new Map( ["iso8601", "gregory", "roc", "buddhist", "japanese"].map(calendar => { hasGregorianSwitchoverBug = new Date("+001001-01-01T00:00Z") .toLocaleDateString(`en-US-u-ca-${calendar}`, { timeZone: "UTC" }) .startsWith("12"); - return [calendar, hasGregorianSwitchoverBug ? "1/3" : "1/1"] + return [calendar, hasGregorianSwitchoverBug ? 3 : 1] })); -var year1Snapshot = - `iso8601: ${yearOneMonthDay.get("iso8601")}/1\n` + - `buddhist: ${yearOneMonthDay.get("buddhist")}/544 BE\n` + - "chinese: 11/21/0\n" + - "coptic: 5/8/284 ERA0\n" + - "dangi: 11/21/0\n" + - "ethioaa: 5/8/5493 ERA0\n" + - "ethiopic: 5/8/5493 ERA0\n" + - `gregory: ${yearOneMonthDay.get("gregory")}/1\n` + - "hebrew: 18 Tevet 3761\n" + - "indian: 10/11/-78 Saka\n" + - "islamic: 5/20/-640 AH\n" + - "islamic-umalqura: 5/18/-640 AH\n" + - "islamic-tbla: 5/19/-640 AH\n" + - "islamic-civil: 5/18/-640 AH\n" + - "islamic-rgsa: 5/20/-640 AH\n" + - "islamicc: 5/18/-640 AH\n" + - `japanese: ${yearOneMonthDay.get("japanese")}/-643 Taika (645\u2013650)\n` + - "persian: 10/11/-621 AP\n" + - `roc: ${yearOneMonthDay.get("roc")}/1911 B.R.O.C.`; -assert.sameValue(year1Content, year1Snapshot); +compareFormatToPartsSnapshot("0001-01-01T00:00Z", { + iso8601: { + year: 1, + month: 1, + day: yearOneDay.get("iso8601"), + }, + buddhist: { + year: 544, + era: "BE", + month: 1, + day: yearOneDay.get("buddhist"), + }, + chinese: { + relatedYear: 0, + month: 11, + day: 21, + }, + coptic: { + year: 284, + era: "ERA0", + month: 5, + day: 8, + }, + dangi: { + relatedYear: 0, + month: 11, + day: 21, + }, + ethioaa: { + year: 5493, + era: "ERA0", + month: 5, + day: 8, + }, + ethiopic: { + year: 5493, + era: "ERA0", + month: 5, + day: 8, + }, + gregory: { + year: 1, + month: 1, + day: yearOneDay.get("gregory"), + }, + hebrew: { + year: 3761, + month: "Tevet", + day: 18, + }, + indian: { + year: -78, + era: "Saka", + month: 10, + day: 11, + }, + islamic: { + year: -640, + era: "AH", + month: 5, + day: 20, + }, + "islamic-umalqura": { + year: -640, + era: "AH", + month: 5, + day: 18, + }, + "islamic-tbla": { + year: -640, + era: "AH", + month: 5, + day: 19, + }, + "islamic-civil": { + year: -640, + era: "AH", + month: 5, + day: 18, + }, + "islamic-rgsa": { + year: -640, + era: "AH", + month: 5, + day: 20, + }, + islamicc: { + year: -640, + era: "AH", + month: 5, + day: 18, + }, + japanese: { + year: -643, + era: "Taika (645\u2013650)", + month: 1, + day: yearOneDay.get("japanese"), + }, + persian: { + year: -621, + era: "AP", + month: 10, + day: 11, + }, + roc: { + year: 1911, + era: "B.R.O.C.", + month: 1, + day: yearOneDay.get("roc"), + }, +}); + var fromWithCases = { iso8601: { year2000: { From d865ffeb2d5014e0ad543ceb9d858ba6dea25530 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Wed, 10 Apr 2024 07:48:24 -0700 Subject: [PATCH 48/59] Use correct keys in non-iso-calendars.js Using Object.keys() of the expected values in each case decouples these tests. --- test/staging/Intl402/Temporal/old/non-iso-calendars.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/staging/Intl402/Temporal/old/non-iso-calendars.js b/test/staging/Intl402/Temporal/old/non-iso-calendars.js index b1b8c5c9978..1972078db53 100644 --- a/test/staging/Intl402/Temporal/old/non-iso-calendars.js +++ b/test/staging/Intl402/Temporal/old/non-iso-calendars.js @@ -854,8 +854,7 @@ var tests = { } } }; -var calendars = Object.keys(addMonthsCases); -for (var id of calendars) { +for (var id of Object.keys(addMonthsCases)) { for (var [unit, {duration, results, startDate}] of Object.entries(tests)) { var values = results[id]; duration = Temporal.Duration.from(duration); @@ -1269,7 +1268,7 @@ var daysInMonthCases = { } }; totalNow = 0; -for (var id of calendars) { +for (var id of Object.keys(daysInMonthCases)) { var {year, leap, days} = daysInMonthCases[id]; var date = hasOutdatedChineseIcuData && (id === "chinese" || id === "dangi") ? undefined : Temporal.PlainDate.from({ year, From b37b6f3552ade0d333f07f459c58591a03a9b4b3 Mon Sep 17 00:00:00 2001 From: Frank Tang Date: Wed, 10 Apr 2024 17:23:34 -0700 Subject: [PATCH 49/59] Fix incorrect tests landed in PR3890 https://github.com/tc39/test262/pull/3890 --- .../style-digital-fractionalDigits-undefined-en.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js index 9706f55319f..35e7f62df6e 100644 --- a/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js +++ b/test/intl402/DurationFormat/prototype/format/style-digital-fractionalDigits-undefined-en.js @@ -35,7 +35,7 @@ const durationMicro = { microseconds: 222 }; -const durationMill = { +const durationMilli = { hours: 1, minutes: 22, seconds: 33, @@ -48,6 +48,14 @@ const durationNoSubsecond = { seconds: 33 }; +const durationFiveFractional = { + hours: 2, + minutes: 30, + seconds: 10, + milliseconds: 111, + microseconds: 220, +}; + const durationSevenFractional = { hours: 2, minutes: 30, @@ -65,5 +73,5 @@ assert.sameValue(df.format(durationMicro), "1:22:33.111222", `format output with assert.sameValue(df.format(durationMilli), "1:22:33.111", `format output with millisecond digits and fractionalDigits: undefined using ${style} style option`); assert.sameValue(df.format(durationNoSubsecond), "1:22:33", `format output with no subsecond digits and fractionalDigits: undefined using ${style} style option`); -assert.sameValue(df.format(durationFiveFractional), "2:30:11122", `format output with five subsecond digits and fractionalDigits: undefined using ${style} style option`); -assert.sameValue(df.format(durationSevenFractional), "2:30:1112203", `format output with seven subsecond digits and fractionalDigits: undefined using ${style} style option`); +assert.sameValue(df.format(durationFiveFractional), "2:30:10.11122", `format output with five subsecond digits and fractionalDigits: undefined using ${style} style option`); +assert.sameValue(df.format(durationSevenFractional), "2:30:10.1112203", `format output with seven subsecond digits and fractionalDigits: undefined using ${style} style option`); From e11ef85b1bcc64fc72d3fdfdd0841d2eded60571 Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Thu, 11 Apr 2024 16:29:13 -0700 Subject: [PATCH 50/59] added test for formatting mixture of short and numeric styles (#4033) * added test for formatting mixture of short and numeric styles * incorporated Philip Chimento feedback re: making test more general across locales --- .../format/mixed-short-and-numeric.js | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 test/intl402/DurationFormat/prototype/format/mixed-short-and-numeric.js diff --git a/test/intl402/DurationFormat/prototype/format/mixed-short-and-numeric.js b/test/intl402/DurationFormat/prototype/format/mixed-short-and-numeric.js new file mode 100644 index 00000000000..f73e2e0de1e --- /dev/null +++ b/test/intl402/DurationFormat/prototype/format/mixed-short-and-numeric.js @@ -0,0 +1,34 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-Intl.DurationFormat.prototype.format +description: Checks that durations containing a mixture of numericlike and non-numericlike styles are formatted using the "short" style when DurationFormat base style is *undefined*. +info: | + PartitionDurationFormatPattern ( durationFormat, duration ) + + 12. Let listStyle be durationFormat.[[Style]]. + (...) + 14. Perform ! CreateDataPropertyOrThrow(lfOpts, "style", listStyle). + +locale: [en] +features: [Intl.DurationFormat] +---*/ + +const locale = "en"; +const timeSeparator = ":"; + + +let d = {days: 5, hours: 1, minutes: 2, seconds: 3}; +let dfOpts = {minutes: "numeric", seconds: "numeric"}; + +let expectedList = []; +expectedList.push(new Intl.NumberFormat(locale, {style: "unit", unit: "day", unitDisplay: "short"}).format(d.days)); +expectedList.push(new Intl.NumberFormat(locale, {style: "unit", unit: "hour", unitDisplay: "short"}).format(d.hours)); +expectedList.push(new Intl.NumberFormat(locale).format(d.minutes) + timeSeparator + new Intl.NumberFormat(locale, {minimumIntegerDigits: 2}).format(d.seconds)); + +let expected = new Intl.ListFormat(locale, {style: "short"}).format(expectedList); +let actual = new Intl.DurationFormat(locale, dfOpts).format(d); + +assert.sameValue(actual, expected); + From 0c43c587cc145aef601063b6d368f0004b02e4ca Mon Sep 17 00:00:00 2001 From: Shu-yu Guo Date: Thu, 11 Apr 2024 14:57:05 -0700 Subject: [PATCH 51/59] Fix groupBy string test keys to be insertion order --- test/built-ins/Map/groupBy/string.js | 2 +- test/built-ins/Object/groupBy/string.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/built-ins/Map/groupBy/string.js b/test/built-ins/Map/groupBy/string.js index 5c5e8378c07..960c7c3493d 100644 --- a/test/built-ins/Map/groupBy/string.js +++ b/test/built-ins/Map/groupBy/string.js @@ -17,6 +17,6 @@ const map = Map.groupBy(string, function (char) { return char < '🙏' ? 'before' : 'after'; }); -assert.compareArray(Array.from(map.keys()), ['before', 'after']); +assert.compareArray(Array.from(map.keys()), ['after', 'before']); assert.compareArray(map.get('before'), ['💩', '😈']); assert.compareArray(map.get('after'), ['🥰', '🙏']); diff --git a/test/built-ins/Object/groupBy/string.js b/test/built-ins/Object/groupBy/string.js index cec1547175b..3d4713a2801 100644 --- a/test/built-ins/Object/groupBy/string.js +++ b/test/built-ins/Object/groupBy/string.js @@ -17,6 +17,6 @@ const obj = Object.groupBy(string, function (char) { return char < '🙏' ? 'before' : 'after'; }); -assert.compareArray(Object.keys(obj), ['before', 'after']); +assert.compareArray(Object.keys(obj), ['after', 'before']); assert.compareArray(obj.before, ['💩', '😈']); assert.compareArray(obj.after, ['🥰', '🙏']); From 046dff4b331de9853b34303dbea9bbb78a825400 Mon Sep 17 00:00:00 2001 From: Ben Allen Date: Thu, 11 Apr 2024 17:02:37 -0700 Subject: [PATCH 52/59] test formatting when microseconds or nanoseconds are the first numeric-styled unit (#4034) * test formatting when microseconds or nanoseconds are the first numeric-styled unit * incorporated Philip Chimento guidance re: padding fractional components --- .../format/fractions-of-subsecond-units-en.js | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 test/intl402/DurationFormat/prototype/format/fractions-of-subsecond-units-en.js diff --git a/test/intl402/DurationFormat/prototype/format/fractions-of-subsecond-units-en.js b/test/intl402/DurationFormat/prototype/format/fractions-of-subsecond-units-en.js new file mode 100644 index 00000000000..e1259380d9a --- /dev/null +++ b/test/intl402/DurationFormat/prototype/format/fractions-of-subsecond-units-en.js @@ -0,0 +1,62 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-Intl.DurationFormat.prototype.format +description: Checks that fractional milliseconds and microseconds are formatted correctly when microseconds or nanoseconds are the first units with "numeric" style. +info: | + PartitionDurationFormatPattern ( durationFormat, duration ) + (...) + 9. + (...) + g. If unit is "seconds", "milliseconds", or "microseconds", then + i. If unit is "seconds", then + 1. Let nextStyle be durationFormat.[[MillisecondsStyle]]. + ii. Else if unit is "milliseconds", then + 1. Let nextStyle be durationFormat.[[MicrosecondsStyle]]. + iii. Else, + 1. Let nextStyle be durationFormat.[[NanosecondsStyle]]. + iv. If nextStyle is "fractional", then + 1. Set value to value + AddFractionalDigits(durationFormat, duration). + 2. If durationFormat.[[FractionalDigits]] is undefined, then + a. Let maximumFractionDigits be 9𝔽. + b. Let minimumFractionDigits be +0𝔽. + 3. Else, + a. Let maximumFractionDigits be 𝔽(durationFormat.[[FractionalDigits]]). + b. Let minimumFractionDigits be 𝔽(durationFormat.[[FractionalDigits]]). + 4. Perform ! CreateDataPropertyOrThrow(nfOpts, "maximumFractionDigits", maximumFractionDigits ). + 5. Perform ! CreateDataPropertyOrThrow(nfOpts, "minimumFractionDigits", minimumFractionDigits ). + 6. Perform ! CreateDataPropertyOrThrow(nfOpts, "roundingMode", "trunc"). + 7. Set done to true. + +locale: [en] +features: [Intl.DurationFormat] +---*/ + + +const locale = "en"; +const decimalSeparator = "."; + +let d = {seconds: 3, milliseconds: 444, microseconds: 55, nanoseconds: 6}; +let dfOpts = {microseconds: "numeric"}; + +let expectedList = []; +expectedList.push(new Intl.NumberFormat(locale, {style: "unit", unit: "second", unitDisplay: "short"}).format(d.seconds)); +expectedList.push(new Intl.NumberFormat(locale, {style: "unit", unit: "millisecond", unitDisplay: "short", minimumFractionDigits:0, maximumFractionDigits: 9}).format(d.milliseconds.toString() + decimalSeparator + d.microseconds.toString().padStart(3, '0') + d.nanoseconds.toString().padStart(3, '0'))); + +let expected = new Intl.ListFormat(locale, {style: "short"}).format(expectedList); +let actual = new Intl.DurationFormat(locale, dfOpts).format(d); + +// assert.sameValue(actual, expected, `DurationFormat output when microseconds first "numeric" unit`); + +dfOpts = {nanoseconds: "numeric"}; +expectedList = []; + +expectedList.push(new Intl.NumberFormat(locale, {style: "unit", unit: "second", unitDisplay: "short"}).format(d.seconds)); +expectedList.push(new Intl.NumberFormat(locale, {style: "unit", unit: "millisecond", unitDisplay: "short"}).format(d.milliseconds)); +expectedList.push(new Intl.NumberFormat(locale, {style: "unit", unit: "microsecond", unitDisplay: "short", minimumFractionDigits:0, maximumFractionDigits: 9}).format(d.microseconds.toString() + decimalSeparator + d.nanoseconds.toString().padStart(3, '0'))); + +expected = new Intl.ListFormat(locale, {style: "short"}).format(expectedList); +actual = new Intl.DurationFormat(locale, dfOpts).format(d); + +assert.sameValue(actual, expected, `DurationFormat output when nanoseconds first "numeric" unit`); From c5a80993cd96623a875dd6fa532c7d92f392f02b Mon Sep 17 00:00:00 2001 From: Shu-yu Guo Date: Mon, 8 Apr 2024 15:22:14 -0700 Subject: [PATCH 53/59] Allow global var-via-eval be declared See https://github.com/tc39/ecma262/pull/3226 --- ...cript-decl-lex-collision-in-sloppy-mode.js | 21 ------------- ...ode.js => script-decl-lex-no-collision.js} | 16 ++++++++-- ...t-decl-lex-var-declared-via-eval-sloppy.js | 30 ------------------- ... script-decl-lex-var-declared-via-eval.js} | 16 ++++++++-- 4 files changed, 28 insertions(+), 55 deletions(-) delete mode 100644 test/annexB/language/eval-code/direct/script-decl-lex-collision-in-sloppy-mode.js rename test/annexB/language/eval-code/direct/{script-decl-lex-no-collision-in-strict-mode.js => script-decl-lex-no-collision.js} (51%) delete mode 100644 test/language/global-code/script-decl-lex-var-declared-via-eval-sloppy.js rename test/language/global-code/{script-decl-lex-var-declared-via-eval-strict.js => script-decl-lex-var-declared-via-eval.js} (55%) diff --git a/test/annexB/language/eval-code/direct/script-decl-lex-collision-in-sloppy-mode.js b/test/annexB/language/eval-code/direct/script-decl-lex-collision-in-sloppy-mode.js deleted file mode 100644 index bb4489d34ae..00000000000 --- a/test/annexB/language/eval-code/direct/script-decl-lex-collision-in-sloppy-mode.js +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (C) 2023 Alexey Shvayka. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-globaldeclarationinstantiation -description: Let binding collision with existing var declaration that was created for hoisted function. -info: | - [...] - 3. For each element name of lexNames, do - a. If env.HasVarDeclaration(name) is true, throw a SyntaxError exception. -flags: [noStrict] ----*/ - -eval('if (true) { function test262Fn() {} }'); - -assert.throws(SyntaxError, function() { - $262.evalScript('var x; let test262Fn;'); -}); - -assert.throws(ReferenceError, function() { - x; -}, 'no bindings created'); diff --git a/test/annexB/language/eval-code/direct/script-decl-lex-no-collision-in-strict-mode.js b/test/annexB/language/eval-code/direct/script-decl-lex-no-collision.js similarity index 51% rename from test/annexB/language/eval-code/direct/script-decl-lex-no-collision-in-strict-mode.js rename to test/annexB/language/eval-code/direct/script-decl-lex-no-collision.js index a0b854c8edf..3767e8c097c 100644 --- a/test/annexB/language/eval-code/direct/script-decl-lex-no-collision-in-strict-mode.js +++ b/test/annexB/language/eval-code/direct/script-decl-lex-no-collision.js @@ -2,8 +2,10 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-globaldeclarationinstantiation -description: No let binding collision with existing var declaration due to strict-mode eval(). +description: No let binding collision with existing var declaration due to eval(). info: | + In strict mode: + PerformEval ( x, strictCaller, direct ) [...] @@ -11,7 +13,17 @@ info: | a. Let lexEnv be NewDeclarativeEnvironment(runningContext's LexicalEnvironment). [...] 18. If strictEval is true, set varEnv to lexEnv. -flags: [onlyStrict] + + In sloppy mode: + + GlobalDeclarationInstantiation ( script, env ) + + [...] + 3. For each element name of lexNames, do + a. If env.HasLexicalDeclaration(name) is true, throw a SyntaxError exception. + b. Let hasRestrictedGlobal be ? env.HasRestrictedGlobalProperty(name). + c. NOTE: Global var and function bindings (except those that are introduced by non-strict direct eval) are non-configurable and are therefore restricted global properties. + d. If hasRestrictedGlobal is true, throw a SyntaxError exception. ---*/ eval('if (true) { function test262Fn() {} }'); diff --git a/test/language/global-code/script-decl-lex-var-declared-via-eval-sloppy.js b/test/language/global-code/script-decl-lex-var-declared-via-eval-sloppy.js deleted file mode 100644 index cfece095b35..00000000000 --- a/test/language/global-code/script-decl-lex-var-declared-via-eval-sloppy.js +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2023 Alexey Shvayka. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -esid: sec-globaldeclarationinstantiation -description: Let binding collision with existing var declaration that was created via eval(). -info: | - [...] - 3. For each element name of lexNames, do - a. If env.HasVarDeclaration(name) is true, throw a SyntaxError exception. -flags: [noStrict] ----*/ - -eval('var test262Var;'); -eval('function test262Fn() {}'); - -assert.throws(SyntaxError, function() { - $262.evalScript('var x; let test262Var;'); -}, 'variable'); - -assert.throws(ReferenceError, function() { - x; -}, 'no bindings created (script shadowing variable)'); - -assert.throws(SyntaxError, function() { - $262.evalScript('var x; let test262Fn;'); -}, 'function'); - -assert.throws(ReferenceError, function() { - x; -}, 'no bindings created (script shadowing function)'); diff --git a/test/language/global-code/script-decl-lex-var-declared-via-eval-strict.js b/test/language/global-code/script-decl-lex-var-declared-via-eval.js similarity index 55% rename from test/language/global-code/script-decl-lex-var-declared-via-eval-strict.js rename to test/language/global-code/script-decl-lex-var-declared-via-eval.js index b0f0ac8a27b..bc72124bb89 100644 --- a/test/language/global-code/script-decl-lex-var-declared-via-eval-strict.js +++ b/test/language/global-code/script-decl-lex-var-declared-via-eval.js @@ -2,8 +2,10 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-globaldeclarationinstantiation -description: No let binding collision with existing var declaration due to strict-mode eval(). +description: No let binding collision with existing var declaration due to eval(). info: | + In strict mode: + PerformEval ( x, strictCaller, direct ) [...] @@ -11,7 +13,17 @@ info: | a. Let lexEnv be NewDeclarativeEnvironment(runningContext's LexicalEnvironment). [...] 18. If strictEval is true, set varEnv to lexEnv. -flags: [onlyStrict] + + In sloppy mode: + + GlobalDeclarationInstantiation ( script, env ) + + [...] + 3. For each element name of lexNames, do + a. If env.HasLexicalDeclaration(name) is true, throw a SyntaxError exception. + b. Let hasRestrictedGlobal be ? env.HasRestrictedGlobalProperty(name). + c. NOTE: Global var and function bindings (except those that are introduced by non-strict direct eval) are non-configurable and are therefore restricted global properties. + d. If hasRestrictedGlobal is true, throw a SyntaxError exception. ---*/ eval('var test262Var;'); From 142a6a6fbeb062f39bb0ca5cb73e9489de2b906d Mon Sep 17 00:00:00 2001 From: Ross Kirsling Date: Sat, 13 Apr 2024 03:59:40 +0900 Subject: [PATCH 54/59] Update test for o[p] = f() (#4052) * Update test for o[p] = f() Update S11.13.1_A7_T3.js now that consensus has been reached on https://github.com/tc39/ecma262/pull/3307. * Rename test and add an analogous one for super. --- .../expressions/assignment/S11.13.1_A7_T3.js | 26 ---------- .../target-member-computed-reference.js | 40 ++++++++++++++++ .../target-super-computed-reference.js | 47 +++++++++++++++++++ 3 files changed, 87 insertions(+), 26 deletions(-) delete mode 100644 test/language/expressions/assignment/S11.13.1_A7_T3.js create mode 100644 test/language/expressions/assignment/target-member-computed-reference.js create mode 100644 test/language/expressions/assignment/target-super-computed-reference.js diff --git a/test/language/expressions/assignment/S11.13.1_A7_T3.js b/test/language/expressions/assignment/S11.13.1_A7_T3.js deleted file mode 100644 index 6b979bf04da..00000000000 --- a/test/language/expressions/assignment/S11.13.1_A7_T3.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2015 André Bargull. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -info: Assignment Operator evaluates its operands from left to right. -description: > - The left-hand side expression is evaluated before the right-hand side. - Left-hand side expression is MemberExpression: base[prop]. Evaluating - ToPropertyKey(prop) throws an error. ----*/ - -function DummyError() { } - -assert.throws(DummyError, function() { - var base = {}; - var prop = { - toString: function() { - throw new DummyError(); - } - }; - var expr = function() { - throw new Test262Error("right-hand side expression evaluated"); - }; - - base[prop] = expr(); -}); diff --git a/test/language/expressions/assignment/target-member-computed-reference.js b/test/language/expressions/assignment/target-member-computed-reference.js new file mode 100644 index 00000000000..6046f4dc41c --- /dev/null +++ b/test/language/expressions/assignment/target-member-computed-reference.js @@ -0,0 +1,40 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// Copyright (C) 2024 Sony Interactive Entertainment Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators +description: Assignment Operator evaluates its operands from left to right (formerly S11.13.1_A7_T3) +info: | + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: base[prop]. + ToPropertyKey(prop) occurs after both sides are evaluated. +---*/ + +function DummyError() { } + +assert.throws(DummyError, function() { + var base = {}; + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + throw new Test262Error("right-hand side expression evaluated"); + }; + + base[prop()] = expr(); +}); + +assert.throws(DummyError, function() { + var base = {}; + var prop = { + toString: function() { + throw new Test262Error("property key evaluated"); + } + }; + var expr = function() { + throw new DummyError(); + }; + + base[prop] = expr(); +}); diff --git a/test/language/expressions/assignment/target-super-computed-reference.js b/test/language/expressions/assignment/target-super-computed-reference.js new file mode 100644 index 00000000000..fc788694fcc --- /dev/null +++ b/test/language/expressions/assignment/target-super-computed-reference.js @@ -0,0 +1,47 @@ +// Copyright (C) 2024 Sony Interactive Entertainment Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assignment-operators +description: Assignment Operator evaluates its operands from left to right +info: | + The left-hand side expression is evaluated before the right-hand side. + Left-hand side expression is MemberExpression: super[prop]. + ToPropertyKey(prop) occurs after both sides are evaluated. +---*/ + +assert.throws(DummyError, function() { + var prop = function() { + throw new DummyError(); + }; + var expr = function() { + throw new Test262Error("right-hand side expression evaluated"); + }; + + class C extends class {} { + m() { + super[prop()] = expr(); + } + } + + (new C()).m(); +}); + +assert.throws(DummyError, function() { + var prop = { + toString: function() { + throw new Test262Error("property key evaluated"); + } + }; + var expr = function() { + throw new DummyError(); + }; + + class C extends class {} { + m() { + super[prop] = expr(); + } + } + + (new C()).m(); +}); From 23c3e0111bf8c4867488b03adb9c9c3f315ca157 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Mon, 15 Apr 2024 19:24:23 +0900 Subject: [PATCH 55/59] Use space instead of tab in comments --- test/intl402/DisplayNames/prototype/of/type-region-invalid.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/intl402/DisplayNames/prototype/of/type-region-invalid.js b/test/intl402/DisplayNames/prototype/of/type-region-invalid.js index 666e91f8301..a5de97aa148 100644 --- a/test/intl402/DisplayNames/prototype/of/type-region-invalid.js +++ b/test/intl402/DisplayNames/prototype/of/type-region-invalid.js @@ -14,7 +14,7 @@ features: [Intl.DisplayNames] ---*/ // https://unicode.org/reports/tr35/#unicode_region_subtag -// unicode_region_subtag = (alpha{2} | digit{3}) ; +// unicode_region_subtag = (alpha{2} | digit{3}) ; var displayNames = new Intl.DisplayNames(undefined, {type: 'region'}); From 263c514afa6059996cfea34cdd16d0da0e1cce8f Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Sat, 13 Apr 2024 20:07:02 +0300 Subject: [PATCH 56/59] Add missing DummyError function definition to target-super-computed-reference.js --- .../expressions/assignment/target-super-computed-reference.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/language/expressions/assignment/target-super-computed-reference.js b/test/language/expressions/assignment/target-super-computed-reference.js index fc788694fcc..ae2b24d0e16 100644 --- a/test/language/expressions/assignment/target-super-computed-reference.js +++ b/test/language/expressions/assignment/target-super-computed-reference.js @@ -10,6 +10,8 @@ info: | ToPropertyKey(prop) occurs after both sides are evaluated. ---*/ +function DummyError() {} + assert.throws(DummyError, function() { var prop = function() { throw new DummyError(); From 79e9b39f3a576154b1bc39f9dbd95d25addc4ebf Mon Sep 17 00:00:00 2001 From: Emmanuel Ferdman Date: Sun, 14 Apr 2024 01:49:16 +0300 Subject: [PATCH 57/59] Update the location of `2nd-param-non-object.js` --- rfcs/async-helpers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/async-helpers.md b/rfcs/async-helpers.md index 16ebe90c3aa..d5020c1c87d 100644 --- a/rfcs/async-helpers.md +++ b/rfcs/async-helpers.md @@ -194,7 +194,7 @@ f(); Tests written like this will correctly pass if the import Promise is rejected, and will correctly fail if the import succeeds (due to the imported module object being passed to `$DONE`.) However, at a first glance, it's not immediately clear that the test is correct in the case of the import succeeding; in fact in an earlier draft of this RFC I thought the test was incorrect. -Others, such as [`test/language/expressions/dynamic-import/2nd-param-non-object.js`](https://github.com/tc39/test262/blob/main/test/language/expressions/dynamic-import/2nd-param-non-object.js), use a pattern more like what is proposed in this RFC. However, this pattern doesn't format the messages as helpfully in all the edge cases that `assert.throws()` does, such as: +Others, such as [`test/language/expressions/dynamic-import/import-assertions/2nd-param-non-object.js`](https://github.com/tc39/test262/blob/main/test/language/expressions/dynamic-import/import-assertions/2nd-param-non-object.js), use a pattern more like what is proposed in this RFC. However, this pattern doesn't format the messages as helpfully in all the edge cases that `assert.throws()` does, such as: - the Promise being rejected with a primitive value; - the error constructor being a different object with the same name, such as a different iframe's TypeError; From 830b17a3a07694b3402ce88ea3ac7d28ffcc74e2 Mon Sep 17 00:00:00 2001 From: Mathias Bynens Date: Mon, 15 Apr 2024 16:43:26 +0200 Subject: [PATCH 58/59] =?UTF-8?q?Update=20RegExp=20`\p{=E2=80=A6}`=20tests?= =?UTF-8?q?=20per=20Unicode=2015.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: #3945 --- .../property-escapes/generated/ASCII.js | 4 +- .../generated/ASCII_Hex_Digit.js | 4 +- .../property-escapes/generated/Alphabetic.js | 8 +- .../RegExp/property-escapes/generated/Any.js | 4 +- .../property-escapes/generated/Assigned.js | 16 +-- .../generated/Bidi_Control.js | 4 +- .../generated/Bidi_Mirrored.js | 4 +- .../generated/Case_Ignorable.js | 4 +- .../property-escapes/generated/Cased.js | 4 +- .../generated/Changes_When_Casefolded.js | 4 +- .../generated/Changes_When_Casemapped.js | 4 +- .../generated/Changes_When_Lowercased.js | 4 +- .../generated/Changes_When_NFKC_Casefolded.js | 4 +- .../generated/Changes_When_Titlecased.js | 4 +- .../generated/Changes_When_Uppercased.js | 4 +- .../RegExp/property-escapes/generated/Dash.js | 4 +- .../generated/Default_Ignorable_Code_Point.js | 4 +- .../property-escapes/generated/Deprecated.js | 4 +- .../property-escapes/generated/Diacritic.js | 4 +- .../property-escapes/generated/Emoji.js | 4 +- .../generated/Emoji_Component.js | 4 +- .../generated/Emoji_Modifier.js | 4 +- .../generated/Emoji_Modifier_Base.js | 4 +- .../generated/Emoji_Presentation.js | 4 +- .../generated/Extended_Pictographic.js | 4 +- .../property-escapes/generated/Extender.js | 4 +- .../General_Category_-_Cased_Letter.js | 4 +- .../General_Category_-_Close_Punctuation.js | 4 +- ...eneral_Category_-_Connector_Punctuation.js | 4 +- .../generated/General_Category_-_Control.js | 4 +- .../General_Category_-_Currency_Symbol.js | 4 +- .../General_Category_-_Dash_Punctuation.js | 4 +- .../General_Category_-_Decimal_Number.js | 4 +- .../General_Category_-_Enclosing_Mark.js | 4 +- .../General_Category_-_Final_Punctuation.js | 4 +- .../generated/General_Category_-_Format.js | 4 +- .../General_Category_-_Initial_Punctuation.js | 4 +- .../generated/General_Category_-_Letter.js | 8 +- .../General_Category_-_Letter_Number.js | 4 +- .../General_Category_-_Line_Separator.js | 4 +- .../General_Category_-_Lowercase_Letter.js | 4 +- .../generated/General_Category_-_Mark.js | 4 +- .../General_Category_-_Math_Symbol.js | 4 +- .../General_Category_-_Modifier_Letter.js | 4 +- .../General_Category_-_Modifier_Symbol.js | 4 +- .../General_Category_-_Nonspacing_Mark.js | 4 +- .../generated/General_Category_-_Number.js | 4 +- .../General_Category_-_Open_Punctuation.js | 4 +- .../generated/General_Category_-_Other.js | 16 +-- .../General_Category_-_Other_Letter.js | 8 +- .../General_Category_-_Other_Number.js | 4 +- .../General_Category_-_Other_Punctuation.js | 4 +- .../General_Category_-_Other_Symbol.js | 12 +- .../General_Category_-_Paragraph_Separator.js | 4 +- .../General_Category_-_Private_Use.js | 4 +- .../General_Category_-_Punctuation.js | 4 +- .../generated/General_Category_-_Separator.js | 4 +- .../General_Category_-_Space_Separator.js | 4 +- .../General_Category_-_Spacing_Mark.js | 4 +- .../generated/General_Category_-_Surrogate.js | 4 +- .../generated/General_Category_-_Symbol.js | 12 +- .../General_Category_-_Titlecase_Letter.js | 4 +- .../General_Category_-_Unassigned.js | 16 +-- .../General_Category_-_Uppercase_Letter.js | 4 +- .../generated/Grapheme_Base.js | 16 +-- .../generated/Grapheme_Extend.js | 4 +- .../property-escapes/generated/Hex_Digit.js | 4 +- .../generated/IDS_Binary_Operator.js | 13 +- .../generated/IDS_Trinary_Operator.js | 4 +- .../property-escapes/generated/ID_Continue.js | 20 +-- .../property-escapes/generated/ID_Start.js | 8 +- .../property-escapes/generated/Ideographic.js | 8 +- .../generated/Join_Control.js | 4 +- .../generated/Logical_Order_Exception.js | 4 +- .../property-escapes/generated/Lowercase.js | 4 +- .../RegExp/property-escapes/generated/Math.js | 4 +- .../generated/Noncharacter_Code_Point.js | 4 +- .../generated/Pattern_Syntax.js | 4 +- .../generated/Pattern_White_Space.js | 4 +- .../generated/Quotation_Mark.js | 4 +- .../property-escapes/generated/Radical.js | 4 +- .../generated/Regional_Indicator.js | 4 +- .../generated/Script_-_Adlam.js | 4 +- .../generated/Script_-_Ahom.js | 4 +- .../Script_-_Anatolian_Hieroglyphs.js | 4 +- .../generated/Script_-_Arabic.js | 4 +- .../generated/Script_-_Armenian.js | 4 +- .../generated/Script_-_Avestan.js | 4 +- .../generated/Script_-_Balinese.js | 4 +- .../generated/Script_-_Bamum.js | 4 +- .../generated/Script_-_Bassa_Vah.js | 4 +- .../generated/Script_-_Batak.js | 4 +- .../generated/Script_-_Bengali.js | 4 +- .../generated/Script_-_Bhaiksuki.js | 4 +- .../generated/Script_-_Bopomofo.js | 4 +- .../generated/Script_-_Brahmi.js | 4 +- .../generated/Script_-_Braille.js | 4 +- .../generated/Script_-_Buginese.js | 4 +- .../generated/Script_-_Buhid.js | 4 +- .../generated/Script_-_Canadian_Aboriginal.js | 4 +- .../generated/Script_-_Carian.js | 4 +- .../generated/Script_-_Caucasian_Albanian.js | 4 +- .../generated/Script_-_Chakma.js | 4 +- .../generated/Script_-_Cham.js | 4 +- .../generated/Script_-_Cherokee.js | 4 +- .../generated/Script_-_Chorasmian.js | 4 +- .../generated/Script_-_Common.js | 12 +- .../generated/Script_-_Coptic.js | 4 +- .../generated/Script_-_Cuneiform.js | 4 +- .../generated/Script_-_Cypriot.js | 4 +- .../generated/Script_-_Cypro_Minoan.js | 4 +- .../generated/Script_-_Cyrillic.js | 4 +- .../generated/Script_-_Deseret.js | 4 +- .../generated/Script_-_Devanagari.js | 4 +- .../generated/Script_-_Dives_Akuru.js | 4 +- .../generated/Script_-_Dogra.js | 4 +- .../generated/Script_-_Duployan.js | 4 +- .../Script_-_Egyptian_Hieroglyphs.js | 4 +- .../generated/Script_-_Elbasan.js | 4 +- .../generated/Script_-_Elymaic.js | 4 +- .../generated/Script_-_Ethiopic.js | 4 +- .../generated/Script_-_Georgian.js | 4 +- .../generated/Script_-_Glagolitic.js | 4 +- .../generated/Script_-_Gothic.js | 4 +- .../generated/Script_-_Grantha.js | 4 +- .../generated/Script_-_Greek.js | 4 +- .../generated/Script_-_Gujarati.js | 4 +- .../generated/Script_-_Gunjala_Gondi.js | 4 +- .../generated/Script_-_Gurmukhi.js | 4 +- .../generated/Script_-_Han.js | 8 +- .../generated/Script_-_Hangul.js | 4 +- .../generated/Script_-_Hanifi_Rohingya.js | 4 +- .../generated/Script_-_Hanunoo.js | 4 +- .../generated/Script_-_Hatran.js | 4 +- .../generated/Script_-_Hebrew.js | 4 +- .../generated/Script_-_Hiragana.js | 4 +- .../generated/Script_-_Imperial_Aramaic.js | 4 +- .../generated/Script_-_Inherited.js | 4 +- .../Script_-_Inscriptional_Pahlavi.js | 4 +- .../Script_-_Inscriptional_Parthian.js | 4 +- .../generated/Script_-_Javanese.js | 4 +- .../generated/Script_-_Kaithi.js | 4 +- .../generated/Script_-_Kannada.js | 4 +- .../generated/Script_-_Katakana.js | 4 +- .../generated/Script_-_Kawi.js | 4 +- .../generated/Script_-_Kayah_Li.js | 4 +- .../generated/Script_-_Kharoshthi.js | 4 +- .../generated/Script_-_Khitan_Small_Script.js | 4 +- .../generated/Script_-_Khmer.js | 4 +- .../generated/Script_-_Khojki.js | 4 +- .../generated/Script_-_Khudawadi.js | 4 +- .../generated/Script_-_Lao.js | 4 +- .../generated/Script_-_Latin.js | 4 +- .../generated/Script_-_Lepcha.js | 4 +- .../generated/Script_-_Limbu.js | 4 +- .../generated/Script_-_Linear_A.js | 4 +- .../generated/Script_-_Linear_B.js | 4 +- .../generated/Script_-_Lisu.js | 4 +- .../generated/Script_-_Lycian.js | 4 +- .../generated/Script_-_Lydian.js | 4 +- .../generated/Script_-_Mahajani.js | 4 +- .../generated/Script_-_Makasar.js | 4 +- .../generated/Script_-_Malayalam.js | 4 +- .../generated/Script_-_Mandaic.js | 4 +- .../generated/Script_-_Manichaean.js | 4 +- .../generated/Script_-_Marchen.js | 4 +- .../generated/Script_-_Masaram_Gondi.js | 4 +- .../generated/Script_-_Medefaidrin.js | 4 +- .../generated/Script_-_Meetei_Mayek.js | 4 +- .../generated/Script_-_Mende_Kikakui.js | 4 +- .../generated/Script_-_Meroitic_Cursive.js | 4 +- .../Script_-_Meroitic_Hieroglyphs.js | 4 +- .../generated/Script_-_Miao.js | 4 +- .../generated/Script_-_Modi.js | 4 +- .../generated/Script_-_Mongolian.js | 4 +- .../generated/Script_-_Mro.js | 4 +- .../generated/Script_-_Multani.js | 4 +- .../generated/Script_-_Myanmar.js | 4 +- .../generated/Script_-_Nabataean.js | 4 +- .../generated/Script_-_Nag_Mundari.js | 4 +- .../generated/Script_-_Nandinagari.js | 4 +- .../generated/Script_-_New_Tai_Lue.js | 4 +- .../generated/Script_-_Newa.js | 4 +- .../generated/Script_-_Nko.js | 4 +- .../generated/Script_-_Nushu.js | 4 +- .../Script_-_Nyiakeng_Puachue_Hmong.js | 4 +- .../generated/Script_-_Ogham.js | 4 +- .../generated/Script_-_Ol_Chiki.js | 4 +- .../generated/Script_-_Old_Hungarian.js | 4 +- .../generated/Script_-_Old_Italic.js | 4 +- .../generated/Script_-_Old_North_Arabian.js | 4 +- .../generated/Script_-_Old_Permic.js | 4 +- .../generated/Script_-_Old_Persian.js | 4 +- .../generated/Script_-_Old_Sogdian.js | 4 +- .../generated/Script_-_Old_South_Arabian.js | 4 +- .../generated/Script_-_Old_Turkic.js | 4 +- .../generated/Script_-_Old_Uyghur.js | 4 +- .../generated/Script_-_Oriya.js | 4 +- .../generated/Script_-_Osage.js | 4 +- .../generated/Script_-_Osmanya.js | 4 +- .../generated/Script_-_Pahawh_Hmong.js | 4 +- .../generated/Script_-_Palmyrene.js | 4 +- .../generated/Script_-_Pau_Cin_Hau.js | 4 +- .../generated/Script_-_Phags_Pa.js | 4 +- .../generated/Script_-_Phoenician.js | 4 +- .../generated/Script_-_Psalter_Pahlavi.js | 4 +- .../generated/Script_-_Rejang.js | 4 +- .../generated/Script_-_Runic.js | 4 +- .../generated/Script_-_Samaritan.js | 4 +- .../generated/Script_-_Saurashtra.js | 4 +- .../generated/Script_-_Sharada.js | 4 +- .../generated/Script_-_Shavian.js | 4 +- .../generated/Script_-_Siddham.js | 4 +- .../generated/Script_-_SignWriting.js | 4 +- .../generated/Script_-_Sinhala.js | 4 +- .../generated/Script_-_Sogdian.js | 4 +- .../generated/Script_-_Sora_Sompeng.js | 4 +- .../generated/Script_-_Soyombo.js | 4 +- .../generated/Script_-_Sundanese.js | 4 +- .../generated/Script_-_Syloti_Nagri.js | 4 +- .../generated/Script_-_Syriac.js | 4 +- .../generated/Script_-_Tagalog.js | 4 +- .../generated/Script_-_Tagbanwa.js | 4 +- .../generated/Script_-_Tai_Le.js | 4 +- .../generated/Script_-_Tai_Tham.js | 4 +- .../generated/Script_-_Tai_Viet.js | 4 +- .../generated/Script_-_Takri.js | 4 +- .../generated/Script_-_Tamil.js | 4 +- .../generated/Script_-_Tangsa.js | 4 +- .../generated/Script_-_Tangut.js | 4 +- .../generated/Script_-_Telugu.js | 4 +- .../generated/Script_-_Thaana.js | 4 +- .../generated/Script_-_Thai.js | 4 +- .../generated/Script_-_Tibetan.js | 4 +- .../generated/Script_-_Tifinagh.js | 4 +- .../generated/Script_-_Tirhuta.js | 4 +- .../generated/Script_-_Toto.js | 4 +- .../generated/Script_-_Ugaritic.js | 4 +- .../generated/Script_-_Vai.js | 4 +- .../generated/Script_-_Vithkuqi.js | 4 +- .../generated/Script_-_Wancho.js | 4 +- .../generated/Script_-_Warang_Citi.js | 4 +- .../generated/Script_-_Yezidi.js | 4 +- .../property-escapes/generated/Script_-_Yi.js | 4 +- .../generated/Script_-_Zanabazar_Square.js | 4 +- .../generated/Script_Extensions_-_Adlam.js | 4 +- .../generated/Script_Extensions_-_Ahom.js | 4 +- ...ript_Extensions_-_Anatolian_Hieroglyphs.js | 4 +- .../generated/Script_Extensions_-_Arabic.js | 4 +- .../generated/Script_Extensions_-_Armenian.js | 4 +- .../generated/Script_Extensions_-_Avestan.js | 4 +- .../generated/Script_Extensions_-_Balinese.js | 4 +- .../generated/Script_Extensions_-_Bamum.js | 4 +- .../Script_Extensions_-_Bassa_Vah.js | 4 +- .../generated/Script_Extensions_-_Batak.js | 4 +- .../generated/Script_Extensions_-_Bengali.js | 4 +- .../Script_Extensions_-_Bhaiksuki.js | 4 +- .../generated/Script_Extensions_-_Bopomofo.js | 4 +- .../generated/Script_Extensions_-_Brahmi.js | 4 +- .../generated/Script_Extensions_-_Braille.js | 4 +- .../generated/Script_Extensions_-_Buginese.js | 4 +- .../generated/Script_Extensions_-_Buhid.js | 4 +- ...Script_Extensions_-_Canadian_Aboriginal.js | 4 +- .../generated/Script_Extensions_-_Carian.js | 4 +- .../Script_Extensions_-_Caucasian_Albanian.js | 4 +- .../generated/Script_Extensions_-_Chakma.js | 4 +- .../generated/Script_Extensions_-_Cham.js | 4 +- .../generated/Script_Extensions_-_Cherokee.js | 4 +- .../Script_Extensions_-_Chorasmian.js | 4 +- .../generated/Script_Extensions_-_Common.js | 12 +- .../generated/Script_Extensions_-_Coptic.js | 4 +- .../Script_Extensions_-_Cuneiform.js | 4 +- .../generated/Script_Extensions_-_Cypriot.js | 4 +- .../Script_Extensions_-_Cypro_Minoan.js | 4 +- .../generated/Script_Extensions_-_Cyrillic.js | 4 +- .../generated/Script_Extensions_-_Deseret.js | 4 +- .../Script_Extensions_-_Devanagari.js | 4 +- .../Script_Extensions_-_Dives_Akuru.js | 4 +- .../generated/Script_Extensions_-_Dogra.js | 4 +- .../generated/Script_Extensions_-_Duployan.js | 4 +- ...cript_Extensions_-_Egyptian_Hieroglyphs.js | 4 +- .../generated/Script_Extensions_-_Elbasan.js | 4 +- .../generated/Script_Extensions_-_Elymaic.js | 4 +- .../generated/Script_Extensions_-_Ethiopic.js | 4 +- .../generated/Script_Extensions_-_Georgian.js | 4 +- .../Script_Extensions_-_Glagolitic.js | 4 +- .../generated/Script_Extensions_-_Gothic.js | 4 +- .../generated/Script_Extensions_-_Grantha.js | 4 +- .../generated/Script_Extensions_-_Greek.js | 4 +- .../generated/Script_Extensions_-_Gujarati.js | 4 +- .../Script_Extensions_-_Gunjala_Gondi.js | 4 +- .../generated/Script_Extensions_-_Gurmukhi.js | 4 +- .../generated/Script_Extensions_-_Han.js | 8 +- .../generated/Script_Extensions_-_Hangul.js | 4 +- .../Script_Extensions_-_Hanifi_Rohingya.js | 4 +- .../generated/Script_Extensions_-_Hanunoo.js | 4 +- .../generated/Script_Extensions_-_Hatran.js | 4 +- .../generated/Script_Extensions_-_Hebrew.js | 4 +- .../generated/Script_Extensions_-_Hiragana.js | 4 +- .../Script_Extensions_-_Imperial_Aramaic.js | 4 +- .../Script_Extensions_-_Inherited.js | 4 +- ...ript_Extensions_-_Inscriptional_Pahlavi.js | 4 +- ...ipt_Extensions_-_Inscriptional_Parthian.js | 4 +- .../generated/Script_Extensions_-_Javanese.js | 4 +- .../generated/Script_Extensions_-_Kaithi.js | 4 +- .../generated/Script_Extensions_-_Kannada.js | 4 +- .../generated/Script_Extensions_-_Katakana.js | 4 +- .../generated/Script_Extensions_-_Kawi.js | 4 +- .../generated/Script_Extensions_-_Kayah_Li.js | 4 +- .../Script_Extensions_-_Kharoshthi.js | 4 +- ...Script_Extensions_-_Khitan_Small_Script.js | 4 +- .../generated/Script_Extensions_-_Khmer.js | 4 +- .../generated/Script_Extensions_-_Khojki.js | 4 +- .../Script_Extensions_-_Khudawadi.js | 4 +- .../generated/Script_Extensions_-_Lao.js | 4 +- .../generated/Script_Extensions_-_Latin.js | 4 +- .../generated/Script_Extensions_-_Lepcha.js | 4 +- .../generated/Script_Extensions_-_Limbu.js | 4 +- .../generated/Script_Extensions_-_Linear_A.js | 4 +- .../generated/Script_Extensions_-_Linear_B.js | 4 +- .../generated/Script_Extensions_-_Lisu.js | 4 +- .../generated/Script_Extensions_-_Lycian.js | 4 +- .../generated/Script_Extensions_-_Lydian.js | 4 +- .../generated/Script_Extensions_-_Mahajani.js | 4 +- .../generated/Script_Extensions_-_Makasar.js | 4 +- .../Script_Extensions_-_Malayalam.js | 10 +- .../generated/Script_Extensions_-_Mandaic.js | 4 +- .../Script_Extensions_-_Manichaean.js | 4 +- .../generated/Script_Extensions_-_Marchen.js | 4 +- .../Script_Extensions_-_Masaram_Gondi.js | 4 +- .../Script_Extensions_-_Medefaidrin.js | 4 +- .../Script_Extensions_-_Meetei_Mayek.js | 4 +- .../Script_Extensions_-_Mende_Kikakui.js | 4 +- .../Script_Extensions_-_Meroitic_Cursive.js | 4 +- ...cript_Extensions_-_Meroitic_Hieroglyphs.js | 4 +- .../generated/Script_Extensions_-_Miao.js | 4 +- .../generated/Script_Extensions_-_Modi.js | 4 +- .../Script_Extensions_-_Mongolian.js | 4 +- .../generated/Script_Extensions_-_Mro.js | 4 +- .../generated/Script_Extensions_-_Multani.js | 4 +- .../generated/Script_Extensions_-_Myanmar.js | 4 +- .../Script_Extensions_-_Nabataean.js | 4 +- .../Script_Extensions_-_Nag_Mundari.js | 4 +- .../Script_Extensions_-_Nandinagari.js | 4 +- .../Script_Extensions_-_New_Tai_Lue.js | 4 +- .../generated/Script_Extensions_-_Newa.js | 4 +- .../generated/Script_Extensions_-_Nko.js | 4 +- .../generated/Script_Extensions_-_Nushu.js | 4 +- ...ipt_Extensions_-_Nyiakeng_Puachue_Hmong.js | 4 +- .../generated/Script_Extensions_-_Ogham.js | 4 +- .../generated/Script_Extensions_-_Ol_Chiki.js | 4 +- .../Script_Extensions_-_Old_Hungarian.js | 4 +- .../Script_Extensions_-_Old_Italic.js | 4 +- .../Script_Extensions_-_Old_North_Arabian.js | 4 +- .../Script_Extensions_-_Old_Permic.js | 4 +- .../Script_Extensions_-_Old_Persian.js | 4 +- .../Script_Extensions_-_Old_Sogdian.js | 4 +- .../Script_Extensions_-_Old_South_Arabian.js | 4 +- .../Script_Extensions_-_Old_Turkic.js | 4 +- .../Script_Extensions_-_Old_Uyghur.js | 4 +- .../generated/Script_Extensions_-_Oriya.js | 4 +- .../generated/Script_Extensions_-_Osage.js | 4 +- .../generated/Script_Extensions_-_Osmanya.js | 4 +- .../Script_Extensions_-_Pahawh_Hmong.js | 4 +- .../Script_Extensions_-_Palmyrene.js | 4 +- .../Script_Extensions_-_Pau_Cin_Hau.js | 4 +- .../generated/Script_Extensions_-_Phags_Pa.js | 4 +- .../Script_Extensions_-_Phoenician.js | 4 +- .../Script_Extensions_-_Psalter_Pahlavi.js | 4 +- .../generated/Script_Extensions_-_Rejang.js | 4 +- .../generated/Script_Extensions_-_Runic.js | 4 +- .../Script_Extensions_-_Samaritan.js | 4 +- .../Script_Extensions_-_Saurashtra.js | 4 +- .../generated/Script_Extensions_-_Sharada.js | 12 +- .../generated/Script_Extensions_-_Shavian.js | 4 +- .../generated/Script_Extensions_-_Siddham.js | 4 +- .../Script_Extensions_-_SignWriting.js | 4 +- .../generated/Script_Extensions_-_Sinhala.js | 10 +- .../generated/Script_Extensions_-_Sogdian.js | 4 +- .../Script_Extensions_-_Sora_Sompeng.js | 4 +- .../generated/Script_Extensions_-_Soyombo.js | 4 +- .../Script_Extensions_-_Sundanese.js | 4 +- .../Script_Extensions_-_Syloti_Nagri.js | 4 +- .../generated/Script_Extensions_-_Syriac.js | 4 +- .../generated/Script_Extensions_-_Tagalog.js | 4 +- .../generated/Script_Extensions_-_Tagbanwa.js | 4 +- .../generated/Script_Extensions_-_Tai_Le.js | 4 +- .../generated/Script_Extensions_-_Tai_Tham.js | 4 +- .../generated/Script_Extensions_-_Tai_Viet.js | 4 +- .../generated/Script_Extensions_-_Takri.js | 4 +- .../generated/Script_Extensions_-_Tamil.js | 4 +- .../generated/Script_Extensions_-_Tangsa.js | 4 +- .../generated/Script_Extensions_-_Tangut.js | 4 +- .../generated/Script_Extensions_-_Telugu.js | 4 +- .../generated/Script_Extensions_-_Thaana.js | 4 +- .../generated/Script_Extensions_-_Thai.js | 4 +- .../generated/Script_Extensions_-_Tibetan.js | 4 +- .../generated/Script_Extensions_-_Tifinagh.js | 4 +- .../generated/Script_Extensions_-_Tirhuta.js | 4 +- .../generated/Script_Extensions_-_Toto.js | 4 +- .../generated/Script_Extensions_-_Ugaritic.js | 4 +- .../generated/Script_Extensions_-_Vai.js | 4 +- .../generated/Script_Extensions_-_Vithkuqi.js | 4 +- .../generated/Script_Extensions_-_Wancho.js | 4 +- .../Script_Extensions_-_Warang_Citi.js | 4 +- .../generated/Script_Extensions_-_Yezidi.js | 4 +- .../generated/Script_Extensions_-_Yi.js | 4 +- .../Script_Extensions_-_Zanabazar_Square.js | 4 +- .../generated/Sentence_Terminal.js | 8 +- .../property-escapes/generated/Soft_Dotted.js | 4 +- .../generated/Terminal_Punctuation.js | 4 +- .../generated/Unified_Ideograph.js | 8 +- .../property-escapes/generated/Uppercase.js | 4 +- .../generated/Variation_Selector.js | 4 +- .../property-escapes/generated/White_Space.js | 4 +- .../generated/XID_Continue.js | 20 +-- .../property-escapes/generated/XID_Start.js | 8 +- .../Basic_Emoji-negative-CharacterClass.js | 4 +- .../strings/Basic_Emoji-negative-P.js | 4 +- .../strings/Basic_Emoji-negative-u.js | 4 +- .../generated/strings/Basic_Emoji.js | 4 +- ...Keycap_Sequence-negative-CharacterClass.js | 4 +- .../Emoji_Keycap_Sequence-negative-P.js | 4 +- .../Emoji_Keycap_Sequence-negative-u.js | 4 +- .../strings/Emoji_Keycap_Sequence.js | 4 +- .../RGI_Emoji-negative-CharacterClass.js | 4 +- .../generated/strings/RGI_Emoji-negative-P.js | 4 +- .../generated/strings/RGI_Emoji-negative-u.js | 4 +- .../generated/strings/RGI_Emoji.js | 122 +++++++++++++++- ...i_Flag_Sequence-negative-CharacterClass.js | 4 +- .../RGI_Emoji_Flag_Sequence-negative-P.js | 4 +- .../RGI_Emoji_Flag_Sequence-negative-u.js | 4 +- .../strings/RGI_Emoji_Flag_Sequence.js | 4 +- ...difier_Sequence-negative-CharacterClass.js | 4 +- .../RGI_Emoji_Modifier_Sequence-negative-P.js | 4 +- .../RGI_Emoji_Modifier_Sequence-negative-u.js | 4 +- .../strings/RGI_Emoji_Modifier_Sequence.js | 4 +- ...ji_Tag_Sequence-negative-CharacterClass.js | 4 +- .../RGI_Emoji_Tag_Sequence-negative-P.js | 4 +- .../RGI_Emoji_Tag_Sequence-negative-u.js | 4 +- .../strings/RGI_Emoji_Tag_Sequence.js | 4 +- ...ji_ZWJ_Sequence-negative-CharacterClass.js | 4 +- .../RGI_Emoji_ZWJ_Sequence-negative-P.js | 4 +- .../RGI_Emoji_ZWJ_Sequence-negative-u.js | 4 +- .../strings/RGI_Emoji_ZWJ_Sequence.js | 134 ++++++++++++++++-- 445 files changed, 1242 insertions(+), 967 deletions(-) diff --git a/test/built-ins/RegExp/property-escapes/generated/ASCII.js b/test/built-ins/RegExp/property-escapes/generated/ASCII.js index 4b6ab9a2e93..ab71251912a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/ASCII.js +++ b/test/built-ins/RegExp/property-escapes/generated/ASCII.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `ASCII` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js b/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js index 9535db67269..ca629c533a9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js +++ b/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `ASCII_Hex_Digit` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js b/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js index 21294f27e5f..5b33cd74b19 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Alphabetic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -746,6 +746,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -1497,7 +1498,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Any.js b/test/built-ins/RegExp/property-escapes/generated/Any.js index 278ed40630f..cb154d3feb2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Any.js +++ b/test/built-ins/RegExp/property-escapes/generated/Any.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Any` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Assigned.js b/test/built-ins/RegExp/property-escapes/generated/Assigned.js index a961abd437d..98fbf87edcd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Assigned.js +++ b/test/built-ins/RegExp/property-escapes/generated/Assigned.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Assigned` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -327,14 +327,13 @@ const matchSymbols = buildString({ [0x002E80, 0x002E99], [0x002E9B, 0x002EF3], [0x002F00, 0x002FD5], - [0x002FF0, 0x002FFB], - [0x003000, 0x00303F], + [0x002FF0, 0x00303F], [0x003041, 0x003096], [0x003099, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], [0x003190, 0x0031E3], - [0x0031F0, 0x00321E], + [0x0031EF, 0x00321E], [0x003220, 0x00A48C], [0x00A490, 0x00A4C6], [0x00A4D0, 0x00A62B], @@ -719,6 +718,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF], @@ -1138,10 +1138,9 @@ const nonMatchSymbols = buildString({ [0x002E5E, 0x002E7F], [0x002EF4, 0x002EFF], [0x002FD6, 0x002FEF], - [0x002FFC, 0x002FFF], [0x003097, 0x003098], [0x003100, 0x003104], - [0x0031E4, 0x0031EF], + [0x0031E4, 0x0031EE], [0x00A48D, 0x00A48F], [0x00A4C7, 0x00A4CF], [0x00A62C, 0x00A63F], @@ -1436,7 +1435,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x0E0000], diff --git a/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js b/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js index fb02a5a62cf..533101df667 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js +++ b/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Bidi_Control` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js b/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js index 54fe8067022..a1b0161bf81 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js +++ b/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Bidi_Mirrored` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js b/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js index bf9e500f505..33cfff9f9c4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js +++ b/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Case_Ignorable` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Cased.js b/test/built-ins/RegExp/property-escapes/generated/Cased.js index b37b2d8caf7..75393a0bef6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Cased.js +++ b/test/built-ins/RegExp/property-escapes/generated/Cased.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Cased` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js index d5c49704f88..cba13918bb1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Casefolded` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js index 256d51880c0..1319fd21d76 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Casemapped` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js index f746975f1ac..7193f4e7f33 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Lowercased` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js index 6e4fc2ab323..83ba4637343 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_NFKC_Casefolded` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js index 02e71046209..0157e775d83 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Titlecased` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js index 86a49aed37e..7a25e896068 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Uppercased` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Dash.js b/test/built-ins/RegExp/property-escapes/generated/Dash.js index 4cb3d388642..c1f77f4d1c8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Dash.js +++ b/test/built-ins/RegExp/property-escapes/generated/Dash.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Dash` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js b/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js index 92363c51f2f..710550084a1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js +++ b/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Default_Ignorable_Code_Point` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Deprecated.js b/test/built-ins/RegExp/property-escapes/generated/Deprecated.js index 1fec46ddd6b..951b52c24de 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Deprecated.js +++ b/test/built-ins/RegExp/property-escapes/generated/Deprecated.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Deprecated` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Diacritic.js b/test/built-ins/RegExp/property-escapes/generated/Diacritic.js index b745e56f04d..fe2190e375b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Diacritic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Diacritic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Diacritic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji.js b/test/built-ins/RegExp/property-escapes/generated/Emoji.js index f35e278f5dd..1bd2fd6c935 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js b/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js index ce6ec389d85..24da213b43e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Component` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js b/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js index 2b82232aa05..26f011484f1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Modifier` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js b/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js index cfde3735469..8545a605694 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Modifier_Base` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js b/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js index 9c22b2e0f0e..1e1ec1cd42e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Presentation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js b/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js index c5cb43a7fcd..36801f2f744 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Extended_Pictographic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Extender.js b/test/built-ins/RegExp/property-escapes/generated/Extender.js index c34e274cb0c..45b1e5ca420 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Extender.js +++ b/test/built-ins/RegExp/property-escapes/generated/Extender.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Extender` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js index a0445d2276c..090ec543dac 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Cased_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js index 0cd3b8b4075..ab2a9a4536a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Close_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js index 0c9d5fa506b..8e8e073ad1a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Connector_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js index ce11446464a..15edfc25e3e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Control` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js index a6628cd9a6c..ee0aacab165 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Currency_Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js index c042a4ea7d3..250b22cb080 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Dash_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js index 35cf4b20494..433462e1972 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Decimal_Number` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js index c3fb9719623..1e35c4ff8ec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Enclosing_Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js index cbd4e927a70..a9410f8cd2d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Final_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js index bdd8b9bb2be..e7781fbbae5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Format` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js index 5e0549eb3aa..f966c42912f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Initial_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js index 6c8837886b8..2339bddb773 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -673,6 +673,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -1371,7 +1372,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js index 1186e43f518..d079b426dec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Letter_Number` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js index cc095349a03..4dc25a5592a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Line_Separator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js index 7731bc85a9f..6214c660899 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Lowercase_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js index f6534491d21..a8402a4d9ca 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js index 3f4384f579d..8fe44454e8b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Math_Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js index f2c04e7c258..6cb2dcb9aa1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Modifier_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js index a201f4633f8..3016613fc7d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Modifier_Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js index b237af1f557..09a90c84f00 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Nonspacing_Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js index 15545d58c30..6985d18d8a0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Number` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js index 21f0646aa32..73648c372c3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Open_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js index 24cf4e9d48f..fbabbd877a3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -426,10 +426,9 @@ const matchSymbols = buildString({ [0x002E5E, 0x002E7F], [0x002EF4, 0x002EFF], [0x002FD6, 0x002FEF], - [0x002FFC, 0x002FFF], [0x003097, 0x003098], [0x003100, 0x003104], - [0x0031E4, 0x0031EF], + [0x0031E4, 0x0031EE], [0x00A48D, 0x00A48F], [0x00A4C7, 0x00A4CF], [0x00A62C, 0x00A63F], @@ -726,7 +725,8 @@ const matchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x0E00FF], @@ -1081,14 +1081,13 @@ const nonMatchSymbols = buildString({ [0x002E80, 0x002E99], [0x002E9B, 0x002EF3], [0x002F00, 0x002FD5], - [0x002FF0, 0x002FFB], - [0x003000, 0x00303F], + [0x002FF0, 0x00303F], [0x003041, 0x003096], [0x003099, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], [0x003190, 0x0031E3], - [0x0031F0, 0x00321E], + [0x0031EF, 0x00321E], [0x003220, 0x00A48C], [0x00A490, 0x00A4C6], [0x00A4D0, 0x00A62B], @@ -1475,6 +1474,7 @@ const nonMatchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js index a646292defd..740d422f7ea 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -524,6 +524,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -1073,7 +1074,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js index 114c015bb5a..c551c67a06e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other_Number` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js index 3aa5bc09048..f2a301765cb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js index 1ac0e1c0a43..5741ca4b31d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other_Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -45,6 +45,7 @@ const matchSymbols = buildString({ 0x0021D3, 0x003004, 0x003020, + 0x0031EF, 0x003250, 0x00A839, 0x00FDCF, @@ -120,7 +121,7 @@ const matchSymbols = buildString({ [0x002E80, 0x002E99], [0x002E9B, 0x002EF3], [0x002F00, 0x002FD5], - [0x002FF0, 0x002FFB], + [0x002FF0, 0x002FFF], [0x003012, 0x003013], [0x003036, 0x003037], [0x00303E, 0x00303F], @@ -334,7 +335,7 @@ const nonMatchSymbols = buildString({ [0x002E52, 0x002E7F], [0x002EF4, 0x002EFF], [0x002FD6, 0x002FEF], - [0x002FFC, 0x003003], + [0x003000, 0x003003], [0x003005, 0x003011], [0x003014, 0x00301F], [0x003021, 0x003035], @@ -342,7 +343,8 @@ const nonMatchSymbols = buildString({ [0x003040, 0x00318F], [0x003192, 0x003195], [0x0031A0, 0x0031BF], - [0x0031E4, 0x0031FF], + [0x0031E4, 0x0031EE], + [0x0031F0, 0x0031FF], [0x00321F, 0x003229], [0x003248, 0x00324F], [0x003251, 0x00325F], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js index 0e5cc5889bd..0da1c303fbd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Paragraph_Separator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js index 7bf44f8d9a1..6df3b85aaf7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Private_Use` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js index b390f716f06..f2f48169c8f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js index 07d6f8463c1..5df2f6cacaf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Separator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js index d7a602196ac..9d7a20d1f04 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Space_Separator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js index 22ef7902afa..403f9dfcbcc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Spacing_Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js index d1c1e98ac75..7d0c0dc8569 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Surrogate` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js index 7c265983920..23e3195b8cf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -59,6 +59,7 @@ const matchSymbols = buildString({ 0x00214F, 0x003004, 0x003020, + 0x0031EF, 0x003250, 0x00AB5B, 0x00FB29, @@ -160,7 +161,7 @@ const matchSymbols = buildString({ [0x002E80, 0x002E99], [0x002E9B, 0x002EF3], [0x002F00, 0x002FD5], - [0x002FF0, 0x002FFB], + [0x002FF0, 0x002FFF], [0x003012, 0x003013], [0x003036, 0x003037], [0x00303E, 0x00303F], @@ -406,7 +407,7 @@ const nonMatchSymbols = buildString({ [0x002E52, 0x002E7F], [0x002EF4, 0x002EFF], [0x002FD6, 0x002FEF], - [0x002FFC, 0x003003], + [0x003000, 0x003003], [0x003005, 0x003011], [0x003014, 0x00301F], [0x003021, 0x003035], @@ -415,7 +416,8 @@ const nonMatchSymbols = buildString({ [0x00309D, 0x00318F], [0x003192, 0x003195], [0x0031A0, 0x0031BF], - [0x0031E4, 0x0031FF], + [0x0031E4, 0x0031EE], + [0x0031F0, 0x0031FF], [0x00321F, 0x003229], [0x003248, 0x00324F], [0x003251, 0x00325F], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js index 3d84c03e82f..382cbab96b1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Titlecase_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js index 964cab59975..5ba402045c5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Unassigned` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -417,10 +417,9 @@ const matchSymbols = buildString({ [0x002E5E, 0x002E7F], [0x002EF4, 0x002EFF], [0x002FD6, 0x002FEF], - [0x002FFC, 0x002FFF], [0x003097, 0x003098], [0x003100, 0x003104], - [0x0031E4, 0x0031EF], + [0x0031E4, 0x0031EE], [0x00A48D, 0x00A48F], [0x00A4C7, 0x00A4CF], [0x00A62C, 0x00A63F], @@ -715,7 +714,8 @@ const matchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x0E0000], @@ -1071,14 +1071,13 @@ const nonMatchSymbols = buildString({ [0x002E80, 0x002E99], [0x002E9B, 0x002EF3], [0x002F00, 0x002FD5], - [0x002FF0, 0x002FFB], - [0x003000, 0x00303F], + [0x002FF0, 0x00303F], [0x003041, 0x003096], [0x003099, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], [0x003190, 0x0031E3], - [0x0031F0, 0x00321E], + [0x0031EF, 0x00321E], [0x003220, 0x00A48C], [0x00A490, 0x00A4C6], [0x00A4D0, 0x00A62B], @@ -1463,6 +1462,7 @@ const nonMatchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js index 862f6067f5e..dbe63b0ff54 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Uppercase_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js b/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js index 1d88be9dbd1..ff2d8dd90d4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js +++ b/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Grapheme_Base` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -446,15 +446,14 @@ const matchSymbols = buildString({ [0x002E80, 0x002E99], [0x002E9B, 0x002EF3], [0x002F00, 0x002FD5], - [0x002FF0, 0x002FFB], - [0x003000, 0x003029], + [0x002FF0, 0x003029], [0x003030, 0x00303F], [0x003041, 0x003096], [0x00309B, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], [0x003190, 0x0031E3], - [0x0031F0, 0x00321E], + [0x0031EF, 0x00321E], [0x003220, 0x00A48C], [0x00A490, 0x00A4C6], [0x00A4D0, 0x00A62B], @@ -889,6 +888,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -1425,11 +1425,10 @@ const nonMatchSymbols = buildString({ [0x002E5E, 0x002E7F], [0x002EF4, 0x002EFF], [0x002FD6, 0x002FEF], - [0x002FFC, 0x002FFF], [0x00302A, 0x00302F], [0x003097, 0x00309A], [0x003100, 0x003104], - [0x0031E4, 0x0031EF], + [0x0031E4, 0x0031EE], [0x00A48D, 0x00A48F], [0x00A4C7, 0x00A4CF], [0x00A62C, 0x00A63F], @@ -1783,7 +1782,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js b/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js index 06a2e4899ef..a8a3b07cefd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js +++ b/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Grapheme_Extend` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js b/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js index d3eec0b160a..dfcc78c2d4a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js +++ b/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Hex_Digit` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js b/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js index dd8a79ce6a7..23f33fda803 100644 --- a/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js +++ b/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,17 +7,19 @@ description: > Unicode property escapes for `IDS_Binary_Operator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0031EF + ], ranges: [ [0x002FF0, 0x002FF1], - [0x002FF4, 0x002FFB] + [0x002FF4, 0x002FFD] ] }); testPropertyEscapes( @@ -37,7 +39,8 @@ const nonMatchSymbols = buildString({ [0x00DC00, 0x00DFFF], [0x000000, 0x002FEF], [0x002FF2, 0x002FF3], - [0x002FFC, 0x00DBFF], + [0x002FFE, 0x0031EE], + [0x0031F0, 0x00DBFF], [0x00E000, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js b/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js index f581488be94..3959cda3c2e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js +++ b/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `IDS_Trinary_Operator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js b/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js index 2822c91c6ed..5f17b8e322e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js +++ b/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `ID_Continue` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -380,6 +380,7 @@ const matchSymbols = buildString({ [0x001FE0, 0x001FEC], [0x001FF2, 0x001FF4], [0x001FF6, 0x001FFC], + [0x00200C, 0x00200D], [0x00203F, 0x002040], [0x002090, 0x00209C], [0x0020D0, 0x0020DC], @@ -410,8 +411,7 @@ const matchSymbols = buildString({ [0x003038, 0x00303C], [0x003041, 0x003096], [0x003099, 0x00309F], - [0x0030A1, 0x0030FA], - [0x0030FC, 0x0030FF], + [0x0030A1, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], [0x0031A0, 0x0031BF], @@ -484,7 +484,7 @@ const matchSymbols = buildString({ [0x00FF10, 0x00FF19], [0x00FF21, 0x00FF3A], [0x00FF41, 0x00FF5A], - [0x00FF66, 0x00FFBE], + [0x00FF65, 0x00FFBE], [0x00FFC2, 0x00FFC7], [0x00FFCA, 0x00FFCF], [0x00FFD2, 0x00FFD7], @@ -781,6 +781,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF], @@ -935,7 +936,6 @@ const nonMatchSymbols = buildString({ 0x002DDF, 0x003030, 0x0030A0, - 0x0030FB, 0x003130, 0x00A67E, 0x00A7D2, @@ -1252,7 +1252,8 @@ const nonMatchSymbols = buildString({ [0x001FD4, 0x001FD5], [0x001FDC, 0x001FDF], [0x001FED, 0x001FF1], - [0x001FFD, 0x00203E], + [0x001FFD, 0x00200B], + [0x00200E, 0x00203E], [0x002041, 0x002053], [0x002055, 0x002070], [0x002072, 0x00207E], @@ -1342,7 +1343,7 @@ const nonMatchSymbols = buildString({ [0x00FEFD, 0x00FF0F], [0x00FF1A, 0x00FF20], [0x00FF3B, 0x00FF3E], - [0x00FF5B, 0x00FF65], + [0x00FF5B, 0x00FF64], [0x00FFBF, 0x00FFC1], [0x00FFC8, 0x00FFC9], [0x00FFD0, 0x00FFD1], @@ -1568,7 +1569,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x0E00FF], diff --git a/test/built-ins/RegExp/property-escapes/generated/ID_Start.js b/test/built-ins/RegExp/property-escapes/generated/ID_Start.js index 84d716110fe..114728af7fd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/ID_Start.js +++ b/test/built-ins/RegExp/property-escapes/generated/ID_Start.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `ID_Start` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -673,6 +673,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -1351,7 +1352,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Ideographic.js b/test/built-ins/RegExp/property-escapes/generated/Ideographic.js index 3ddd87b576d..5c3bfa021d9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Ideographic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Ideographic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Ideographic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -34,6 +34,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -72,7 +73,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Join_Control.js b/test/built-ins/RegExp/property-escapes/generated/Join_Control.js index 8b1f0e5ea32..c159a3c240d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Join_Control.js +++ b/test/built-ins/RegExp/property-escapes/generated/Join_Control.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Join_Control` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js b/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js index 0e5c18344ce..7e2f49f2344 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js +++ b/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Logical_Order_Exception` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Lowercase.js b/test/built-ins/RegExp/property-escapes/generated/Lowercase.js index 4272315ab25..5a8678043b0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Lowercase.js +++ b/test/built-ins/RegExp/property-escapes/generated/Lowercase.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Lowercase` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Math.js b/test/built-ins/RegExp/property-escapes/generated/Math.js index 21bacdce89f..a8bcc36e3b9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Math.js +++ b/test/built-ins/RegExp/property-escapes/generated/Math.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Math` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js b/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js index 6e511229966..75992a337bd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js +++ b/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Noncharacter_Code_Point` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js b/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js index 0f92e3c96d3..8678b01094d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js +++ b/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Pattern_Syntax` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js b/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js index 8916fd96657..00d72fd99f1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js +++ b/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Pattern_White_Space` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js b/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js index 5586368b68a..9daa2c53198 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Quotation_Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Radical.js b/test/built-ins/RegExp/property-escapes/generated/Radical.js index 869c48e9caa..5b2b97eb45a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Radical.js +++ b/test/built-ins/RegExp/property-escapes/generated/Radical.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Radical` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js b/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js index 3ef8bbb9a06..7b246605b28 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js +++ b/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Regional_Indicator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js index e44536e4889..3408e7d4254 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Adlam` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js index 98ce94a2160..e0ca26c05d3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ahom` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js index b34f8fde62e..7c26207688f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Anatolian_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js index 37556977e5e..b6777a13d9d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Arabic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js index fbc8a084d5c..06dcf946a3f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Armenian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js index 8dd0e0c7544..5a63843625c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Avestan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js index c9a253f700b..03a429d6a2d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Balinese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js index 47cbe0f7cea..32078d6757f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bamum` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js index efd831a9964..18dc5071f4f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bassa_Vah` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js index c4e08763b76..b3a03e74f28 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Batak` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js index d186a39399a..10a628bcc28 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bengali` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js index e289103154b..ed31932478c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bhaiksuki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js index a3b59aec364..0cd5b93115a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bopomofo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js index 16905d7d1e8..2c02c47c82a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Brahmi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js index c7a547c9d97..b31f0cc0bee 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Braille` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js index bb6562f773d..67e35081d61 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Buginese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js index 03a8af49f4e..a404578ca04 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Buhid` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js index 0a485bce85b..9c6039638d1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Canadian_Aboriginal` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js index e87f8b2dcc0..9b275533b45 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Carian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js index 4d1d6f5259b..be886bced0d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Caucasian_Albanian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js index 82d537c0a95..0cee8eab485 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Chakma` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js index 5c58fc709a8..3535f767e77 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js index 5d5b66fb346..876fa1a534b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cherokee` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js index d3202beaa71..bb740ba3dec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Chorasmian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js index 912618591d0..601771dba33 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Common` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -36,6 +36,7 @@ const matchSymbols = buildString({ 0x001CFA, 0x003006, 0x0030A0, + 0x0031EF, 0x0032FF, 0x00A92E, 0x00A9CF, @@ -84,8 +85,7 @@ const matchSymbols = buildString({ [0x002B76, 0x002B95], [0x002B97, 0x002BFF], [0x002E00, 0x002E5D], - [0x002FF0, 0x002FFB], - [0x003000, 0x003004], + [0x002FF0, 0x003004], [0x003008, 0x003020], [0x003030, 0x003037], [0x00303C, 0x00303F], @@ -296,7 +296,6 @@ const nonMatchSymbols = buildString({ [0x002B74, 0x002B75], [0x002C00, 0x002DFF], [0x002E5E, 0x002FEF], - [0x002FFC, 0x002FFF], [0x003021, 0x00302F], [0x003038, 0x00303B], [0x003040, 0x00309A], @@ -304,7 +303,8 @@ const nonMatchSymbols = buildString({ [0x0030A1, 0x0030FA], [0x0030FD, 0x00318F], [0x0031A0, 0x0031BF], - [0x0031E4, 0x00321F], + [0x0031E4, 0x0031EE], + [0x0031F0, 0x00321F], [0x003260, 0x00327E], [0x0032D0, 0x0032FE], [0x003300, 0x003357], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js index b33daf017f4..e61b39b5dfb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Coptic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js index 2617209545b..236210e4696 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cuneiform` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js index 3f3aa6f4e09..307a6d27494 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cypriot` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js index 8099bd3285b..1d38f55e8db 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cypro_Minoan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js index 497ddb7fc65..842c2526ecb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cyrillic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js index 6c5d0f83170..295ce6f7c50 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Deseret` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js index 991efadcd1d..c354051a48a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Devanagari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js index 8eec6235947..f16b0c8875e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Dives_Akuru` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js index bb765a5f97d..253e79e96e3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Dogra` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js index f5d566aa01d..d95132209c4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Duployan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js index 1399af2f97a..6d42aaf4f73 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Egyptian_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js index c4cdee7b4d9..7e228ac197b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Elbasan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js index b84892d23bc..7b146a4cca7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Elymaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js index 4290767d28d..b3e34468b70 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ethiopic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js index aaef6f75345..39aca2bd9a7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Georgian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js index a13ad801367..3f24487d38c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Glagolitic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js index 92238fc1df8..a8c35167896 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Gothic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js index 89c090efd47..1eb18815132 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Grantha` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js index a0393f11005..40d554bbf94 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Greek` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js index fcad3791890..c3ca9efeb89 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Gujarati` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js index 06d665b557c..3b96ec41bb5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Gunjala_Gondi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js index 9b982bb8acd..d0bea1f511f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Gurmukhi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js index 4336c8482f3..77d4eb87577 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Han` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -35,6 +35,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -85,7 +86,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js index 11dcf41115d..2ac43c16de1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hangul` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js index 092118a692d..9a10747072e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hanifi_Rohingya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js index 4b1e374e96c..2cb433f5c9f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hanunoo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js index 32111f0fb35..6d40da2dc78 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hatran` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js index 9f5babf684b..af3db4e9507 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hebrew` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js index aa9c617b7c5..1c7e7863cca 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hiragana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js index 672dc2ed736..357809765ee 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Imperial_Aramaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js index 47301198264..901d4d4f82e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Inherited` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js index 3bec5d50660..d873f3cbdb8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Inscriptional_Pahlavi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js index 936a1800985..92f0cfa931b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Inscriptional_Parthian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js index c52e5f52d8a..6a2da167f6d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Javanese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js index 2e65623d7f9..7d02b43c028 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kaithi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js index 4cee7387292..0d41e0b3283 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kannada` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js index 8ec403d5c5e..75baa1a6acb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Katakana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js index 488418eedfa..920e8347879 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kawi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js index b5c2dc7a2b8..eea44545452 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kayah_Li` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js index 9a967a9ce9d..4f443bd59ab 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kharoshthi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js index aed950e3fc6..8060aeaf97a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Khitan_Small_Script` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js index 97c2c61bc18..d3ba5d8a23e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Khmer` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js index 16d7625a144..fb70539c22d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Khojki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js index 3c8573cf1d8..fad8a373bee 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Khudawadi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js index 5c8c9160fbe..92fbb00969e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lao` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js index 7eee49cb4e6..cfe2bdbd0f1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Latin` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js index e1d28193438..41690f1a0ce 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lepcha` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js index 34adbe2078d..c01baac352f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Limbu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js index 700fb456ef7..42ca654c392 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Linear_A` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js index d81b92ff2dd..f0475584fd3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Linear_B` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js index d9ace902153..b59c44bbbdf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lisu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js index 2ae5116fb13..ba375a8d179 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lycian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js index 3c223db7f9a..aec7331cd7c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lydian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js index 402eb927847..abea641b0ee 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mahajani` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js index 8f3bf83d3ae..a26498f1f67 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Makasar` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js index 8dd902edd0d..4203b6ee332 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Malayalam` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js index b1b0277585f..547ba8de85f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mandaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js index 006fb5f62ce..ed777dcb72f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Manichaean` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js index ff36af99da2..6c5193d7c70 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Marchen` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js index fa1628bffc0..cdf12e3a5b4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Masaram_Gondi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js index 4008e087bba..c524e69b503 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Medefaidrin` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js index 4c0611fb244..7eee3c7dd31 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Meetei_Mayek` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js index 7a642e3e606..77e84ebaf58 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mende_Kikakui` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js index a2b77f10262..9ef914633a4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Meroitic_Cursive` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js index 91b67f38b6e..8dcbdd08024 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Meroitic_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js index dbad88b047f..abb2336f284 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Miao` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js index 9020b353c7c..74ac0ab928b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Modi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js index bd1ea5ed5f7..f6726b18d8d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mongolian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js index befacba9feb..8c4d367a07a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mro` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js index 3d0f846cfed..de38fea45a8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Multani` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js index 54e376bcddc..141acab263d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Myanmar` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js index 2cc55340483..4b837a2fa9c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nabataean` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js index 8ebe9a9150f..a9804dc3fc3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nag_Mundari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js index 3a5fd53eb69..73f832d9412 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nandinagari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js index ff901818337..aee19ad9d5b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=New_Tai_Lue` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js index 6bda00c1bf4..afc9ea21457 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Newa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js index 7477aabdc88..082609745bf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nko` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js index 9685c074654..0093434ef7c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nushu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js index 206e6acfb9d..6fd87fad9b0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nyiakeng_Puachue_Hmong` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js index 3eec9cf1acd..8219315d8a1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ogham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js index 17efceb3a66..3910547d16a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ol_Chiki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js index fb8730aaca1..cd0fea65cf7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Hungarian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js index fb55a4f8c8b..6576b663d6a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Italic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js index 7dc9872e447..6e5635e5178 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_North_Arabian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js index f38b977805e..0f6187103dd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Permic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js index 0c5a6e68147..15cbdb9c44b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Persian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js index 72ede19f280..85a798aed6a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Sogdian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js index d2d9d4e19b9..abf1bc0d251 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_South_Arabian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js index c3e752c0a5e..f60817ca60f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Turkic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js index 810e7f65048..8f9951f4bad 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Uyghur` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js index 2c7f5e0fd29..c6a0790a300 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Oriya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js index 3d4ce926f76..946059455c2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Osage` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js index a31b88638a0..86d7ed38638 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Osmanya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js index ebdd2db7d8e..f2c26dc5c29 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Pahawh_Hmong` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js index f233878931f..7f0c1e55dae 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Palmyrene` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js index ae62d7b73e3..4fc03d858d3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Pau_Cin_Hau` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js index 4b5cab0dbd9..3c8df822d9e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Phags_Pa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js index 18329828c84..3b59cc50975 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Phoenician` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js index da35cb47bd8..919644e9e6c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Psalter_Pahlavi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js index 92424d5ab4c..73510799129 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Rejang` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js index d3d20d348b5..9132da4aeee 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Runic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js index ac4edd6f9c1..2c51ffaef98 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Samaritan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js index 81c8064cb0c..f40e8127ce6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Saurashtra` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js index 5958020f4cb..c3eb129e67e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sharada` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js index 8b4d4c08974..4ceea4d5f59 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Shavian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js index fb50d3802b7..55b3346d375 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Siddham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js index 435113ea3f0..509e5006b7f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=SignWriting` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js index 6b01fa3a588..3ffafb3aa11 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sinhala` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js index ab2a4b03440..fff34b39496 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sogdian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js index 98070b1bc36..801ac772297 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sora_Sompeng` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js index 11af953dbb8..5d44f842fb1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Soyombo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js index b7530720ae5..7b7cd24679f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sundanese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js index 975bd8bdd55..23a48977efb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Syloti_Nagri` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js index 7c8ade4a951..51dd65454e9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Syriac` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js index 42a266948f4..9f070983dc9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tagalog` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js index 9f418cdbc50..b47fc28d9ef 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tagbanwa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js index d6d2bf9ce52..6628c191148 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tai_Le` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js index ab562383a32..10994c5ffde 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tai_Tham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js index 25c95975a09..958d5b608ca 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tai_Viet` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js index 1e38e0f3ab9..d8dacc60adb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Takri` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js index 96b2df0df15..f56959a30b7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tamil` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js index 3fb9b8076bf..ddf0e527e86 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tangsa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js index 754cf0aef48..8a8ec88a810 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tangut` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js index 22f293a8141..b042c7d4056 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Telugu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js index ac533ba79b8..14886ce970f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Thaana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js index 1a3cb8f2d96..4657d215a25 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Thai` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js index 0c4682a780e..c4842c2de92 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tibetan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js index 274b109d348..9eac108cdcf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tifinagh` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js index 8501e0fe989..b9d2925e594 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tirhuta` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js index 4cf4110650e..e0f9e0f85ba 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Toto` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js index 935aba45e69..d49b246cd81 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ugaritic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js index da754fcb446..91a6fc7c056 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Vai` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js index d9f6be1dcdf..aeeb161c3ef 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Vithkuqi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js index 7fdd3521d8d..e97f3755f19 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Wancho` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js index 9aec274fa42..67f6a77c3fc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Warang_Citi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js index ae8197ce0e0..66cad0aef64 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Yezidi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js index 5ab68a11108..501ab6d5dc9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Yi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js index e13a4dcac5a..a4ea3e3498f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Zanabazar_Square` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js index 4f6bc17e0a4..e462c83c35f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Adlam` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js index 2021f53cd76..dc39f1d8a66 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ahom` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js index b8a1bbf964e..f37b37f3ef7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Anatolian_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js index 06207fa8040..3cedf318e5c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Arabic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js index a18be858ac5..8ddc5ad052f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Armenian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js index ff14986246a..f0f7d8796f6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Avestan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js index c0ceab5b171..d1c58dbbf85 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Balinese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js index 8ee3b26c070..a0146cede76 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bamum` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js index 601eaebf914..d18614c6efb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bassa_Vah` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js index 97c9cbf08eb..889b0a7ead5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Batak` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js index 2202e0434f7..9754df14e1a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bengali` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js index edfd7bea5b0..c5df7922460 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bhaiksuki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js index 931c81f312b..c846efa3472 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bopomofo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js index a355c180b27..797a7d5d1eb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Brahmi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js index 1b6f9acc75a..0319111426d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Braille` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js index e1bfd72821a..f80bc8c935f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Buginese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js index fa0d440ff45..e15925b5121 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Buhid` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js index bf443177dc1..7d96039bec9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Canadian_Aboriginal` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js index e241cf1e06d..cd5d13778a1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Carian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js index bc1afa2328e..466949c56ca 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Caucasian_Albanian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js index cdf9ef73a72..ba596c2b544 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Chakma` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js index 5061f1ddc38..dbc2091c828 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js index 1d127494500..3e949517965 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cherokee` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js index c32f40b333f..db5ca391fec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Chorasmian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js index 2ec57cbeaa2..6be4f281016 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Common` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -25,11 +25,11 @@ const matchSymbols = buildString({ 0x0006DD, 0x0008E2, 0x000E3F, - 0x003000, 0x003004, 0x003012, 0x003020, 0x003036, + 0x0031EF, 0x00327F, 0x0033FF, 0x00AB5B, @@ -72,7 +72,7 @@ const matchSymbols = buildString({ [0x002B97, 0x002BFF], [0x002E00, 0x002E42], [0x002E44, 0x002E5D], - [0x002FF0, 0x002FFB], + [0x002FF0, 0x003000], [0x003248, 0x00325F], [0x0032B1, 0x0032BF], [0x0032CC, 0x0032CF], @@ -255,12 +255,12 @@ const nonMatchSymbols = buildString({ [0x002B74, 0x002B75], [0x002C00, 0x002DFF], [0x002E5E, 0x002FEF], - [0x002FFC, 0x002FFF], [0x003001, 0x003003], [0x003005, 0x003011], [0x003013, 0x00301F], [0x003021, 0x003035], - [0x003037, 0x003247], + [0x003037, 0x0031EE], + [0x0031F0, 0x003247], [0x003260, 0x00327E], [0x003280, 0x0032B0], [0x0032C0, 0x0032CB], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js index ebb211879da..402adb9d9fa 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Coptic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js index e6f5e46fcb4..edf6d9d614d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cuneiform` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js index fefac587129..f4f119915e0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cypriot` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js index 60bb96e3670..6faff40303f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cypro_Minoan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js index f4a406e8348..bc7a54d334f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cyrillic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js index 2cc3e361df1..8ea8123928a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Deseret` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js index 8eaa83a6344..f4a929b22b6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Devanagari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js index 63856454820..f503e257cbd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Dives_Akuru` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js index 2d5ce63115e..650d2d17dbc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Dogra` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js index bfad336880d..e41fae8be4c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Duployan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js index bbc28827f71..af7afa6923e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Egyptian_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js index 90df78dd0a6..654d7f92dac 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Elbasan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js index 0720645d124..ad644cf2485 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Elymaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js index 405c1515895..5e654f90733 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ethiopic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js index d7ed38a2113..4e44cb9058c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Georgian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js index d340cff3fa2..8a62111945e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Glagolitic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js index fad57e60765..a941378bc91 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Gothic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js index 63648abd010..492ecfbe5e2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Grantha` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js index a50a18197fb..3a3364fc238 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Greek` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js index 938ebca849b..fe04abc352e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Gujarati` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js index 5cbe44b6d4b..02a5ced1f41 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Gunjala_Gondi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js index fab596ef3ad..52708a1273c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Gurmukhi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js index 0e2fd61a26a..a448bfd6b3d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Han` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -52,6 +52,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -119,7 +120,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js index 1b44b3bd3d4..763c696f19d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hangul` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js index fbddc2b4a2b..58bc1fc4ec7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hanifi_Rohingya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js index 882438f156f..ac7ab20f021 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hanunoo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js index 3105dbf5a30..aad64c2f9b6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hatran` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js index 5034f24bbf9..b30bfb051fa 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hebrew` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js index 689b2ec1a1f..6781b50fd9e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hiragana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js index bbb91b551a1..0058e75c46a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Imperial_Aramaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js index a6ddf287b90..40a1abc2e95 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Inherited` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js index 3ab5a55a91e..21acf030460 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Inscriptional_Pahlavi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js index 5f82155d39c..030781f4f7e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Inscriptional_Parthian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js index 7cbf0f27f5f..1964e805466 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Javanese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js index fb5493f7d54..3f5485dbf3c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kaithi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js index 9d1d84bcdf8..3be1f716509 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kannada` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js index b4b11f6aa3a..8e94a013b4e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Katakana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js index 42eb6365651..ec7be36e510 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kawi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js index 2307e42ce93..34041e4ba1b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kayah_Li` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js index 14e1d1a6a3a..f2af77e4c6b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kharoshthi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js index 8294d3f8bbb..8dfa735ed5a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Khitan_Small_Script` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js index 3234b9bf56e..b89a5c427be 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Khmer` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js index a60f36d8a81..1c2f08f2f16 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Khojki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js index f41fe8e1299..3facbcdcd3c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Khudawadi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js index 10ecbb0c968..0e7f9388ba1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lao` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js index 727bd49a35a..4c7fa1ec26f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Latin` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js index ee8daa1b53c..4477107f1ca 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lepcha` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js index ca6182ebded..a1f799157c4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Limbu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js index d03962981c8..4715ff42320 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Linear_A` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js index 92cc81e263d..ec284397f6d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Linear_B` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js index 73a7fc7827b..f685009e8de 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lisu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js index a307166038d..931cb1d07d3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lycian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js index 313642106d5..1b4f8357b43 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lydian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js index 6459cab6fb7..010ffd6025a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mahajani` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js index b0db93c812a..da376742921 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Makasar` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js index 704040d7a8a..914127f51df 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Malayalam` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,7 +15,8 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ - 0x001CDA + 0x001CDA, + 0x001CF2 ], ranges: [ [0x000951, 0x000952], @@ -66,7 +67,8 @@ const nonMatchSymbols = buildString({ [0x000D50, 0x000D53], [0x000D64, 0x000D65], [0x000D80, 0x001CD9], - [0x001CDB, 0x00A82F], + [0x001CDB, 0x001CF1], + [0x001CF3, 0x00A82F], [0x00A833, 0x00DBFF], [0x00E000, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js index 6cda13cc9da..9f255fe931f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mandaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js index 05f4f60315a..1bfaa16802d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Manichaean` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js index 90a8202d5df..de57a8245cb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Marchen` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js index 4bd86b2f96d..55d47ccd3d6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Masaram_Gondi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js index 8e3efe0ed4b..4648450cc1d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Medefaidrin` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js index 3585fa18508..d0cb4c26159 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Meetei_Mayek` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js index 460f54d22a1..9cbc61a75b3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mende_Kikakui` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js index d6780d6e239..ddf44bb9639 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Meroitic_Cursive` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js index 7cd06ad4a6a..5a88d02fd0b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Meroitic_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js index 8a4f9659451..adb77922376 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Miao` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js index eaa130694b6..552291fa713 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Modi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js index c0f210d9b18..aecd4905853 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mongolian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js index 6f2930bf62b..871600e3906 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mro` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js index 6d28219a82e..0e85d672cbe 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Multani` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js index ba1a439ba9b..ea17f824ea0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Myanmar` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js index 1147e761ead..85720797a06 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nabataean` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js index 37dcc9ca8f7..95a3aef38be 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nag_Mundari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js index a0ee68b98b0..b9e0f5f3d63 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nandinagari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js index a4df38d735f..d1e30f93e7f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=New_Tai_Lue` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js index a90ff4a4e72..53d7bdad973 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Newa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js index 34dd9679675..4e372529a8b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nko` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js index ef7f9633470..706965c4447 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nushu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js index 55bc5b7bb54..af9823812d5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nyiakeng_Puachue_Hmong` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js index c5b87891a76..d684b3d3bdc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ogham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js index cc87ade9c47..25194d68b9a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ol_Chiki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js index 15a2cb6c297..6e3322072de 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Hungarian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js index ea8ceebef37..cb9244e1875 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Italic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js index c0ad7108d9f..8340a9d6366 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_North_Arabian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js index b9fc1423d54..475557783ce 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Permic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js index 12ac94fc1c2..31e694c5a99 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Persian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js index be82d688fc0..aa8e60964f0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Sogdian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js index 25c5de2fa98..e6ba0d5b0af 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_South_Arabian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js index 5667ff647e7..3dae818660c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Turkic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js index db1f609b96c..f8bad939de4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Uyghur` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js index 2a9c87a65a2..ec0c1800d3e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Oriya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js index 480d5d7ac62..43235cf116b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Osage` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js index 4c138621d5b..f12380a4947 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Osmanya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js index dccbea5ac53..e9b8a4b421f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Pahawh_Hmong` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js index 1f2ee57c09c..9d330c48e68 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Palmyrene` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js index 0d6195ca1d2..3ed707bafc3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Pau_Cin_Hau` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js index 0e614d04d87..8d20d3b95e1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Phags_Pa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js index b1ba3a955a3..57b5c2f29ee 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Phoenician` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js index 3fb2015904f..3fa3f34aad6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Psalter_Pahlavi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js index 983a12a3519..d8de30d85eb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Rejang` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js index 228fc0dc3af..885bc08b319 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Runic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js index d2d5d0b79a9..d0041ab2ece 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Samaritan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js index 563edf79eaf..ea74bd0c9c5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Saurashtra` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js index b0bda0de607..d9e7d9ddb81 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sharada` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -18,10 +18,12 @@ const matchSymbols = buildString({ 0x000951, 0x001CD7, 0x001CD9, - 0x001CE0 + 0x001CE0, + 0x00A838 ], ranges: [ [0x001CDC, 0x001CDD], + [0x00A830, 0x00A835], [0x011180, 0x0111DF] ] }); @@ -56,7 +58,9 @@ const nonMatchSymbols = buildString({ [0x000952, 0x001CD6], [0x001CDA, 0x001CDB], [0x001CDE, 0x001CDF], - [0x001CE1, 0x00DBFF], + [0x001CE1, 0x00A82F], + [0x00A836, 0x00A837], + [0x00A839, 0x00DBFF], [0x00E000, 0x01117F], [0x0111E0, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js index b57f2a1bfef..1a0aaa944be 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Shavian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js index fefef8bb5e4..76254970df5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Siddham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js index 697dd82ad81..688ca83e63e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=SignWriting` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js index bacebccbe1d..b2cd8de3385 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sinhala` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -17,7 +17,8 @@ const matchSymbols = buildString({ loneCodePoints: [ 0x000DBD, 0x000DCA, - 0x000DD6 + 0x000DD6, + 0x001CF2 ], ranges: [ [0x000964, 0x000965], @@ -72,7 +73,8 @@ const nonMatchSymbols = buildString({ [0x000DCB, 0x000DCE], [0x000DE0, 0x000DE5], [0x000DF0, 0x000DF1], - [0x000DF5, 0x00DBFF], + [0x000DF5, 0x001CF1], + [0x001CF3, 0x00DBFF], [0x00E000, 0x0111E0], [0x0111F5, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js index dc2f97ea3f0..46004c81268 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sogdian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js index 8ce99eac609..dfba5a958ec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sora_Sompeng` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js index 3f391a18032..cd42a548e2d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Soyombo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js index 443368c921c..125ad9ef015 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sundanese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js index d1b01fd961e..cd9a0a57151 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Syloti_Nagri` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js index 0d4cc29f23f..c9cfce1e3bb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Syriac` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js index 6e0f2644868..f97a272926a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tagalog` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js index 1473e030634..87c00da179b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tagbanwa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js index 4a9cd5e7a7c..d5a91f06b2f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tai_Le` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js index 4ce7c57a6e6..0282e277ba3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tai_Tham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js index 0b490223532..6be7841a86c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tai_Viet` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js index f4a648d6600..77c3cb7d2b9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Takri` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js index 8829c5c06d2..8be781c546f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tamil` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js index 40db7fad7bb..24d10065cec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tangsa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js index 1a22b6bccf3..a6f42f9a5b4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tangut` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js index 211e807136c..335c878a9c4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Telugu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js index d189d00e032..5eaec513c30 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Thaana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js index 73b75a23c02..6445313502d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Thai` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js index 38cdcd04c64..7dca18edfd0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tibetan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js index 79df938a2f6..fdb94722230 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tifinagh` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js index dbed7b84adf..87dc1be357c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tirhuta` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js index 0fb2f6f2db5..d6a6a02afa6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Toto` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js index 115d8ecf9d2..cdabd35b164 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ugaritic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js index 5f902839eab..37198063d80 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Vai` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js index cbb77ed34ca..8a1708e4cd7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Vithkuqi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js index d2edff0db61..62edc14ece2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Wancho` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js index c8e070c7a08..0ed932ea03a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Warang_Citi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js index e8057290a5e..599228d0c9b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Yezidi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js index 1558b14f3aa..742ebcec13c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Yi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js index 685ba3edfa8..219a759e1ac 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Zanabazar_Square` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js b/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js index c0de48d071d..4c53793af3a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js +++ b/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Sentence_Terminal` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -58,6 +58,7 @@ const matchSymbols = buildString({ [0x00104A, 0x00104B], [0x001367, 0x001368], [0x001735, 0x001736], + [0x0017D4, 0x0017D5], [0x001944, 0x001945], [0x001AA8, 0x001AAB], [0x001B5A, 0x001B5B], @@ -134,7 +135,8 @@ const nonMatchSymbols = buildString({ [0x001363, 0x001366], [0x001369, 0x00166D], [0x00166F, 0x001734], - [0x001737, 0x001802], + [0x001737, 0x0017D3], + [0x0017D6, 0x001802], [0x001804, 0x001808], [0x00180A, 0x001943], [0x001946, 0x001AA7], diff --git a/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js b/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js index d264f2b48d7..a64cc75f56e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js +++ b/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Soft_Dotted` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js index 9a069d1fe39..5e77097cb4f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Terminal_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js b/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js index 386863b16e2..68687894207 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js +++ b/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Unified_Ideograph` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -31,6 +31,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x030000, 0x03134A], [0x031350, 0x0323AF] ] @@ -66,7 +67,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02FFFF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Uppercase.js b/test/built-ins/RegExp/property-escapes/generated/Uppercase.js index bc180fb3e77..f23b3119927 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Uppercase.js +++ b/test/built-ins/RegExp/property-escapes/generated/Uppercase.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Uppercase` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js b/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js index 51e2054a44e..fbb8ba35e19 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js +++ b/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Variation_Selector` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/White_Space.js b/test/built-ins/RegExp/property-escapes/generated/White_Space.js index 3a5cc75994e..1c9abf3ef50 100644 --- a/test/built-ins/RegExp/property-escapes/generated/White_Space.js +++ b/test/built-ins/RegExp/property-escapes/generated/White_Space.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `White_Space` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js b/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js index 0417f574003..0b76983f821 100644 --- a/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js +++ b/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `XID_Continue` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -386,6 +386,7 @@ const matchSymbols = buildString({ [0x001FE0, 0x001FEC], [0x001FF2, 0x001FF4], [0x001FF6, 0x001FFC], + [0x00200C, 0x00200D], [0x00203F, 0x002040], [0x002090, 0x00209C], [0x0020D0, 0x0020DC], @@ -417,8 +418,7 @@ const matchSymbols = buildString({ [0x003041, 0x003096], [0x003099, 0x00309A], [0x00309D, 0x00309F], - [0x0030A1, 0x0030FA], - [0x0030FC, 0x0030FF], + [0x0030A1, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], [0x0031A0, 0x0031BF], @@ -491,7 +491,7 @@ const matchSymbols = buildString({ [0x00FF10, 0x00FF19], [0x00FF21, 0x00FF3A], [0x00FF41, 0x00FF5A], - [0x00FF66, 0x00FFBE], + [0x00FF65, 0x00FFBE], [0x00FFC2, 0x00FFC7], [0x00FFCA, 0x00FFCF], [0x00FFD2, 0x00FFD7], @@ -788,6 +788,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF], @@ -942,7 +943,6 @@ const nonMatchSymbols = buildString({ 0x002DDF, 0x003030, 0x0030A0, - 0x0030FB, 0x003130, 0x00A67E, 0x00A7D2, @@ -1263,7 +1263,8 @@ const nonMatchSymbols = buildString({ [0x001FD4, 0x001FD5], [0x001FDC, 0x001FDF], [0x001FED, 0x001FF1], - [0x001FFD, 0x00203E], + [0x001FFD, 0x00200B], + [0x00200E, 0x00203E], [0x002041, 0x002053], [0x002055, 0x002070], [0x002072, 0x00207E], @@ -1356,7 +1357,7 @@ const nonMatchSymbols = buildString({ [0x00FEFD, 0x00FF0F], [0x00FF1A, 0x00FF20], [0x00FF3B, 0x00FF3E], - [0x00FF5B, 0x00FF65], + [0x00FF5B, 0x00FF64], [0x00FFBF, 0x00FFC1], [0x00FFC8, 0x00FFC9], [0x00FFD0, 0x00FFD1], @@ -1582,7 +1583,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x0E00FF], diff --git a/test/built-ins/RegExp/property-escapes/generated/XID_Start.js b/test/built-ins/RegExp/property-escapes/generated/XID_Start.js index 4a74acafdc6..8cc0bc0ce24 100644 --- a/test/built-ins/RegExp/property-escapes/generated/XID_Start.js +++ b/test/built-ins/RegExp/property-escapes/generated/XID_Start.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `XID_Start` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -680,6 +680,7 @@ const matchSymbols = buildString({ [0x02B740, 0x02B81D], [0x02B820, 0x02CEA1], [0x02CEB0, 0x02EBE0], + [0x02EBF0, 0x02EE5D], [0x02F800, 0x02FA1D], [0x030000, 0x03134A], [0x031350, 0x0323AF] @@ -1365,7 +1366,8 @@ const nonMatchSymbols = buildString({ [0x02B73A, 0x02B73F], [0x02B81E, 0x02B81F], [0x02CEA2, 0x02CEAF], - [0x02EBE1, 0x02F7FF], + [0x02EBE1, 0x02EBEF], + [0x02EE5E, 0x02F7FF], [0x02FA1E, 0x02FFFF], [0x03134B, 0x03134F], [0x0323B0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js index c8ceeacad85..3dbc0150b5d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `Basic_Emoji` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js index 31fe4a5fb59..41c4fc867db 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `Basic_Emoji` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js index 5e05c65fab1..1ce822949c6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Basic_Emoji` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js index 8f7b0ed8ddc..e319e99918a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Basic_Emoji` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js index 419b5ff2681..adb2500a756 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js index aaead294394..2186bf19911 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js index 487300f5d3a..d168b0018b8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js index 73f33f7bdda..4b4ae71882f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js index a6c32211a6f..33d8ce30fb0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js index fda57a409b2..a6a4b3333f2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js index 52fcf5c1ad3..102cb95e2ed 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js index 6996224ca11..7cc87a2e7a4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] @@ -144,6 +144,7 @@ testPropertyOfStrings({ "\u26CF\uFE0F", "\u26D1\uFE0F", "\u26D3\uFE0F", + "\u26D3\uFE0F\u200D\u{1F4A5}", "\u26D4", "\u26E9\uFE0F", "\u26EA", @@ -600,6 +601,7 @@ testPropertyOfStrings({ "\u{1F342}", "\u{1F343}", "\u{1F344}", + "\u{1F344}\u200D\u{1F7EB}", "\u{1F345}", "\u{1F346}", "\u{1F347}", @@ -607,6 +609,7 @@ testPropertyOfStrings({ "\u{1F349}", "\u{1F34A}", "\u{1F34B}", + "\u{1F34B}\u200D\u{1F7E9}", "\u{1F34C}", "\u{1F34D}", "\u{1F34E}", @@ -733,22 +736,40 @@ testPropertyOfStrings({ "\u{1F3C2}\u{1F3FF}", "\u{1F3C3}", "\u{1F3C3}\u200D\u2640\uFE0F", + "\u{1F3C3}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u200D\u2642\uFE0F", + "\u{1F3C3}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FB}", "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FC}", "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FD}", "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FE}", "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FF}", "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u27A1\uFE0F", "\u{1F3C4}", "\u{1F3C4}\u200D\u2640\uFE0F", "\u{1F3C4}\u200D\u2642\uFE0F", @@ -927,6 +948,7 @@ testPropertyOfStrings({ "\u{1F425}", "\u{1F426}", "\u{1F426}\u200D\u2B1B", + "\u{1F426}\u200D\u{1F525}", "\u{1F427}", "\u{1F428}", "\u{1F429}", @@ -1105,12 +1127,15 @@ testPropertyOfStrings({ "\u{1F468}\u200D\u{1F680}", "\u{1F468}\u200D\u{1F692}", "\u{1F468}\u200D\u{1F9AF}", + "\u{1F468}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u200D\u{1F9B0}", "\u{1F468}\u200D\u{1F9B1}", "\u{1F468}\u200D\u{1F9B2}", "\u{1F468}\u200D\u{1F9B3}", "\u{1F468}\u200D\u{1F9BC}", + "\u{1F468}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u200D\u{1F9BD}", + "\u{1F468}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FB}", "\u{1F468}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F", @@ -1144,12 +1169,15 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FB}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FB}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FB}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FB}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}", "\u{1F468}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F", @@ -1183,12 +1211,15 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FC}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FC}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FC}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}", "\u{1F468}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F", @@ -1222,12 +1253,15 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FD}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FD}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FD}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}", "\u{1F468}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F", @@ -1261,12 +1295,15 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FE}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FE}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FE}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}", "\u{1F468}\u{1F3FF}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F", @@ -1300,12 +1337,15 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FF}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FF}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FF}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}", "\u{1F469}\u200D\u2695\uFE0F", "\u{1F469}\u200D\u2696\uFE0F", @@ -1339,12 +1379,15 @@ testPropertyOfStrings({ "\u{1F469}\u200D\u{1F680}", "\u{1F469}\u200D\u{1F692}", "\u{1F469}\u200D\u{1F9AF}", + "\u{1F469}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u200D\u{1F9B0}", "\u{1F469}\u200D\u{1F9B1}", "\u{1F469}\u200D\u{1F9B2}", "\u{1F469}\u200D\u{1F9B3}", "\u{1F469}\u200D\u{1F9BC}", + "\u{1F469}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u200D\u{1F9BD}", + "\u{1F469}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FB}", "\u{1F469}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F", @@ -1392,12 +1435,15 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FB}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FB}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FB}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FB}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}", "\u{1F469}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F", @@ -1445,12 +1491,15 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FC}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FC}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FC}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}", "\u{1F469}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F", @@ -1498,12 +1547,15 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FD}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FD}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FD}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}", "\u{1F469}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F", @@ -1551,12 +1603,15 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FE}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FE}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FE}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}", "\u{1F469}\u{1F3FF}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F", @@ -1604,12 +1659,15 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FF}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FF}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FF}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F46A}", "\u{1F46B}", "\u{1F46B}\u{1F3FB}", @@ -2232,6 +2290,8 @@ testPropertyOfStrings({ "\u{1F640}", "\u{1F641}", "\u{1F642}", + "\u{1F642}\u200D\u2194\uFE0F", + "\u{1F642}\u200D\u2195\uFE0F", "\u{1F643}", "\u{1F644}", "\u{1F645}", @@ -2464,22 +2524,40 @@ testPropertyOfStrings({ "\u{1F6B5}\u{1F3FF}\u200D\u2642\uFE0F", "\u{1F6B6}", "\u{1F6B6}\u200D\u2640\uFE0F", + "\u{1F6B6}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u200D\u2642\uFE0F", + "\u{1F6B6}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FB}", "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FC}", "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FD}", "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FE}", "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FF}", "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u27A1\uFE0F", "\u{1F6B7}", "\u{1F6B8}", "\u{1F6B9}", @@ -3019,22 +3097,40 @@ testPropertyOfStrings({ "\u{1F9CD}\u{1F3FF}\u200D\u2642\uFE0F", "\u{1F9CE}", "\u{1F9CE}\u200D\u2640\uFE0F", + "\u{1F9CE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u200D\u2642\uFE0F", + "\u{1F9CE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FB}", "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FC}", "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FD}", "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FE}", "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FF}", "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u27A1\uFE0F", "\u{1F9CF}", "\u{1F9CF}\u200D\u2640\uFE0F", "\u{1F9CF}\u200D\u2642\uFE0F", @@ -3075,12 +3171,19 @@ testPropertyOfStrings({ "\u{1F9D1}\u200D\u{1F692}", "\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}", "\u{1F9D1}\u200D\u{1F9AF}", + "\u{1F9D1}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u200D\u{1F9B0}", "\u{1F9D1}\u200D\u{1F9B1}", "\u{1F9D1}\u200D\u{1F9B2}", "\u{1F9D1}\u200D\u{1F9B3}", "\u{1F9D1}\u200D\u{1F9BC}", + "\u{1F9D1}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u200D\u{1F9BD}", + "\u{1F9D1}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", "\u{1F9D1}\u{1F3FB}", "\u{1F9D1}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u2696\uFE0F", @@ -3114,12 +3217,15 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u2696\uFE0F", @@ -3153,12 +3259,15 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}", "\u{1F9D1}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u2696\uFE0F", @@ -3192,12 +3301,15 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u2696\uFE0F", @@ -3231,12 +3343,15 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}", "\u{1F9D1}\u{1F3FF}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u2696\uFE0F", @@ -3270,12 +3385,15 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D2}", "\u{1F9D2}\u{1F3FB}", "\u{1F9D2}\u{1F3FC}", diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js index 2c7a3aa40cd..9f4b33bb8b8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js index 4962acb06ea..bb015069eb1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js index 86631f2d09d..3e3d6078d1c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js index 40df0483ec4..c1f0062e216 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js index 0bf0d7e81d6..446ae111638 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js index 3cd2b4085f7..e28f7c2b09f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js index e2640f19d92..59c9007cb20 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js index f415a21a0df..6ca8112326a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js index e1b9b319eea..5bbc66b1229 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js index 0d3ce681f74..1aa05b245c6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js index 9f059584563..db8698d07b4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js index 6a7a30ed470..95b9945a1ad 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js index 8f2fb5e32f7..e08bf08c5bb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js index d48ef43473c..613470be796 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js index 9577c7a2fec..7c01ccf46b9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js index c5f946ac763..b104c385d40 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.0.0 + Unicode v15.1.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] @@ -259,6 +259,10 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", "\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}", + "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", @@ -267,7 +271,6 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FB}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", @@ -281,7 +284,6 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FC}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", @@ -295,7 +297,6 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FD}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", @@ -309,7 +310,6 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FE}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", @@ -323,7 +323,6 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D1}\u{1F3FF}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", @@ -349,6 +348,12 @@ testPropertyOfStrings({ "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FC}", "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FD}", "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1F3C3}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u27A1\uFE0F", "\u{1F468}\u200D\u2695\uFE0F", "\u{1F468}\u200D\u2696\uFE0F", "\u{1F468}\u200D\u2708\uFE0F", @@ -367,8 +372,11 @@ testPropertyOfStrings({ "\u{1F468}\u200D\u{1F680}", "\u{1F468}\u200D\u{1F692}", "\u{1F468}\u200D\u{1F9AF}", + "\u{1F468}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u200D\u{1F9BC}", + "\u{1F468}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u200D\u{1F9BD}", + "\u{1F468}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FB}\u200D\u2708\uFE0F", @@ -387,8 +395,11 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FB}\u200D\u{1F680}", "\u{1F468}\u{1F3FB}\u200D\u{1F692}", "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u2708\uFE0F", @@ -407,8 +418,11 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FC}\u200D\u{1F680}", "\u{1F468}\u{1F3FC}\u200D\u{1F692}", "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u2708\uFE0F", @@ -427,8 +441,11 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FD}\u200D\u{1F680}", "\u{1F468}\u{1F3FD}\u200D\u{1F692}", "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u2708\uFE0F", @@ -447,8 +464,11 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FE}\u200D\u{1F680}", "\u{1F468}\u{1F3FE}\u200D\u{1F692}", "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u2708\uFE0F", @@ -467,8 +487,11 @@ testPropertyOfStrings({ "\u{1F468}\u{1F3FF}\u200D\u{1F680}", "\u{1F468}\u{1F3FF}\u200D\u{1F692}", "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u200D\u2695\uFE0F", "\u{1F469}\u200D\u2696\uFE0F", "\u{1F469}\u200D\u2708\uFE0F", @@ -487,8 +510,11 @@ testPropertyOfStrings({ "\u{1F469}\u200D\u{1F680}", "\u{1F469}\u200D\u{1F692}", "\u{1F469}\u200D\u{1F9AF}", + "\u{1F469}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u200D\u{1F9BC}", + "\u{1F469}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u200D\u{1F9BD}", + "\u{1F469}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FB}\u200D\u2708\uFE0F", @@ -507,8 +533,11 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FB}\u200D\u{1F680}", "\u{1F469}\u{1F3FB}\u200D\u{1F692}", "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u2708\uFE0F", @@ -527,8 +556,11 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FC}\u200D\u{1F680}", "\u{1F469}\u{1F3FC}\u200D\u{1F692}", "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u2708\uFE0F", @@ -547,8 +579,11 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FD}\u200D\u{1F680}", "\u{1F469}\u{1F3FD}\u200D\u{1F692}", "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u2708\uFE0F", @@ -567,8 +602,11 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FE}\u200D\u{1F680}", "\u{1F469}\u{1F3FE}\u200D\u{1F692}", "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u2708\uFE0F", @@ -587,14 +625,30 @@ testPropertyOfStrings({ "\u{1F469}\u{1F3FF}\u200D\u{1F680}", "\u{1F469}\u{1F3FF}\u200D\u{1F692}", "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u200D\u2695\uFE0F", "\u{1F9D1}\u200D\u2696\uFE0F", "\u{1F9D1}\u200D\u2708\uFE0F", "\u{1F9D1}\u200D\u{1F33E}", "\u{1F9D1}\u200D\u{1F373}", "\u{1F9D1}\u200D\u{1F37C}", + "\u{1F9D1}\u200D\u{1F384}", "\u{1F9D1}\u200D\u{1F393}", "\u{1F9D1}\u200D\u{1F3A4}", "\u{1F9D1}\u200D\u{1F3A8}", @@ -607,14 +661,18 @@ testPropertyOfStrings({ "\u{1F9D1}\u200D\u{1F680}", "\u{1F9D1}\u200D\u{1F692}", "\u{1F9D1}\u200D\u{1F9AF}", + "\u{1F9D1}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u200D\u{1F9BC}", + "\u{1F9D1}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u200D\u{1F9BD}", + "\u{1F9D1}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F3A8}", @@ -627,14 +685,18 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FB}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F3A8}", @@ -647,14 +709,18 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FC}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F3A8}", @@ -667,14 +733,18 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FD}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F3A8}", @@ -687,14 +757,18 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FE}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F3A8}", @@ -707,8 +781,11 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FF}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u26F9\u{1F3FB}\u200D\u2640\uFE0F", "\u26F9\u{1F3FB}\u200D\u2642\uFE0F", "\u26F9\u{1F3FC}\u200D\u2640\uFE0F", @@ -722,17 +799,29 @@ testPropertyOfStrings({ "\u26F9\uFE0F\u200D\u2640\uFE0F", "\u26F9\uFE0F\u200D\u2642\uFE0F", "\u{1F3C3}\u200D\u2640\uFE0F", + "\u{1F3C3}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u200D\u2642\uFE0F", + "\u{1F3C3}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C4}\u200D\u2640\uFE0F", "\u{1F3C4}\u200D\u2642\uFE0F", "\u{1F3C4}\u{1F3FB}\u200D\u2640\uFE0F", @@ -1012,17 +1101,29 @@ testPropertyOfStrings({ "\u{1F6B5}\u{1F3FF}\u200D\u2640\uFE0F", "\u{1F6B5}\u{1F3FF}\u200D\u2642\uFE0F", "\u{1F6B6}\u200D\u2640\uFE0F", + "\u{1F6B6}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u200D\u2642\uFE0F", + "\u{1F6B6}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F926}\u200D\u2640\uFE0F", "\u{1F926}\u200D\u2642\uFE0F", "\u{1F926}\u{1F3FB}\u200D\u2640\uFE0F", @@ -1146,17 +1247,29 @@ testPropertyOfStrings({ "\u{1F9CD}\u{1F3FF}\u200D\u2640\uFE0F", "\u{1F9CD}\u{1F3FF}\u200D\u2642\uFE0F", "\u{1F9CE}\u200D\u2640\uFE0F", + "\u{1F9CE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u200D\u2642\uFE0F", + "\u{1F9CE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CF}\u200D\u2640\uFE0F", "\u{1F9CF}\u200D\u2642\uFE0F", "\u{1F9CF}\u{1F3FB}\u200D\u2640\uFE0F", @@ -1353,20 +1466,25 @@ testPropertyOfStrings({ "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B3}", + "\u26D3\uFE0F\u200D\u{1F4A5}", "\u2764\uFE0F\u200D\u{1F525}", "\u2764\uFE0F\u200D\u{1FA79}", + "\u{1F344}\u200D\u{1F7EB}", + "\u{1F34B}\u200D\u{1F7E9}", "\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F", "\u{1F3F3}\uFE0F\u200D\u{1F308}", "\u{1F3F4}\u200D\u2620\uFE0F", "\u{1F408}\u200D\u2B1B", "\u{1F415}\u200D\u{1F9BA}", "\u{1F426}\u200D\u2B1B", + "\u{1F426}\u200D\u{1F525}", "\u{1F43B}\u200D\u2744\uFE0F", "\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F", "\u{1F62E}\u200D\u{1F4A8}", "\u{1F635}\u200D\u{1F4AB}", "\u{1F636}\u200D\u{1F32B}\uFE0F", - "\u{1F9D1}\u200D\u{1F384}" + "\u{1F642}\u200D\u2194\uFE0F", + "\u{1F642}\u200D\u2195\uFE0F" ], nonMatchStrings: [ "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", From 007b333af22d8b8466be3394b9248345ac4445c9 Mon Sep 17 00:00:00 2001 From: Ross Kirsling Date: Thu, 18 Apr 2024 15:14:18 +0900 Subject: [PATCH 59/59] Add additional tests for tc39/ecma262#3307. Ensure that the following cases are covered: - https://github.com/tc39/ecma262/issues/3295#issuecomment-2058110314 - https://github.com/tc39/ecma262/issues/2659#issue-1131245695 --- ...perty-reference-target-evaluation-order.js | 4 +- ...perty-reference-target-evaluation-order.js | 4 +- .../computed-reference-null-or-undefined.js | 44 +++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 test/language/expressions/member-expression/computed-reference-null-or-undefined.js diff --git a/test/language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order.js b/test/language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order.js index f5ada21f423..0a8e7da1ac2 100644 --- a/test/language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order.js +++ b/test/language/expressions/assignment/destructuring/iterator-destructuring-property-reference-target-evaluation-order.js @@ -74,7 +74,7 @@ function targetKey() { assert.compareArray(log, [ "source", "iterator", - "target", "target-key", "target-key-tostring", + "target", "target-key", "iterator-step", "iterator-done", - "set", + "target-key-tostring", "set", ]); diff --git a/test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order.js b/test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order.js index 81d8a6a728f..51c8ee1a9a2 100644 --- a/test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order.js +++ b/test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order.js @@ -70,6 +70,6 @@ function targetKey() { assert.compareArray(log, [ "source", "source-key", "source-key-tostring", - "target", "target-key", "target-key-tostring", - "get", "set", + "target", "target-key", + "get", "target-key-tostring", "set", ]); diff --git a/test/language/expressions/member-expression/computed-reference-null-or-undefined.js b/test/language/expressions/member-expression/computed-reference-null-or-undefined.js new file mode 100644 index 00000000000..52bf94807e4 --- /dev/null +++ b/test/language/expressions/member-expression/computed-reference-null-or-undefined.js @@ -0,0 +1,44 @@ +// Copyright (C) 2024 Sony Interactive Entertainment Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-evaluate-property-access-with-expression-key +description: When getting the value of o[p], ToObject(o) precedes ToPropertyKey(p). +info: | + 13.3.3 EvaluatePropertyAccessWithExpressionKey ( baseValue, expression, strict ) + 1. Let _propertyNameReference_ be ? Evaluation of _expression_. + 2. Let _propertyNameValue_ be ? GetValue(_propertyNameReference_). + ... + 4. Return the Reference Record { [[Base]]: _baseValue_, [[ReferencedName]]: _propertyNameValue_, [[Strict]]: _strict_, [[ThisValue]]: ~empty~ }. + + 6.2.5.5 GetValue ( V ) + 1. If V is not a Reference Record, return V. + ... + 3. If IsPropertyReference(V) is true, then + a. Let baseObj be ? ToObject(V.[[Base]]). + ... + c. If V.[[ReferencedName]] is neither a String nor a Symbol, then + i. Let referencedName be ? ToPropertyKey(V.[[ReferencedName]]). +---*/ + +assert.throws(TypeError, function() { + var base = null; + var prop = { + toString: function() { + throw new Test262Error("property key evaluated"); + } + }; + + base[prop]; +}); + +assert.throws(TypeError, function() { + var base = undefined; + var prop = { + toString: function() { + throw new Test262Error("property key evaluated"); + } + }; + + base[prop]; +});