- mapAndUnzipNF_Tc zonk_rpat rpats `thenNF_Tc` \ (new_rpats, ids_s) ->
- returnNF_Tc (RecPat n new_ty new_rpats, unionManyBags ids_s)
+ mapNF_Tc zonkTcTyVarToTyVar tvs `thenNF_Tc` \ new_tvs ->
+ let
+ new_te = extend_te te new_tvs
+ in
+ mapNF_Tc (zonkIdBndr new_te) dicts `thenNF_Tc` \ new_dicts ->
+ tcExtendGlobalValEnv new_dicts $
+ mapNF_Tc (zonk_rpat new_te) rpats `thenNF_Tc` \ stuff ->
+ let
+ (new_rpats, tvs_s, ids_s) = unzip3 stuff
+ in
+ returnNF_Tc (RecPat n new_ty new_tvs new_dicts new_rpats,
+ listToBag new_tvs `unionBags` unionManyBags tvs_s,
+ listToBag new_dicts `unionBags` unionManyBags ids_s)