-- so tcHsType will do the Right Thing without
-- having to mess about with zonking
-import TcEnv ( TcEnv, tcExtendTyVarEnv,
+import TcEnv ( TcEnv, RecTcEnv, tcExtendTyVarEnv,
tcExtendGlobalValEnv, tcSetEnv,
- tcLookupGlobal_maybe, explicitLookupId, tcEnvIds
+ tcLookupGlobal_maybe, tcLookupRecId, tcEnvIds
)
import RnHsSyn ( RenamedHsDecl )
signatures.
\begin{code}
-tcInterfaceSigs :: TcEnv -- Envt to use when checking unfoldings
+tcInterfaceSigs :: RecTcEnv -- Envt to use when checking unfoldings
-> [RenamedHsDecl] -- Ignore non-sig-decls in these decls
-> TcM [Id]
= listTc [ do_one name ty id_infos src_loc
| TyClD (IfaceSig name ty id_infos src_loc) <- decls]
where
- in_scope_vars = filter isLocallyDefined (tcEnvIds unf_env)
+ in_scope_vars = [] -- I think this will be OK
+ -- If so, don't pass it around
+ -- Was: filter isLocallyDefined (tcEnvIds unf_env)
do_one name ty id_infos src_loc
= tcAddSrcLoc src_loc $
= uniqSMToTcM (mkWrapper ty arity demands res_bot cpr_info) `thenNF_Tc` \ wrap_fn ->
let
-- Watch out! We can't pull on unf_env too eagerly!
- info' = case explicitLookupId unf_env worker_name of
- Just worker_id -> info `setUnfoldingInfo` mkTopUnfolding (wrap_fn worker_id)
- `setWorkerInfo` HasWorker worker_id arity
+ info' = case tcLookupRecId unf_env worker_name of
+ Just worker_id -> info `setUnfoldingInfo` mkTopUnfolding (wrap_fn worker_id)
+ `setWorkerInfo` HasWorker worker_id arity
- Nothing -> pprTrace "tcWorkerInfo failed:" (ppr worker_name) info
+ Nothing -> pprTrace "tcWorkerInfo failed:" (ppr worker_name) info
in
returnTc info'
where
where
doc = text "unfolding of" <+> ppr name
-tcDelay :: TcEnv -> SDoc -> TcM a -> NF_TcM (Maybe a)
+tcDelay :: RecTcEnv -> SDoc -> TcM a -> NF_TcM (Maybe a)
tcDelay unf_env doc thing_inside
= forkNF_Tc (
recoverNF_Tc bad_value (