\begin{code}
module Finder (
- initFinder, -- :: PackageConfigInfo -> IO (),
+ initFinder, -- :: [PackageConfig] -> IO (),
findModule, -- :: ModuleName -> IO (Maybe (Module, ModuleLocation))
mkHomeModuleLocn, -- :: ModuleName -> String -> FilePath
-- -> IO ModuleLocation
import List
import IO
import Monad
-import Outputable ( showSDoc, ppr ) -- debugging only
+import Outputable
\end{code}
The Finder provides a thin filesystem abstraction to the rest of the
GLOBAL_VAR(v_HomeDirCache, Nothing, Maybe (FiniteMap String FilePath))
-initFinder :: PackageConfigInfo -> IO ()
+initFinder :: [PackageConfig] -> IO ()
initFinder pkgs
= do { -- expunge our home cache
; writeIORef v_HomeDirCache Nothing
lhs = basename ++ ".lhs"
case lookupFM home_map hs of {
+ -- special case to avoid getting "./foo.hs" all the time
+ Just "." -> mkHomeModuleLocn mod_name basename hs;
Just path -> mkHomeModuleLocn mod_name
(path ++ '/':basename) (path ++ '/':hs);
Nothing ->
case lookupFM home_map lhs of {
+ -- special case to avoid getting "./foo.hs" all the time
+ Just "." -> mkHomeModuleLocn mod_name basename lhs;
Just path -> mkHomeModuleLocn mod_name
(path ++ '/':basename) (path ++ '/':lhs);
Nothing -> do
))
-newPkgCache :: [Package] -> IO (FiniteMap String (PackageName, FilePath))
+newPkgCache :: [PackageConfig] -> IO (FiniteMap String (PackageName, FilePath))
newPkgCache pkgs = do
let extendFM fm pkg = do
let dirs = import_dirs pkg
("WARNING: error while reading directory " ++ d)
return []
)
-
+
\end{code}