diff --git a/pkg/goanalysis/runner.go b/pkg/goanalysis/runner.go index 1f59319926259..a538f63234244 100644 --- a/pkg/goanalysis/runner.go +++ b/pkg/goanalysis/runner.go @@ -15,7 +15,6 @@ import ( "go/token" "runtime" "sort" - "strings" "sync" "golang.org/x/exp/maps" @@ -59,12 +58,11 @@ type runner struct { passToPkg map[*analysis.Pass]*packages.Package passToPkgGuard sync.Mutex sw *timeutils.Stopwatch - goVersion string // TODO(ldez) temporary workaround } -func newRunner(prefix string, logger logutils.Log, - pkgCache *pkgcache.Cache, loadGuard *load.Guard, loadMode LoadMode, - sw *timeutils.Stopwatch, goVersion string) *runner { +func newRunner(prefix string, logger logutils.Log, pkgCache *pkgcache.Cache, loadGuard *load.Guard, + loadMode LoadMode, sw *timeutils.Stopwatch +) *runner { return &runner{ prefix: prefix, log: logger, @@ -73,7 +71,6 @@ func newRunner(prefix string, logger logutils.Log, loadMode: loadMode, passToPkg: map[*analysis.Pass]*packages.Package{}, sw: sw, - goVersion: goVersion, } } @@ -250,7 +247,6 @@ func (r *runner) analyze(pkgs []*packages.Package, analyzers []*analysis.Analyze loadingPackages[pkg] = &loadingPackage{ pkg: pkg, - goVersion: "go" + strings.TrimPrefix(r.goVersion, "go"), imports: imports, isInitial: initialPkgs[pkg], log: r.log, diff --git a/pkg/goanalysis/runner_loadingpackage.go b/pkg/goanalysis/runner_loadingpackage.go index cabd83c03b5ba..8a3bd0751c1a5 100644 --- a/pkg/goanalysis/runner_loadingpackage.go +++ b/pkg/goanalysis/runner_loadingpackage.go @@ -9,6 +9,7 @@ import ( "go/types" "os" "reflect" + "runtime" "sync" "sync/atomic" @@ -23,7 +24,6 @@ const unsafePkgName = "unsafe" type loadingPackage struct { pkg *packages.Package - goVersion string // TODO(ldez) temporary workaround imports map[string]*loadingPackage isInitial bool log logutils.Log @@ -151,13 +151,15 @@ func (lp *loadingPackage) loadFromSource(loadMode LoadMode) error { } return imp.Types, nil } + tc := &types.Config{ Importer: importerFunc(importer), Error: func(err error) { pkg.Errors = append(pkg.Errors, lp.convertError(err)...) }, - GoVersion: lp.goVersion, // TODO(ldez) temporary workaround + GoVersion: runtime.Version(), // TODO(ldez) temporary workaround } + _ = types.NewChecker(tc, pkg.Fset, pkg.Types, pkg.TypesInfo).Files(pkg.Syntax) // Don't handle error here: errors are adding by tc.Error function. diff --git a/pkg/goanalysis/runners.go b/pkg/goanalysis/runners.go index 6f2c9dac28fce..c02d33b797577 100644 --- a/pkg/goanalysis/runners.go +++ b/pkg/goanalysis/runners.go @@ -36,12 +36,7 @@ func runAnalyzers(cfg runAnalyzersConfig, lintCtx *linter.Context) ([]result.Iss const stagesToPrint = 10 defer sw.PrintTopStages(stagesToPrint) - var goVersion string - if lintCtx.Cfg != nil { - goVersion = lintCtx.Cfg.Run.Go - } - - runner := newRunner(cfg.getName(), log, lintCtx.PkgCache, lintCtx.LoadGuard, cfg.getLoadMode(), sw, goVersion) + runner := newRunner(cfg.getName(), log, lintCtx.PkgCache, lintCtx.LoadGuard, cfg.getLoadMode(), sw) pkgs := lintCtx.Packages if cfg.useOriginalPackages() {