go/format: non-idempotent format
dvyukov opened this issue · 2 comments
dvyukov commented
Repeated invocations of format.Source alter source:
package main
import (
"bytes"
"fmt"
"go/format"
)
func main() {
for _, data := range []string{"\n", " "} {
data1, err := format.Source([]byte(data))
if err != nil {
panic(err)
}
data2, err := format.Source(data1)
if err != nil {
panic(err)
}
if !bytes.Equal(data1, data2) {
fmt.Printf("non-idempotent format: %q -> %q -> %q\n", data, data1, data2)
}
}
}
non-idempotent format: "\n" -> "\n\n" -> "\n\n\n\n"
non-idempotent format: " " -> "\t " -> "\t\t "
go version devel +514014c Thu Jun 18 15:54:35 2015 +0200 linux/amd64
griesemer commented
May be an issue when using go/format to format partial code snippets, e.g. inside editors.
gopherbot commented
CL https://golang.org/cl/15154 mentions this issue.