diff --git a/maud_macros/Cargo.toml b/maud_macros/Cargo.toml
index 87b6082..075328b 100644
--- a/maud_macros/Cargo.toml
+++ b/maud_macros/Cargo.toml
@@ -12,9 +12,9 @@ description = """
 Compile-time HTML templates.
 """
 
-[dependencies.maud]
-path = "../maud"
-version = "0.14.0"
+[dependencies]
+if_chain = "0.1"
+maud = { path = "../maud", version = "0.14.0" }
 
 [lib]
 name = "maud_macros"
diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs
index 6db3dc5..1bc6d75 100644
--- a/maud_macros/src/lib.rs
+++ b/maud_macros/src/lib.rs
@@ -2,7 +2,10 @@
 #![feature(plugin_registrar, quote)]
 #![feature(slice_patterns)]
 #![feature(rustc_private)]
+#![recursion_limit = "1000"]  // if_chain
 
+#[macro_use]
+extern crate if_chain;
 #[macro_use]
 extern crate rustc;
 extern crate rustc_plugin;
diff --git a/maud_macros/src/lints/doctype_html.rs b/maud_macros/src/lints/doctype_html.rs
index 3e1f5b3..20c1874 100644
--- a/maud_macros/src/lints/doctype_html.rs
+++ b/maud_macros/src/lints/doctype_html.rs
@@ -31,7 +31,8 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for DoctypeHtml {
             // ... and the callee is `maud::PreEscaped`
             if let ExprPath(ref qpath) = path_expr.node;
             let def_id = cx.tcx.tables().qpath_def(qpath, path_expr.id).def_id();
-            if match_def_path(cx, def_id, &["maud", "PreEscaped", "{{constructor}}"]) {
+            if match_def_path(cx, def_id, &["maud", "PreEscaped", "{{constructor}}"]);
+            then {
                 cx.struct_span_lint(MAUD_DOCTYPE_HTML, expr.span,
                                     "use `maud::DOCTYPE_HTML` instead").emit();
             }
diff --git a/maud_macros/src/lints/util.rs b/maud_macros/src/lints/util.rs
index dd11dca..9877b30 100644
--- a/maud_macros/src/lints/util.rs
+++ b/maud_macros/src/lints/util.rs
@@ -7,29 +7,6 @@ use rustc::lint::LateContext;
 use rustc::ty;
 use syntax::symbol::{InternedString, Symbol};
 
-#[macro_export]
-macro_rules! if_chain {
-    (let $pat:pat = $expr:expr; $($tt:tt)+) => {
-        {
-            let $pat = $expr;
-            if_chain! { $($tt)+ }
-        }
-    };
-    (if let $pat:pat = $expr:expr; $($tt:tt)+) => {
-        if let $pat = $expr {
-            if_chain! { $($tt)+ }
-        }
-    };
-    (if $expr:expr; $($tt:tt)+) => {
-        if $expr {
-            if_chain! { $($tt)+ }
-        }
-    };
-    ($expr:expr) => {
-        $expr
-    };
-}
-
 /// Check if a `DefId`'s path matches the given absolute type path usage.
 ///
 /// # Examples