From 4f7189375e8a248f1f33de780de241de6dc1e580 Mon Sep 17 00:00:00 2001
From: Chris Wong <lambda.fairy@gmail.com>
Date: Sun, 30 Jul 2017 13:59:35 +1200
Subject: [PATCH] Avoid using `quote!` in parser

---
 maud_macros/src/parse.rs | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index 73a1bb6..fb82f29 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -1,4 +1,14 @@
-use proc_macro::{Delimiter, Literal, Spacing, TokenNode, TokenStream, TokenTree, TokenTreeIter, quote};
+use proc_macro::{
+    Delimiter,
+    Literal,
+    Spacing,
+    Span,
+    TokenNode,
+    TokenStream,
+    TokenTree,
+    TokenTreeIter,
+};
+use std::iter;
 use std::mem;
 
 use literalext::LiteralExt;
@@ -292,7 +302,7 @@ impl Parser {
                 TokenTree {
                     kind: TokenNode::Group(Delimiter::Brace, body),
                     span,
-                }.into()
+                }
             },
             // $pat => $expr
             Some(first_token) => {
@@ -310,11 +320,14 @@ impl Parser {
                 // The generated code may have multiple statements, unlike the
                 // original expression. So wrap the whole thing in a block just
                 // in case.
-                quote!({ $body })
+                TokenTree {
+                    kind: TokenNode::Group(Delimiter::Brace, body),
+                    span: Span::default(),
+                }
             },
             None => return self.error("unexpected end of @match arm"),
         };
-        Ok(Some(pat.into_iter().chain(body.into_iter()).collect()))
+        Ok(Some(pat.into_iter().chain(iter::once(body)).collect()))
     }
 
     /// Parses and renders a `@let` expression.