1// run 2 3// Copyright 2021 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 7package main 8 9func main() { 10 defer func() { 11 println(recover().(int)) 12 }() 13 func() { 14 func() (_ [2]int) { type _ int; return }() 15 func() { 16 defer func() { 17 defer func() { 18 recover() 19 }() 20 defer panic(3) 21 panic(2) 22 }() 23 defer func() { 24 recover() 25 }() 26 panic(1) 27 }() 28 defer func() {}() 29 }() 30 31 var x = 123 32 func() { 33 // in the original issue, this defer was not executed (which is incorrect) 34 defer print(x) 35 func() { 36 defer func() {}() 37 panic(4) 38 }() 39 }() 40} 41