Various quality-of-life improvements (ideas from @33577 )

* Very basic `hello_main.c`
* Big starting hint to `write_c`
* Better error messages on failed test
  * TODO: also improve it for asmgen, but not sure how to do it in a good way
This commit is contained in:
Janggun Lee
2025-02-25 00:28:55 +09:00
parent fad9d02fea
commit 72dadc608d
50 changed files with 290 additions and 182 deletions

View File

@@ -522,13 +522,3 @@ impl IsEquiv for AlignOf {
self.0.is_equiv(&other.0)
}
}
pub(crate) fn assert_ast_equiv(lhs: &TranslationUnit, rhs: &TranslationUnit) {
if !lhs.is_equiv(rhs) {
panic!(
r#"assertion failed: `(left.is_equiv(right))`
left: `{lhs:?}`,
right: `{rhs:?}`"#
)
}
}

View File

@@ -2,5 +2,4 @@ mod ast_equiv;
mod parse;
mod write_c;
pub(crate) use ast_equiv::assert_ast_equiv;
pub use parse::Parse;

View File

@@ -18,6 +18,7 @@ impl<T: WriteString> WriteString for Node<T> {
}
impl WriteLine for TranslationUnit {
/// VERY BIG HINT: You should start by understanding the [`writeln!`](https://doc.rust-lang.org/std/macro.writeln.html) macro.
fn write_line(&self, indent: usize, write: &mut dyn Write) -> Result<()> {
todo!()
}