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.  Stack copier shouldn't crash if there
8// is a nil defer.
9
10package main
11
12func stackit(n int) {
13	if n == 0 {
14		return
15	}
16	stackit(n - 1)
17}
18
19func main() {
20	defer func() {
21		// catch & ignore panic from nil defer below
22		err := recover()
23		if err == nil {
24			panic("defer of nil func didn't panic")
25		}
26	}()
27	defer ((func())(nil))()
28	stackit(1000)
29}
30