diff options
| author | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-07-04 10:25:50 +0000 |
|---|---|---|
| committer | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-07-04 23:42:35 +0000 |
| commit | 547a930835be262ebea5e499dba7555a8a47b992 (patch) | |
| tree | cb767c17cf669224da4461a41aff4aee07e647bf /src/libsyntax/ext/quote.rs | |
| parent | c2b56fb7a0c24e04227318ca7e5950e9289ee3e4 (diff) | |
| download | rust-547a930835be262ebea5e499dba7555a8a47b992.tar.gz rust-547a930835be262ebea5e499dba7555a8a47b992.zip | |
Revert "Change `fold_tt` and `fold_tts` to take token trees by value (instead of by reference)"
This reverts commit 5bf7970ac70b4e7781e7b2f3816720aa62fac6fd.
Diffstat (limited to 'src/libsyntax/ext/quote.rs')
| -rw-r--r-- | src/libsyntax/ext/quote.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/libsyntax/ext/quote.rs b/src/libsyntax/ext/quote.rs index 68527b0797d..ffc950d76dd 100644 --- a/src/libsyntax/ext/quote.rs +++ b/src/libsyntax/ext/quote.rs @@ -32,6 +32,7 @@ pub mod rt { use ext::base::ExtCtxt; use parse::{self, token, classify}; use ptr::P; + use std::rc::Rc; use tokenstream::{self, TokenTree}; @@ -215,12 +216,12 @@ pub mod rt { if self.node.style == ast::AttrStyle::Inner { r.push(TokenTree::Token(self.span, token::Not)); } - r.push(TokenTree::Delimited(self.span, tokenstream::Delimited { + r.push(TokenTree::Delimited(self.span, Rc::new(tokenstream::Delimited { delim: token::Bracket, open_span: self.span, tts: self.node.value.to_tokens(cx), close_span: self.span, - })); + }))); r } } @@ -235,12 +236,12 @@ pub mod rt { impl ToTokens for () { fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree> { - vec![TokenTree::Delimited(DUMMY_SP, tokenstream::Delimited { + vec![TokenTree::Delimited(DUMMY_SP, Rc::new(tokenstream::Delimited { delim: token::Paren, open_span: DUMMY_SP, tts: vec![], close_span: DUMMY_SP, - })] + }))] } } @@ -791,9 +792,14 @@ fn statements_mk_tt(cx: &ExtCtxt, tt: &TokenTree, matcher: bool) -> Vec<ast::Stm id_ext("tokenstream"), id_ext("SequenceRepetition")]; let e_seq_struct = cx.expr_struct(sp, cx.path_global(sp, seq_path), fields); + let e_rc_new = cx.expr_call_global(sp, vec![id_ext("std"), + id_ext("rc"), + id_ext("Rc"), + id_ext("new")], + vec![e_seq_struct]); let e_tok = cx.expr_call(sp, mk_tt_path(cx, sp, "Sequence"), - vec!(e_sp, e_seq_struct)); + vec!(e_sp, e_rc_new)); let e_push = cx.expr_method_call(sp, cx.expr_ident(sp, id_ext("tt")), |
