fix: use loop variable instead of global ticker in GenerateFreshName

The function used a global `ticker` variable but never incremented it
inside the loop, causing an infinite loop if the first generated name
was already in the used set.

This fix removes the global state and uses the loop variable `i`
directly, which is cleaner and avoids the bug.
This commit is contained in:
2026-01-18 15:57:28 -05:00
parent 9c7fb8ceba
commit f31de50abc

View File

@@ -6,13 +6,11 @@ import (
"git.maximhutz.com/max/lambda/pkg/set"
)
var ticker uint64 = 0
// GenerateFreshName generates a variable name that is not in the used set.
// This function does not mutate the used set.
func GenerateFreshName(used set.Set[string]) string {
for i := uint64(0); ; i++ {
attempt := "_" + string(strconv.AppendUint(nil, ticker, 10))
attempt := "_" + string(strconv.AppendUint(nil, i, 10))
if !used.Has(attempt) {
return attempt