You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>=1.22 #66387
Extend the copylock analyzer to emit a warning on the copy of the loop variable between iterations that occurs immediately before the loop's Post statement in Go >= 1.22. The requirements for the warning are when:
a 3-clause for loop declares a loop scoped variable containing a lock type,
the file's GoVersion is >= 1.22,
the name of the variable is not _, and
the Init statement of the for loop is not otherwise reported.
Example:
for _, mu := 0, (sync.Mutex{}); x < 10; x++ { // want "for loop iteration copies lock value to mu: sync.Mutex"
_ = mu.TryLock()
}
The variable used by each subsequent iteration is declared implicitly before executing the post statement and initialized to the value of the previous iteration's variable at that moment.
changed the title [-]cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>1.22[/-][+]cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>=1.22[/+]on Mar 18, 2024
changed the title [-]cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>=1.22[/-][+]proposal: cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>=1.22[/+]on Mar 27, 2024
This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group
This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group
This vet change seems like something that needs to be mentioned in Go 1.24 release notes, and it's not mentioned there yet. Reopening as a release blocker to track that.
Activity
timothy-king commentedon Mar 18, 2024
Proposed implementation http://go.dev/cl/569955.
Related #66156. This is 'Case 1'.
[-]cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>1.22[/-][+]cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>=1.22[/+][-]cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>=1.22[/-][+]proposal: cmd/vet: warn on 3-clause loops where an iterator variable contains a lock type when GoVersion>=1.22[/+]gopherbot commentedon May 8, 2024
Change https://go.dev/cl/569955 mentions this issue:
go/analysis/passes/copylock: add support for ForStmtrsc commentedon Jul 25, 2024
This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group
rsc commentedon Jul 25, 2024
This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group
rsc commentedon Aug 7, 2024
Based on the discussion above, this proposal seems like a likely accept.
— rsc for the proposal review group
The proposal details are in #66387 (comment).
8 remaining items
timothy-king commentedon Aug 16, 2024
This is expected to go into tip during the next x/tools. Probably not more than a month. The first release it is expected to go into is 1.24.
dmitshur commentedon Nov 26, 2024
This vet change seems like something that needs to be mentioned in Go 1.24 release notes, and it's not mentioned there yet. Reopening as a release blocker to track that.
gopherbot commentedon Nov 27, 2024
Change https://go.dev/cl/632315 mentions this issue:
doc/next: document copylock changesdoc/next: document copylock changes
go/analysis/passes/copylock: add support for ForStmt