mquote_impl/
lib.rs

1extern crate proc_macro;
2extern crate proc_macro2;
3extern crate quote;
4extern crate proc_macro_hack;
5
6use proc_macro::TokenStream;
7use proc_macro_hack::proc_macro_hack;
8
9use parse::{parse_spanned, parse_unspanned};
10use compile::compile;
11
12mod buffer;
13mod error;
14mod parse;
15mod language;
16mod compile;
17
18#[proc_macro_hack]
19pub fn mquote(input: TokenStream) -> TokenStream {
20    match parse_unspanned(input.into()) {
21        Ok(qtokens) => compile(qtokens, None).into(),
22        Err(error) => error.raise().into(),
23    }
24}
25
26#[proc_macro_hack]
27pub fn mquote_spanned(input: TokenStream) -> TokenStream {
28    match parse_spanned(input.into()) {
29        Ok((requested_span, qtokens)) => compile(qtokens, Some(requested_span)).into(),
30        Err(error) => error.raise().into(),
31    }
32}