diff --git a/rules/prefer-regexp-test.js b/rules/prefer-regexp-test.js index 6395eb6718..7c2aab615f 100644 --- a/rules/prefer-regexp-test.js +++ b/rules/prefer-regexp-test.js @@ -3,6 +3,7 @@ const {isParenthesized} = require('eslint-utils'); const getDocumentationUrl = require('./utils/get-documentation-url'); const methodSelector = require('./utils/method-selector'); const {isBooleanNode} = require('./utils/boolean'); +const shouldAddParenthesesToMemberExpressionObject = require('./utils/should-add-parentheses-to-member-expression-object'); const MESSAGE_ID_REGEXP_EXEC = 'regexp-exec'; const MESSAGE_ID_STRING_MATCH = 'string-match'; @@ -70,13 +71,7 @@ const create = context => { let regexpText = sourceCode.getText(regexpNode); if ( !isParenthesized(stringNode, sourceCode) && - !( - regexpNode.type === 'Literal' || - regexpNode.type === 'Identifier' || - regexpNode.type === 'MemberExpression' || - regexpNode.type === 'CallExpression' || - (regexpNode.type === 'NewExpression' && regexpText.endsWith(')')) - ) + shouldAddParenthesesToMemberExpressionObject(regexpNode, sourceCode) ) { regexpText = `(${regexpText})`; } diff --git a/test/snapshots/prefer-regexp-test.js.md b/test/snapshots/prefer-regexp-test.js.md index ab90359922..5418359265 100644 --- a/test/snapshots/prefer-regexp-test.js.md +++ b/test/snapshots/prefer-regexp-test.js.md @@ -413,7 +413,7 @@ Generated by [AVA](https://avajs.dev). 1 | if (foo.match(bar?.baz)) {}␊ ␊ Output:␊ - 1 | if ((bar?.baz).test(foo)) {}␊ + 1 | if (bar?.baz.test(foo)) {}␊ ␊ Error 1/1:␊ > 1 | if (foo.match(bar?.baz)) {}␊ @@ -429,7 +429,7 @@ Generated by [AVA](https://avajs.dev). 1 | if (foo.match(bar?.baz())) {}␊ ␊ Output:␊ - 1 | if ((bar?.baz()).test(foo)) {}␊ + 1 | if (bar?.baz().test(foo)) {}␊ ␊ Error 1/1:␊ > 1 | if (foo.match(bar?.baz())) {}␊ diff --git a/test/snapshots/prefer-regexp-test.js.snap b/test/snapshots/prefer-regexp-test.js.snap index 9587f20679..afe366171d 100644 Binary files a/test/snapshots/prefer-regexp-test.js.snap and b/test/snapshots/prefer-regexp-test.js.snap differ