Browse Source

解决调试发现的问题

pull/1/head
Sydonian 2 years ago
parent
commit
50ed50e6e8
1 changed files with 31 additions and 0 deletions
  1. +31
    -0
      pkg/cmdtrie/command_trie.go

+ 31
- 0
pkg/cmdtrie/command_trie.go View File

@@ -318,6 +318,13 @@ func (t *CommandTrie[TCtx, TRet]) Add(fn any, prefixWords ...string) error {
return t.anyTrie.Add(fn, prefixWords...)
}

func (t *CommandTrie[TCtx, TRet]) MustAdd(fn any, prefixWords ...string) {
err := t.anyTrie.Add(fn, prefixWords...)
if err != nil {
panic(err.Error())
}
}

func (t *CommandTrie[TCtx, TRet]) Execute(ctx TCtx, cmdWords ...string) (TRet, error) {
retValues, err := t.anyTrie.Execute(ctx, cmdWords...)
if err != nil {
@@ -325,6 +332,11 @@ func (t *CommandTrie[TCtx, TRet]) Execute(ctx TCtx, cmdWords ...string) (TRet, e
return defRet, err
}

if retValues[0].Kind() == reflect.Interface && retValues[0].IsNil() {
var ret TRet
return ret, nil
}

return retValues[0].Interface().(TRet), nil
}

@@ -342,6 +354,13 @@ func (t *VoidCommandTrie[TCtx]) Add(fn any, prefixWords ...string) error {
return t.anyTrie.Add(fn, prefixWords...)
}

func (t *VoidCommandTrie[TCtx]) MustAdd(fn any, prefixWords ...string) {
err := t.anyTrie.Add(fn, prefixWords...)
if err != nil {
panic(err.Error())
}
}

func (t *VoidCommandTrie[TCtx]) Execute(ctx TCtx, cmdWords ...string) error {
_, err := t.anyTrie.Execute(ctx, cmdWords...)
return err
@@ -361,6 +380,13 @@ func (t *StaticCommandTrie[TRet]) Add(fn any, prefixWords ...string) error {
return t.anyTrie.Add(fn, prefixWords...)
}

func (t *StaticCommandTrie[TRet]) MustAdd(fn any, prefixWords ...string) {
err := t.anyTrie.Add(fn, prefixWords...)
if err != nil {
panic(err.Error())
}
}

func (t *StaticCommandTrie[TRet]) Execute(cmdWords ...string) (TRet, error) {
retValues, err := t.anyTrie.Execute(nil, cmdWords...)
if err != nil {
@@ -368,5 +394,10 @@ func (t *StaticCommandTrie[TRet]) Execute(cmdWords ...string) (TRet, error) {
return defRet, err
}

if retValues[0].Kind() == reflect.Interface && retValues[0].IsNil() {
var ret TRet
return ret, nil
}

return retValues[0].Interface().(TRet), nil
}

Loading…
Cancel
Save