- (theta1:thetas) = [theta | TySigInfo _ _ _ theta _ _ <- tc_ty_sigs]
- (dict_tys1 : dict_tys_s) = map mk_dict_tys (theta1 : thetas)
- mk_dict_tys theta = [mkDictTy c t | (c,t) <- theta]
+ sig1_dict_tys = mk_dict_tys theta1
+ n_sig1_dict_tys = length sig1_dict_tys
+
+ check_one_cxt sig@(TySigInfo _ id _ theta _ src_loc)
+ = tcAddSrcLoc src_loc $
+ tcAddErrCtxt (sigContextsCtxt id1 id) $
+ checkTc (length this_sig_dict_tys == n_sig1_dict_tys)
+ sigContextsErr `thenTc_`
+ unifyTauTyLists sig1_dict_tys this_sig_dict_tys
+ where
+ this_sig_dict_tys = mk_dict_tys theta