| #![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 | |
| // | |
| // This file is not actually used as a proc-macro - instead, | |
| // it's just used to show the output of the `quote!` macro | |
| #![feature(proc_macro_quote)] | |
| #![crate_type = "proc-macro"] | |
| extern crate std; | |
| #[prelude_import] | |
| use ::std::prelude::rust_2015::*; | |
| extern crate proc_macro; | |
| fn main() { | |
| { | |
| let mut ts = crate::TokenStream::new(); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Ident(crate::Ident::new("let", | |
| crate::Span::recover_proc_macro_span(0))), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Ident(crate::Ident::new("hello", | |
| crate::Span::recover_proc_macro_span(1))), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Punct(crate::Punct::new('=', | |
| crate::Spacing::Alone)), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Literal({ | |
| let mut iter = | |
| "\"world\"".parse::<crate::TokenStream>().unwrap().into_iter(); | |
| if let (Some(crate::TokenTree::Literal(mut lit)), None) = | |
| (iter.next(), iter.next()) { | |
| lit.set_span(crate::Span::recover_proc_macro_span(2)); | |
| lit | |
| } else { | |
| ::core::panicking::panic("internal error: entered unreachable code") | |
| } | |
| }), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Punct(crate::Punct::new(';', | |
| crate::Spacing::Alone)), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Ident(crate::Ident::new("let", | |
| crate::Span::recover_proc_macro_span(3))), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Ident(crate::Ident::new_raw("raw_ident", | |
| crate::Span::recover_proc_macro_span(4))), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Punct(crate::Punct::new('=', | |
| crate::Spacing::Alone)), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Literal({ | |
| let mut iter = | |
| "r#\"raw\"literal\"#".parse::<crate::TokenStream>().unwrap().into_iter(); | |
| if let (Some(crate::TokenTree::Literal(mut lit)), None) = | |
| (iter.next(), iter.next()) { | |
| lit.set_span(crate::Span::recover_proc_macro_span(5)); | |
| lit | |
| } else { | |
| ::core::panicking::panic("internal error: entered unreachable code") | |
| } | |
| }), &mut ts); | |
| crate::ToTokens::to_tokens(&crate::TokenTree::Punct(crate::Punct::new(';', | |
| crate::Spacing::Alone)), &mut ts); | |
| ts | |
| } | |
| } | |
| const _: () = | |
| { | |
| extern crate proc_macro; | |
| #[rustc_proc_macro_decls] | |
| #[used] | |
| #[allow(deprecated)] | |
| static _DECLS: &[proc_macro::bridge::client::Client] = &[]; | |
| }; |