; ty_sigs = filter isVanillaLSig sigs
; sig_fn = mkTcSigFun ty_sigs }
- ; poly_ids <- mapM tcTySig ty_sigs
+ ; poly_ids <- checkNoErrs (mapAndRecoverM tcTySig ty_sigs)
-- No recovery from bad signatures, because the type sigs
-- may bind type variables, so proceeding without them
-- can lead to a cascade of errors
-- group at once; an earlier one may use a later one!
do { traceTc (text "tc_group rec" <+> pprLHsBinds binds)
; (binds1,thing) <- bindLocalInsts top_lvl $
- go (stronglyConnComp (mkEdges sig_fn binds))
+ go (stronglyConnCompFromEdgedVertices (mkEdges sig_fn binds))
; return ([(Recursive, unionManyBags binds1)], thing) }
-- Rec them all together
where