diff options
| author | Emmanuel T Odeke <emmanuel@orijtech.com> | 2020-04-21 23:31:59 -0700 |
|---|---|---|
| committer | Emmanuel Odeke <emm.odeke@gmail.com> | 2020-04-30 01:17:47 +0000 |
| commit | 4f7053c87f9ebf3acab7669d380f53bdfba0566b (patch) | |
| tree | dd2c6110e506383e8017c3d778d0e4d62a47f9db /src | |
| parent | 4e00b4c366f06036509201d3bf19ee2c8fd767c8 (diff) | |
| download | go-4f7053c87f9ebf3acab7669d380f53bdfba0566b.tar.xz | |
cmd/compile: omit file:pos for non-existent, permission errors
Omits printing the file:line:column when trying to open either
* non-existent files
* files without permission
Given:
go tool compile x.go
For either of x.go not existing, or if no read permissions:
* Before:
x.go:0: open x.go: no such file or directory
x.go:0: open x.go: permission denied
* After:
open x.go: no such file or directory
open x.go: permission denied
While here, noticed an oddity with the Linux builders, that appear
to always be running under root, hence the test for permission errors
with 0222 -W-*-W-*-W- can't pass on linux-amd64 builders.
The filed bug is #38608.
Fixes #36437
Change-Id: I9645ef73177c286c99547e3a0f3719fa07b35cb5
Reviewed-on: https://go-review.googlesource.com/c/go/+/229357
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/compile/internal/gc/subr.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/gc/subr.go b/src/cmd/compile/internal/gc/subr.go index 2bbc5e4ae1..6df9ffc66e 100644 --- a/src/cmd/compile/internal/gc/subr.go +++ b/src/cmd/compile/internal/gc/subr.go @@ -60,9 +60,15 @@ func adderrorname(n *Node) { } func adderr(pos src.XPos, format string, args ...interface{}) { + msg := fmt.Sprintf(format, args...) + // Only add the position if we have a file. + // See issue golang.org/issue/11361. + if !strings.HasSuffix(msg, ": no such file or directory") && !strings.HasSuffix(msg, ": permission denied") { + msg = fmt.Sprintf("%v: %s", linestr(pos), msg) + } errors = append(errors, Error{ pos: pos, - msg: fmt.Sprintf("%v: %s\n", linestr(pos), fmt.Sprintf(format, args...)), + msg: msg + "\n", }) } |
