12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #![allow(unused_macros, unused_macro_rules)]
- #[path = "../debug/mod.rs"]
- pub mod debug;
- use syn::parse::{Parse, Result};
- macro_rules! errorf {
- ($($tt:tt)*) => {{
- use ::std::io::Write;
- let stderr = ::std::io::stderr();
- write!(stderr.lock(), $($tt)*).unwrap();
- }};
- }
- macro_rules! punctuated {
- ($($e:expr,)+) => {{
- let mut seq = ::syn::punctuated::Punctuated::new();
- $(
- seq.push($e);
- )+
- seq
- }};
- ($($e:expr),+) => {
- punctuated!($($e,)+)
- };
- }
- macro_rules! snapshot {
- ($($args:tt)*) => {
- snapshot_impl!(() $($args)*)
- };
- }
- macro_rules! snapshot_impl {
- (($expr:ident) as $t:ty, @$snapshot:literal) => {
- let $expr = crate::macros::Tokens::parse::<$t>($expr).unwrap();
- let debug = crate::macros::debug::Lite(&$expr);
- if !cfg!(miri) {
- insta::assert_debug_snapshot!(debug, @$snapshot);
- }
- };
- (($($expr:tt)*) as $t:ty, @$snapshot:literal) => {{
- let syntax_tree = crate::macros::Tokens::parse::<$t>($($expr)*).unwrap();
- let debug = crate::macros::debug::Lite(&syntax_tree);
- if !cfg!(miri) {
- insta::assert_debug_snapshot!(debug, @$snapshot);
- }
- syntax_tree
- }};
- (($($expr:tt)*) , @$snapshot:literal) => {{
- let syntax_tree = $($expr)*;
- let debug = crate::macros::debug::Lite(&syntax_tree);
- if !cfg!(miri) {
- insta::assert_debug_snapshot!(debug, @$snapshot);
- }
- syntax_tree
- }};
- (($($expr:tt)*) $next:tt $($rest:tt)*) => {
- snapshot_impl!(($($expr)* $next) $($rest)*)
- };
- }
- pub trait Tokens {
- fn parse<T: Parse>(self) -> Result<T>;
- }
- impl<'a> Tokens for &'a str {
- fn parse<T: Parse>(self) -> Result<T> {
- syn::parse_str(self)
- }
- }
- impl Tokens for proc_macro2::TokenStream {
- fn parse<T: Parse>(self) -> Result<T> {
- syn::parse2(self)
- }
- }
|