| 1 | macro_rules! test_println { |
| 2 | ($($arg:tt)*) => { |
| 3 | if cfg!(test) && cfg!(slab_print) { |
| 4 | if std::thread::panicking() { |
| 5 | // getting the thread ID while panicking doesn't seem to play super nicely with loom's |
| 6 | // mock lazy_static... |
| 7 | println!("[PANIC {:>17}:{:<3}] {}" , file!(), line!(), format_args!($($arg)*)) |
| 8 | } else { |
| 9 | println!("[{:?} {:>17}:{:<3}] {}" , crate::Tid::<crate::DefaultConfig>::current(), file!(), line!(), format_args!($($arg)*)) |
| 10 | } |
| 11 | } |
| 12 | } |
| 13 | } |
| 14 | |
| 15 | #[cfg (all(test, loom))] |
| 16 | macro_rules! test_dbg { |
| 17 | ($e:expr) => { |
| 18 | match $e { |
| 19 | e => { |
| 20 | test_println!("{} = {:?}" , stringify!($e), &e); |
| 21 | e |
| 22 | } |
| 23 | } |
| 24 | }; |
| 25 | } |
| 26 | |
| 27 | macro_rules! panic_in_drop { |
| 28 | ($($arg:tt)*) => { |
| 29 | if !std::thread::panicking() { |
| 30 | panic!($($arg)*) |
| 31 | } else { |
| 32 | let thread = std::thread::current(); |
| 33 | eprintln!( |
| 34 | "thread '{thread}' attempted to panic at '{msg}', {file}:{line}:{col} \n\ |
| 35 | note: we were already unwinding due to a previous panic." , |
| 36 | thread = thread.name().unwrap_or("<unnamed>" ), |
| 37 | msg = format_args!($($arg)*), |
| 38 | file = file!(), |
| 39 | line = line!(), |
| 40 | col = column!(), |
| 41 | ); |
| 42 | } |
| 43 | } |
| 44 | } |
| 45 | |
| 46 | macro_rules! debug_assert_eq_in_drop { |
| 47 | ($this:expr, $that:expr) => { |
| 48 | debug_assert_eq_in_drop!(@inner $this, $that, "" ) |
| 49 | }; |
| 50 | ($this:expr, $that:expr, $($arg:tt)+) => { |
| 51 | debug_assert_eq_in_drop!(@inner $this, $that, format_args!(": {}" , format_args!($($arg)+))) |
| 52 | }; |
| 53 | (@inner $this:expr, $that:expr, $msg:expr) => { |
| 54 | if cfg!(debug_assertions) { |
| 55 | if $this != $that { |
| 56 | panic_in_drop!( |
| 57 | "assertion failed ({} == {}) \n left: `{:?}`, \n right: `{:?}`{}" , |
| 58 | stringify!($this), |
| 59 | stringify!($that), |
| 60 | $this, |
| 61 | $that, |
| 62 | $msg, |
| 63 | ) |
| 64 | } |
| 65 | } |
| 66 | } |
| 67 | } |
| 68 | |