Hide intrinsic binary operators in alternate mode

This commit is contained in:
Sofia 2025-07-25 22:43:19 +03:00
parent 17e8cf4807
commit 45d381f865
2 changed files with 25 additions and 5 deletions

View File

@ -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) {

View File

@ -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)?;
}