+%************************************************************************
+%* *
+\subsection{Core decls}
+%* *
+%************************************************************************
+
+
+\begin{code}
+tcCoreBinds :: [RenamedCoreDecl] -> TcM [TypecheckedCoreBind]
+-- We don't assume the bindings are in dependency order
+-- So first build the environment, then check the RHSs
+tcCoreBinds ls = mappM tcCoreBinder ls `thenM` \ bndrs ->
+ tcExtendGlobalValEnv bndrs $
+ mappM (tcCoreBind bndrs) ls
+
+tcCoreBinder (CoreDecl nm ty _ _)
+ = kcHsSigType ty `thenM_`
+ tcIfaceType ty `thenM` \ ty' ->
+ returnM (mkLocalId nm ty')
+
+tcCoreBind bndrs (CoreDecl nm _ rhs loc)
+ = tcVar nm `thenM` \ id ->
+ tcCoreExpr rhs `thenM` \ rhs' ->
+ let
+ mb_err = lintUnfolding loc bndrs rhs'
+ in
+ (case mb_err of
+ Just err -> addErr err
+ Nothing -> returnM ()) `thenM_`
+
+ returnM (id, rhs')
+\end{code}
+
+