本文整理汇总了Golang中code/google/com/p/go/tools/go/types.Config.Import方法的典型用法代码示例。如果您正苦于以下问题:Golang Config.Import方法的具体用法?Golang Config.Import怎么用?Golang Config.Import使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类code/google/com/p/go/tools/go/types.Config
的用法示例。
在下文中一共展示了Config.Import方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: checkPkgFiles
func checkPkgFiles(files []*ast.File) {
type bailout struct{}
conf := types.Config{
FakeImportC: true,
Error: func(err error) {
if !*allErrors && errorCount >= 10 {
panic(bailout{})
}
report(err)
},
Sizes: sizes,
}
if *gccgo {
var inst gccgoimporter.GccgoInstallation
inst.InitFromDriver("gccgo")
conf.Import = inst.GetImporter(nil, nil)
}
defer func() {
switch p := recover().(type) {
case nil, bailout:
// normal return or early exit
default:
// re-panic
panic(p)
}
}()
const path = "pkg" // any non-empty string will do for now
conf.Check(path, fset, files, nil)
}
示例2: GetAllDependencies
func GetAllDependencies(pkg string, config *types.Config) ([]*types.Package, error) {
var dependencies []*types.Package // ordered
imported := make(map[string]bool)
var importPkg func(string, []string) error
importPkg = func(importPath string, importing []string) error {
if importPath == "unsafe" || importPath == "go/doc" {
return nil
}
if _, found := imported[importPath]; found {
return nil
}
for _, path := range importing {
if path == importPath {
return fmt.Errorf("package import cycle: %s -> %s", strings.Join(importing, " -> "), importPath)
}
}
typesPkg, err := config.Import(config.Packages, importPath)
if err != nil {
return err
}
var imps []string
for _, imp := range typesPkg.Imports() {
imps = append(imps, imp.Path())
}
sort.Strings(imps)
for _, imp := range imps {
if err := importPkg(imp, append(importing, importPath)); err != nil {
return err
}
}
dependencies = append(dependencies, typesPkg)
imported[importPath] = true
return nil
}
importPkg("runtime", nil) // all packages depend on runtime
err := importPkg(pkg, nil)
return dependencies, err
}