use crate::colored_writer::ColoredWriter;
use crate::dump::Dump;
pub fn ast_dump(input: &str) -> String {
let ast = crate::parse(input).expect("Failed to parse input");
let mut w = ColoredWriter::new(input);
ast.dump(&mut w);
w.finish()
}
pub fn ir_dump(input: &str) -> String {
let ast = crate::parse(input).expect("Failed to parse input");
let ir = crate::ast_to_ir(&ast);
let mut w = ColoredWriter::new(input);
ir.dump(&mut w);
w.finish()
}
pub fn fmt_output(input: &str) -> String {
crate::format(input).expect("nixfmt_rs failed to format input")
}
#[macro_export]
macro_rules! snapshot_with_input {
($produce:path, $input:expr) => {{
let __input: &str = $input;
::insta::with_settings!(
{ description => __input, omit_expression => true },
{ ::insta::assert_snapshot!($produce(__input)); }
);
}};
}
#[macro_export]
macro_rules! test_ast_format {
($input:expr $(,)?) => {
$crate::snapshot_with_input!($crate::tests_common::ast_dump, $input)
};
}
#[macro_export]
macro_rules! test_ir_format {
($input:expr $(,)?) => {
$crate::snapshot_with_input!($crate::tests_common::ir_dump, $input)
};
}
#[macro_export]
macro_rules! test_format {
($input:expr $(,)?) => {
$crate::snapshot_with_input!($crate::tests_common::fmt_output, $input)
};
}