mirror of
https://github.com/golang/go
synced 2024-11-19 21:04:43 -07:00
runtime: allow pointers to strings to be printed
Being able to printer pointers to strings means one will able to output the result of things like the flag library and other components that use string pointers. While here, adjusted the tests for gdb to test original string pretty printing as well as pointers to them. It was doing it via the map before but for completeness this ensures it's tested as a unit. Change-Id: I4926547ae4fa6c85ef74301e7d96d49ba4a7b0c6 Reviewed-on: https://go-review.googlesource.com/8217 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
6ca91d264f
commit
c45751e8a5
@ -60,7 +60,7 @@ class SliceValue:
|
||||
class StringTypePrinter:
|
||||
"Pretty print Go strings."
|
||||
|
||||
pattern = re.compile(r'^struct string$')
|
||||
pattern = re.compile(r'^struct string( \*)?$')
|
||||
|
||||
def __init__(self, val):
|
||||
self.val = val
|
||||
|
@ -31,7 +31,10 @@ func main() {
|
||||
mapvar := make(map[string]string,5)
|
||||
mapvar["abc"] = "def"
|
||||
mapvar["ghi"] = "jkl"
|
||||
fmt.Println("hi") // line 8
|
||||
strvar := "abc"
|
||||
ptrvar := &strvar
|
||||
fmt.Println("hi") // line 10
|
||||
_ = ptrvar
|
||||
}
|
||||
`
|
||||
|
||||
@ -63,7 +66,7 @@ func TestGdbPython(t *testing.T) {
|
||||
|
||||
got, _ := exec.Command("gdb", "-nx", "-q", "--batch", "-iex",
|
||||
fmt.Sprintf("add-auto-load-safe-path %s/src/runtime", runtime.GOROOT()),
|
||||
"-ex", "br main.go:8",
|
||||
"-ex", "br main.go:10",
|
||||
"-ex", "run",
|
||||
"-ex", "echo BEGIN info goroutines\n",
|
||||
"-ex", "info goroutines",
|
||||
@ -71,6 +74,12 @@ func TestGdbPython(t *testing.T) {
|
||||
"-ex", "echo BEGIN print mapvar\n",
|
||||
"-ex", "print mapvar",
|
||||
"-ex", "echo END\n",
|
||||
"-ex", "echo BEGIN print strvar\n",
|
||||
"-ex", "print strvar",
|
||||
"-ex", "echo END\n",
|
||||
"-ex", "echo BEGIN print ptrvar\n",
|
||||
"-ex", "print ptrvar",
|
||||
"-ex", "echo END\n",
|
||||
filepath.Join(dir, "a.exe")).CombinedOutput()
|
||||
|
||||
firstLine := bytes.SplitN(got, []byte("\n"), 2)[0]
|
||||
@ -94,4 +103,13 @@ func TestGdbPython(t *testing.T) {
|
||||
if bl := blocks["print mapvar"]; !printMapvarRe.MatchString(bl) {
|
||||
t.Fatalf("print mapvar failed: %s", bl)
|
||||
}
|
||||
|
||||
strVarRe := regexp.MustCompile(`\Q = "abc"\E$`)
|
||||
if bl := blocks["print strvar"]; !strVarRe.MatchString(bl) {
|
||||
t.Fatalf("print strvar failed: %s", bl)
|
||||
}
|
||||
|
||||
if bl := blocks["print ptrvar"]; !strVarRe.MatchString(bl) {
|
||||
t.Fatalf("print ptrvar failed: %s", bl)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user