fix: import and arg collision (#219) · uber-go/mock@eb67641 (original) (raw)

Original file line number Diff line number Diff line change
@@ -758,6 +758,17 @@ func (g *generator) GenerateMockReturnCallMethod(intf *model.Interface, m *model
758 758 return nil
759 759 }
760 760
761 +// nameExistsAsPackage returns true if the name exists as a package name.
762 +// This is used to avoid name collisions when generating mock method arguments.
763 +func (g *generator) nameExistsAsPackage(name string) bool {
764 +for _, symbolName := range g.packageMap {
765 +if symbolName == name {
766 +return true
767 + }
768 + }
769 +return false
770 +}
771 +
761 772 func (g *generator) getArgNames(m *model.Method, in bool) []string {
762 773 var params []*model.Parameter
763 774 if in {
@@ -766,16 +777,19 @@ func (g *generator) getArgNames(m *model.Method, in bool) []string {
766 777 params = m.Out
767 778 }
768 779 argNames := make([]string, len(params))
780 +
769 781 for i, p := range params {
770 782 name := p.Name
771 -if name == "" |
783 +
784 +if name == "" |
772 785 name = fmt.Sprintf("arg%d", i)
773 786 }
774 787 argNames[i] = name
775 788 }
776 789 if m.Variadic != nil && in {
777 790 name := m.Variadic.Name
778 -if name == "" {
791 +
792 +if name == "" |
779 793 name = fmt.Sprintf("arg%d", len(params))
780 794 }
781 795 argNames = append(argNames, name)