diff --git a/Cargo.lock b/Cargo.lock index 70bebe3..376eb95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -86,9 +86,9 @@ dependencies = [ [[package]] name = "dbg-pls" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e845b944ea4a6b446aec7c221c48fd6e73f2ab38e1af720cac0f47895dcc4580" +checksum = "96fb680d63b394b942cb518404505ab0610e51e5be82af6818b45aae888064d9" dependencies = [ "dbg-pls-derive", "itoa", @@ -104,9 +104,9 @@ dependencies = [ [[package]] name = "dbg-pls-derive" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46318b37603779055a193fbb0454bb762e284f72a4d3c231f4a6ab8d3eede31" +checksum = "18ad0d32e09e083b0bf764cc9c2f1956518afb16b6ae0e1110c909d056f8271f" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index a945a96..912d852 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] bumpalo = { version = "3.8.0", features = ["collections"] } -dbg-pls = { version = "0.2.2", features = ["colors", "derive"], optional = true } +dbg-pls = { version = "0.3.0", features = ["colors", "derive"], optional = true } rustc-hash = { version = "1.1.0", optional = true } diff --git a/src/bytecode.rs b/src/bytecode.rs index 1df3cf5..96cd4b1 100644 --- a/src/bytecode.rs +++ b/src/bytecode.rs @@ -64,7 +64,6 @@ use bumpalo::collections::Vec; use std::fmt::{Debug, Formatter}; /// This struct contains all data for a function. -#[cfg_attr(feature = "_debug", derive(dbg_pls::DebugPls))] pub struct FnBlock<'bc> { /// The bytecode of the function pub code: Vec<'bc, Instr>, @@ -136,3 +135,13 @@ pub enum Instr { /// Shrinks the stack by `usize` elements, should always be emitted before backwards jumps ShrinkStack(usize), } + +#[cfg(feature = "_debug")] +impl dbg_pls::DebugPls for FnBlock<'_> { + fn fmt(&self, f: dbg_pls::Formatter<'_>) { + f.debug_struct("FnBlock") + .field("arity", &self.arity) + .field("code", &self.code.as_slice()) + .finish_non_exhaustive() + } +} diff --git a/src/gc.rs b/src/gc.rs index ebde3c0..e81aadf 100644 --- a/src/gc.rs +++ b/src/gc.rs @@ -4,6 +4,7 @@ use crate::vm::Value; use crate::{HashMap, HashSet}; +use dbg_pls::DebugPls; use std::collections::LinkedList; use std::fmt::{Debug, Formatter}; use std::hash::{Hash, Hasher}; @@ -19,9 +20,9 @@ pub struct Gc { } #[cfg(feature = "_debug")] -impl dbg_pls::DebugPls for Gc { +impl dbg_pls::DebugPls for Gc { fn fmt(&self, f: dbg_pls::Formatter<'_>) { - todo!() + DebugPls::fmt(self.deref(), f) } } @@ -208,7 +209,7 @@ impl Deref for Symbol { impl Debug for Symbol { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - self.as_str().fmt(f) + Debug::fmt(self.as_str(), f) } } diff --git a/src/lib.rs b/src/lib.rs index 52af954..8b29407 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -69,7 +69,7 @@ fn process_ast(program: &str, ast: &Program, mut runtime: RtAlloc, cfg: &mut Con match bytecode { Ok(code) => { if cfg.debug { - println!("Bytecode:\n{:#?}\n", code); + util::dbg("Bytecode:\n", code); } let result = vm::execute(code, runtime, cfg);