diff --git a/reid/src/lib.rs b/reid/src/lib.rs index a573898..97c811a 100644 --- a/reid/src/lib.rs +++ b/reid/src/lib.rs @@ -152,7 +152,7 @@ pub fn perform_all_passes<'map>( } #[cfg(debug_assertions)] - println!("{}", &context); + println!("{:#}", &context); let state = context.pass(&mut LinkerPass { module_map, @@ -162,7 +162,7 @@ pub fn perform_all_passes<'map>( #[cfg(debug_assertions)] println!("{:-^100}", "LINKER OUTPUT"); #[cfg(debug_assertions)] - println!("{}", &context); + println!("{:#}", &context); #[cfg(debug_assertions)] dbg!(&state); @@ -202,7 +202,7 @@ pub fn perform_all_passes<'map>( #[cfg(debug_assertions)] println!("{:-^100}", "TYPECHECKER OUTPUT"); #[cfg(debug_assertions)] - println!("{}", &context); + println!("{:#}", &context); #[cfg(debug_assertions)] dbg!(&state); @@ -243,7 +243,7 @@ pub fn compile_and_pass<'map>( #[cfg(debug_assertions)] println!("{:-^100}", "FINAL OUTPUT"); #[cfg(debug_assertions)] - println!("{}", &mir_context); + println!("{:#}", &mir_context); let mut context = Context::new(format!("Reid ({})", env!("CARGO_PKG_VERSION"))); let codegen_modules = match mir_context.codegen(&mut context) { diff --git a/reid/src/mir/fmt.rs b/reid/src/mir/fmt.rs index a761a51..d247bf4 100644 --- a/reid/src/mir/fmt.rs +++ b/reid/src/mir/fmt.rs @@ -15,6 +15,8 @@ impl Display for Context { impl Display for Module { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let is_alternate = f.alternate(); + writeln!(f, "Module({}) ({}) {{", self.name, self.module_id)?; let mut state = Default::default(); @@ -23,9 +25,27 @@ impl Display for Module { for import in &self.imports { writeln!(inner_f, "{}", import)?; } - for binop in &self.binop_defs { + + let intrinsic_binops = self + .binop_defs + .iter() + .filter(|b| matches!(b.fn_kind, FunctionDefinitionKind::Intrinsic(_))); + + for binop in self + .binop_defs + .iter() + .filter(|b| !matches!(b.fn_kind, FunctionDefinitionKind::Intrinsic(_))) + { writeln!(inner_f, "{}", binop)?; } + + if is_alternate { + writeln!(inner_f, "... <{}> intrinsic binary operators", intrinsic_binops.count())?; + } else { + for binop in intrinsic_binops { + writeln!(inner_f, "{}", binop)?; + } + } for typedef in &self.typedefs { writeln!(inner_f, "{}", typedef)?; }