summaryrefslogtreecommitdiff
path: root/libgo/go/runtime/defer_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/runtime/defer_test.go')
-rw-r--r--libgo/go/runtime/defer_test.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/libgo/go/runtime/defer_test.go b/libgo/go/runtime/defer_test.go
index 5ac08145646..9a40ea19842 100644
--- a/libgo/go/runtime/defer_test.go
+++ b/libgo/go/runtime/defer_test.go
@@ -410,3 +410,31 @@ func rec1(max int) {
rec1(max - 1)
}
}
+
+func TestIssue43921(t *testing.T) {
+ defer func() {
+ expect(t, 1, recover())
+ }()
+ func() {
+ // Prevent open-coded defers
+ for {
+ defer func() {}()
+ break
+ }
+
+ defer func() {
+ defer func() {
+ expect(t, 4, recover())
+ }()
+ panic(4)
+ }()
+ panic(1)
+
+ }()
+}
+
+func expect(t *testing.T, n int, err interface{}) {
+ if n != err {
+ t.Fatalf("have %v, want %v", err, n)
+ }
+}