From b07fb889ddd38de700ffdf55cd30f80bafd27788 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Wed, 29 Mar 2023 09:47:54 +0200 Subject: [PATCH 1/2] fix: do not report on `RegExp(...args)` in `require-unicode-regexp` --- lib/rules/require-unicode-regexp.js | 4 ++++ tests/lib/rules/require-unicode-regexp.js | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/rules/require-unicode-regexp.js b/lib/rules/require-unicode-regexp.js index 2fe1539cfcc..943137cb5d6 100644 --- a/lib/rules/require-unicode-regexp.js +++ b/lib/rules/require-unicode-regexp.js @@ -78,6 +78,10 @@ module.exports = { for (const { node: refNode } of tracker.iterateGlobalReferences(trackMap)) { const [patternNode, flagsNode] = refNode.arguments; + + if (patternNode && patternNode.type === "SpreadElement") { + continue; + } const pattern = getStringIfConstant(patternNode, scope); const flags = getStringIfConstant(flagsNode, scope); diff --git a/tests/lib/rules/require-unicode-regexp.js b/tests/lib/rules/require-unicode-regexp.js index 22ada7aacf6..1f6fbf2a30c 100644 --- a/tests/lib/rules/require-unicode-regexp.js +++ b/tests/lib/rules/require-unicode-regexp.js @@ -36,6 +36,7 @@ ruleTester.run("require-unicode-regexp", rule, { "new RegExp('', flags)", "function f(flags) { return new RegExp('', flags) }", "function f(RegExp) { return new RegExp('foo') }", + "function f(patternAndFlags) { return new RegExp(...patternAndFlags) }", { code: "new globalThis.RegExp('foo')", env: { es6: true } }, { code: "new globalThis.RegExp('foo')", env: { es2017: true } }, { code: "new globalThis.RegExp('foo', 'u')", env: { es2020: true } }, @@ -77,6 +78,13 @@ ruleTester.run("require-unicode-regexp", rule, { ] }] }, + { + code: "RegExp()", + errors: [{ + messageId: "requireUFlag", + suggestions: null + }] + }, { code: "RegExp('foo')", errors: [{ From 8f405c6b1907ae6b5de3f1368f591540b916c7e7 Mon Sep 17 00:00:00 2001 From: Francesco Trotta Date: Thu, 30 Mar 2023 21:50:33 +0200 Subject: [PATCH 2/2] Add valid test `RegExp(...patternAndFlags)` --- tests/lib/rules/require-unicode-regexp.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/lib/rules/require-unicode-regexp.js b/tests/lib/rules/require-unicode-regexp.js index 1f6fbf2a30c..a75f6863168 100644 --- a/tests/lib/rules/require-unicode-regexp.js +++ b/tests/lib/rules/require-unicode-regexp.js @@ -29,6 +29,7 @@ ruleTester.run("require-unicode-regexp", rule, { "new RegExp('', 'u')", "RegExp('', 'gimuy')", "RegExp('', `gimuy`)", + "RegExp(...patternAndFlags)", "new RegExp('', 'gimuy')", "const flags = 'u'; new RegExp('', flags)", "const flags = 'g'; new RegExp('', flags + 'u')",