git.sr.ht/~sircmpwn/gqlgen@v0.0.0-20200522192042-c84d29a1c940/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  }