1package codegen
2
3import (
4 "go/types"
5 "strings"
6
7 "github.com/pkg/errors"
8)
9
10func 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
23func 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
43func equalFieldName(source, target string) bool {
44 source = strings.Replace(source, "_", "", -1)
45 target = strings.Replace(target, "_", "", -1)
46 return strings.EqualFold(source, target)
47}