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:
parent
c83d4fba07
commit
da6042e82e
@ -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
|
||||
}
|
||||
|
@ -1680,7 +1680,7 @@ func FakeRecvType() *Type {
|
||||
}
|
||||
|
||||
func FakeRecv() *Field {
|
||||
return NewField(src.NoXPos, nil, FakeRecvType())
|
||||
return NewField(base.AutogeneratedPos, nil, FakeRecvType())
|
||||
}
|
||||
|
||||
var (
|
||||
|
Loading…
Reference in New Issue
Block a user