aboutsummaryrefslogtreecommitdiff
path: root/test/inline_callers.go
diff options
context:
space:
mode:
authorDavid Lazar <lazard@golang.org>2017-03-07 21:14:12 -0500
committerDavid Lazar <lazard@golang.org>2017-03-29 17:27:38 +0000
commit7bf0adc6add500054ccbc37a868ab0fab120fa24 (patch)
tree615a00e48b1788400291466d210548a564ef9cc1 /test/inline_callers.go
parentee97216a1787a979911d43c0c5c582b5492a2205 (diff)
downloadgo-7bf0adc6add500054ccbc37a868ab0fab120fa24.tar.gz
go-7bf0adc6add500054ccbc37a868ab0fab120fa24.zip
runtime: include inlined calls in result of CallersFrames
Change-Id: If1a3396175f2afa607d56efd1444181334a9ae3e Reviewed-on: https://go-review.googlesource.com/37862 Reviewed-by: Austin Clements <austin@google.com>
Diffstat (limited to 'test/inline_callers.go')
-rw-r--r--test/inline_callers.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/inline_callers.go b/test/inline_callers.go
index c387362fa8..fb6ff6c769 100644
--- a/test/inline_callers.go
+++ b/test/inline_callers.go
@@ -40,6 +40,21 @@ func testCallers(skp int) (frames []string) {
return
}
+func testCallersFrames(skp int) (frames []string) {
+ skip = skp
+ f()
+ callers := pcs[:npcs]
+ ci := runtime.CallersFrames(callers)
+ for {
+ frame, more := ci.Next()
+ frames = append(frames, frame.Function)
+ if !more || frame.Function == "main.main" {
+ break
+ }
+ }
+ return
+}
+
var expectedFrames [][]string = [][]string{
0: {"runtime.Callers", "main.testCallers", "main.main"},
1: {"main.testCallers", "main.main"},
@@ -49,6 +64,8 @@ var expectedFrames [][]string = [][]string{
5: {"main.main"},
}
+var allFrames = []string{"runtime.Callers", "main.h", "main.g", "main.f", "main.testCallersFrames", "main.main"}
+
func same(xs, ys []string) bool {
if len(xs) != len(ys) {
return false
@@ -68,5 +85,11 @@ func main() {
if !same(frames, expected) {
log.Fatalf("testCallers(%d):\n got %v\n want %v", i, frames, expected)
}
+
+ frames = testCallersFrames(i)
+ expected = allFrames[i:]
+ if !same(frames, expected) {
+ log.Fatalf("testCallersFrames(%d):\n got %v\n want %v", i, frames, expected)
+ }
}
}