From 3deb9d80ab7b29a5ebf69f52a6f214f10fcb7ddd Mon Sep 17 00:00:00 2001 From: Aleksandr Razumov <ar@gortc.io> Date: Mon, 27 Apr 2020 19:56:45 +0300 Subject: [PATCH] unused: check line range before suggesting fix Fix #1048 --- pkg/golinters/unused.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkg/golinters/unused.go b/pkg/golinters/unused.go index 5f6d8371..ac5a90d4 100644 --- a/pkg/golinters/unused.go +++ b/pkg/golinters/unused.go @@ -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) {