modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/fixedbugs/issue21879.go (about) 1 // run 2 3 // Copyright 2017 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 package main 8 9 import ( 10 "runtime" 11 ) 12 13 func main() { 14 println(caller().frame.Function) 15 16 // Used to erroneously print "main.call.name" instead of 17 // "main.main". 18 println(caller().name()) 19 } 20 21 func caller() call { 22 var pcs [3]uintptr 23 n := runtime.Callers(1, pcs[:]) 24 frames := runtime.CallersFrames(pcs[:n]) 25 frame, _ := frames.Next() 26 frame, _ = frames.Next() 27 28 return call{frame: frame} 29 } 30 31 type call struct { 32 frame runtime.Frame 33 } 34 35 func (c call) name() string { 36 return c.frame.Function 37 }