提交 e60942a3 编写于 作者: W Wesley Merkel 提交者: Derek Parker

terminal: show message if there are no vars/locals/args

When the vars, locals, or args commands return no results, nothing is

printed out to the terminal. This commit makes these commands print a

message like `(no locals)` when there is nothing to show. This feedback

is more descriptive of what is being returned than an empty string.
上级 ae7abe1a
......@@ -682,7 +682,7 @@ func args(t *Term, ctx callContext, filter string) ([]string, error) {
if err != nil {
return nil, err
}
return filterVariables(vars, filter), nil
return describeNoVars("args", filterVariables(vars, filter)), nil
}
func locals(t *Term, ctx callContext, filter string) ([]string, error) {
......@@ -690,7 +690,7 @@ func locals(t *Term, ctx callContext, filter string) ([]string, error) {
if err != nil {
return nil, err
}
return filterVariables(locals, filter), nil
return describeNoVars("locals", filterVariables(locals, filter)), nil
}
func vars(t *Term, ctx callContext, filter string) ([]string, error) {
......@@ -698,7 +698,7 @@ func vars(t *Term, ctx callContext, filter string) ([]string, error) {
if err != nil {
return nil, err
}
return filterVariables(vars, filter), nil
return describeNoVars("vars", filterVariables(vars, filter)), nil
}
func regs(t *Term, ctx callContext, args string) error {
......@@ -1153,3 +1153,10 @@ func formatBreakpointLocation(bp *api.Breakpoint) string {
}
return fmt.Sprintf("%#v for %s:%d", bp.Addr, p, bp.Line)
}
func describeNoVars(varType string, data []string) []string {
if len(data) == 0 {
return []string{fmt.Sprintf("(no %s)", varType)}
}
return data
}
......@@ -269,7 +269,7 @@ func TestScopePrefix(t *testing.T) {
if fid < 0 {
t.Fatalf("Could not find frame for goroutine %d: %v", gid, stackOut)
}
term.AssertExec(fmt.Sprintf("goroutine %d frame %d locals", gid, fid), "")
term.AssertExec(fmt.Sprintf("goroutine %d frame %d locals", gid, fid), "(no locals)\n")
argsOut := strings.Split(term.MustExec(fmt.Sprintf("goroutine %d frame %d args", gid, fid)), "\n")
if len(argsOut) != 4 || argsOut[3] != "" {
t.Fatalf("Wrong number of arguments in goroutine %d frame %d: %v", gid, fid, argsOut)
......@@ -347,3 +347,13 @@ func TestOnPrefix(t *testing.T) {
}
})
}
func TestNoVars(t *testing.T) {
withTestTerminal("locationsUpperCase", t, func(term *FakeTerminal) {
term.MustExec("b main.main")
term.MustExec("continue")
term.AssertExec("args", "(no args)\n")
term.AssertExec("locals", "(no locals)\n")
term.AssertExec("vars filterThatMatchesNothing", "(no vars)\n")
})
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册