mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-07-26 06:38:42 +00:00
16eefc59eb
Keep a pending Goexit separate from the active panic state so recovered deferred panics do not cancel the original Goexit unwind. Goexit should also ignore -panic=trap, since it is not a panic. Wire testing.FailNow and SkipNow through runtime.Goexit, and run tests and benchmarks in goroutines. This lets Goexit terminate the user function without skipping test bookkeeping. Add Goexit/recover coverage and enable crypto/ecdh in the Linux stdlib test list.
61 lines
1.2 KiB
Plaintext
61 lines
1.2 KiB
Plaintext
# simple recover
|
|
running panic...
|
|
recovering...
|
|
recovered: panic
|
|
|
|
# recover with result
|
|
running panic...
|
|
recovered: panic
|
|
result: 3
|
|
|
|
# nested defer frame
|
|
deferred nested function
|
|
recovered: panic
|
|
|
|
# nested panic: panic inside recover
|
|
recovered 1: panic
|
|
recovered 2: foo
|
|
|
|
# panic inside defer
|
|
recovered: panic
|
|
|
|
# panic replace
|
|
panic 1
|
|
panic 2
|
|
recovered: panic 2
|
|
|
|
# defer panic
|
|
defer panic
|
|
recovered from deferred call: deferred panic
|
|
|
|
# indirect recover
|
|
indirect recover returned: indirect panic
|
|
|
|
# runtime.Goexit
|
|
Goexit deferred function, recover is nil: true
|
|
Goexit recovered deferred panic: panic during Goexit
|
|
Goexit nested recovered deferred panic: nested panic during Goexit
|
|
Goexit loop recovered deferred panic: loop panic during Goexit
|
|
Goexit loop defer
|
|
Goexit loop defer
|
|
|
|
# repanic
|
|
inner, repanicking
|
|
outer recovered: repanic value
|
|
|
|
# recover runtime errors
|
|
recovered: index
|
|
recovered: index from helper
|
|
recovered: slice
|
|
recovered: type assert
|
|
recovered: empty interface type assert
|
|
|
|
# recover from nil map and closed channel
|
|
recovered: nil map
|
|
recovered: closed chan
|
|
recovered: close nil chan
|
|
|
|
# recover from hardware signals
|
|
recovered: divide by zero
|
|
recovered: nil pointer dereference
|