From b41e4b469b2bafe522fded91c604eed59357789c Mon Sep 17 00:00:00 2001 From: Alan Donovan Date: Thu, 27 Sep 2018 12:42:39 -0400 Subject: [PATCH] go/analysis: add Pass.OtherFiles field This field lists the names of non-Go files that are part of the package under analysis. Change-Id: Ic967dc18b98e018c691442f7378cb29db30a1454 Reviewed-on: https://go-review.googlesource.com/138136 Reviewed-by: Michael Matloob --- go/analysis/analysis.go | 11 +++++++---- go/analysis/internal/checker/checker.go | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/go/analysis/analysis.go b/go/analysis/analysis.go index 8fa329c1..21fcb372 100644 --- a/go/analysis/analysis.go +++ b/go/analysis/analysis.go @@ -90,16 +90,19 @@ func (a *Analyzer) String() string { return a.Name } // program, and has both input and an output components. // // As in a compiler, one pass may depend on the result computed by another. +// +// The Run function should not call any of the Pass functions concurrently. type Pass struct { // -- inputs -- Analyzer *Analyzer // the identity of the current analyzer // syntax and type information - Fset *token.FileSet // file position information - Files []*ast.File // the abstract syntax tree of each file - Pkg *types.Package // type information about the package - TypesInfo *types.Info // type information about the syntax trees + Fset *token.FileSet // file position information + Files []*ast.File // the abstract syntax tree of each file + OtherFiles []string // names of non-Go files of this package + Pkg *types.Package // type information about the package + TypesInfo *types.Info // type information about the syntax trees // ResultOf provides the inputs to this analysis pass, which are // the corresponding results of its prerequisite analyzers. diff --git a/go/analysis/internal/checker/checker.go b/go/analysis/internal/checker/checker.go index d9647c0e..bbdaf2bd 100644 --- a/go/analysis/internal/checker/checker.go +++ b/go/analysis/internal/checker/checker.go @@ -497,6 +497,7 @@ func (act *action) execOnce() { Analyzer: act.a, Fset: act.pkg.Fset, Files: act.pkg.Syntax, + OtherFiles: act.pkg.OtherFiles, Pkg: act.pkg.Types, TypesInfo: act.pkg.TypesInfo, ResultOf: inputs,