From 0ec0950c5fd0eba01b4bce8747e098c7aa0c67d8 Mon Sep 17 00:00:00 2001 From: Chris Wong <lambda.fairy@gmail.com> Date: Sat, 22 Apr 2017 17:19:31 +1200 Subject: [PATCH] Remove `FlattenNtFolder` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The tests pass without it, so 🤷 --- maud_macros/src/parse.rs | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs index 9406a97..e29aa5b 100644 --- a/maud_macros/src/parse.rs +++ b/maud_macros/src/parse.rs @@ -2,9 +2,8 @@ use std::mem; use syntax::ast::LitKind; use syntax::codemap::Span; use syntax::ext::base::ExtCtxt; -use syntax::fold::Folder; use syntax::parse; -use syntax::parse::token::{BinOpToken, DelimToken, Nonterminal, Token}; +use syntax::parse::token::{BinOpToken, DelimToken, Token}; use syntax::print::pprust; use syntax::symbol::keywords; use syntax::tokenstream::{Delimited, TokenStream, TokenTree}; @@ -63,37 +62,19 @@ macro_rules! keyword { } pub fn parse(cx: &ExtCtxt, sp: Span, input: &[TokenTree]) -> ParseResult<Vec<TokenTree>> { - let input: Vec<TokenTree> = FlattenNtFolder.fold_tts(input.iter().cloned().collect()) - .into_trees().collect(); let mut render = Renderer::new(cx); Parser { cx, in_attr: false, - input: &input, + input: input, span: sp, }.markups(&mut render)?; // Heuristic: the size of the resulting markup tends to correlate with the // code size of the template itself - let size_hint = pprust::tts_to_string(&input).len(); + let size_hint = pprust::tts_to_string(input).len(); Ok(render.into_expr(size_hint).into_trees().collect()) } -struct FlattenNtFolder; - -impl Folder for FlattenNtFolder { - fn fold_tt(&mut self, tt: TokenTree) -> TokenTree { - let mut tt = &tt; - while let TokenTree::Token(_, Token::Interpolated(ref nt)) = *tt { - if let Nonterminal::NtTT(ref sub_tt) = **nt { - tt = sub_tt; - } else { - break; - } - } - tt.clone() - } -} - struct Parser<'cx, 'a: 'cx, 'i> { cx: &'cx ExtCtxt<'a>, in_attr: bool,