--- /dev/null
+%
+% (c) The GRASP/AQUA Project, Glasgow University, 1992-1995
+%
+\section[TcConDecls]{Typechecking @ConDecls@}
+
+\begin{code}
+#include "HsVersions.h"
+
+module TcConDecls ( tcConDecls ) where
+
+import TcMonad -- typechecking monadic machinery
+import AbsSyn
+
+import CE ( CE(..) )
+import E ( GVE(..), nullGVE, plusGVE )
+import Errors ( confusedNameErr )
+import Id ( mkDataCon, SpecEnv )
+import TCE ( TCE(..), UniqFM )
+import TVE ( TVE(..) )
+import TcMonoType ( tcMonoType )
+import Util
+\end{code}
+
+\begin{code}
+tcConDecls :: TCE -> TVE -> TyCon -> [TyVarTemplate] -> SpecEnv
+ -> [RenamedConDecl] -> Baby_TcM GVE
+
+tcConDecls tce tve tycon tyvars specenv [] = returnB_Tc nullGVE
+
+tcConDecls tce tve tycon tyvars specenv (cd:cds)
+ = tc_decl cd `thenB_Tc` \ gve_fst ->
+ tcConDecls tce tve tycon tyvars specenv cds `thenB_Tc` \ gve_rest ->
+ returnB_Tc (plusGVE gve_fst gve_rest)
+ where
+ tc_decl (ConDecl name@(OtherTopId uniq full_name) tys src_loc)
+ = addSrcLocB_Tc src_loc (
+ mapB_Tc (tcMonoType fake_CE tce tve) tys `thenB_Tc` \ arg_tys ->
+ returnB_Tc [(name, data_con arg_tys)]
+ )
+ where
+ fake_CE = panic "tcConDecls:CE"
+
+ data_con arg_tys
+ = mkDataCon uniq
+ full_name
+ tyvars
+ [{-no context-}]
+ arg_tys
+ tycon
+ specenv
+
+ tc_decl (ConDecl odd_name _ src_loc)
+ = failB_Tc (confusedNameErr "Bad name for a data constructor (a Prelude name?)"
+ odd_name src_loc)
+\end{code}