]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: add IgnoredOtherFiles to go list; pass IgnoredFiles to vet
authorRuss Cox <rsc@golang.org>
Mon, 29 Jun 2020 14:39:30 +0000 (10:39 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 12 Oct 2020 18:31:10 +0000 (18:31 +0000)
Show constraint-ignored non-.go files in go list, as Package.IgnoredOtherFiles
(same as go/build's IgnoredOtherFiles).

Pass full list of ignored files to vet, to help buildtag checker.

For #41184.

Change-Id: I749868de9082cbbc1efbc59370783c8c82fe735f
Reviewed-on: https://go-review.googlesource.com/c/go/+/240553
Trust: Russ Cox <rsc@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/internal/load/pkg.go
src/cmd/go/internal/work/exec.go

index ffa083f2f0c08692bad70f6e31776d512a24d41c..5b3c2f0ff2c31b61ec6d5c7decccde566378efa1 100644 (file)
@@ -75,19 +75,20 @@ type PackagePublic struct {
        // Source files
        // If you add to this list you MUST add to p.AllFiles (below) too.
        // Otherwise file name security lists will not apply to any new additions.
-       GoFiles         []string `json:",omitempty"` // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
-       CgoFiles        []string `json:",omitempty"` // .go source files that import "C"
-       CompiledGoFiles []string `json:",omitempty"` // .go output from running cgo on CgoFiles
-       IgnoredGoFiles  []string `json:",omitempty"` // .go source files ignored due to build constraints
-       CFiles          []string `json:",omitempty"` // .c source files
-       CXXFiles        []string `json:",omitempty"` // .cc, .cpp and .cxx source files
-       MFiles          []string `json:",omitempty"` // .m source files
-       HFiles          []string `json:",omitempty"` // .h, .hh, .hpp and .hxx source files
-       FFiles          []string `json:",omitempty"` // .f, .F, .for and .f90 Fortran source files
-       SFiles          []string `json:",omitempty"` // .s source files
-       SwigFiles       []string `json:",omitempty"` // .swig files
-       SwigCXXFiles    []string `json:",omitempty"` // .swigcxx files
-       SysoFiles       []string `json:",omitempty"` // .syso system object files added to package
+       GoFiles           []string `json:",omitempty"` // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
+       CgoFiles          []string `json:",omitempty"` // .go source files that import "C"
+       CompiledGoFiles   []string `json:",omitempty"` // .go output from running cgo on CgoFiles
+       IgnoredGoFiles    []string `json:",omitempty"` // .go source files ignored due to build constraints
+       IgnoredOtherFiles []string `json:",omitempty"` // non-.go source files ignored due to build constraints
+       CFiles            []string `json:",omitempty"` // .c source files
+       CXXFiles          []string `json:",omitempty"` // .cc, .cpp and .cxx source files
+       MFiles            []string `json:",omitempty"` // .m source files
+       HFiles            []string `json:",omitempty"` // .h, .hh, .hpp and .hxx source files
+       FFiles            []string `json:",omitempty"` // .f, .F, .for and .f90 Fortran source files
+       SFiles            []string `json:",omitempty"` // .s source files
+       SwigFiles         []string `json:",omitempty"` // .swig files
+       SwigCXXFiles      []string `json:",omitempty"` // .swigcxx files
+       SysoFiles         []string `json:",omitempty"` // .syso system object files added to package
 
        // Cgo directives
        CgoCFLAGS    []string `json:",omitempty"` // cgo: flags for C compiler
@@ -127,6 +128,7 @@ func (p *Package) AllFiles() []string {
                p.CgoFiles,
                // no p.CompiledGoFiles, because they are from GoFiles or generated by us
                p.IgnoredGoFiles,
+               p.IgnoredOtherFiles,
                p.CFiles,
                p.CXXFiles,
                p.MFiles,
@@ -330,6 +332,7 @@ func (p *Package) copyBuild(pp *build.Package) {
        p.GoFiles = pp.GoFiles
        p.CgoFiles = pp.CgoFiles
        p.IgnoredGoFiles = pp.IgnoredGoFiles
+       p.IgnoredOtherFiles = pp.IgnoredOtherFiles
        p.CFiles = pp.CFiles
        p.CXXFiles = pp.CXXFiles
        p.MFiles = pp.MFiles
index 17074afaf6f2e696acd4925522133e7e2c85bf8d..074bcc16c0a6767ea43163968b82c6201407ab3d 100644 (file)
@@ -922,12 +922,13 @@ func (b *Builder) loadCachedSrcFiles(a *Action) error {
 
 // vetConfig is the configuration passed to vet describing a single package.
 type vetConfig struct {
-       ID         string   // package ID (example: "fmt [fmt.test]")
-       Compiler   string   // compiler name (gc, gccgo)
-       Dir        string   // directory containing package
-       ImportPath string   // canonical import path ("package path")
-       GoFiles    []string // absolute paths to package source files
-       NonGoFiles []string // absolute paths to package non-Go files
+       ID           string   // package ID (example: "fmt [fmt.test]")
+       Compiler     string   // compiler name (gc, gccgo)
+       Dir          string   // directory containing package
+       ImportPath   string   // canonical import path ("package path")
+       GoFiles      []string // absolute paths to package source files
+       NonGoFiles   []string // absolute paths to package non-Go files
+       IgnoredFiles []string // absolute paths to ignored source files
 
        ImportMap   map[string]string // map import path in source code to package path
        PackageFile map[string]string // map package path to .a file with export data
@@ -951,20 +952,23 @@ func buildVetConfig(a *Action, srcfiles []string) {
                }
        }
 
+       ignored := str.StringList(a.Package.IgnoredGoFiles, a.Package.IgnoredOtherFiles)
+
        // Pass list of absolute paths to vet,
        // so that vet's error messages will use absolute paths,
        // so that we can reformat them relative to the directory
        // in which the go command is invoked.
        vcfg := &vetConfig{
-               ID:          a.Package.ImportPath,
-               Compiler:    cfg.BuildToolchainName,
-               Dir:         a.Package.Dir,
-               GoFiles:     mkAbsFiles(a.Package.Dir, gofiles),
-               NonGoFiles:  mkAbsFiles(a.Package.Dir, nongofiles),
-               ImportPath:  a.Package.ImportPath,
-               ImportMap:   make(map[string]string),
-               PackageFile: make(map[string]string),
-               Standard:    make(map[string]bool),
+               ID:           a.Package.ImportPath,
+               Compiler:     cfg.BuildToolchainName,
+               Dir:          a.Package.Dir,
+               GoFiles:      mkAbsFiles(a.Package.Dir, gofiles),
+               NonGoFiles:   mkAbsFiles(a.Package.Dir, nongofiles),
+               IgnoredFiles: mkAbsFiles(a.Package.Dir, ignored),
+               ImportPath:   a.Package.ImportPath,
+               ImportMap:    make(map[string]string),
+               PackageFile:  make(map[string]string),
+               Standard:     make(map[string]bool),
        }
        a.vetCfg = vcfg
        for i, raw := range a.Package.Internal.RawImports {