Replace delete-all loops with clear Has Fix
Description
The clear built-in expresses removing every entry from a map without a handwritten loop. Concrete-syntax strictness ensures the fix is offered only when the loop body is exactly the matching delete call, without comments that the rewrite could discard.
Use this rule only when the project targets Go 1.21 or newer.
YAML
yaml
id: use-clear
language: Go
rule:
pattern:
context: |-
for $KEY := range $MAP {
delete($MAP, $KEY)
}
strictness: cst
fix: clear($MAP)Example
go
func reset(entries map[string]int) {
for key := range entries {
delete(entries, key)
}
}Diff
go
func reset(entries map[string]int) {
for key := range entries {
delete(entries, key)
}
clear(entries)
}Credits
Inspired by JetBrains' Go Modern Guidelines.