Skip to content

Commit 9af99fd

Browse files
committed
perf: no-confusing-void-expression: only generate fixes and suggestions when fixing
1 parent 84b4223 commit 9af99fd

File tree

1 file changed

+44
-38
lines changed

1 file changed

+44
-38
lines changed

internal/rules/no_confusing_void_expression/no_confusing_void_expression.go

Lines changed: 44 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -210,17 +210,19 @@ var NoConfusingVoidExpressionRule = rule.Rule{
210210
return
211211
}
212212

213-
var fixes []rule.RuleFix
214-
body := invalidAncestor.Body()
215-
if !ast.IsBlock(body) && canFix(body) {
216-
withoutParens := ast.SkipParentheses(body)
217-
fixes = []rule.RuleFix{
218-
rule.RuleFixReplaceRange(body.Loc.WithEnd(withoutParens.Pos()), "{ "),
219-
rule.RuleFixReplaceRange(body.Loc.WithPos(withoutParens.End()), "; }"),
213+
ctx.ReportNodeWithFixes(node, buildInvalidVoidExprArrowMessage(), func() []rule.RuleFix {
214+
var fixes []rule.RuleFix
215+
body := invalidAncestor.Body()
216+
if !ast.IsBlock(body) && canFix(body) {
217+
withoutParens := ast.SkipParentheses(body)
218+
fixes = []rule.RuleFix{
219+
rule.RuleFixReplaceRange(body.Loc.WithEnd(withoutParens.Pos()), "{ "),
220+
rule.RuleFixReplaceRange(body.Loc.WithPos(withoutParens.End()), "; }"),
221+
}
220222
}
221-
}
222223

223-
ctx.ReportNodeWithFixes(node, buildInvalidVoidExprArrowMessage(), func() []rule.RuleFix { return fixes })
224+
return fixes
225+
})
224226
return
225227
}
226228

@@ -239,40 +241,44 @@ var NoConfusingVoidExpressionRule = rule.Rule{
239241
}
240242

241243
if isFinalReturn(invalidAncestor) {
242-
expr := invalidAncestor.AsReturnStatement().Expression
243-
var fixes []rule.RuleFix
244-
if canFix(expr) {
245-
replaceText := ""
246-
nextToken := scanner.ScanTokenAtPosition(ctx.SourceFile, expr.Pos())
247-
if nextToken == ast.KindOpenParenToken || nextToken == ast.KindOpenBracketToken || nextToken == ast.KindBacktickToken {
248-
replaceText = ";"
244+
ctx.ReportNodeWithFixes(node, buildInvalidVoidExprReturnLastMessage(), func() []rule.RuleFix {
245+
expr := invalidAncestor.AsReturnStatement().Expression
246+
var fixes []rule.RuleFix
247+
if canFix(expr) {
248+
replaceText := ""
249+
nextToken := scanner.ScanTokenAtPosition(ctx.SourceFile, expr.Pos())
250+
if nextToken == ast.KindOpenParenToken || nextToken == ast.KindOpenBracketToken || nextToken == ast.KindBacktickToken {
251+
replaceText = ";"
252+
}
253+
returnToken := scanner.GetRangeOfTokenAtPosition(ctx.SourceFile, invalidAncestor.Pos())
254+
fixes = append(fixes, rule.RuleFixReplaceRange(returnToken, replaceText))
249255
}
250-
returnToken := scanner.GetRangeOfTokenAtPosition(ctx.SourceFile, invalidAncestor.Pos())
251-
fixes = append(fixes, rule.RuleFixReplaceRange(returnToken, replaceText))
252-
}
253256

254-
ctx.ReportNodeWithFixes(node, buildInvalidVoidExprReturnLastMessage(), func() []rule.RuleFix { return fixes })
257+
return fixes
258+
})
255259
return
256260
}
257261

258-
var fixes []rule.RuleFix
259-
replaceText := ""
260-
nextToken := scanner.ScanTokenAtPosition(ctx.SourceFile, invalidAncestor.AsReturnStatement().Expression.Pos())
261-
if nextToken == ast.KindOpenParenToken || nextToken == ast.KindOpenBracketToken || nextToken == ast.KindBacktickToken {
262-
replaceText = ";"
263-
}
264-
returnToken := scanner.GetRangeOfTokenAtPosition(ctx.SourceFile, invalidAncestor.Pos())
265-
fixes = append(fixes, rule.RuleFixReplaceRange(returnToken, replaceText), rule.RuleFixInsertAfter(invalidAncestor, "; return;"))
266-
267-
if !ast.IsBlock(invalidAncestor.Parent) {
268-
// e.g. `if (cond) return console.error();`
269-
// add braces if not inside a block
270-
fixes = append(fixes,
271-
rule.RuleFixInsertBefore(ctx.SourceFile, invalidAncestor, "{ "),
272-
rule.RuleFixInsertAfter(invalidAncestor, " }"),
273-
)
274-
}
275-
ctx.ReportNodeWithFixes(node, buildInvalidVoidExprReturnMessage(), func() []rule.RuleFix { return fixes })
262+
ctx.ReportNodeWithFixes(node, buildInvalidVoidExprReturnMessage(), func() []rule.RuleFix {
263+
var fixes []rule.RuleFix
264+
replaceText := ""
265+
nextToken := scanner.ScanTokenAtPosition(ctx.SourceFile, invalidAncestor.AsReturnStatement().Expression.Pos())
266+
if nextToken == ast.KindOpenParenToken || nextToken == ast.KindOpenBracketToken || nextToken == ast.KindBacktickToken {
267+
replaceText = ";"
268+
}
269+
returnToken := scanner.GetRangeOfTokenAtPosition(ctx.SourceFile, invalidAncestor.Pos())
270+
fixes = append(fixes, rule.RuleFixReplaceRange(returnToken, replaceText), rule.RuleFixInsertAfter(invalidAncestor, "; return;"))
271+
272+
if !ast.IsBlock(invalidAncestor.Parent) {
273+
// e.g. `if (cond) return console.error();`
274+
// add braces if not inside a block
275+
fixes = append(fixes,
276+
rule.RuleFixInsertBefore(ctx.SourceFile, invalidAncestor, "{ "),
277+
rule.RuleFixInsertAfter(invalidAncestor, " }"),
278+
)
279+
}
280+
return fixes
281+
})
276282
return
277283
}
278284

0 commit comments

Comments
 (0)