mirror of https://github.com/golang/go.git
cmd/compile: extrapolate $GOROOT in unified IR
This ensures that diagnostics for files within $GOROOT continue to be reported using their full filepath, rather than the abbreviated filepath. Notably, this is necessary for test/run.go, which has tests that expect to see the full filepath. Updates #48247. Change-Id: I440e2c6dd6109ca059d81cee49e476bba805d703 Reviewed-on: https://go-review.googlesource.com/c/go/+/348670 Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
a1f6208e56
commit
e30a09013b
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/constant"
|
"go/constant"
|
||||||
|
"internal/buildcfg"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"cmd/compile/internal/base"
|
"cmd/compile/internal/base"
|
||||||
|
|
@ -194,15 +195,32 @@ func (pr *pkgReader) posBaseIdx(idx int) *src.PosBase {
|
||||||
r := pr.newReader(relocPosBase, idx, syncPosBase)
|
r := pr.newReader(relocPosBase, idx, syncPosBase)
|
||||||
var b *src.PosBase
|
var b *src.PosBase
|
||||||
|
|
||||||
filename := r.string()
|
absFilename := r.string()
|
||||||
|
filename := absFilename
|
||||||
|
|
||||||
|
// For build artifact stability, the export data format only
|
||||||
|
// contains the "absolute" filename as returned by objabi.AbsFile.
|
||||||
|
// However, some tests (e.g., test/run.go's asmcheck tests) expect
|
||||||
|
// to see the full, original filename printed out. Re-expanding
|
||||||
|
// "$GOROOT" to buildcfg.GOROOT is a close-enough approximation to
|
||||||
|
// satisfy this.
|
||||||
|
//
|
||||||
|
// TODO(mdempsky): De-duplicate this logic with similar logic in
|
||||||
|
// cmd/link/internal/ld's expandGoroot. However, this will probably
|
||||||
|
// require being more consistent about when we use native vs UNIX
|
||||||
|
// file paths.
|
||||||
|
const dollarGOROOT = "$GOROOT"
|
||||||
|
if strings.HasPrefix(filename, dollarGOROOT) {
|
||||||
|
filename = buildcfg.GOROOT + filename[len(dollarGOROOT):]
|
||||||
|
}
|
||||||
|
|
||||||
if r.bool() {
|
if r.bool() {
|
||||||
b = src.NewFileBase(filename, filename)
|
b = src.NewFileBase(filename, absFilename)
|
||||||
} else {
|
} else {
|
||||||
pos := r.pos0()
|
pos := r.pos0()
|
||||||
line := r.uint()
|
line := r.uint()
|
||||||
col := r.uint()
|
col := r.uint()
|
||||||
b = src.NewLinePragmaBase(pos, filename, filename, line, col)
|
b = src.NewLinePragmaBase(pos, filename, absFilename, line, col)
|
||||||
}
|
}
|
||||||
|
|
||||||
pr.posBases[idx] = b
|
pr.posBases[idx] = b
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue