diff options
Diffstat (limited to 'libgo/go/runtime/defer_test.go')
-rw-r--r-- | libgo/go/runtime/defer_test.go | 28 |
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) + } +} |