{-# LANGUAGE CPP #-}
{-# LANGUAGE ConstraintKinds #-}
module Development.IDE.GHC.Compat.Util (
MonadCatch,
GhcException,
handleGhcException,
catch,
try,
Bag,
bagToList,
listToBag,
unionBags,
isEmptyBag,
LBooleanFormula,
BooleanFormula(..),
OverridingBool(..),
MaybeErr(..),
orElse,
Pair(..),
EnumSet,
toList,
FastString,
#if MIN_VERSION_ghc(9,2,0)
LexicalFastString(..),
#endif
uniq,
unpackFS,
mkFastString,
fsLit,
pprHsString,
Fingerprint(..),
getFileHash,
fingerprintData,
fingerprintString,
fingerprintFingerprints,
Uniquable,
nonDetCmpUnique,
getUnique,
Unique,
mkUnique,
newTagUnique,
emptyUDFM,
plusUDFM,
plusUDFM_C,
StringBuffer(..),
hGetStringBuffer,
stringToStringBuffer,
nextChar,
atEnd,
) where
#if MIN_VERSION_ghc(9,0,0)
import Control.Exception.Safe (MonadCatch, catch, try)
import GHC.Data.Bag
import GHC.Data.BooleanFormula
import GHC.Data.EnumSet
import GHC.Data.FastString
import GHC.Data.Maybe
import GHC.Data.Pair
import GHC.Data.StringBuffer
import GHC.Types.Unique
import GHC.Types.Unique.DFM
import GHC.Utils.Fingerprint
import GHC.Utils.Misc
import GHC.Utils.Outputable (pprHsString)
import GHC.Utils.Panic hiding (try)
#else
import Bag
import BooleanFormula
import EnumSet
import qualified Exception
import FastString
import Fingerprint
import Maybes
import Outputable (pprHsString)
import Pair
import Panic hiding (try)
import StringBuffer
import UniqDFM
import Unique
import Util
#endif
#if MIN_VERSION_ghc(9,3,0)
import GHC.Data.Bool
#endif
#if !MIN_VERSION_ghc(9,0,0)
type MonadCatch = Exception.ExceptionMonad
catch :: (Exception.ExceptionMonad m, Exception e) => m a -> (e -> m a) -> m a
catch = Exception.gcatch
try :: (Exception.ExceptionMonad m, Exception e) => m a -> m (Either e a)
try = Exception.gtry
#endif