Support for embedding interfaces.

This commit is contained in:
Alec Thomas
2018-09-12 13:18:52 +10:00
parent fd197e5081
commit 37d57a878b
3 changed files with 31 additions and 1 deletions
+23
View File
@@ -590,3 +590,26 @@ func TestAnonymousPrefix(t *testing.T) {
require.NoError(t, err)
require.Equal(t, "moo", cli.Flag)
}
type TestInterface interface {
SomeMethod()
}
type TestImpl struct {
Flag string
}
func (t *TestImpl) SomeMethod() {}
func TestEmbedInterface(t *testing.T) {
type CLI struct {
SomeFlag string
TestInterface
}
cli := &CLI{TestInterface: &TestImpl{}}
p := mustNew(t, cli)
_, err := p.Parse([]string{"--some-flag=foo", "--flag=yes"})
require.NoError(t, err)
require.Equal(t, "foo", cli.SomeFlag)
require.Equal(t, "yes", cli.TestInterface.(*TestImpl).Flag)
}