aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/99designs/gqlgen/codegen/config/binder.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2019-07-09 08:47:46 +0200
committerGitHub <noreply@github.com>2019-07-09 08:47:46 +0200
commita5c42b7c11fc082d47027ba5e0dbdeddcc14e62e (patch)
treea279d04878f3f1b1e28089779d011c0cb4b7545d /vendor/github.com/99designs/gqlgen/codegen/config/binder.go
parenteef7333243252ae81cd43921beb8e0749a170585 (diff)
parentfb50d470483b91d98e27ca6f9f605f0c51af6a71 (diff)
downloadgit-bug-a5c42b7c11fc082d47027ba5e0dbdeddcc14e62e.tar.gz
Merge pull request #177 from A-Hilaly/git-version
Check git version in repo RmConfigs
Diffstat (limited to 'vendor/github.com/99designs/gqlgen/codegen/config/binder.go')
-rw-r--r--vendor/github.com/99designs/gqlgen/codegen/config/binder.go24
1 files changed, 18 insertions, 6 deletions
diff --git a/vendor/github.com/99designs/gqlgen/codegen/config/binder.go b/vendor/github.com/99designs/gqlgen/codegen/config/binder.go
index cea904ad..72956de4 100644
--- a/vendor/github.com/99designs/gqlgen/codegen/config/binder.go
+++ b/vendor/github.com/99designs/gqlgen/codegen/config/binder.go
@@ -14,7 +14,7 @@ import (
// Binder connects graphql types to golang types using static analysis
type Binder struct {
- pkgs []*packages.Package
+ pkgs map[string]*packages.Package
schema *ast.Schema
cfg *Config
References []*TypeReference
@@ -26,7 +26,9 @@ func (c *Config) NewBinder(s *ast.Schema) (*Binder, error) {
return nil, err
}
+ mp := map[string]*packages.Package{}
for _, p := range pkgs {
+ populatePkg(mp, p)
for _, e := range p.Errors {
if e.Kind == packages.ListError {
return nil, p.Errors[0]
@@ -35,12 +37,23 @@ func (c *Config) NewBinder(s *ast.Schema) (*Binder, error) {
}
return &Binder{
- pkgs: pkgs,
+ pkgs: mp,
schema: s,
cfg: c,
}, nil
}
+func populatePkg(mp map[string]*packages.Package, p *packages.Package) {
+ imp := code.NormalizeVendor(p.PkgPath)
+ if _, ok := mp[imp]; ok {
+ return
+ }
+ mp[imp] = p
+ for _, p := range p.Imports {
+ populatePkg(mp, p)
+ }
+}
+
func (b *Binder) TypePosition(typ types.Type) token.Position {
named, isNamed := typ.(*types.Named)
if !isNamed {
@@ -75,10 +88,9 @@ func (b *Binder) FindType(pkgName string, typeName string) (types.Type, error) {
}
func (b *Binder) getPkg(find string) *packages.Package {
- for _, p := range b.pkgs {
- if code.NormalizeVendor(find) == code.NormalizeVendor(p.PkgPath) {
- return p
- }
+ imp := code.NormalizeVendor(find)
+ if p, ok := b.pkgs[imp]; ok {
+ return p
}
return nil
}