diff --git a/src/expr.rs b/src/expr.rs
index e3e4e55..647edbd 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -827,19 +827,12 @@
 
     fn requires_semi(e: &Expr) -> bool {
         match *e {
-            Expr::Mac(ref mac) => {
-                let len = mac.tts.len();
-                if let TokenTree::Delimited(
-                    Delimited {
-                        delim: DelimToken::Brace,
-                        ..
-                    }
-                ) = mac.tts[len - 1] {
-                    false
-                } else {
-                    true
-                }
-            }
+            Expr::Mac(ref mac) => match mac.tts.last() {
+                Some(&TokenTree::Delimited(
+                    Delimited { delim: DelimToken::Brace, .. }
+                )) => false,
+                _ => true,
+            },
 
             Expr::If(_, _, _) |
             Expr::IfLet(_, _, _, _) |
@@ -1164,7 +1157,7 @@
                     tokens.append("return");
                     opt_expr.to_tokens(tokens);
                 }
-                Expr::Mac(ref _mac) => unimplemented!(),
+                Expr::Mac(ref mac) => mac.to_tokens(tokens),
                 Expr::Struct(ref path, ref fields, ref base) => {
                     path.to_tokens(tokens);
                     tokens.append("{");
@@ -1309,7 +1302,7 @@
                 Pat::Lit(ref _expr) => unimplemented!(),
                 Pat::Range(ref _lower, ref _upper) => unimplemented!(),
                 Pat::Vec(ref _before, ref _dots, ref _after) => unimplemented!(),
-                Pat::Mac(ref _mac) => unimplemented!(),
+                Pat::Mac(ref mac) => mac.to_tokens(tokens),
             }
         }
     }
diff --git a/src/item.rs b/src/item.rs
index 1c0ec66..8c87b3a 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -437,7 +437,7 @@
 #[cfg(feature = "printing")]
 mod printing {
     use super::*;
-    use FunctionRetTy;
+    use {Delimited, DelimToken, FunctionRetTy, TokenTree};
     use attr::FilterAttrs;
     use data::VariantData;
     use quote::{Tokens, ToTokens};
@@ -539,7 +539,20 @@
                 ItemKind::Trait(_unsafety, ref _generics, ref _bound, ref _item) => unimplemented!(),
                 ItemKind::DefaultImpl(_unsafety, ref _path) => unimplemented!(),
                 ItemKind::Impl(_unsafety, _polarity, ref _generics, ref _path, ref _ty, ref _item) => unimplemented!(),
-                ItemKind::Mac(ref _mac) => unimplemented!(),
+                ItemKind::Mac(ref mac) => {
+                    mac.path.to_tokens(tokens);
+                    tokens.append("!");
+                    self.ident.to_tokens(tokens);
+                    for tt in &mac.tts {
+                        tt.to_tokens(tokens);
+                    }
+                    match mac.tts.last() {
+                        Some(&TokenTree::Delimited(
+                            Delimited { delim: DelimToken::Brace, .. }
+                        )) => { /* no semicolon */ }
+                        _ => tokens.append(";"),
+                    }
+                }
             }
         }
     }
