- -- Check that pattern-bound variables are not unlifted
- (if or [ (idName id `elem` pat_binders) && isUnLiftedType (idType id)
- | id <- zonked_mono_ids ] then
- addErrTc (unliftedBindErr "Pattern" mbind)
- else
- returnTc ()
- ) `thenTc_`
-
- -- Unlifted bindings must be non-recursive,
- -- not top level, non-polymorphic, and not pattern bound
- if any (isUnLiftedType . idType) zonked_mono_ids then
- checkTc (isNotTopLevel top_lvl)
- (unliftedBindErr "Top-level" mbind) `thenTc_`
- checkTc (isNonRec is_rec)
- (unliftedBindErr "Recursive" mbind) `thenTc_`
- checkTc (null real_tyvars_to_gen)
- (unliftedBindErr "Polymorphic" mbind)
- else
- returnTc ()
+ checkTc (isNotTopLevel top_lvl)
+ (unliftedBindErr "Top-level" mbind) `thenTc_`
+ checkTc (isNonRec is_rec)
+ (unliftedBindErr "Recursive" mbind) `thenTc_`
+ checkTc (single_bind mbind)
+ (unliftedBindErr "Multiple" mbind) `thenTc_`
+ checkTc (null real_tyvars_to_gen)
+ (unliftedBindErr "Polymorphic" mbind)