diff --git a/Text/Boomerang/TH.hs b/Text/Boomerang/TH.hs
--- a/Text/Boomerang/TH.hs
+++ b/Text/Boomerang/TH.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE TemplateHaskell, TypeOperators #-}
+{-# LANGUAGE CPP, TemplateHaskell, TypeOperators #-}
 module Text.Boomerang.TH
     ( makeBoomerangs
     -- * Backwards-compatibility
@@ -18,9 +18,17 @@
 makeBoomerangs name = do
   info <- reify name
   case info of
+#if MIN_VERSION_template_haskell(2,11,0)
+    TyConI (DataD _ tName tBinds _ cons _)   ->
+#else
     TyConI (DataD _ tName tBinds cons _)   ->
+#endif
       concat `liftM` mapM (deriveBoomerang (tName, tBinds)) cons
+#if MIN_VERSION_template_haskell(2,11,0)
+    TyConI (NewtypeD _ tName tBinds _ con _) ->
+#else
     TyConI (NewtypeD _ tName tBinds con _) ->
+#endif
       deriveBoomerang (tName, tBinds) con
     _ ->
       fail $ show name ++ " is not a datatype."
diff --git a/boomerang.cabal b/boomerang.cabal
--- a/boomerang.cabal
+++ b/boomerang.cabal
@@ -1,5 +1,5 @@
 Name:             boomerang
-Version:          1.4.5.1
+Version:          1.4.5.2
 License:          BSD3
 License-File:     LICENSE
 Author:           jeremy@seereason.com
@@ -10,12 +10,12 @@
 Description:      Specify a single unified grammar which can be used for parsing and pretty-printing
 Cabal-Version:    >= 1.6
 Build-type:       Simple
-tested-with:      GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3
+tested-with:      GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
 
 Library
         Build-Depends:    base             >= 4    && < 5,
                           mtl              >= 2.0  && < 2.3,
-                          template-haskell,
+                          template-haskell            < 2.12,
                           text             >= 0.11 && < 1.3
         Exposed-Modules:  Text.Boomerang
                           Text.Boomerang.Combinators
