Allow splicing more things in quotes
This commit is contained in:
parent
4e26e2d8ca
commit
26b2fa052f
1 changed files with 16 additions and 0 deletions
|
@ -32,6 +32,7 @@ use std::gc::Gc;
|
||||||
|
|
||||||
pub mod rt {
|
pub mod rt {
|
||||||
use ast;
|
use ast;
|
||||||
|
use codemap::Spanned;
|
||||||
use ext::base::ExtCtxt;
|
use ext::base::ExtCtxt;
|
||||||
use parse::token;
|
use parse::token;
|
||||||
use parse;
|
use parse;
|
||||||
|
@ -48,12 +49,25 @@ pub mod rt {
|
||||||
fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree> ;
|
fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree> ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ToTokens for TokenTree {
|
||||||
|
fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree> {
|
||||||
|
vec!(self.clone())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ToTokens for Vec<TokenTree> {
|
impl ToTokens for Vec<TokenTree> {
|
||||||
fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree> {
|
fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree> {
|
||||||
(*self).clone()
|
(*self).clone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<T: ToTokens> ToTokens for Spanned<T> {
|
||||||
|
fn to_tokens(&self, cx: &ExtCtxt) -> Vec<TokenTree> {
|
||||||
|
// FIXME: use the span?
|
||||||
|
self.node.to_tokens(cx)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Should be (when bugs in default methods are fixed):
|
/* Should be (when bugs in default methods are fixed):
|
||||||
|
|
||||||
trait ToSource : ToTokens {
|
trait ToSource : ToTokens {
|
||||||
|
@ -121,6 +135,7 @@ pub mod rt {
|
||||||
impl_to_source!(Generics, generics_to_str)
|
impl_to_source!(Generics, generics_to_str)
|
||||||
impl_to_source!(Gc<ast::Item>, item_to_str)
|
impl_to_source!(Gc<ast::Item>, item_to_str)
|
||||||
impl_to_source!(Gc<ast::Expr>, expr_to_str)
|
impl_to_source!(Gc<ast::Expr>, expr_to_str)
|
||||||
|
impl_to_source!(Gc<ast::Pat>, pat_to_str)
|
||||||
impl_to_source_slice!(ast::Ty, ", ")
|
impl_to_source_slice!(ast::Ty, ", ")
|
||||||
impl_to_source_slice!(Gc<ast::Item>, "\n\n")
|
impl_to_source_slice!(Gc<ast::Item>, "\n\n")
|
||||||
|
|
||||||
|
@ -207,6 +222,7 @@ pub mod rt {
|
||||||
|
|
||||||
impl_to_tokens!(ast::Ident)
|
impl_to_tokens!(ast::Ident)
|
||||||
impl_to_tokens!(Gc<ast::Item>)
|
impl_to_tokens!(Gc<ast::Item>)
|
||||||
|
impl_to_tokens!(Gc<ast::Pat>)
|
||||||
impl_to_tokens_lifetime!(&'a [Gc<ast::Item>])
|
impl_to_tokens_lifetime!(&'a [Gc<ast::Item>])
|
||||||
impl_to_tokens!(ast::Ty)
|
impl_to_tokens!(ast::Ty)
|
||||||
impl_to_tokens_lifetime!(&'a [ast::Ty])
|
impl_to_tokens_lifetime!(&'a [ast::Ty])
|
||||||
|
|
Loading…
Reference in a new issue