/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue73917.go
40 строк
633 B
Keith Randall
runtime: iterate through inlinings when processing recover()
25 июл 2025, 21:26
25 июл 2025, 21:26
08376e1
Код
Авторство
О чём код?
// run // Copyright 2025 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 func callRecover() { if recover() != nil { println("recovered") } } type T int func (*T) M() { callRecover() } type S struct{ *T } // has a wrapper S.M wrapping (*T.M) var p = S{new(T)} var fn = S.M // using a function pointer to force using the wrapper func main() { mustPanic(func() { defer fn(p) panic("XXX") }) } func mustPanic(f func()) { defer func() { r := recover() if r == nil { panic("didn't panic") } }() f() }