diff --git a/go/analysis/passes/modernize/slicesbackward.go b/go/analysis/passes/modernize/slicesbackward.go index 293a7c0c3fb..660b8bc502f 100644 --- a/go/analysis/passes/modernize/slicesbackward.go +++ b/go/analysis/passes/modernize/slicesbackward.go @@ -189,10 +189,14 @@ func slicesbackward(pass *analysis.Pass) (any, error) { // All uses of i are s[i]; drop the index variable. header = fmt.Sprintf("_, %s := range %sBackward(%s)", elemName, prefix, sliceStr) - } else { - // i is used for other purposes; keep both index and value. + } else if len(sliceIndexes) > 0 { + // i is used for other purposes and the slice value is also used; keep both. header = fmt.Sprintf("%s, %s := range %sBackward(%s)", indexIdent.Name, elemName, prefix, sliceStr) + } else { + // i is used for other purposes but the slice value is not used; drop v. + header = fmt.Sprintf("%s := range %sBackward(%s)", + indexIdent.Name, prefix, sliceStr) } edits = append(edits, analysis.TextEdit{ Pos: loop.Init.Pos(), diff --git a/go/analysis/passes/modernize/testdata/src/slicesbackward/slicesbackward.go.golden b/go/analysis/passes/modernize/testdata/src/slicesbackward/slicesbackward.go.golden index ba099057893..2c7308dcaf7 100644 --- a/go/analysis/passes/modernize/testdata/src/slicesbackward/slicesbackward.go.golden +++ b/go/analysis/passes/modernize/testdata/src/slicesbackward/slicesbackward.go.golden @@ -24,7 +24,7 @@ func indexUsedElsewhere(s []int) { // Index used only for non-slice purpose (no s[i] at all). func indexNoSliceAccess(s []int) { - for i, v := range slices.Backward(s) { // want "backward loop over slice can be modernized using slices.Backward" + for i := range slices.Backward(s) { // want "backward loop over slice can be modernized using slices.Backward" println(i) } }