From bd34db1b078c4c028cc3072a41e536cff0dc958e Mon Sep 17 00:00:00 2001 From: Kazu Yamamoto Date: Tue, 22 Apr 2014 13:32:33 +0900 Subject: [PATCH] using force just in case. --- ghc-mod.cabal | 1 + src/GHCModi.hs | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ghc-mod.cabal b/ghc-mod.cabal index 54904fe..bd8b98a 100644 --- a/ghc-mod.cabal +++ b/ghc-mod.cabal @@ -108,6 +108,7 @@ Executable ghc-modi HS-Source-Dirs: src Build-Depends: base >= 4.0 && < 5 , containers + , deepseq , directory , filepath , ghc diff --git a/src/GHCModi.hs b/src/GHCModi.hs index e194302..8ef726c 100644 --- a/src/GHCModi.hs +++ b/src/GHCModi.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE CPP #-} +{-# LANGUAGE CPP, BangPatterns #-} {-# LANGUAGE DeriveDataTypeable #-} -- Commands: @@ -25,6 +25,7 @@ module Main where import Control.Applicative ((<$>)) import Control.Concurrent (forkIO, MVar, newEmptyMVar, putMVar, readMVar) import Control.Exception (SomeException(..)) +import Control.DeepSeq (force) import qualified Control.Exception as E import Control.Monad (when, void) import CoreMonad (liftIO) @@ -142,8 +143,8 @@ run cradle mlibdir opt body = G.runGhc mlibdir $ do setupDB :: Cradle -> Maybe FilePath -> Options -> MVar DB -> IO () setupDB cradle mlibdir opt mvar = E.handle handler $ do sm <- run cradle mlibdir opt $ \_ -> G.getSessionDynFlags >>= browseAll - let sms = map tieup $ groupBy ((==) `on` fst) $ sort sm - m = M.fromList sms + let !sms = force $ map tieup $ groupBy ((==) `on` fst) $ sort sm + !m = force $ M.fromList sms putMVar mvar m where tieup x = (head (map fst x), map snd x)