1
0
mirror of https://github.com/golang/go synced 2024-11-23 08:50:03 -07:00

cmd/compile: fix position of fake receivers; be more careful in logopt

The src.NoXPos in fake receivers was leaking, through a series of
mishaps, all the way to logopt.  If done just so, this can lead to
a compiler crash.  This makes logopt crash-proof and eliminates the
root cause as well.

I'm reluctant to write a test for this because it's kinda slow
and involved; my working test is "compile something that mentions
the flag package with -json=0,$TMPDIR flag, then be sure that
$TMPDIR/flag/__unnamed__.json was not created".

Change-Id: I384b717c0e7522953d22d61f7e06319e11192d7d
Reviewed-on: https://go-review.googlesource.com/c/go/+/443156
Run-TryBot: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
This commit is contained in:
David Chase 2022-10-14 16:24:44 -04:00
parent c83d4fba07
commit da6042e82e
2 changed files with 4 additions and 1 deletions

View File

@ -405,6 +405,9 @@ func uriIfy(f string) DocumentURI {
// Return filename, replacing a first occurrence of $GOROOT with the
// actual value of the GOROOT (because LSP does not speak "$GOROOT").
func uprootedPath(filename string) string {
if filename == "" {
return "__unnamed__"
}
if buildcfg.GOROOT == "" || !strings.HasPrefix(filename, "$GOROOT/") {
return filename
}

View File

@ -1680,7 +1680,7 @@ func FakeRecvType() *Type {
}
func FakeRecv() *Field {
return NewField(src.NoXPos, nil, FakeRecvType())
return NewField(base.AutogeneratedPos, nil, FakeRecvType())
}
var (