1// run 2 3// Copyright 2013 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 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(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