rust/src/test/ui/panic-while-printing.rs
Alex Crichton d5b6a20557 std: Don't abort process when printing panics in tests
This commit fixes an issue when using `set_print` and friends, notably
used by libtest, to avoid aborting the process if printing panics. This
previously panicked due to borrowing a mutable `RefCell` twice, and this
is worked around by borrowing these cells for less time, instead
taking out and removing contents temporarily.

Closes #69558
2020-03-18 07:06:13 -07:00

25 lines
427 B
Rust

// run-pass
// ignore-emscripten no subprocess support
#![feature(set_stdio)]
use std::fmt;
use std::fmt::{Display, Formatter};
use std::io::set_panic;
pub struct A;
impl Display for A {
fn fmt(&self, _f: &mut Formatter<'_>) -> fmt::Result {
panic!();
}
}
fn main() {
set_panic(Some(Box::new(Vec::new())));
assert!(std::panic::catch_unwind(|| {
eprintln!("{}", A);
})
.is_err());
}