X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Ftypecheck%2FTcIfaceSig.lhs;h=5295fec764f734372e3daabd66614cfa6ad124ce;hb=7849d4a5be50796cda506c5d92ca2ccb0d15dd90;hp=e1d323025af0f6433f10bd69b6980613832ed408;hpb=eee2ba29efc7f7f9a0bb3a2696ff6f3b8b46b18b;p=ghc-hetmet.git diff --git a/ghc/compiler/typecheck/TcIfaceSig.lhs b/ghc/compiler/typecheck/TcIfaceSig.lhs index e1d3230..5295fec 100644 --- a/ghc/compiler/typecheck/TcIfaceSig.lhs +++ b/ghc/compiler/typecheck/TcIfaceSig.lhs @@ -55,8 +55,20 @@ signatures. tcInterfaceSigs :: [RenamedTyClDecl] -- Ignore non-sig-decls in these decls -> TcM TcGblEnv +-- May 2003: +-- NOTE 1: careful about the side-effected EPS +-- in the two tcExtendGlobalValueEnv calls +-- NOTE 2: no point in tying the knot with fixM; all +-- the important knot-tying comes via the PCS global variable + tcInterfaceSigs decls = zapEnv (fixM (tc_interface_sigs decls)) `thenM` \ (_,sig_ids) -> + -- The zapEnv dramatically trims the environment, solely + -- to plug the space leak that would otherwise be caused + -- by a rich environment bound into lots of lazy thunks + -- The thunks are the lazily-typechecked IdInfo of the + -- imported things. + tcExtendGlobalValEnv sig_ids getGblEnv `thenM` \ gbl_env -> returnM gbl_env -- We tie a knot so that the Ids read out of interfaces are in scope