From 9bd39a855acea2640828a8771f1d27bbf9d319eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gr=C3=B6ber?= Date: Mon, 16 Jan 2017 20:56:57 +0100 Subject: [PATCH] CPP around optparse-applicative and hse conflicts --- Language/Haskell/GhcMod/FillSig.hs | 8 ++++++++ Language/Haskell/GhcMod/SrcUtils.hs | 8 ++++++++ ghc-mod.cabal | 8 ++++---- src/GHCMod/Options/Commands.hs | 9 ++++++++- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Language/Haskell/GhcMod/FillSig.hs b/Language/Haskell/GhcMod/FillSig.hs index 3e03ec0..7b4f3ba 100644 --- a/Language/Haskell/GhcMod/FillSig.hs +++ b/Language/Haskell/GhcMod/FillSig.hs @@ -27,7 +27,11 @@ import qualified HsBinds as Ty import qualified Class as Ty import qualified Var as Ty import qualified HsPat as Ty +#if MIN_VERSION_haskell_src_exts(1,18,0) import qualified Language.Haskell.Exts as HE +#else +import qualified Language.Haskell.Exts.Annotated as HE +#endif import Djinn.GHC import qualified Language.Haskell.GhcMod.Gap as Gap @@ -191,7 +195,11 @@ getSignatureFromHE file lineNo colNo = do HE.TypeSig (HE.SrcSpanInfo s _) names ty -> return $ HESignature s names ty +#if MIN_VERSION_haskell_src_exts(1,18,0) HE.TypeFamDecl (HE.SrcSpanInfo s _) declHead _ _ -> +#else + HE.TypeFamDecl (HE.SrcSpanInfo s _) declHead _ -> +#endif let (name, tys) = dHeadTyVars declHead in return $ HEFamSignature s Open name (map cleanTyVarBind tys) diff --git a/Language/Haskell/GhcMod/SrcUtils.hs b/Language/Haskell/GhcMod/SrcUtils.hs index 5829fde..912de92 100644 --- a/Language/Haskell/GhcMod/SrcUtils.hs +++ b/Language/Haskell/GhcMod/SrcUtils.hs @@ -16,7 +16,11 @@ import qualified Var as G import qualified Type as G import GHC.SYB.Utils import GhcMonad +#if MIN_VERSION_haskell_src_exts(1,18,0) import qualified Language.Haskell.Exts as HE +#else +import qualified Language.Haskell.Exts.Annotated as HE +#endif import Language.Haskell.GhcMod.Doc import Language.Haskell.GhcMod.Gap import qualified Language.Haskell.GhcMod.Gap as Gap @@ -175,7 +179,11 @@ fourIntsHE loc = ( HE.srcSpanStartLine loc, HE.srcSpanStartColumn loc typeSigInRangeHE :: Int -> Int -> HE.Decl HE.SrcSpanInfo -> Bool typeSigInRangeHE lineNo colNo (HE.TypeSig (HE.SrcSpanInfo s _) _ _) = HE.srcSpanStart s <= (lineNo, colNo) && HE.srcSpanEnd s >= (lineNo, colNo) +#if MIN_VERSION_haskell_src_exts(1,18,0) typeSigInRangeHE lineNo colNo (HE.TypeFamDecl (HE.SrcSpanInfo s _) _ _ _) = +#else +typeSigInRangeHE lineNo colNo (HE.TypeFamDecl (HE.SrcSpanInfo s _) _ _) = +#endif HE.srcSpanStart s <= (lineNo, colNo) && HE.srcSpanEnd s >= (lineNo, colNo) typeSigInRangeHE lineNo colNo (HE.DataFamDecl (HE.SrcSpanInfo s _) _ _ _) = HE.srcSpanStart s <= (lineNo, colNo) && HE.srcSpanEnd s >= (lineNo, colNo) diff --git a/ghc-mod.cabal b/ghc-mod.cabal index 92f2b9b..20af5b7 100644 --- a/ghc-mod.cabal +++ b/ghc-mod.cabal @@ -200,14 +200,14 @@ Library , mtl < 2.3 && >= 2.0 , monad-control < 1.1 && >= 1 , split < 0.3 - , haskell-src-exts < 1.19 && >= 1.18 + , haskell-src-exts < 1.19 && >= 1.16.0.1 , text < 1.3 , djinn-ghc < 0.1 && >= 0.0.2.2 , fclabels == 2.0.* , extra == 1.5.* , pipes == 4.3.* , safe < 0.4 && >= 0.3.9 - , optparse-applicative >=0.13.0 && <0.14.0 + , optparse-applicative >=0.11.0 && <0.14.0 , template-haskell , syb if impl(ghc < 7.8) @@ -236,7 +236,7 @@ Executable ghc-mod , ghc < 8.1 , monad-control ==1.0.* , fclabels ==2.0.* - , optparse-applicative >=0.13.0 && <0.14.0 + , optparse-applicative >=0.11.0 && <0.14.0 , semigroups < 0.19 && >= 0.10.0 , ghc-mod @@ -250,7 +250,7 @@ Executable ghc-modi Cpp-Options: -DWINDOWS Default-Extensions: ConstraintKinds, FlexibleContexts HS-Source-Dirs: src, . - Build-Depends: base (< 5 && > 4.7) || (>= 4.0 && < 4.7) + Build-Depends: base < 5 && >= 4.0 , binary < 0.9 && >= 0.5.1.0 , deepseq < 1.5 , directory < 1.4 diff --git a/src/GHCMod/Options/Commands.hs b/src/GHCMod/Options/Commands.hs index 9a486ac..38c6c25 100644 --- a/src/GHCMod/Options/Commands.hs +++ b/src/GHCMod/Options/Commands.hs @@ -13,12 +13,14 @@ -- -- You should have received a copy of the GNU Affero General Public License -- along with this program. If not, see . -{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE CPP, OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-unused-do-bind #-} module GHCMod.Options.Commands where +#if MIN_VERSION_optparse_applicative(0,13,0) import Data.Semigroup +#endif import Options.Applicative import Options.Applicative.Types import Options.Applicative.Builder.Internal @@ -290,8 +292,13 @@ hsubparser' :: Mod CommandFields a -> Parser a hsubparser' m = mkParser d g rdr where Mod _ d g = m `mappend` metavar "" +#if MIN_VERSION_optparse_applicative(0,13,0) (ms,cmds, subs) = mkCommand m rdr = CmdReader ms cmds (fmap add_helper . subs) +#else + (cmds, subs) = mkCommand m + rdr = CmdReader cmds (fmap add_helper . subs) +#endif add_helper pinfo = pinfo { infoParser = infoParser pinfo <**> helper }