import HsSyn ( TyDecl(..), ConDecl(..), ConDetails(..), BangType(..), HsExpr(..),
Match(..), GRHSsAndBinds(..), GRHS(..), OutPat(..),
HsBinds(..), HsLit, Stmt, DoOrListComp, ArithSeqInfo,
- SYN_IE(RecFlag), nonRecursive,
+ SYN_IE(RecFlag), nonRecursive, andMonoBinds,
HsType, Fake, InPat, HsTyVar, Fixity,
MonoBinds(..), Sig
)
import HsTypes ( getTyVarName )
import RnHsSyn ( RenamedTyDecl(..), RenamedConDecl(..) )
import TcHsSyn ( mkHsTyLam, mkHsDictLam, tcIdType,
- SYN_IE(TcHsBinds), TcIdOcc(..)
+ SYN_IE(TcHsBinds), TcIdOcc(..), SYN_IE(TcMonoBinds)
)
import Inst ( newDicts, InstOrigin(..), Inst )
import TcMonoType ( tcHsTypeKind, tcHsType, tcContext )
)
import Outputable ( Outputable(..), interpp'SP )
import Pretty
-import TyCon ( TyCon, NewOrData(..), mkSynTyCon, mkDataTyCon, isDataTyCon,
- isNewTyCon, isSynTyCon, tyConDataCons
+import TyCon ( TyCon, NewOrData, mkSynTyCon, mkDataTyCon, isAlgTyCon,
+ isSynTyCon, tyConDataCons
)
import Type ( GenType, -- instances
typeKind, getTyVar, tyVarsOfTypes, eqTy, splitSigmaTy,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\begin{code}
-mkDataBinds :: [TyCon] -> TcM s ([Id], TcHsBinds s)
-mkDataBinds [] = returnTc ([], EmptyBinds)
+mkDataBinds :: [TyCon] -> TcM s ([Id], TcMonoBinds s)
+mkDataBinds [] = returnTc ([], EmptyMonoBinds)
mkDataBinds (tycon : tycons)
| isSynTyCon tycon = mkDataBinds tycons
| otherwise = mkDataBinds_one tycon `thenTc` \ (ids1, b1) ->
mkDataBinds tycons `thenTc` \ (ids2, b2) ->
- returnTc (ids1++ids2, b1 `ThenBinds` b2)
+ returnTc (ids1++ids2, b1 `AndMonoBinds` b2)
mkDataBinds_one tycon
- = ASSERT( isDataTyCon tycon || isNewTyCon tycon )
+ = ASSERT( isAlgTyCon tycon )
mapTc checkConstructorContext data_cons `thenTc_`
mapTc (mkRecordSelector tycon) groups `thenTc` \ sel_ids ->
let
| data_id <- data_ids, isLocallyDefined data_id
]
in
- returnTc (data_ids,
- MonoBind (foldr AndMonoBinds EmptyMonoBinds binds) [] nonRecursive
- )
+ returnTc (data_ids, andMonoBinds binds)
where
data_cons = tyConDataCons tycon
fields = [ (con, field) | con <- data_cons,