diff --git a/loader/cgo.go b/loader/cgo.go index bcd26b9f..07d7718b 100644 --- a/loader/cgo.go +++ b/loader/cgo.go @@ -145,8 +145,12 @@ func (p *Package) processCgo(filename string, f *ast.File, cflags []string) []er // source location. info.importCPos = spec.Path.ValuePos - pos := info.fset.PositionFor(genDecl.Doc.Pos(), true) - errs := info.parseFragment(cgoComment+cgoTypes, cflags, pos.Filename, pos.Line) + pos := genDecl.Pos() + if genDecl.Doc != nil { + pos = genDecl.Doc.Pos() + } + position := info.fset.PositionFor(pos, true) + errs := info.parseFragment(cgoComment+cgoTypes, cflags, position.Filename, position.Line) if errs != nil { return errs } diff --git a/testdata/cgo/main.go b/testdata/cgo/main.go index 7a434855..e1e75700 100644 --- a/testdata/cgo/main.go +++ b/testdata/cgo/main.go @@ -7,6 +7,8 @@ int mul(int, int); */ import "C" +import "C" + import "unsafe" func main() {