nolintlint: remove empty line in unused directive replacement (#4973)

Co-authored-by: Fernandez Ludovic <ldez@users.noreply.github.com>
This commit is contained in:
Eugene R. 2024-09-04 15:13:37 +03:00 committed by GitHub
parent 726b8153ca
commit 3797ed90c3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 4 deletions

View File

@ -252,12 +252,19 @@ func (l Linter) Run(fset *token.FileSet, nodes ...ast.Node) ([]Issue, error) {
// when detecting unused directives, we send all the directives through and filter them out in the nolint processor
if (l.needs & NeedsUnused) != 0 {
removeNolintCompletely := &result.Replacement{
Inline: &result.InlineFix{
StartCol: pos.Column - 1,
removeNolintCompletely := &result.Replacement{}
startCol := pos.Column - 1
if startCol == 0 {
// if the directive starts from a new line, remove the line
removeNolintCompletely.NeedOnlyDelete = true
} else {
removeNolintCompletely.Inline = &result.InlineFix{
StartCol: startCol,
Length: end.Column - pos.Column,
NewString: "",
},
}
}
if len(linters) == 0 {

View File

@ -188,6 +188,25 @@ func foo() {
},
},
},
{
desc: "needs unused with one specific linter in a new line generates replacement",
needs: NeedsUnused,
contents: `
package bar
//nolint:somelinter
func foo() {
bad()
}`,
expected: []issueWithReplacement{
{
issue: "directive `//nolint:somelinter` is unused for linter \"somelinter\" at testing.go:4:1",
replacement: &result.Replacement{
NeedOnlyDelete: true,
},
},
},
},
{
desc: "needs unused with multiple specific linters does not generate replacements",
needs: NeedsUnused,