From 6ce037393b555389b84bc0e7af53757ba6f4347d Mon Sep 17 00:00:00 2001 From: Adam Gundry Date: Fri, 6 Nov 2020 20:14:14 +0000 Subject: Revert "Experiment with using as-patterns in updaters" This reverts commit 828b222d14345423861658369751eccfb2b845e6. --- compiler/GHC/Tc/TyCl/Utils.hs | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/compiler/GHC/Tc/TyCl/Utils.hs b/compiler/GHC/Tc/TyCl/Utils.hs index 6fc52aa681..b61767c3be 100644 --- a/compiler/GHC/Tc/TyCl/Utils.hs +++ b/compiler/GHC/Tc/TyCl/Utils.hs @@ -984,31 +984,6 @@ mkRecordSelectorAndUpdater all_cons idDetails fl x_vars = rec_field = mkHsRecField (mkFieldOcc fl) (mkVarPat field_var) field_var = mkInternalName (mkBuiltinUnique 1) (getOccName sel_name) loc - -- Make the updater binding: - -- upd z@(C2 {fld = x}) = (\ y -> z { fld = y }, x) - -- ... - upd_bind = mkBind upd_name alts - where - alts = map mk_match cons_w_field ++ deflt - - mk_match con = ( [mkAsPat z_var (mkRecConPat con [rec_field])] - , expr con - ) - rec_field = mkHsRecField (mkFieldOcc fl) (mkVarPat field_var) - field_var = mkInternalName (mkBuiltinUnique 1) (getOccName sel_name) loc - y_var = mkInternalName (mkBuiltinUnique 2) (mkVarOccFS lbl) loc - z_var = mkInternalName (mkBuiltinUnique 3) (mkVarOcc "z") loc - expr con = mkLHsTupleExpr - [ mkHsLam [mkVarPat y_var] update_expr - , mkHsVar field_var - ] - update_expr = L loc (RecordUpd - { rupd_ext = Generated - , rupd_expr = mkHsVar z_var - , rupd_flds = [mkHsRecField (L loc unambiguous_fld) (mkHsVar y_var)] }) - unambiguous_fld = Unambiguous sel_name (L loc (mkVarUnqual (flLabel fl))) - -{- -- Make the updater binding: -- upd z = (\ y -> z { fld = y }, fld z) upd_bind = mkBind upd_name [([mkVarPat z_var], expr)] @@ -1064,7 +1039,7 @@ mkRecordSelectorAndUpdater all_cons idDetails fl x_vars = -- in the TyCon, i.e. maps fldN to xN. x_var :: FieldLabelNoUpdater -> Name x_var fl' = lookupNameEnv_NF x_vars (flSelector fl') --} + -- These are just boring constructors for bits of syntax, using the SrcSpan -- of the field (which is why they are not top-level). @@ -1077,9 +1052,6 @@ mkRecordSelectorAndUpdater all_cons idDetails fl x_vars = mkVarPat :: Name -> LPat GhcRn mkVarPat var = L loc (VarPat noExtField (L loc var)) - mkAsPat :: Name -> LPat GhcRn -> LPat GhcRn - mkAsPat var pat = L loc (AsPat noExtField (L loc var) pat) - mkRecConPat :: ConLike -> [LHsRecField GhcRn (XRec GhcRn (Pat GhcRn))] -> LPat GhcRn mkRecConPat con rflds = L loc (ConPat noExtField (L loc (getName con)) (RecCon (HsRecFields rflds Nothing))) -- cgit v1.2.1