pub mod all;
pub mod cfg;
mod modifier;
pub use modifier::*;
mod priv_vis;
pub use priv_vis::*;
mod arg;
pub use arg::*;
mod kw {
syn::custom_keyword!(default);
syn::custom_keyword!(except);
}
#[cfg(test)]
fn assert_token_eq(a: proc_macro2::TokenStream, b: proc_macro2::TokenStream) {
use proc_macro2::TokenTree;
for (p, q) in a.clone().into_iter().zip(b.clone().into_iter()) {
match (p, q) {
(TokenTree::Punct(p), TokenTree::Punct(q)) => assert_eq!(p.as_char(), q.as_char()),
(TokenTree::Ident(p), TokenTree::Ident(q)) => assert_eq!(p.to_string(), q.to_string()),
(TokenTree::Literal(p), TokenTree::Literal(q)) => {
assert_eq!(p.to_string(), q.to_string())
}
(TokenTree::Group(p), TokenTree::Group(q)) => assert_token_eq(p.stream(), q.stream()),
_ => panic!("assertion failed: {} != {}", a, b),
}
}
}