diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+## 0.2.5 *April 15th 2018*
+* Support for GHC-8.5.20180306
+
 ## 0.2.4 *March 17th 2018*
 * Fix exports
 
diff --git a/ghc-tcplugins-extra.cabal b/ghc-tcplugins-extra.cabal
--- a/ghc-tcplugins-extra.cabal
+++ b/ghc-tcplugins-extra.cabal
@@ -1,5 +1,5 @@
 name:                ghc-tcplugins-extra
-version:             0.2.4
+version:             0.2.5
 synopsis:            Utilities for writing GHC type-checker plugins
 description:         Utilities for writing GHC type-checker plugins, such as
                      creating constraints, with a stable API covering multiple
@@ -17,7 +17,8 @@
 extra-source-files:  README.md
                      CHANGELOG.md
 cabal-version:       >=1.10
-tested-with:         GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1
+tested-with:         GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1,
+                     GHC == 8.4.2, GHC == 8.5
 
 source-repository head
   type: git
diff --git a/src/GHC/TcPluginM/Extra.hs b/src/GHC/TcPluginM/Extra.hs
--- a/src/GHC/TcPluginM/Extra.hs
+++ b/src/GHC/TcPluginM/Extra.hs
@@ -30,7 +30,7 @@
     -- * Trace state of the plugin
   , tracePlugin
 #if __GLASGOW_HASKELL__ >= 804
-    -- * Substitutions
+    -- * Substitutions (GHC 8.4+)
   , flattenGivens
   , mkSubst
   , mkSubst'
@@ -49,6 +49,9 @@
 #if __GLASGOW_HASKELL__ < 711
 import BasicTypes (TopLevelFlag (..))
 #endif
+#if MIN_VERSION_ghc(8,5,0)
+import CoreSyn    (Expr(..))
+#endif
 import Coercion   (Role (..), mkUnivCo)
 import FastString (FastString, fsLit)
 import Module     (Module, ModuleName)
@@ -147,7 +150,10 @@
 -- | Create a new [G]iven constraint, with the supplied evidence. This must not
 -- be invoked from 'tcPluginInit' or 'tcPluginStop', or it will panic.
 newGiven :: CtLoc -> PredType -> EvTerm -> TcPluginM CtEvidence
-#if __GLASGOW_HASKELL__ >= 711
+#if MIN_VERSION_ghc(8,5,0)
+newGiven loc pty (EvExpr ev) = TcPluginM.newGiven loc pty ev
+newGiven _ _  ev = panicDoc "newGiven: not an EvExpr: " (ppr ev)
+#elif __GLASGOW_HASKELL__ >= 711
 newGiven = TcPluginM.newGiven
 #else
 newGiven loc pty evtm = return
@@ -173,10 +179,16 @@
          -> Type   -- ^ The LHS of the equivalence relation (~)
          -> Type   -- ^ The RHS of the equivalence relation (~)
          -> EvTerm
-evByFiat name t1 t2 = EvCoercion
+evByFiat name t1 t2 =
+#if MIN_VERSION_ghc(8,5,0)
+                      EvExpr
+                    $ Coercion
+#else
+                      EvCoercion
 #if __GLASGOW_HASKELL__ < 711
                     $ TcCoercion
 #endif
+#endif
                     $ mkUnivCo
 #if __GLASGOW_HASKELL__ >= 711
                         (PluginProv name)
@@ -277,7 +289,10 @@
 -- | Flattens evidence of constraints by substituting each others equalities.
 --
 -- __NB:__ Should only be used on /[G]iven/ constraints!
+--
 -- __NB:__ Doesn't flatten under binders
+--
+-- __NB:__ Only available on GHC 8.4+
 flattenGivens
   :: [Ct]
   -> [Ct]
@@ -287,12 +302,16 @@
 
 -- | Create flattened substitutions from type equalities, i.e. the substitutions
 -- have been applied to each others right hand sides.
+--
+-- __NB:__ Only available on GHC 8.4+
 mkSubst' :: [Ct] -> [(TcTyVar,TcType)]
 mkSubst' = foldr substSubst [] . mapMaybe mkSubst
  where
   substSubst (tv,t) s = (tv,substType s t) : map (second (substType [(tv,t)])) s
 
 -- | Create simple substitution from type equalities
+--
+-- __NB:__ Only available on GHC 8.4+
 mkSubst
   :: Ct
   -> Maybe (TcTyVar, TcType)
@@ -301,6 +320,8 @@
 mkSubst _                = Nothing
 
 -- | Apply substitution in the evidence of Cts
+--
+-- __NB:__ Only available on GHC 8.4+
 substCt
   :: [(TcTyVar, TcType)]
   -> Ct
@@ -312,6 +333,8 @@
 -- | Apply substitutions in Types
 --
 -- __NB:__ Doesn't substitute under binders
+--
+-- __NB:__ Only available on GHC 8.4+
 substType
   :: [(TcTyVar, TcType)]
   -> TcType
