mod config;
mod diag;
mod formatter;
mod macros;
mod source;
pub use config::{get_example_files, Config, ExecutionMode};
pub use diag::{emit, emit_and_exit, BoxError, Diagnostic, InternalError, BUG_URL};
pub use formatter::SECTION_BAR;
pub use macros::INTERN_MAX_RETRIES;
pub use source::{FileId, SourceMap, Span};
pub(crate) use diag::{labels, primary_label, secondary_label};
pub(crate) use formatter::SUBSECTION_BAR;
pub(crate) use source::Ignored;
use std::collections::hash_map::DefaultHasher;
use std::hash::{Hash, Hasher};
pub(crate) fn compute_fp<T: Hash>(t: T) -> u64 {
let mut h = DefaultHasher::new();
t.hash(&mut h);
h.finish()
}
pub fn pretty_print(ts: proc_macro2::TokenStream) -> String {
let ast: syn::File = syn::parse2(ts).expect("valid token stream");
prettyplease::unparse(&ast)
}