• Dominik Honnef's avatar
    cmd/gofmt: don't turn nil slices into empty slices during rewriting · d5df4d61
    Dominik Honnef authored
    The go/ast package uses and guarantees nil slices for optional
    elements that weren't present in the parsed source code, such as the
    list of return values of a function. Packages using go/ast rely on
    this attribute and check for nils explicitly.
    
    One such package is go/printer. In the presence of empty slices
    instead of nil slices, it generates invalid code, such as "case :"
    instead of "default:". The issues that this CL fixes are all
    manifestations of that problem, each for a different syntactic
    element.
    
    Fixes #33103
    Fixes #33104
    Fixes #33105
    
    Change-Id: I219f95a7da820eaf697a4ee227d458ab6e4a80bd
    Reviewed-on: https://go-review.googlesource.com/c/go/+/187917Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
    Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
    Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    d5df4d61
rewrite.go 8.09 KB