Skip to content

Commit 8ad592b

Browse files
authored
better-regexp: Don't fix if .source or .toString() is used (#1903)
1 parent 02252c7 commit 8ad592b

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

rules/better-regex.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,32 @@ const create = context => {
5151
return;
5252
}
5353

54-
return {
54+
const problem = {
5555
node,
5656
messageId: MESSAGE_ID,
5757
data: {
5858
original,
5959
optimized,
6060
},
61-
fix: fixer => fixer.replaceText(node, optimized),
6261
};
62+
63+
if (
64+
node.parent.type === 'MemberExpression'
65+
&& node.parent.object === node
66+
&& !node.parent.optional
67+
&& !node.parent.computed
68+
&& node.parent.property.type === 'Identifier'
69+
&& (
70+
node.parent.property.name === 'toString'
71+
|| node.parent.property.name === 'source'
72+
)
73+
) {
74+
return problem;
75+
}
76+
77+
return Object.assign(problem, {
78+
fix: fixer => fixer.replaceText(node, optimized),
79+
});
6380
},
6481
[newRegExp](node) {
6582
const [patternNode, flagsNode] = node.arguments;

test/better-regex.mjs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,5 +311,15 @@ test({
311311
],
312312
parser: require.resolve('@typescript-eslint/parser'),
313313
},
314+
315+
// Not fixable
316+
{
317+
code: 'const foo = /[0-9]/.toString',
318+
errors: createError('/[0-9]/', '/\\d/'),
319+
},
320+
{
321+
code: 'const foo = /[0-9]/.source',
322+
errors: createError('/[0-9]/', '/\\d/'),
323+
},
314324
],
315325
});

0 commit comments

Comments
 (0)