#![cfg_attr(all(feature = "clippy-insane", debug_assertions), warn(
absolute_paths_not_starting_with_crate, box_pointers, deprecated_in_future,
elided_lifetimes_in_paths, explicit_outlives_requirements, keyword_idents,
macro_use_extern_crate, meta_variable_misuse, missing_abi, missing_copy_implementations,
missing_debug_implementations, missing_docs, non_ascii_idents, noop_method_call,
pointer_structural_match, rust_2021_incompatible_closure_captures,
rust_2021_incompatible_or_patterns, rust_2021_prefixes_incompatible_syntax,
rust_2021_prelude_collisions, single_use_lifetimes, trivial_casts, trivial_numeric_casts,
unreachable_pub, unsafe_code, unsafe_op_in_unsafe_fn, unstable_features,
unused_crate_dependencies, unused_extern_crates, unused_import_braces, unused_lifetimes,
unused_qualifications, unused_results, variant_size_differences,
clippy::all, clippy::cargo, clippy::nursery, clippy::pedantic, clippy::restriction,
))]
#![allow(
clippy::blanket_clippy_restriction_lints,
box_pointers, clippy::arithmetic_side_effects, clippy::implicit_return, clippy::min_ident_chars, clippy::missing_const_for_fn, clippy::missing_docs_in_private_items, clippy::missing_trait_methods, clippy::needless_borrowed_reference, clippy::pub_with_shorthand, clippy::question_mark_used, clippy::redundant_pub_crate, clippy::ref_patterns, clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated, clippy::single_call_fn, clippy::single_char_lifetime_names, clippy::std_instead_of_alloc, clippy::std_instead_of_core, clippy::str_to_string, clippy::uninlined_format_args, clippy::wildcard_enum_match_arm, clippy::wildcard_imports, elided_lifetimes_in_paths, )]
#![forbid(unsafe_code)]
macro_rules! diagnostic_error {
($SPAN:expr, $($REST:tt)+) => {
diagnostic!($SPAN, ::proc_macro_error::Level::Error, $($REST)+)
}
}
pub(crate) mod prelude {
pub(crate) use proc_macro_error::{
abort, diagnostic, emit_error, emit_warning, Diagnostic, OptionExt as _, ResultExt as _,
};
pub(crate) type Result<T, E = Diagnostic> = core::result::Result<T, E>;
}
mod function_args;
mod self_replacer;
mod traits;
mod with_tokens;
mod zoet;
#[proc_macro_error::proc_macro_error]
#[proc_macro_attribute]
pub fn zoet(
attr: proc_macro::TokenStream, item: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
crate::zoet::zoet(&attr.into(), &item.into()).into()
}