diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+0.1.34:
+	* Support for GHC 8.6.1
+
 0.1.33:
 	* Support for GHC 8.4.4
 
diff --git a/intero.cabal b/intero.cabal
--- a/intero.cabal
+++ b/intero.cabal
@@ -1,7 +1,7 @@
 name:
   intero
 version:
-  0.1.33
+  0.1.34
 synopsis:
   Complete interactive development program for Haskell
 license:
@@ -73,7 +73,7 @@
     bytestring,
     directory,
     filepath,
-    ghc >= 7.8 && <= 8.4.4,
+    ghc >= 7.8 && <= 8.6.1,
     ghc-paths,
     haskeline,
     process,
diff --git a/src/Completion.hs b/src/Completion.hs
--- a/src/Completion.hs
+++ b/src/Completion.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE ViewPatterns #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE ScopedTypeVariables #-}
@@ -172,13 +173,21 @@
     typeAt rs expr =
       if getLoc expr == RealSrcSpan rs
         then case expr of
+#if __GLASGOW_HASKELL__ >= 806
+               L _ (HsVar _ (L _ i)) -> pure (idType i)
+#else
                L _ (HsVar (L _ i)) -> pure (idType i)
+#endif
                _ -> Nothing
         else Nothing
     getHoleName :: LHsExpr StageReaderName -> Maybe (OccName, RealSrcSpan)
     getHoleName =
       \case
+#if __GLASGOW_HASKELL__ >= 806
+        L someSpan (HsUnboundVar _ (TrueExprHole name)) -> do
+#else
         L someSpan (HsUnboundVar (TrueExprHole name)) -> do
+#endif
           rs <- getRealSrcSpan someSpan
           pure (name, rs)
         _ -> Nothing
@@ -474,13 +483,21 @@
 rdrNameToLHsExpr :: RdrName -> GenLocated SrcSpan (HsExpr StageReaderRdrName)
 rdrNameToLHsExpr rdrname =
   L (UnhelpfulSpan (mkFastString "Generated by rdrNameToLHsExpr"))
