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 }