1
0
mirror of https://github.com/golang/go synced 2024-11-24 12:40:12 -07:00

cmd/compile: fix recorded export data position info

The position information recorded now consists of the line-
directive relative filename and line number. It would be
relatively easy to also encode absolute position information
as necessary (by serializing src.PosBase data).

For example, given $GOROOT/src/tmp/x.go:

	package p

	const C0 = 0

	//line c.go:10
	const C1 = 1

	//line t.go:20
	type T int

	//line v.go:30
	var V T

	//line f.go:40
	func F() {}

The recorded positions for the exported entities are:

	C0 $GOROOT/src/tmp/x.go 3
	C1 c.go 10
	T t.go 20
	V v.go 30
	F f.go 40

Fix verified by manual inspection. There's currently no easy way
to test this, but it will eventually be tested when we fix #7311.

Fixes #19391.

Change-Id: I6269067ea58358250fe6dd1f73bdf9e5d2adfe3d
Reviewed-on: https://go-review.googlesource.com/37936
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
Robert Griesemer 2017-03-07 15:58:28 -08:00
parent 82e1732f14
commit 2123a6c644

View File

@ -568,8 +568,8 @@ func (p *exporter) pos(n *Node) {
func fileLine(n *Node) (file string, line int) {
if n != nil {
pos := Ctxt.PosTable.Pos(n.Pos)
file = pos.AbsFilename()
line = int(pos.Line())
file = pos.Base().AbsFilename()
line = int(pos.RelLine())
}
return
}