cl-ast: Overhaul pretty-printing using std::fmt::Write adapters.

Now you don't have to import cl_ast::format::*!!!
This commit is contained in:
2024-04-18 20:47:28 -05:00
parent e4f270da17
commit f315fb5af7
6 changed files with 228 additions and 219 deletions

View File

@@ -1,7 +1,7 @@
//! [Display] implementations for [TypeKind], [Adt], and [Intrinsic]
use super::{Adt, Def, DefKind, Intrinsic, TypeKind, ValueKind};
use cl_ast::format::FmtPretty;
use cl_ast::format::FmtAdapter;
use std::{
fmt::{self, Display, Write},
iter,
@@ -31,13 +31,14 @@ where
impl Display for Def<'_> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let Self { name, vis, meta, kind, source, module } = self;
if !meta.is_empty() {
writeln!(f, "#{meta:?}")?;
}
writeln!(f, "{vis}{name}: ")?;
writeln!(f, "kind: {kind}")?;
if !meta.is_empty() {
writeln!(f, "meta: {meta:?}")?;
}
if let Some(source) = source {
writeln!(f.pretty(), "source: {{\n{source}\n}}")?;
writeln!(f, "source:")?;
writeln!(f.indent(), "\n{source}")?;
}
write!(f, "module: {module}")
}