forked from libre-chip/fayalite
support operations directly on SimValue, UIntValue, and SIntValue, and shared references to those
This commit is contained in:
parent
2a65aa2bd5
commit
9e803223d0
42 changed files with 6076 additions and 1486 deletions
|
|
@ -887,7 +887,13 @@ pub(crate) fn outline_generated(contents: TokenStream, prefix: &str) -> TokenStr
|
|||
}
|
||||
}
|
||||
let _print_on_panic = PrintOnPanic(&contents);
|
||||
let contents = prettyplease::unparse(&parse_quote! { #contents });
|
||||
let mut parse_err = None;
|
||||
let (Ok(contents) | Err(contents)) = syn::parse2(contents.clone())
|
||||
.map(|file| prettyplease::unparse(&file))
|
||||
.map_err(|e| {
|
||||
parse_err = Some(e);
|
||||
contents.to_string()
|
||||
});
|
||||
let hash = <sha2::Sha256 as sha2::Digest>::digest(&contents);
|
||||
let hash = base16ct::HexDisplay(&hash[..5]);
|
||||
file.write_all(contents.as_bytes()).unwrap();
|
||||
|
|
@ -899,9 +905,26 @@ pub(crate) fn outline_generated(contents: TokenStream, prefix: &str) -> TokenStr
|
|||
e.unwrap();
|
||||
}
|
||||
}
|
||||
eprintln!("generated {}", dest_file.display());
|
||||
let log_msg = if let Some(parse_err) = parse_err {
|
||||
format!(
|
||||
"fayalite-proc-macros-impl internal error:\nfailed to parse generated output: {parse_err}\nunformatted output is in: {}\n",
|
||||
dest_file.display()
|
||||
)
|
||||
} else {
|
||||
format!("generated {}\n", dest_file.display())
|
||||
};
|
||||
// write message atomically if possible
|
||||
let mut stderr = std::io::stderr().lock();
|
||||
let write_result = stderr.write_all(log_msg.as_bytes());
|
||||
let flush_result = stderr.flush();
|
||||
drop(stderr); // unlock before we try to panic
|
||||
write_result.unwrap();
|
||||
flush_result.unwrap();
|
||||
std::io::stderr()
|
||||
.lock()
|
||||
.write_all(log_msg.as_bytes())
|
||||
.unwrap();
|
||||
let dest_file = dest_file.to_str().unwrap();
|
||||
|
||||
quote! {
|
||||
include!(#dest_file);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue