1// run
2
3// Copyright 2019 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// Check that deferring a nil function causes a proper
8// panic when the deferred function is invoked (not
9// when the function is deferred).
10// See Issue #8047 and #34926.
11
12package main
13
14var x = 0
15
16func main() {
17	defer func() {
18		err := recover()
19		if err == nil {
20			panic("did not panic")
21		}
22		if x != 1 {
23			panic("FAIL")
24		}
25	}()
26	f()
27}
28
29func f() {
30	var nilf func()
31	defer nilf()
32	x = 1
33}
34