Add PRETTY_PRINT_DEBUG_SYMBOLS

This commit is contained in:
Richard Feldman 2020-03-12 00:39:53 -04:00
parent 173ba925ff
commit 9b68fbe3c9

View file

@ -9,6 +9,14 @@ use std::{fmt, u32};
#[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct Symbol(u64); pub struct Symbol(u64);
// When this is `true` (which it normally should be), Symbol's Debug::fmt implementation
// attempts to pretty print debug symbols using interns recorded using
// register_debug_idents calls (which should be made in debug mode).
// Set it to false if you want to see the raw ModuleId and IdentId ints,
// but please set it back to true before checking in the result!
#[cfg(debug_assertions)]
const PRETTY_PRINT_DEBUG_SYMBOLS: bool = true;
/// In Debug builds only, Symbol has a name() method that lets /// In Debug builds only, Symbol has a name() method that lets
/// you look up its name in a global intern table. This table is /// you look up its name in a global intern table. This table is
/// behind a mutex, so it is neither populated nor available in release builds. /// behind a mutex, so it is neither populated nor available in release builds.
@ -101,6 +109,7 @@ impl Symbol {
impl fmt::Debug for Symbol { impl fmt::Debug for Symbol {
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
if PRETTY_PRINT_DEBUG_SYMBOLS {
let module_id = self.module_id(); let module_id = self.module_id();
let ident_id = self.ident_id(); let ident_id = self.ident_id();
@ -122,6 +131,9 @@ impl fmt::Debug for Symbol {
fallback_debug_fmt(*self, f) fallback_debug_fmt(*self, f)
} }
} }
} else {
fallback_debug_fmt(*self, f)
}
} }
#[cfg(not(debug_assertions))] #[cfg(not(debug_assertions))]