ajhc-0.8.0.1: src/FrontEnd/FrontEnd.hs
module FrontEnd.FrontEnd(
doModules,
Tc.TiData(..)
) where
import Control.Monad
import qualified Data.Map as Map
import Doc.DocLike
import FrontEnd.Exports
import FrontEnd.HsSyn
import FrontEnd.Rename
import Ho.Type
import Options
import qualified FlagDump as FD
import qualified FrontEnd.Tc.Module as Tc
-- Process modules found by Ho
doModules :: HoTcInfo -> [HsModule] -> IO (HoTcInfo,Tc.TiData)
doModules htc ms = do
ms <- mapM modInfo ms
when (dump FD.Defs) $ flip mapM_ ms $ \m -> do
putStrLn $ " ---- Definitions for" <+> show (modInfoName m) <+> "----"
mapM_ print (modInfoDefs m)
ms <- determineExports [ (x,y,z) |
(x,(y,z)) <- Map.toList $ hoDefs htc] (Map.toList $ hoExports htc) ms
Tc.tiModules htc ms
modInfo m = do
let (xs,ys) = collectDefsHsModule m
return ModInfo {
modInfoName = hsModuleName m,
modInfoDefs = xs,
modInfoHsModule = m,
modInfoConsArity = ys,
modInfoExport = error "modInfoExport",
modInfoImport = error "modInfoImport",
modInfoReverseMap = error "modInfoReverseMap",
modInfoOptions = hsModuleOpt m
}