lookupIfaceTop, lookupIfaceExt,
lookupOrig, lookupIfaceTc,
newIfaceName, newIfaceNames,
- extendIfaceIdEnv, extendIfaceTyVarEnv, refineIfaceIdEnv,
+ extendIfaceIdEnv, extendIfaceTyVarEnv,
tcIfaceLclId, tcIfaceTyVar,
lookupAvail, ifaceExportNames,
IfaceExport, OrigNameCache )
import Type ( mkOpenTvSubst, substTy )
import TyCon ( TyCon, tyConName )
-import Unify ( TypeRefinement )
import DataCon ( dataConWorkId, dataConName )
import Var ( TyVar, Id, varName, setIdType, idType )
import Name ( Name, nameUnique, nameModule,
Nothing -> failIfM (text "Iface id out of scope: " <+> ppr occ)
}
-refineIfaceIdEnv :: TypeRefinement -> IfL a -> IfL a
-refineIfaceIdEnv (tv_subst, _) thing_inside
- = do { env <- getLclEnv
- ; let { id_env' = mapOccEnv refine_id (if_id_env env)
- ; refine_id id = setIdType id (substTy subst (idType id))
- ; subst = mkOpenTvSubst tv_subst }
- ; setLclEnv (env { if_id_env = id_env' }) thing_inside }
-
extendIfaceIdEnv :: [Id] -> IfL a -> IfL a
extendIfaceIdEnv ids thing_inside
= do { env <- getLclEnv