util.go

 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}