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,