github.com/fortexxx/gqlgen@v0.10.3-0.20191216030626-ca5ea8b21ead/codegen/util.go (about) 1 package codegen 2 3 import ( 4 "go/types" 5 "strings" 6 7 "github.com/pkg/errors" 8 ) 9 10 func findGoNamedType(def types.Type) (*types.Named, error) { 11 if def == nil { 12 return nil, nil 13 } 14 15 namedType, ok := def.(*types.Named) 16 if !ok { 17 return nil, errors.Errorf("expected %s to be a named type, instead found %T\n", def.String(), def) 18 } 19 20 return namedType, nil 21 } 22 23 func findGoInterface(def types.Type) (*types.Interface, error) { 24 if def == nil { 25 return nil, nil 26 } 27 namedType, err := findGoNamedType(def) 28 if err != nil { 29 return nil, err 30 } 31 if namedType == nil { 32 return nil, nil 33 } 34 35 underlying, ok := namedType.Underlying().(*types.Interface) 36 if !ok { 37 return nil, errors.Errorf("expected %s to be a named interface, instead found %s", def.String(), namedType.String()) 38 } 39 40 return underlying, nil 41 } 42 43 func equalFieldName(source, target string) bool { 44 source = strings.Replace(source, "_", "", -1) 45 target = strings.Replace(target, "_", "", -1) 46 return strings.EqualFold(source, target) 47 }