github.com/elek/golangci-lint@v1.42.2-0.20211208090441-c05b7fcb3a9a/pkg/lint/linter/context.go (about) 1 package linter 2 3 import ( 4 "go/ast" 5 6 "golang.org/x/tools/go/packages" 7 8 "github.com/elek/golangci-lint/internal/pkgcache" 9 "github.com/elek/golangci-lint/pkg/config" 10 "github.com/elek/golangci-lint/pkg/fsutils" 11 "github.com/elek/golangci-lint/pkg/golinters/goanalysis/load" 12 "github.com/elek/golangci-lint/pkg/logutils" 13 ) 14 15 type Context struct { 16 // Packages are deduplicated (test and normal packages) packages 17 Packages []*packages.Package 18 19 // OriginalPackages aren't deduplicated: they contain both normal and test 20 // version for each of packages 21 OriginalPackages []*packages.Package 22 23 Cfg *config.Config 24 FileCache *fsutils.FileCache 25 LineCache *fsutils.LineCache 26 Log logutils.Log 27 28 PkgCache *pkgcache.Cache 29 LoadGuard *load.Guard 30 } 31 32 func (c *Context) Settings() *config.LintersSettings { 33 return &c.Cfg.LintersSettings 34 } 35 36 func (c *Context) ClearTypesInPackages() { 37 for _, p := range c.Packages { 38 clearTypes(p) 39 } 40 for _, p := range c.OriginalPackages { 41 clearTypes(p) 42 } 43 } 44 45 func clearTypes(p *packages.Package) { 46 p.Types = nil 47 p.TypesInfo = nil 48 p.Syntax = []*ast.File{} 49 }