David Tolnay | c0d4ee5 | 2019-02-09 01:03:49 +0100 | [diff] [blame] | 1 | extern crate proc_macro; |
| 2 | |
| 3 | use proc_macro::TokenStream; |
David Tolnay | 5b351e5 | 2019-06-08 06:09:37 -0700 | [diff] [blame] | 4 | use quote::quote; |
| 5 | use syn::File; |
David Tolnay | c0d4ee5 | 2019-02-09 01:03:49 +0100 | [diff] [blame] | 6 | |
| 7 | #[proc_macro] |
| 8 | pub fn r#mod(input: TokenStream) -> TokenStream { |
David Tolnay | 5b351e5 | 2019-06-08 06:09:37 -0700 | [diff] [blame] | 9 | let compile_error = syn::parse::<File>(input) |
| 10 | .map(|file| println!("{:#?}", file)) |
| 11 | .map_err(|err| err.to_compile_error()) |
| 12 | .err(); |
| 13 | |
| 14 | TokenStream::from(quote! { |
| 15 | #compile_error |
| 16 | fn main() {} |
| 17 | }) |
David Tolnay | c0d4ee5 | 2019-02-09 01:03:49 +0100 | [diff] [blame] | 18 | } |