unused: check line range before suggesting fix

Fix #1048
This commit is contained in:
Aleksandr Razumov 2020-04-27 19:56:45 +03:00
parent 1353b60074
commit 3deb9d80ab
No known key found for this signature in database
GPG Key ID: 1D14A82D2E311045

View File

@ -33,7 +33,7 @@ func NewUnused() *goanalysis.Linter {
for _, ur := range u.Result() {
p := u.ProblemObject(lintCtx.Packages[0].Fset, ur)
pkg := typesToPkg[ur.Pkg()]
issues = append(issues, goanalysis.NewIssue(&result.Issue{ //nolint:scopelint
i := &result.Issue{
FromLinter: name,
Text: p.Message,
Pos: p.Pos,
@ -42,11 +42,16 @@ func NewUnused() *goanalysis.Linter {
From: p.Pos.Line,
To: p.End.Line,
},
Replacement: &result.Replacement{
}
// See https://github.com/golangci/golangci-lint/issues/1048
// If range is invalid, this will break `--fix` mode.
if i.LineRange.To >= i.LineRange.From {
i.Replacement = &result.Replacement{
// Suggest deleting unused stuff.
NeedOnlyDelete: true,
},
}, nil))
}
}
issues = append(issues, goanalysis.NewIssue(i, nil))
}
return issues
}).WithContextSetter(func(lintCtx *linter.Context) {