mirror of
https://github.com/go-delve/delve.git
synced 2025-11-02 12:59:01 +08:00
prettyprint: Print type of the elements of arrays of interface type (#591)
This commit is contained in:
committed by
Derek Parker
parent
6e882c50fa
commit
54d3eab63a
@ -187,6 +187,9 @@ func main() {
|
||||
b2 := B{A: A{42}, a: A{47}}
|
||||
var sd D
|
||||
|
||||
ifacearr := []error{&astruct{}, nil}
|
||||
efacearr := []interface{}{&astruct{}, "test", nil}
|
||||
|
||||
var mapanonstruct1 map[string]struct{}
|
||||
var anonstruct1 struct{ val constant.Value }
|
||||
var anonstruct2 struct{ i, j int }
|
||||
@ -196,7 +199,6 @@ func main() {
|
||||
}
|
||||
var anonfunc func(a struct{ i int }, b interface{}, c struct{ val constant.Value })
|
||||
|
||||
|
||||
for i := range benchparr {
|
||||
benchparr[i] = &benchstruct{}
|
||||
}
|
||||
@ -207,5 +209,5 @@ func main() {
|
||||
fmt.Println(amb1)
|
||||
}
|
||||
runtime.Breakpoint()
|
||||
fmt.Println(i1, i2, i3, p1, amb1, s1, s3, a1, p2, p3, s2, as1, str1, f1, fn1, fn2, nilslice, nilptr, ch1, chnil, m1, mnil, m2, m3, up1, i4, i5, i6, err1, err2, errnil, iface1, iface2, ifacenil, arr1, parr, cpx1, const1, iface3, iface4, recursive1, recursive1.x, iface5, iface2fn1, iface2fn2, bencharr, benchparr, mapinf, mainMenu, b, b2, sd, anonstruct1, anonstruct2, anoniface1, anonfunc, mapanonstruct1)
|
||||
fmt.Println(i1, i2, i3, p1, amb1, s1, s3, a1, p2, p3, s2, as1, str1, f1, fn1, fn2, nilslice, nilptr, ch1, chnil, m1, mnil, m2, m3, up1, i4, i5, i6, err1, err2, errnil, iface1, iface2, ifacenil, arr1, parr, cpx1, const1, iface3, iface4, recursive1, recursive1.x, iface5, iface2fn1, iface2fn2, bencharr, benchparr, mapinf, mainMenu, b, b2, sd, anonstruct1, anonstruct2, anoniface1, anonfunc, mapanonstruct1, ifacearr, efacearr)
|
||||
}
|
||||
|
||||
@ -35,7 +35,11 @@ func (v *Variable) writeTo(buf io.Writer, top, newlines, includeType bool, inden
|
||||
}
|
||||
|
||||
if !top && v.Addr == 0 {
|
||||
fmt.Fprintf(buf, "%s nil", v.Type)
|
||||
if includeType && v.Type != "void" {
|
||||
fmt.Fprintf(buf, "%s nil", v.Type)
|
||||
} else {
|
||||
fmt.Fprintf(buf, "nil")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@ -88,10 +92,10 @@ func (v *Variable) writeTo(buf io.Writer, top, newlines, includeType bool, inden
|
||||
} else if data.Children[0].OnlyAddr {
|
||||
fmt.Fprintf(buf, "0x%x", v.Children[0].Addr)
|
||||
} else {
|
||||
v.Children[0].writeTo(buf, false, newlines, false, indent)
|
||||
v.Children[0].writeTo(buf, false, newlines, !includeType, indent)
|
||||
}
|
||||
} else {
|
||||
v.Children[0].writeTo(buf, false, newlines, false, indent)
|
||||
v.Children[0].writeTo(buf, false, newlines, !includeType, indent)
|
||||
}
|
||||
case reflect.Map:
|
||||
v.writeMapTo(buf, newlines, includeType, indent)
|
||||
|
||||
@ -623,6 +623,9 @@ func TestEvalExpression(t *testing.T) {
|
||||
{"mainMenu", true, `main.Menu len: 3, cap: 3, [{Name: "home", Route: "/", Active: 1},{Name: "About", Route: "/about", Active: 1},{Name: "Login", Route: "/login", Active: 1}]`, `main.Menu len: 3, cap: 3, [...]`, "main.Menu", nil},
|
||||
{"mainMenu[0]", false, `main.Item {Name: "home", Route: "/", Active: 1}`, `main.Item {Name: "home", Route: "/", Active: 1}`, "main.Item", nil},
|
||||
{"sd", false, "main.D {u1: 0, u2: 0, u3: 0, u4: 0, u5: 0, u6: 0}", "main.D {u1: 0, u2: 0, u3: 0,...+3 more}", "main.D", nil},
|
||||
|
||||
{"ifacearr", false, "[]error len: 2, cap: 2, [*main.astruct {A: 0, B: 0},nil]", "[]error len: 2, cap: 2, [...]", "[]error", nil},
|
||||
{"efacearr", false, `[]interface {} len: 3, cap: 3, [*main.astruct {A: 0, B: 0},*"test",nil]`, "[]interface {} len: 3, cap: 3, [...]", "[]interface {}", nil},
|
||||
}
|
||||
|
||||
withTestProcess("testvariables2", t, func(p *proc.Process, fixture protest.Fixture) {
|
||||
|
||||
Reference in New Issue
Block a user