From d88f471cbcf9f6c8682b6a0c152622b66708ac5b Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Sat, 30 Nov 2019 00:46:07 +0100 Subject: Issue #1302 followup - Add spec-compliance checks/errors - Check for undefined/null regex flags (because...) - Make it throw a typeerror instead of syntax error on non-global - Generalize JS error messages for these checks. --- js/src/builtin/RegExp.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'js/src/builtin/RegExp.js') diff --git a/js/src/builtin/RegExp.js b/js/src/builtin/RegExp.js index 25827743e..91212066c 100644 --- a/js/src/builtin/RegExp.js +++ b/js/src/builtin/RegExp.js @@ -1042,6 +1042,9 @@ function RegExpMatchAll(string) { // Step 2. if (!IsObject(rx)) ThrowTypeError(JSMSG_NOT_NONNULL_OBJECT, rx === null ? "null" : typeof rx); + + if (rx.flags === undefined || rx.flags === null) + ThrowTypeError(JSMSG_FLAGS_UNDEFINED_OR_NULL); // Step 3. var str = ToString(string); @@ -1052,9 +1055,9 @@ function RegExpMatchAll(string) { // Step 5. var flags = ToString(rx.flags); - // Step 2.b.iii; located here because it needs |flags|. + // Step 2.b.iii; located here because it needs to check |flags|. if (!callFunction(std_String_includes, flags, "g")) { - ThrowTypeError(JSMSG_BAD_REGEXP_FLAG, "- matchAll requires g"); + ThrowTypeError(JSMSG_REQUIRES_GLOBAL_REGEXP, "matchAll"); } // Step 6. -- cgit v1.2.3