Skip to content

Commit 3578b2f

Browse files
committed
cmd/go/internal/vet: print line numbers appropriately on list errors
Fixes #36173 For reasons that are unclear to me, this commit: f1d5ce0 introduces a TestPackagesFor function that strips line numbers from error messages. This commit introduces a new version of that function for 'go vet' that always keeps the line numbers.
1 parent 753d56d commit 3578b2f

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/cmd/go/internal/load/test.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,15 @@ func TestPackagesFor(p *Package, cover *TestCover) (pmain, ptest, pxtest *Packag
5555
}
5656
if len(p1.DepsErrors) > 0 {
5757
perr := p1.DepsErrors[0]
58-
perr.Pos = "" // show full import stack
58+
// A typical ImportStack looks like
59+
// [ "command-line-arguments", "(test)", "real/pkg/name" ]
60+
// so we want to look at index 2 to see if the error is in the package
61+
// we're looking at directly.
62+
direct := len(perr.ImportStack) <= 2 ||
63+
len(perr.ImportStack) == 3 && perr.ImportStack[2] == p1.ImportPath
64+
if !direct {
65+
perr.Pos = "" // show full import stack
66+
}
5967
err = perr
6068
break
6169
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
env GO111MODULE=off
2+
3+
# Issue 36173. Verify that "go vet" prints line numbers on load errors.
4+
5+
! go vet a/a_test.go
6+
stderr 'a_test.go:4:3: use of internal package'
7+
8+
-- a/a.go --
9+
package a
10+
11+
-- a/a_test.go --
12+
package a
13+
14+
import (
15+
_ "a/x/internal/y"
16+
)
17+
18+
-- a/x/internal/y/y.go --
19+
package y

0 commit comments

Comments
 (0)