Skip to content

Commit 64c70e3

Browse files
authored
Fix false negatives in regexp/no-unused-capturing-group rule (#70)
1 parent 75483ed commit 64c70e3

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

lib/rules/no-unused-capturing-group.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -409,9 +409,6 @@ export default createRule("no-unused-capturing-group", {
409409
if (capturingData == null || capturingData.isAllUsed()) {
410410
return
411411
}
412-
if (!typeTracer.isString(node.arguments[0])) {
413-
return
414-
}
415412
// RegExp.prototype.test()
416413
capturingData.markAsUsed()
417414
}
@@ -496,9 +493,6 @@ export default createRule("no-unused-capturing-group", {
496493
if (capturingData == null || capturingData.isAllUsed()) {
497494
return
498495
}
499-
if (!typeTracer.isString(node.arguments[0])) {
500-
return
501-
}
502496
capturingData.markAsUsed()
503497
verifyForExecResult(node, capturingData)
504498
}

tests/lib/rules/no-unused-capturing-group.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ tester.run("no-unused-capturing-group", rule as any, {
3434
var replaced = '2000-12-31'.repl(/(\d{4})-(\d{2})-(\d{2})/, '$1/$2')
3535
3636
// var isDate = /(\d{4})-(\d{2})-(\d{2})/.test('2000-12-31')
37-
var isDate = /(\d{4})-(\d{2})-(\d{2})/.test(123)
3837
3938
// var matches = '2000-12-31 2001-01-01'.match(/(\d{4})-(\d{2})-(\d{2})/g)
4039
var matches = '2000-12-31 2001-01-01'.match(/\d{4}-\d{2}-\d{2}/g)
@@ -427,5 +426,35 @@ tester.run("no-unused-capturing-group", rule as any, {
427426
`,
428427
errors: ["Capturing group is defined but never used."],
429428
},
429+
{
430+
code: String.raw`var isDate = /(\d{4})-(\d{2})-(\d{2})/.test(foo)`,
431+
errors: [
432+
"Capturing group is defined but never used.",
433+
"Capturing group is defined but never used.",
434+
"Capturing group is defined but never used.",
435+
],
436+
},
437+
{
438+
code: String.raw`
439+
const regexp = /(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})/
440+
let re
441+
while(re = regexp.exec(foo)) {
442+
const y = re.groups.y
443+
// const m = re.groups.m
444+
const d = re.groups.d
445+
}
446+
`,
447+
errors: ["'m' capturing group is defined but never used."],
448+
},
449+
{
450+
code: String.raw`
451+
const regexp = /(\d{4})-(\d{2})-(\d{2})/
452+
let re
453+
while(re = regexp.exec(foo)) {
454+
const [,y,m] = re
455+
}
456+
`,
457+
errors: ["Capturing group is defined but never used."],
458+
},
430459
],
431460
})

0 commit comments

Comments
 (0)