diff --git a/CHANGES.txt b/CHANGES.txt
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,7 @@
 Changelog for Derive
 
+2.6.3
+    #24, support GHC 8.2
 2.6.2
     #19, more upgrade bug fixes
 2.6.1
diff --git a/derive.cabal b/derive.cabal
--- a/derive.cabal
+++ b/derive.cabal
@@ -1,7 +1,7 @@
 cabal-version:  >= 1.18
 build-type:     Default
 name:           derive
-version:        2.6.2
+version:        2.6.3
 build-type:     Simple
 copyright:      Neil Mitchell 2006-2017
 author:         Neil Mitchell <ndmitchell@gmail.com>
@@ -20,7 +20,7 @@
 extra-doc-files:
     README.md
     CHANGES.txt
-tested-with:        GHC==8.0.2, GHC==7.10.3
+tested-with:        GHC==8.2.1, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3
 
 source-repository head
     type:     git
diff --git a/src/Language/Haskell/TH/Compat.hs b/src/Language/Haskell/TH/Compat.hs
--- a/src/Language/Haskell/TH/Compat.hs
+++ b/src/Language/Haskell/TH/Compat.hs
@@ -22,17 +22,23 @@
 #endif
 
 dataDefinitionTypeArgs :: Dec -> [Name]
-#if __GLASGOW_HASKELL__ >= 800
+#if __GLASGOW_HASKELL__ >= 802
+dataDefinitionTypeArgs (DataD _ _ _ _ _ deriv_clauses) =
+  deriv_clauses >>= from_deriv_clause
+dataDefinitionTypeArgs (NewtypeD _ _ _ _ _ deriv_clauses) =
+  deriv_clauses >>= from_deriv_clause
+
+from_deriv_clause :: DerivClause -> [Name]
+from_deriv_clause (DerivClause _ cxt) = map from_cxt cxt
+#elif __GLASGOW_HASKELL__ >= 800
 dataDefinitionTypeArgs (DataD _cx name _ _ _ cxt) = map from_cxt cxt
 dataDefinitionTypeArgs (NewtypeD cx name _ _ _ cxt) = map from_cxt cxt
-#else    
-#if __GLASGOW_HASKELL__ >= 612
+#elif __GLASGOW_HASKELL__ >= 612
 dataDefinitionTypeArgs (DataD _cx name _ _ args) = args
 dataDefinitionTypeArgs (NewtypeD cx name _ _ args) = args
 #else
 dataDefinitionTypeArgs (DataD _cx name args cons _derv) = args
 dataDefinitionTypeArgs (NewtypeD cx name args con derv) = args
-#endif
 #endif
 
 from_cxt :: Type -> Name
