#![recursion_limit = "19"]
extern crate proc_macro;
#[no_link]
extern crate proc_macro_api;
use proc_macro_api::proc_macro_api;
mod mod_a {
use proc_macro::TokenStream;
pub fn an_fn_api(_input: TokenStream) -> TokenStream {
TokenStream::new()
}
pub mod mod_b {
use proc_macro::TokenStream;
pub fn an_attr_api(_args: TokenStream, _item: TokenStream) -> TokenStream {
TokenStream::new()
}
pub fn a_derive_api(_item: TokenStream) -> TokenStream {
TokenStream::new()
}
}
}
proc_macro_api! {
mod_a::{
#[fn] an_fn_api,
#[allow(unused)] #[proc_macro_attribute] mod_b::{
an_attr_api as the_attr_api,
#[dr(Something)] a_derive_api,
nonexistent_api as _,
},
},
::nonexistent_mod::nonexistent_api as _,
}
proc_macro_api! {
sub::{
#[proc_macro]
proc_fn,
},
}
mod sub {
use proc_macro::TokenStream;
pub fn proc_fn(_input: TokenStream) -> TokenStream {
TokenStream::new()
}
}
proc_macro_api! {
group_a::{
subgroup_of_a::{
path_of_fn as _,
},
},
}
proc_macro_api!(a as _, a as _);