+#if __GLASGOW_HASKELL__ >= 806
+    (HsVar NoExt
+#else
     (HsVar
+#endif
        (L (UnhelpfulSpan (mkFastString "Generated by getWellTypedFills"))
           rdrname))
 
 rdrNameToHsExpr :: RdrName -> HsExpr StageReaderRdrName
 rdrNameToHsExpr rdrname =
+#if __GLASGOW_HASKELL__ >= 806
+  HsVar NoExt
+#else
   HsVar
+#endif
     (L (UnhelpfulSpan (mkFastString "Generated by rdrNameToHsExpr")) rdrname)
 
 -- | Type-check the module without deferring type errors, and without
@@ -508,7 +525,11 @@
   where
     valD =
       \case
+#if __GLASGOW_HASKELL__ >= 806
+        L l (ValD _ hsBind) -> pure (L l hsBind)
+#else
         L l (ValD hsBind) -> pure (L l hsBind)
+#endif
         _ -> Nothing
 
 -- | Convert renamed source groups into one bag of binds.
@@ -517,8 +538,13 @@
   where
     unHsValBindsLR =
       \case
+#if __GLASGOW_HASKELL__ >= 806
+        ValBinds _ binds _ -> binds
+        XValBindsLR (NValBinds pairs _) -> unionManyBags (map snd pairs)
+#else
         ValBindsIn binds _ -> binds
         ValBindsOut pairs _ -> unionManyBags (map snd pairs)
+#endif
 
 -- | Does X span over the point Y?
 realSpans :: SrcSpan -> (Int, Int) -> Bool
diff --git a/src/GhciInfo.hs b/src/GhciInfo.hs
--- a/src/GhciInfo.hs
+++ b/src/GhciInfo.hs
@@ -148,7 +148,7 @@
                -> LHsBind StageReaderId
                -> m [(Maybe Id,SrcSpan,Type)]
 #if MIN_VERSION_ghc(7,8,3)
-getTypeLHsBind _ (L _spn FunBind{fun_id = pid,fun_matches = MG _ _ _typ _}) =
+getTypeLHsBind _ (L _spn FunBind{fun_id = pid,fun_matches = MG{}}) =
   return (return (Just (unLoc pid),getLoc pid,varType (unLoc pid)))
 #else
 getTypeLHsBind _ (L _spn FunBind{fun_id = pid,fun_matches = MG _ _ _typ}) =
@@ -178,7 +178,9 @@
        Nothing -> return Nothing
        Just expr ->
          return (Just (case unwrapVar (unLoc e) of
-#if __GLASGOW_HASKELL__ >= 800
+#if __GLASGOW_HASKELL__ >= 806
+                         HsVar _ (L _ i) -> Just i
+#elif __GLASGOW_HASKELL__ >= 800
                          HsVar (L _ i) -> Just i
 #else
                          HsVar i -> Just i
@@ -186,8 +188,13 @@
                          _ -> Nothing
                       ,getLoc e
                       ,CoreUtils.exprType expr))
-  where unwrapVar (HsWrap _ var) = var
-        unwrapVar e' = e'
+  where
+#if __GLASGOW_HASKELL__ >= 806
+    unwrapVar (HsWrap _ _ var) = var
+#else
+    unwrapVar (HsWrap _ var) = var
+#endif
+    unwrapVar e' = e'
 
 -- | Get id and type for patterns.
 getTypeLPat :: (GhcMonad m)
@@ -198,7 +205,9 @@
     getPatType (ConPatOut (L _ (RealDataCon dc)) _ _ _ _ _ _) =
       dataConRepType dc
     getPatType pat' = hsPatType pat'
-#if __GLASGOW_HASKELL__ >= 800
+#if __GLASGOW_HASKELL__ >= 806
+    getMaybeId (VarPat _ (L _ vid)) = Just vid
+#elif __GLASGOW_HASKELL__ >= 800
     getMaybeId (VarPat (L _ vid)) = Just vid
 #else
     getMaybeId (VarPat vid) = Just vid
diff --git a/src/InteractiveUI.hs b/src/InteractiveUI.hs
--- a/src/InteractiveUI.hs
+++ b/src/InteractiveUI.hs
@@ -992,7 +992,7 @@
 installInteractivePrint Nothing _  = return ()
 installInteractivePrint (Just ipFun) exprmode = do
   ok <- trySuccess $ do
-                (name:_) <- GHC.parseName ipFun
+                name <- head <$> GHC.parseName ipFun
                 modifySession (\he -> let new_ic = setInteractivePrintName (hsc_IC he) name
                                       in he{hsc_IC = new_ic})
                 return Succeeded
@@ -3342,7 +3342,7 @@
       case mb_span of
         Nothing  -> stepCmd []
         Just loc -> do
-           Just md <- getCurrentBreakModule
+           md <- fromJust <$> getCurrentBreakModule
            current_toplevel_decl <- enclosingTickSpan md loc
            doContinue (`isSubspanOf` current_toplevel_decl) GHC.SingleStep
 
@@ -3828,7 +3828,7 @@
 getModBreak :: GHC.GhcMonad m => Module -> m (GHC.BreakArray, Array BreakIndex SrcSpan)
 #endif
 getModBreak m = do
-   Just mod_info <- GHC.getModuleInfo m
+   mod_info <- fromJust <$> GHC.getModuleInfo m
    let modBreaks  = GHC.modInfoModBreaks mod_info
    let arr        = GHC.modBreaks_flags modBreaks
    let ticks      = GHC.modBreaks_locs  modBreaks
diff --git a/src/Intero/Compat.hs b/src/Intero/Compat.hs
--- a/src/Intero/Compat.hs
+++ b/src/Intero/Compat.hs
@@ -50,7 +50,7 @@
 #if __GLASGOW_HASKELL__ <= 802
 ghc_defaultDynFlags = defaultDynFlags
 #else
-ghc_defaultDynFlags s = defaultDynFlags s []
+ghc_defaultDynFlags s = defaultDynFlags s mempty
 #endif
 
 ghc_getInfo :: GhcMonad m => Bool -> Name -> m (Maybe (TyThing, Fixity, [ClsInst], [FamInst]))
