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>
diff --git a/test/inline_callers.go b/test/inline_callers.go
index c387362..fb6ff6c 100644
--- a/test/inline_callers.go
+++ b/test/inline_callers.go
@@ -40,6 +40,21 @@
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 @@
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 @@
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)
+ }
}
}