Skip to content

Commit d7df1c7

Browse files
fix: false positive
1 parent e45640c commit d7df1c7

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

copyloopvar.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func checkRangeStmt(pass *analysis.Pass, rangeStmt *ast.RangeStmt) {
6969
if !ok {
7070
continue
7171
}
72-
if right.Name != key.Name && (value != nil && right.Name != value.Name) {
72+
if right.Name != key.Name && (value == nil || right.Name != value.Name) {
7373
continue
7474
}
7575
if ignoreAlias {

testdata/src/basic/main.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ func main() {
88
_v := v // want `The copy of the 'for' variable "v" can be deleted \(Go 1\.22\+\)`
99
a, b := 1, i // want `The copy of the 'for' variable "i" can be deleted \(Go 1\.22\+\)`
1010
c, d := 1, v // want `The copy of the 'for' variable "v" can be deleted \(Go 1\.22\+\)`
11-
_, _, _, _, _, _, _, _ = i, _i, v, _v, a, b, c, d
11+
e := false
12+
_, _, _, _, _, _, _, _, _ = i, _i, v, _v, a, b, c, d, e
1213
}
1314

1415
for i, j := 1, 1; i+j <= 3; i++ {
@@ -18,7 +19,16 @@ func main() {
1819
_j := j // want `The copy of the 'for' variable "j" can be deleted \(Go 1\.22\+\)`
1920
a, b := 1, i // want `The copy of the 'for' variable "i" can be deleted \(Go 1\.22\+\)`
2021
c, d := 1, j // want `The copy of the 'for' variable "j" can be deleted \(Go 1\.22\+\)`
21-
_, _, _, _, _, _, _, _ = i, _i, j, _j, a, b, c, d
22+
e := false
23+
_, _, _, _, _, _, _, _, _ = i, _i, j, _j, a, b, c, d, e
24+
}
25+
26+
for i := range []int{1, 2, 3} {
27+
i := i // want `The copy of the 'for' variable "i" can be deleted \(Go 1\.22\+\)`
28+
_i := i // want `The copy of the 'for' variable "i" can be deleted \(Go 1\.22\+\)`
29+
a, b := 1, i // want `The copy of the 'for' variable "i" can be deleted \(Go 1\.22\+\)`
30+
c := false
31+
_, _, _, _, _ = i, _i, a, b, c
2232
}
2333

2434
var t struct {

testdata/src/ignorealias/main.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ func main() {
88
_v := v
99
a, b := 1, i
1010
c, d := 1, v
11-
_, _, _, _, _, _, _, _ = i, _i, v, _v, a, b, c, d
11+
e := false
12+
_, _, _, _, _, _, _, _, _ = i, _i, v, _v, a, b, c, d, e
1213
}
1314

1415
for i, j := 1, 1; i+j <= 3; i++ {
@@ -18,7 +19,16 @@ func main() {
1819
_j := j
1920
a, b := 1, i
2021
c, d := 1, j
21-
_, _, _, _, _, _, _, _ = i, _i, j, _j, a, b, c, d
22+
e := false
23+
_, _, _, _, _, _, _, _, _ = i, _i, j, _j, a, b, c, d, e
24+
}
25+
26+
for i := range []int{1, 2, 3} {
27+
i := i // want `The copy of the 'for' variable "i" can be deleted \(Go 1\.22\+\)`
28+
_i := i
29+
a, b := 1, i
30+
c := false
31+
_, _, _, _, _ = i, _i, a, b, c
2232
}
2333

2434
var t struct {

0 commit comments

Comments
 (0)