From 409bc99f104931630a3a15524b134ed2fa5eb1ea Mon Sep 17 00:00:00 2001 From: Kazu Yamamoto Date: Thu, 17 Jul 2014 12:37:38 +0900 Subject: [PATCH] error handling for loadSymbolDb. --- Language/Haskell/GhcMod/Find.hs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/Language/Haskell/GhcMod/Find.hs b/Language/Haskell/GhcMod/Find.hs index bc9c001..f08ac77 100644 --- a/Language/Haskell/GhcMod/Find.hs +++ b/Language/Haskell/GhcMod/Find.hs @@ -11,6 +11,7 @@ module Language.Haskell.GhcMod.Find ( import Config (cProjectVersion,cTargetPlatformString) import Control.Applicative ((<$>)) +import Control.Exception (handle, SomeException(..)) import Control.Monad (when, void) import CoreMonad (liftIO) import Data.Function (on) @@ -80,14 +81,9 @@ getSymbolDb :: IO SymbolDb getSymbolDb = SymbolDb <$> loadSymbolDb loadSymbolDb :: IO Db -loadSymbolDb = do +loadSymbolDb = handle (\(SomeException _) -> return M.empty) $ do file <- chop <$> readProcess "ghc-mod" ["dumpsym"] [] - exist <- doesFileExist file -- False if file is "" - !db <- if exist then - M.fromAscList . map conv . lines <$> liftIO (readFile file) - else - return M.empty - return db + M.fromAscList . map conv . lines <$> readFile file where conv :: String -> (Symbol,[ModuleString]) conv = read