Open horenmar opened 2 years ago
Thanks for this. It unlikely that I'll have any time to fix bugs like these but it's good to have them documented here.
Hery @horenmar I'm unable to reproduce this bug... Here's the code I'm using... perhaps you can tweak it to show when this bug appears?
package main
import (
"go/format"
"go/token"
"log"
"os"
"github.com/dave/dst/decorator"
)
func main() {
code := `package main
type AType struct {
c *C.StructNameCensored
f SomeComplexGoType
using int32
}`
file, err := decorator.NewDecorator(token.NewFileSet()).Parse(code)
if err != nil {
log.Fatal(err)
}
restoredFset, restoredFile, err := decorator.RestoreFile(file)
if err != nil {
log.Fatal(err)
}
if err := format.Node(os.Stdout, restoredFset, restoredFile); err != nil {
log.Fatal(err)
}
}
Output:
package main
type AType struct {
c *C.StructNameCensored
f SomeComplexGoType
using int32
}
I have a source file that uses cgo a lot, and running it through
dst
causes (some) empty lines in structs/functions to be removed.I tried some testing, and I am not entirely sure what causes the empty lines to be removed, because e.g. this struct is left alone
but a similar struct
has the empty line removed, so it looks like this:
I also have a similar issue inside (some) functions -- I guess this is related to the C APIs? However, the newline between the
package
line and the copyright notice is also removed: