From 1d1e25fba88b5c61cd25889d005875848a993ea3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Mart=C3=AD?= Date: Thu, 28 Jun 2018 17:18:01 +0100 Subject: [PATCH] cmd/vet: don't run buildtag check when in vetxonly mode MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The check was running in the loop that read source files in, much before any of the other checks ran. Vetxonly makes vet exit early, but after all the source files have been read. To fix this, simply run the buildtag check along with all the other checks that get run on specific syntax tree nodes. Add a cmd/go test with go test -a, to ensure that the issue as reported is fixed. Fixes #26102. Change-Id: If6e3b9418ffa8166c0f982668b0d10872283776a Reviewed-on: https://go-review.googlesource.com/121395 Run-TryBot: Daniel Martí TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/cmd/go/go_test.go | 5 +++++ src/cmd/go/testdata/src/vetfail/p1/p1.go | 2 ++ src/cmd/vet/main.go | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index cb4a1a04b9..c2d85c8730 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -5817,6 +5817,11 @@ func TestTestVet(t *testing.T) { tg.runFail("test", "vetfail/...") tg.grepStderr(`Printf format %d`, "did not diagnose bad Printf") tg.grepStdout(`ok\s+vetfail/p2`, "did not run vetfail/p2") + + // Use -a so that we need to recompute the vet-specific export data for + // vetfail/p1. + tg.run("test", "-a", "vetfail/p2") + tg.grepStderrNot(`invalid.*constraint`, "did diagnose bad build constraint in vetxonly mode") } func TestTestVetRebuild(t *testing.T) { diff --git a/src/cmd/go/testdata/src/vetfail/p1/p1.go b/src/cmd/go/testdata/src/vetfail/p1/p1.go index 248317b779..eaa9b18333 100644 --- a/src/cmd/go/testdata/src/vetfail/p1/p1.go +++ b/src/cmd/go/testdata/src/vetfail/p1/p1.go @@ -1,3 +1,5 @@ +// +build !foo-bar + package p1 import "fmt" diff --git a/src/cmd/vet/main.go b/src/cmd/vet/main.go index 959a536d25..28da9e2d74 100644 --- a/src/cmd/vet/main.go +++ b/src/cmd/vet/main.go @@ -489,7 +489,6 @@ func doPackage(names []string, basePkg *Package) *Package { file: parsedFile, dead: make(map[ast.Node]bool), } - checkBuildTag(file) files = append(files, file) } if len(astFiles) == 0 { @@ -541,6 +540,7 @@ func doPackage(names []string, basePkg *Package) *Package { } } for _, file := range files { + checkBuildTag(file) file.checkers = chk if file.file != nil { file.walkFile(file.name, file.file) -- 2.50.0