| #![feature(prelude_import)] |
| #![no_std] |
| //@ check-pass |
| //@ force-host |
| //@ no-prefer-dynamic |
| //@ compile-flags: -Z unpretty=expanded |
| //@ needs-unwind compiling proc macros with panic=abort causes a warning |
| //@ edition: 2015 |
| |
| #![crate_type = "proc-macro"] |
| extern crate std; |
| #[prelude_import] |
| use ::std::prelude::rust_2015::*; |
| |
| extern crate proc_macro; |
| |
| use proc_macro::TokenStream; |
| |
| #[proc_macro] |
| pub fn a(x: TokenStream) -> TokenStream { x } |
| |
| #[proc_macro_derive(B, attributes(attr_a, attr_b))] |
| pub fn b(x: TokenStream) -> TokenStream { x } |
| |
| #[proc_macro_attribute] |
| pub fn c(x: TokenStream, y: TokenStream) -> TokenStream { y } |
| const _: () = |
| { |
| extern crate proc_macro; |
| #[rustc_proc_macro_decls] |
| #[used] |
| #[allow(deprecated)] |
| static _DECLS: &[proc_macro::bridge::client::Client] = |
| &[proc_macro::bridge::client::Client::expand1(a), |
| proc_macro::bridge::client::Client::expand1(b), |
| proc_macro::bridge::client::Client::expand2(c)]; |
| }; |