Source file test/fixedbugs/issue8047b.go

     1  // run
     2  
     3  // Copyright 2014 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  // Issue 8047. Defer setup during panic shouldn't crash for nil defer.
     8  
     9  package main
    10  
    11  func main() {
    12  	defer func() {
    13  		// This recover recovers the panic caused by the nil defer func
    14  		// g(). The original panic(1) was already aborted/replaced by this
    15  		// new panic, so when this recover is done, the program completes
    16  		// normally.
    17  		recover()
    18  	}()
    19  	f()
    20  }
    21  
    22  func f() {
    23  	var g func()
    24  	defer g()
    25  	panic(1)
    26  }
    27  

View as plain text