Skip to content

Commit fa603fc

Browse files
authored
Fix false positives for unknown method in regexp/no-unused-capturing-group (#82)
1 parent 310440f commit fa603fc

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@ export default createRule("no-unused-capturing-group", {
383383
return
384384
}
385385
if (!typeTracer.isString(node.callee.object)) {
386+
capturingData.markAsCannotTrack()
386387
return
387388
}
388389
if (capturingData.flags.includes("g")) {
@@ -401,6 +402,7 @@ export default createRule("no-unused-capturing-group", {
401402
return
402403
}
403404
if (!typeTracer.isString(node.callee.object)) {
405+
capturingData.markAsCannotTrack()
404406
return
405407
}
406408
// String.prototype.search()
@@ -424,6 +426,7 @@ export default createRule("no-unused-capturing-group", {
424426
return
425427
}
426428
if (!typeTracer.isString(node.callee.object)) {
429+
capturingData.markAsCannotTrack()
427430
return
428431
}
429432
const replacementNode = node.arguments[1]
@@ -535,6 +538,7 @@ export default createRule("no-unused-capturing-group", {
535538
return
536539
}
537540
if (!typeTracer.isString(node.callee.object)) {
541+
capturingData.markAsCannotTrack()
538542
return
539543
}
540544
capturingData.markAsUsed()
@@ -629,6 +633,7 @@ export default createRule("no-unused-capturing-group", {
629633
return
630634
}
631635
if (!typeTracer.isString(node.callee.object)) {
636+
capturingData.markAsCannotTrack()
632637
return
633638
}
634639
capturingData.markAsUsed()

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,19 @@ const tester = new RuleTester({
1010

1111
tester.run("no-unused-capturing-group", rule as any, {
1212
valid: [
13+
`
14+
const computed = \`---\\n\${Object.keys(fileIntro)
15+
.map((key) => \`\${key}: \${yamlValue(fileIntro[key])}\`)
16+
.join("\\n")}\\n---\\n\`
17+
18+
const fileIntroPattern = /^---\\n(.*\\n)+---\\n*/gu
19+
20+
if (fileIntroPattern.test(this.content)) {
21+
this.content = this.content.replace(fileIntroPattern, computed)
22+
} else {
23+
this.content = \`\${computed}\${this.content.trim()}\\n\`
24+
}
25+
`,
1326
String.raw`
1427
var replaced = '2000-12-31'.replace(/(\d{4})-(\d{2})-(\d{2})/, '$1/$2/$3') // "2000/12/31"
1528
var replaced = '2000-12-31'.replace(/(?<y>\d{4})-(?<m>\d{2})-(?<d>\d{2})/u, '$<y>/$<m>/$<d>') // "2000/12/31"

0 commit comments

Comments
 (0)