]> Cypherpunks.ru repositories - gostls13.git/blob - test/defernil.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / defernil.go
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
12 package main
13
14 var x = 0
15
16 func 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
29 func f() {
30         var nilf func()
31         defer nilf()
32         x = 1
33 }