Skip to content

Commit

Permalink
nolintlint: remove empty line in unused directive replacement (#4973)
Browse files Browse the repository at this point in the history
Co-authored-by: Fernandez Ludovic <[email protected]>
  • Loading branch information
reugn and ldez authored Sep 4, 2024
1 parent 726b815 commit 3797ed9
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 4 deletions.
15 changes: 11 additions & 4 deletions pkg/golinters/nolintlint/internal/nolintlint.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
19 changes: 19 additions & 0 deletions pkg/golinters/nolintlint/internal/nolintlint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 3797ed9

Please sign in to comment.