1
2
3
4
5
6
7 package main
8
9 import (
10 "fmt"
11 "os"
12 "runtime"
13 "strings"
14 )
15
16 func main() {
17 f()
18 panic("deferred function not run")
19 }
20
21 var x = 1
22
23 func f() {
24 if x == 0 {
25 return
26 }
27 defer g()
28 panic("panic")
29 }
30
31 func g() {
32 _, file, line, _ := runtime.Caller(2)
33 if !strings.HasSuffix(file, "issue5856.go") || line != 28 {
34 fmt.Printf("BUG: defer called from %s:%d, want issue5856.go:28\n", file, line)
35 os.Exit(1)
36 }
37 os.Exit(0)
38 }
39
View as plain text