Commit 1db8e4d0 authored by chak@cse.unsw.edu.au.'s avatar chak@cse.unsw.edu.au.

Add hook to fam inst consistency check to GHCi/--make

parent ca8ac1f2
...@@ -1092,19 +1092,32 @@ tcRnType hsc_env ictxt rdr_type ...@@ -1092,19 +1092,32 @@ tcRnType hsc_env ictxt rdr_type
-- could not be found. -- could not be found.
getModuleExports :: HscEnv -> Module -> IO (Messages, Maybe [AvailInfo]) getModuleExports :: HscEnv -> Module -> IO (Messages, Maybe [AvailInfo])
getModuleExports hsc_env mod getModuleExports hsc_env mod
= initTc hsc_env HsSrcFile iNTERACTIVE (tcGetModuleExports mod) = let
ic = hsc_IC hsc_env
tcGetModuleExports :: Module -> TcM [AvailInfo] checkMods = ic_toplev_scope ic ++ ic_exports ic
tcGetModuleExports mod = do in
let doc = ptext SLIT("context for compiling statements") initTc hsc_env HsSrcFile iNTERACTIVE (tcGetModuleExports mod checkMods)
iface <- initIfaceTcRn $ loadSysInterface doc mod
loadOrphanModules (dep_orphs (mi_deps iface)) False -- Get the export avail info and also load all orphan and family-instance
-- Load any orphan-module interfaces, -- modules. Finally, check that the family instances of all modules in the
-- so their instances are visible -- interactive context are consistent (these modules are in the second
loadOrphanModules (dep_finsts (mi_deps iface)) True -- argument).
-- Load any family instance-module interfaces, tcGetModuleExports :: Module -> [Module] -> TcM [AvailInfo]
-- so all family instances are visible tcGetModuleExports mod directlyImpMods
ifaceExportNames (mi_exports iface) = do { let doc = ptext SLIT("context for compiling statements")
; iface <- initIfaceTcRn $ loadSysInterface doc mod
-- Load any orphan-module and family instance-module
-- interfaces, so their instances are visible.
; loadOrphanModules (dep_orphs (mi_deps iface)) False
; loadOrphanModules (dep_finsts (mi_deps iface)) True
-- Check that the family instances of all directly loaded
-- modules are consistent.
; checkFamInstConsistency (dep_finsts (mi_deps iface)) directlyImpMods
; ifaceExportNames (mi_exports iface)
}
tcRnLookupRdrName :: HscEnv -> RdrName -> IO (Maybe [Name]) tcRnLookupRdrName :: HscEnv -> RdrName -> IO (Maybe [Name])
tcRnLookupRdrName hsc_env rdr_name tcRnLookupRdrName hsc_env rdr_name
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment