From cf0cf095c22649f6d1c2b7c66041cf5f4a4e9335 Mon Sep 17 00:00:00 2001
From: Chris Wong <lambda.fairy@gmail.com>
Date: Sat, 26 Sep 2015 13:56:52 +1200
Subject: [PATCH] Revert "Add `#call_box` instruction"

This reverts commit 0311bab45ba045106c4bcd96844a0f7afaab29d7.
---
 maud_macros/src/parse.rs   |  5 ----
 maud_macros/src/render.rs  | 10 --------
 maud_macros/tests/tests.rs | 47 +++++++++++++++-----------------------
 3 files changed, 18 insertions(+), 44 deletions(-)

diff --git a/maud_macros/src/parse.rs b/maud_macros/src/parse.rs
index e575f60..68f6003 100644
--- a/maud_macros/src/parse.rs
+++ b/maud_macros/src/parse.rs
@@ -158,11 +158,6 @@ impl<'cx, 'i> Parser<'cx, 'i> {
                 let func = try!(self.splice(sp));
                 self.render.emit_call(func);
             },
-            [pound!(), ident!(sp, name), ..] if name.name == "call_box" => {
-                self.shift(2);
-                let func = try!(self.splice(sp));
-                self.render.emit_call_box(func);
-            },
             // Splice
             [ref tt @ dollar!(), dollar!(), ..] => {
                 self.shift(2);
diff --git a/maud_macros/src/render.rs b/maud_macros/src/render.rs
index fb2d20b..35e31e5 100644
--- a/maud_macros/src/render.rs
+++ b/maud_macros/src/render.rs
@@ -198,16 +198,6 @@ impl<'cx> Renderer<'cx> {
         let stmt = self.wrap_try(expr);
         self.push(stmt);
     }
-
-    pub fn emit_call_box(&mut self, func: P<Expr>) {
-        let w = self.writer;
-        let expr = quote_expr!(self.cx,
-            ::std::boxed::FnBox::call_box(
-                $func,
-                (&mut *$w as &mut ::std::fmt::Write,)));
-        let stmt = self.wrap_try(expr);
-        self.push(stmt);
-    }
 }
 
 fn html_escape(s: &str) -> String {
diff --git a/maud_macros/tests/tests.rs b/maud_macros/tests/tests.rs
index 673f026..cbbb8d6 100644
--- a/maud_macros/tests/tests.rs
+++ b/maud_macros/tests/tests.rs
@@ -1,8 +1,10 @@
-#![feature(fnbox, plugin)]
+#![feature(plugin)]
 #![plugin(maud_macros)]
 
 extern crate maud;
 
+use std::fmt;
+
 #[test]
 fn literals() {
     let mut s = String::new();
@@ -272,35 +274,22 @@ mod issue_10 {
     }
 }
 
-mod subtemplates {
-    use std::fmt;
-
+#[test]
+fn call() {
     fn ducks(w: &mut fmt::Write) -> fmt::Result {
         write!(w, "Ducks")
     }
-
-    #[test]
-    fn call() {
-        let mut s = String::new();
-        let swans = |yes|
-            if yes {
-                |w: &mut fmt::Write| write!(w, "Swans")
-            } else {
-                panic!("oh noes")
-            };
-        html!(s, {
-            #call ducks
-            #call (|w: &mut fmt::Write| write!(w, "Geese"))
-            #call swans(true)
-        }).unwrap();
-        assert_eq!(s, "DucksGeeseSwans");
-    }
-
-    #[test]
-    fn call_box() {
-        let mut s = String::new();
-        let ducks = Box::new(ducks);
-        html!(s, #call_box ducks).unwrap();
-        assert_eq!(s, "Ducks");
-    }
+    let mut s = String::new();
+    let swans = |yes|
+        if yes {
+            |w: &mut fmt::Write| write!(w, "Swans")
+        } else {
+            panic!("oh noes")
+        };
+    html!(s, {
+        #call ducks
+        #call (|w: &mut fmt::Write| write!(w, "Geese"))
+        #call swans(true)
+    }).unwrap();
+    assert_eq!(s, "DucksGeeseSwans");
 }