CL 356011 fixed this issue too.
Fixes #43942
Change-Id: I35ad397e78eeb80eff3a4217c4d40f15d40bdebb
Reviewed-on: https://go-review.googlesource.com/c/go/+/423814
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
--- /dev/null
+// run
+
+// Copyright 2022 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "log"
+
+func main() {
+ defer func() {
+ expect(5, recover())
+ }()
+ func() {
+ expect(nil, recover())
+ defer func() {
+ defer func() {
+ defer func() {
+ defer func() {
+ expect(3, recover())
+ }()
+ defer panic(3)
+ panic(2)
+ }()
+ defer func() {
+ expect(1, recover())
+ }()
+ panic(1)
+ }()
+ }()
+ }()
+ func() {
+ for {
+ defer func() {
+ defer panic(5)
+ }()
+ break
+ }
+ panic(4)
+ }()
+}
+
+func expect(want, have interface{}) {
+ if want != have {
+ log.Fatalf("want %v, have %v", want, have)
+ }
+}