summaryrefslogtreecommitdiff
path: root/compiler/GHC/Unit/Finder.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Unit/Finder.hs')
-rw-r--r--compiler/GHC/Unit/Finder.hs13
1 files changed, 10 insertions, 3 deletions
diff --git a/compiler/GHC/Unit/Finder.hs b/compiler/GHC/Unit/Finder.hs
index c3c517cb18..45057d13e2 100644
--- a/compiler/GHC/Unit/Finder.hs
+++ b/compiler/GHC/Unit/Finder.hs
@@ -412,6 +412,12 @@ findInstalledHomeModule fc fopts home_unit mod_name = do
home_path = case maybe_working_dir of
Nothing -> finder_importPaths fopts
Just fp -> augmentImports fp (finder_importPaths fopts)
+ hi_dir_path =
+ case finder_hiDir fopts of
+ Just hiDir -> case maybe_working_dir of
+ Nothing -> [hiDir]
+ Just fp -> [fp </> hiDir]
+ Nothing -> home_path
hisuf = finder_hiSuf fopts
mod = mkModule home_unit mod_name
@@ -431,8 +437,9 @@ findInstalledHomeModule fc fopts home_unit mod_name = do
-- In compilation manager modes, we look for source files in the home
-- package because we can compile these automatically. In one-shot
-- compilation mode we look for .hi and .hi-boot files only.
- exts | finder_lookupHomeInterfaces fopts = hi_exts
- | otherwise = source_exts
+ (search_dirs, exts)
+ | finder_lookupHomeInterfaces fopts = (hi_dir_path, hi_exts)
+ | otherwise = (home_path, source_exts)
in
-- special case for GHC.Prim; we won't find it in the filesystem.
@@ -440,7 +447,7 @@ findInstalledHomeModule fc fopts home_unit mod_name = do
-- is a home module).
if mod `installedModuleEq` gHC_PRIM
then return (InstalledFound (error "GHC.Prim ModLocation") mod)
- else searchPathExts home_path mod exts
+ else searchPathExts search_dirs mod exts
-- | Prepend the working directory to the search path.
augmentImports :: FilePath -> [FilePath] -> [FilePath]