Fix #94: load object files for govet for old go

Do it in compatible with old go versions object files way:
use golang.org/x/tools/go/gcexportdata instead of importer.Default
This commit is contained in:
Denis Isaev 2018-06-19 09:41:10 +03:00 committed by Isaev Denis
parent 78d39711f0
commit ebbfc26e88
2 changed files with 7 additions and 2 deletions

2
Gopkg.lock generated
View File

@ -122,7 +122,7 @@
"lib/cfg", "lib/cfg",
"lib/whitelist" "lib/whitelist"
] ]
revision = "18c83969a303d67eaa9d67747a930f007e3e9c89" revision = "54e733a64097854cf4d8fa80ccf48012a487ae1a"
[[projects]] [[projects]]
branch = "master" branch = "master"

View File

@ -16,6 +16,7 @@ import (
"os" "os"
"time" "time"
"golang.org/x/tools/go/gcexportdata"
"golang.org/x/tools/go/loader" "golang.org/x/tools/go/loader"
) )
@ -29,6 +30,10 @@ var (
formatterType *types.Interface // possibly nil formatterType *types.Interface // possibly nil
) )
func newGCExportDataImporter(fset *token.FileSet) types.ImporterFrom {
return gcexportdata.NewImporter(fset, make(map[string]*types.Package))
}
func inittypes() error { func inittypes() error {
errorType = types.Universe.Lookup("error").Type().Underlying().(*types.Interface) errorType = types.Universe.Lookup("error").Type().Underlying().(*types.Interface)
@ -83,7 +88,7 @@ func (pkg *Package) check(fs *token.FileSet, astFiles []*ast.File, pkgInfo *load
if *source { if *source {
stdImporter = importer.For("source", nil) stdImporter = importer.For("source", nil)
} else { } else {
stdImporter = importer.Default() stdImporter = newGCExportDataImporter(fs)
} }
if err := inittypes(); err != nil { if err := inittypes(); err != nil {
return []error{fmt.Errorf("can't init std types: %s", err)} return []error{fmt.Errorf("can't init std types: %s", err)}