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
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
}