From e1d9c3b881f5398fcfe3fc452b435ce981a9f4cb Mon Sep 17 00:00:00 2001 From: Kazu Yamamoto Date: Fri, 18 Jul 2014 15:13:30 +0900 Subject: [PATCH] clean up lookupSymbol. --- Language/Haskell/GhcMod/Find.hs | 15 ++++++++------- src/GHCModi.hs | 3 +-- test/FindSpec.hs | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Language/Haskell/GhcMod/Find.hs b/Language/Haskell/GhcMod/Find.hs index e1a8570..6cda765 100644 --- a/Language/Haskell/GhcMod/Find.hs +++ b/Language/Haskell/GhcMod/Find.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE CPP #-} +{-# LANGUAGE CPP, BangPatterns #-} module Language.Haskell.GhcMod.Find #ifndef SPEC @@ -9,6 +9,7 @@ module Language.Haskell.GhcMod.Find , lookupSymbol , dumpSymbol , findSymbol + , lookupSym ) #endif where @@ -69,15 +70,15 @@ packageConfDir = "package.conf.d" -- | Finding modules to which the symbol belong. findSymbol :: IOish m => Symbol -> GhcModT m String -findSymbol sym = convert' =<< lookupSymbol' sym <$> liftIO loadSymbolDb - -lookupSymbol' :: Symbol -> SymbolDb -> [ModuleString] -lookupSymbol' sym (SymbolDb db) = fromMaybe [] (M.lookup sym db) +findSymbol sym = liftIO loadSymbolDb >>= lookupSymbol sym -- | Looking up 'SymbolDb' with 'Symbol' to \['ModuleString'\] -- which will be concatenated. -lookupSymbol :: Options -> Symbol -> SymbolDb -> String -lookupSymbol opt sym db = convert opt $ lookupSymbol' sym db +lookupSymbol :: IOish m => Symbol -> SymbolDb -> GhcModT m String +lookupSymbol sym db = convert' $ lookupSym sym db + +lookupSym :: Symbol -> SymbolDb -> [ModuleString] +lookupSym sym (SymbolDb db) = fromMaybe [] $ M.lookup sym db --------------------------------------------------------------- diff --git a/src/GHCModi.hs b/src/GHCModi.hs index a33ad1f..e3a888b 100644 --- a/src/GHCModi.hs +++ b/src/GHCModi.hs @@ -190,8 +190,7 @@ findSym :: IOish m => Set FilePath -> String -> MVar SymbolDb -> GhcModT m (String, Bool, Set FilePath) findSym set sym mvar = do db <- liftIO $ readMVar mvar - opt <- options - let ret = lookupSymbol opt sym db + ret <- lookupSymbol sym db return (ret, True, set) lintStx :: IOish m => Set FilePath diff --git a/test/FindSpec.hs b/test/FindSpec.hs index 0eedcb4..3480054 100644 --- a/test/FindSpec.hs +++ b/test/FindSpec.hs @@ -13,4 +13,4 @@ spec = do describe "db <- loadSymbolDb" $ do it "lookupSymbol' db \"head\" contains at least `Data.List'" $ do db <- loadSymbolDb - lookupSymbol' "head" db `shouldContain` ["Data.List"] + lookupSym "head" db `shouldContain` ["Data.List"]