diff options
author | Matthew Dempsky <mdempsky@google.com> | 2021-08-19 15:52:53 -0700 |
---|---|---|
committer | Matthew Dempsky <mdempsky@google.com> | 2021-08-20 19:44:02 +0000 |
commit | ab9aaf46ee5585317b5c796d6fb7e31383385eeb (patch) | |
tree | 8a98c158960acc0529656aa2a3d8f7bc8e9fcbe3 /src/cmd/compile/internal/noder/reader2.go | |
parent | 5045477be8961af1a5855d89e60483f4ccb624ac (diff) | |
download | go-ab9aaf46ee5585317b5c796d6fb7e31383385eeb.tar.gz go-ab9aaf46ee5585317b5c796d6fb7e31383385eeb.zip |
cmd/compile/internal/syntax: add PosBase.Trimmed
With types2, some syntax.PosBases need to be constructed from export
data, which must only contain "trimmed" filenames (i.e., that they've
already been made absolute and undergone -trimpath processing).
However, it's not safe to apply trimming to a filename multiple times,
and in general we can't distinguish trimmed from untrimmed filenames.
This CL resolves this by adding a PosBase.Trimmed boolean so we can
distinguish whether the associated filename has been trimmed yet. This
is a bit hacky, but is the least bad solution I've come up with so
far.
This unblocks enabling -G=3 by default.
Change-Id: I7383becfb704680a36f7603e3246af38b21f100b
Reviewed-on: https://go-review.googlesource.com/c/go/+/343731
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Matthew Dempsky <mdempsky@google.com>
Trust: Dan Scales <danscales@google.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/noder/reader2.go')
-rw-r--r-- | src/cmd/compile/internal/noder/reader2.go | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/cmd/compile/internal/noder/reader2.go b/src/cmd/compile/internal/noder/reader2.go index 22c742ab25..64c1612f70 100644 --- a/src/cmd/compile/internal/noder/reader2.go +++ b/src/cmd/compile/internal/noder/reader2.go @@ -109,15 +109,14 @@ func (pr *pkgReader2) posBaseIdx(idx int) *syntax.PosBase { var b *syntax.PosBase filename := r.string() - _ = r.string() // absolute file name if r.bool() { - b = syntax.NewFileBase(filename) + b = syntax.NewTrimmedFileBase(filename, true) } else { pos := r.pos() line := r.uint() col := r.uint() - b = syntax.NewLineBase(pos, filename, line, col) + b = syntax.NewLineBase(pos, filename, true, line, col) } pr.posBases[idx] = b |