From e5711929e338fa5fc5c628711c0ee10c5317c1d8 Mon Sep 17 00:00:00 2001
From: Chris Wong <lambda.fairy@gmail.com>
Date: Sat, 11 Apr 2015 10:19:28 +1200
Subject: [PATCH] print-expansion for all your expansion printing needs

---
 .travis.yml            | 2 +-
 maud_macros/Cargo.toml | 3 +++
 maud_macros/src/lib.rs | 7 ++++++-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index b67e5f7..73a0e4b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,3 +1,3 @@
 language: rust
 script:
-  - ( cd maud_macros && cargo test --verbose )
+  - ( cd maud_macros && cargo test --features print-expansion --verbose )
diff --git a/maud_macros/Cargo.toml b/maud_macros/Cargo.toml
index 6729b4d..99769df 100644
--- a/maud_macros/Cargo.toml
+++ b/maud_macros/Cargo.toml
@@ -12,6 +12,9 @@ description = """
 Compile-time HTML templates.
 """
 
+[features]
+print-expansion = []
+
 [dependencies.maud]
 path = "../maud"
 version = "=0.3.4"
diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs
index beb9243..49ecf90 100644
--- a/maud_macros/src/lib.rs
+++ b/maud_macros/src/lib.rs
@@ -10,13 +10,18 @@ extern crate maud;
 use syntax::ast::TokenTree;
 use syntax::codemap::Span;
 use syntax::ext::base::{ExtCtxt, MacEager, MacResult};
+use syntax::print::pprust;
 use rustc::plugin::Registry;
 
 mod parse;
 mod render;
 
 fn expand_html<'cx>(cx: &'cx mut ExtCtxt, sp: Span, args: &[TokenTree]) -> Box<MacResult + 'cx> {
-    MacEager::expr(parse::parse(cx, args, sp))
+    let expr = parse::parse(cx, args, sp);
+    if cfg!(feature = "print-expansion") {
+        println!("{}", pprust::expr_to_string(&expr));
+    }
+    MacEager::expr(expr)
 }
 
 #[plugin_registrar]