extern crate proc_macro;
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, Item, LitStr};
#[proc_macro_attribute]
pub fn untested(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn needs(attr: TokenStream, item: TokenStream) -> TokenStream {
let _reason = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn includes_unwrap(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn perf_critical(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn security_sensitive(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn needs_review(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn temporary(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn assumptions(attr: TokenStream, item: TokenStream) -> TokenStream {
let _description = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn revisit_in(attr: TokenStream, item: TokenStream) -> TokenStream {
let _version = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn dependency_sensitive(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn unsafe_usage(attr: TokenStream, item: TokenStream) -> TokenStream {
let _reason = if !attr.is_empty() {
Some(parse_macro_input!(attr as LitStr))
} else {
None
};
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn no_clippy(attr: TokenStream, item: TokenStream) -> TokenStream {
let _description = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn platform_specific(attr: TokenStream, item: TokenStream) -> TokenStream {
let _platforms = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn feature_gated(attr: TokenStream, item: TokenStream) -> TokenStream {
let _feature = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn complexity(attr: TokenStream, item: TokenStream) -> TokenStream {
let _description = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn allocation_heavy(attr: TokenStream, item: TokenStream) -> TokenStream {
let _details = if !attr.is_empty() {
Some(parse_macro_input!(attr as LitStr))
} else {
None
};
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn panic_path(attr: TokenStream, item: TokenStream) -> TokenStream {
let _scenario = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn api_stability(attr: TokenStream, item: TokenStream) -> TokenStream {
let _stability = parse_macro_input!(attr as LitStr);
let item_ast = parse_macro_input!(item as Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn deadlock_risk(attr: TokenStream, item: TokenStream) -> TokenStream {
let _details = if !attr.is_empty() {
Some(parse_macro_input!(attr as LitStr))
} else {
None
};
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}
#[proc_macro_attribute]
pub fn benchmark_candidate(attr: TokenStream, item: TokenStream) -> TokenStream {
let _notes = if !attr.is_empty() {
Some(parse_macro_input!(attr as LitStr))
} else {
None
};
let item_ast = parse_macro_input!(item as syn::Item);
TokenStream::from(quote! { #item_ast })
}