Implement code review feedback

This commit is contained in:
Joe Schmitt
2021-02-24 14:13:11 -05:00
committed by Alec Thomas
parent 454f2c067e
commit ed24960916
3 changed files with 17 additions and 2 deletions
+1 -1
View File
@@ -649,7 +649,7 @@ func (c *Context) parseFlag(flags []*Flag, match string) (err error) {
if flag.Short != 0 {
candidates = append(candidates, short)
}
if short != match && long != match && neg != match {
if short != match && long != match && !(match == neg && flag.Tag.Negatable) {
continue
}
// Found a matching flag.
+15
View File
@@ -382,6 +382,21 @@ func TestInvertedNegatedBooleanFlag(t *testing.T) {
require.Equal(t, true, cli.Cmd.Flag)
}
func TestExistingNoFlag(t *testing.T) {
var cli struct {
Cmd struct {
Flag bool `kong:"default='true'"`
NoFlag string
} `kong:"cmd"`
}
p := mustNew(t, &cli)
_, err := p.Parse([]string{"cmd", "--no-flag=none"})
require.NoError(t, err)
require.Equal(t, true, cli.Cmd.Flag)
require.Equal(t, "none", cli.Cmd.NoFlag)
}
func TestInvalidNegatedNonBool(t *testing.T) {
var cli struct {
Cmd struct {
+1 -1
View File
@@ -160,7 +160,7 @@ func parseTag(fv reflect.Value, ft reflect.StructField) *Tag {
t.Prefix = t.Get("prefix")
t.Embed = t.Has("embed")
negatable := t.Has("negatable")
if negatable && ft.Type.Name() != "bool" {
if negatable && ft.Type.Kind() != reflect.Bool {
fail("negatable can only be set on booleans")
}
t.Negatable = negatable