blob: 5e16c78b4d9b3cfe9a7cba2e64d0294704b55b2c [file] [log] [blame]
Colin Cross7bb052a2015-02-03 12:59:37 -08001// run
2
Dan Willemsen0c157092016-07-08 13:57:52 -07003// Copyright 2013 The Go Authors. All rights reserved.
Colin Cross7bb052a2015-02-03 12:59:37 -08004// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7package main
8
9import (
10 "fmt"
11 "os"
12 "runtime"
13 "strings"
14)
15
16func main() {
17 f()
18 panic("deferred function not run")
19}
20
21var x = 1
22
23func f() {
24 if x == 0 {
25 return
26 }
27 defer g()
28 panic("panic")
29}
30
31func g() {
32 _, file, line, _ := runtime.Caller(3)
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}