| // run | 
 |  | 
 | // Copyright 2013 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | package main | 
 |  | 
 | import ( | 
 | 	"fmt" | 
 | 	"os" | 
 | 	"runtime" | 
 | 	"strings" | 
 | ) | 
 |  | 
 | func main() { | 
 | 	f() | 
 | 	panic("deferred function not run") | 
 | } | 
 |  | 
 | var x = 1 | 
 |  | 
 | func f() { | 
 | 	if x == 0 { | 
 | 		return | 
 | 	} | 
 | 	defer g() | 
 | 	panic("panic") | 
 | } | 
 |  | 
 | func g() { | 
 | 	_, file, line, _ := runtime.Caller(2) | 
 | 	if !strings.HasSuffix(file, "issue5856.go") || line != 28 { | 
 | 		fmt.Printf("BUG: defer called from %s:%d, want issue5856.go:28\n", file, line) | 
 | 		os.Exit(1) | 
 | 	} | 
 | 	os.Exit(0) | 
 | } |