Fix #487, Modules from sandbox not visible

This commit is contained in:
Daniel Gröber
2015-06-05 22:42:46 +02:00
parent 1e381a12a9
commit 49515b3eb8
5 changed files with 39 additions and 21 deletions

View File

@@ -17,7 +17,7 @@
{-# LANGUAGE CPP #-}
module Language.Haskell.GhcMod.CabalHelper (
getComponents
, getGhcPkgOptions
, getGhcMergedPkgOptions
) where
import Control.Applicative
@@ -38,9 +38,14 @@ import Paths_ghc_mod as GhcMod
-- | Only package related GHC options, sufficient for things that don't need to
-- access home modules
getGhcPkgOptions :: (Applicative m, MonadIO m, GmEnv m, GmLog m)
=> m [(ChComponentName, [GHCOption])]
getGhcPkgOptions = map (\c -> (gmcName c, gmcGhcPkgOpts c)) `liftM` getComponents
getGhcMergedPkgOptions :: (Applicative m, MonadIO m, GmEnv m, GmLog m)
=> m [GHCOption]
getGhcMergedPkgOptions = chCached Cached {
cacheFile = mergedPkgOptsCacheFile,
cachedAction = \ _ (progs, root, _) _ -> do
opts <- withCabal $ runQuery' progs root $ ghcMergedPkgOptions
return ([setupConfigPath], opts)
}
helperProgs :: Options -> Programs
helperProgs opts = Programs {
@@ -56,16 +61,22 @@ helperProgs opts = Programs {
-- 'resolveGmComponents'.
getComponents :: (Applicative m, MonadIO m, GmEnv m, GmLog m)
=> m [GmComponent GMCRaw ChEntrypoint]
getComponents = do
opt <- options
Cradle {..} <- cradle
let gmVer = GhcMod.version
chVer = VERSION_cabal_helper
d = (helperProgs opt
, cradleRootDir </> "dist"
, (gmVer, chVer)
)
withCabal $ cached cradleRootDir cabalHelperCache d
getComponents = chCached cabalHelperCache
chCached c = do
root <- cradleRootDir <$> cradle
d <- cacheInputData root
withCabal $ cached root c d
where
cacheInputData root = do
opt <- options
return $ ( helperProgs opt
, root </> "dist"
, (gmVer, chVer)
)
gmVer = GhcMod.version
chVer = VERSION_cabal_helper
cabalHelperCache
:: (Functor m, Applicative m, MonadIO m)