rescue old GHCs.

This commit is contained in:
Kazu Yamamoto 2014-04-28 14:36:55 +09:00
parent ae75872638
commit 9bc25046e3
2 changed files with 21 additions and 3 deletions

View File

@ -20,7 +20,6 @@ import Language.Haskell.GhcMod.GhcPkg
import Control.Applicative ((<$>))
import Control.Monad (forM, void)
import CoreMonad (liftIO)
import Data.IntSet (IntSet, empty)
import Data.Maybe (isJust, fromJust)
import Exception (ghandle, SomeException(..))
import GHC (Ghc, GhcMonad, DynFlags(..), GhcLink(..), HscTarget(..), LoadHowMuch(..))
@ -188,12 +187,12 @@ withDynFlags setFlag body = G.gbracket setup teardown (\_ -> body)
----------------------------------------------------------------
setNoWaringFlags :: DynFlags -> DynFlags
setNoWaringFlags df = df { warningFlags = empty}
setNoWaringFlags df = df { warningFlags = Gap.emptyWarnFlags}
setAllWaringFlags :: DynFlags -> DynFlags
setAllWaringFlags df = df { warningFlags = allWarningFlags }
allWarningFlags :: IntSet
allWarningFlags :: Gap.WarnFlags
allWarningFlags = unsafePerformIO $ do
mlibdir <- getSystemLibDir
G.runGhc mlibdir $ do

View File

@ -28,6 +28,8 @@ module Language.Haskell.GhcMod.Gap (
, GapThing(..)
, fromTyThing
, fileModSummary
, WarnFlags
, emptyWarnFlags
) where
import Control.Applicative hiding (empty)
@ -71,6 +73,10 @@ import Control.Arrow hiding ((<+>))
import Data.Convertible
#endif
#if __GLASGOW_HASKELL__ >= 704
import qualified Data.IntSet as I (IntSet, empty)
#endif
----------------------------------------------------------------
----------------------------------------------------------------
--
@ -359,3 +365,16 @@ fromTyThing (ADataCon d) = GtA $ dataConRepType d
#endif
fromTyThing (ATyCon t) = GtT t
fromTyThing _ = GtN
----------------------------------------------------------------
----------------------------------------------------------------
#if __GLASGOW_HASKELL__ >= 704
type WarnFlags = I.IntSet
emptyWarnFlags :: WarnFlags
emptyWarnFlags = I.empty
#else
type WarnFlags = [WarningFlag]
emptyWarnFlags :: WarnFlags
emptyWarnFlags = []
#endif