Added missing methods from embedded interfaces
This commit adds missing empty asserter methods from the interfaces embedded in the parent interface.
This commit is contained in:
parent
59778af1dd
commit
2d00544d67
|
@ -37,36 +37,20 @@ func main() {
|
|||
continue
|
||||
}
|
||||
|
||||
var ifaceName string
|
||||
if pkgpath == repository.RootPath {
|
||||
ifaceName = iface.Name
|
||||
} else {
|
||||
ifaceName = strings.Title(repository.TrimRoot(pkgpath)) + iface.Name
|
||||
}
|
||||
var ifaceName = newIfaceName(pkgpath, iface)
|
||||
|
||||
gen.Commentf("%[1]s provides no-op asserters for cchat.%[1]s.", ifaceName)
|
||||
gen.Type().Id(ifaceName).Struct()
|
||||
gen.Line()
|
||||
|
||||
for _, method := range iface.Methods {
|
||||
am, ok := method.(repository.AsserterMethod)
|
||||
if !ok {
|
||||
continue
|
||||
for _, embed := range iface.Embeds {
|
||||
if iface := pk.Interface(embed.InterfaceName); iface != nil {
|
||||
genIfaceMethods(gen, *iface, ifaceName, pkgpath)
|
||||
}
|
||||
|
||||
name := fmt.Sprintf("As%s", am.ChildType)
|
||||
gen.Comment(fmt.Sprintf("%s returns nil.", name))
|
||||
|
||||
stmt := jen.Func()
|
||||
stmt.Parens(jen.Id(ifaceName))
|
||||
stmt.Id(fmt.Sprintf("As%s", am.ChildType))
|
||||
stmt.Params()
|
||||
stmt.Add(genutils.GenerateExternType(pkgpath, am))
|
||||
stmt.Values(jen.Return(jen.Nil()))
|
||||
|
||||
gen.Add(stmt)
|
||||
}
|
||||
|
||||
genIfaceMethods(gen, iface, ifaceName, pkgpath)
|
||||
|
||||
gen.Line()
|
||||
}
|
||||
}
|
||||
|
@ -82,6 +66,35 @@ func main() {
|
|||
}
|
||||
}
|
||||
|
||||
func newIfaceName(pkgpath string, iface repository.Interface) string {
|
||||
if pkgpath == repository.RootPath {
|
||||
return iface.Name
|
||||
} else {
|
||||
return strings.Title(repository.TrimRoot(pkgpath)) + iface.Name
|
||||
}
|
||||
}
|
||||
|
||||
func genIfaceMethods(gen *jen.File, iface repository.Interface, ifaceName, pkgpath string) {
|
||||
for _, method := range iface.Methods {
|
||||
am, ok := method.(repository.AsserterMethod)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
name := fmt.Sprintf("As%s", am.ChildType)
|
||||
gen.Comment(fmt.Sprintf("%s returns nil.", name))
|
||||
|
||||
stmt := jen.Func()
|
||||
stmt.Parens(jen.Id(ifaceName))
|
||||
stmt.Id(name)
|
||||
stmt.Params()
|
||||
stmt.Add(genutils.GenerateExternType(pkgpath, am))
|
||||
stmt.Values(jen.Return(jen.Nil()))
|
||||
|
||||
gen.Add(stmt)
|
||||
}
|
||||
}
|
||||
|
||||
func hasAsserter(iface repository.Interface) bool {
|
||||
for _, method := range iface.Methods {
|
||||
if _, isA := method.(repository.AsserterMethod); isA {
|
||||
|
|
|
@ -45,6 +45,9 @@ func (Namer) AsIconer() cchat.Iconer { return nil }
|
|||
// Service provides no-op asserters for cchat.Service.
|
||||
type Service struct{}
|
||||
|
||||
// AsIconer returns nil.
|
||||
func (Service) AsIconer() cchat.Iconer { return nil }
|
||||
|
||||
// AsConfigurator returns nil.
|
||||
func (Service) AsConfigurator() cchat.Configurator { return nil }
|
||||
|
||||
|
@ -54,6 +57,9 @@ func (Service) AsSessionRestorer() cchat.SessionRestorer { return nil }
|
|||
// Session provides no-op asserters for cchat.Session.
|
||||
type Session struct{}
|
||||
|
||||
// AsIconer returns nil.
|
||||
func (Session) AsIconer() cchat.Iconer { return nil }
|
||||
|
||||
// AsCommander returns nil.
|
||||
func (Session) AsCommander() cchat.Commander { return nil }
|
||||
|
||||
|
@ -69,6 +75,9 @@ func (Commander) AsCompleter() cchat.Completer { return nil }
|
|||
// Server provides no-op asserters for cchat.Server.
|
||||
type Server struct{}
|
||||
|
||||
// AsIconer returns nil.
|
||||
func (Server) AsIconer() cchat.Iconer { return nil }
|
||||
|
||||
// AsLister returns nil.
|
||||
func (Server) AsLister() cchat.Lister { return nil }
|
||||
|
||||
|
@ -117,6 +126,9 @@ func (Sender) AsCompleter() cchat.Completer { return nil }
|
|||
// MemberSection provides no-op asserters for cchat.MemberSection.
|
||||
type MemberSection struct{}
|
||||
|
||||
// AsIconer returns nil.
|
||||
func (MemberSection) AsIconer() cchat.Iconer { return nil }
|
||||
|
||||
// AsMemberDynamicSection returns nil.
|
||||
func (MemberSection) AsMemberDynamicSection() cchat.MemberDynamicSection { return nil }
|
||||
|
||||
|
|
Loading…
Reference in New Issue