diff options
author | Shayne Fletcher <shayne@shaynefletcher.org> | 2021-02-21 11:48:17 -0500 |
---|---|---|
committer | Shayne Fletcher <shayne@shaynefletcher.org> | 2021-03-06 10:21:52 -0500 |
commit | 06f1170bed5237766b53306a9ad088e4b151939e (patch) | |
tree | c0e141d0ffefcf93a9f9937f72b7d32ce6883699 /compiler/GHC/HsToCore | |
parent | 9e0c0c3a7b6cad8c08e5de7e2a27cf2cb2d2368f (diff) | |
download | haskell-wip/T18599.tar.gz |
Record dot syntaxwip/T18599
Diffstat (limited to 'compiler/GHC/HsToCore')
-rw-r--r-- | compiler/GHC/HsToCore/Coverage.hs | 11 | ||||
-rw-r--r-- | compiler/GHC/HsToCore/Expr.hs | 9 | ||||
-rw-r--r-- | compiler/GHC/HsToCore/Quote.hs | 7 |
3 files changed, 22 insertions, 5 deletions
diff --git a/compiler/GHC/HsToCore/Coverage.hs b/compiler/GHC/HsToCore/Coverage.hs index 9aadaff9fd..3a8c106b90 100644 --- a/compiler/GHC/HsToCore/Coverage.hs +++ b/compiler/GHC/HsToCore/Coverage.hs @@ -595,10 +595,14 @@ addTickHsExpr expr@(RecordCon { rcon_flds = rec_binds }) = do { rec_binds' <- addTickHsRecordBinds rec_binds ; return (expr { rcon_flds = rec_binds' }) } -addTickHsExpr expr@(RecordUpd { rupd_expr = e, rupd_flds = flds }) +addTickHsExpr expr@(RecordUpd { rupd_expr = e, rupd_flds = Left flds }) = do { e' <- addTickLHsExpr e ; flds' <- mapM addTickHsRecField flds - ; return (expr { rupd_expr = e', rupd_flds = flds' }) } + ; return (expr { rupd_expr = e', rupd_flds = Left flds' }) } +addTickHsExpr expr@(RecordUpd { rupd_expr = e, rupd_flds = Right flds }) + = do { e' <- addTickLHsExpr e + ; flds' <- mapM addTickHsRecField flds + ; return (expr { rupd_expr = e', rupd_flds = Right flds' }) } addTickHsExpr (ExprWithTySig x e ty) = liftM3 ExprWithTySig @@ -627,6 +631,8 @@ addTickHsExpr e@(HsBracket {}) = return e addTickHsExpr e@(HsTcBracketOut {}) = return e addTickHsExpr e@(HsRnBracketOut {}) = return e addTickHsExpr e@(HsSpliceE {}) = return e +addTickHsExpr e@(HsGetField {}) = return e +addTickHsExpr e@(HsProjection {}) = return e addTickHsExpr (HsProc x pat cmdtop) = liftM2 (HsProc x) (addTickLPat pat) @@ -987,7 +993,6 @@ addTickHsRecField (L l (HsRecField id expr pun)) = do { expr' <- addTickLHsExpr expr ; return (L l (HsRecField id expr' pun)) } - addTickArithSeqInfo :: ArithSeqInfo GhcTc -> TM (ArithSeqInfo GhcTc) addTickArithSeqInfo (From e1) = liftM From diff --git a/compiler/GHC/HsToCore/Expr.hs b/compiler/GHC/HsToCore/Expr.hs index 50d9594e3c..387963827e 100644 --- a/compiler/GHC/HsToCore/Expr.hs +++ b/compiler/GHC/HsToCore/Expr.hs @@ -276,6 +276,9 @@ dsExpr (ExprWithTySig _ e _) = dsLExpr e dsExpr (HsConLikeOut _ con) = dsConLike con dsExpr (HsIPVar {}) = panic "dsExpr: HsIPVar" +dsExpr (HsGetField x _ _) = absurd x +dsExpr (HsProjection x _) = absurd x + dsExpr (HsLit _ lit) = do { warnAboutOverflowedLit lit ; dsLit (convertLit lit) } @@ -603,7 +606,11 @@ we want, namely -} -dsExpr expr@(RecordUpd { rupd_expr = record_expr, rupd_flds = fields +dsExpr RecordUpd { rupd_flds = Right _} = + -- Not possible due to elimination in the renamer. See Note + -- [Handling overloaded and rebindable constructs] + panic "The impossible happened" +dsExpr expr@(RecordUpd { rupd_expr = record_expr, rupd_flds = Left fields , rupd_ext = RecordUpdTc { rupd_cons = cons_to_upd , rupd_in_tys = in_inst_tys diff --git a/compiler/GHC/HsToCore/Quote.hs b/compiler/GHC/HsToCore/Quote.hs index d3453fcd56..149c683d83 100644 --- a/compiler/GHC/HsToCore/Quote.hs +++ b/compiler/GHC/HsToCore/Quote.hs @@ -1581,10 +1581,15 @@ repE (RecordCon { rcon_con = c, rcon_flds = flds }) = do { x <- lookupLOcc c; fs <- repFields flds; repRecCon x fs } -repE (RecordUpd { rupd_expr = e, rupd_flds = flds }) +repE (RecordUpd { rupd_expr = e, rupd_flds = Left flds }) = do { x <- repLE e; fs <- repUpdFields flds; repRecUpd x fs } +repE (RecordUpd { rupd_flds = Right _ }) + = do + -- Not possible due to elimination in the renamer. See Note + -- [Handling overloaded and rebindable constructs] + panic "The impossible has happened!" repE (ExprWithTySig _ e wc_ty) = addSimpleTyVarBinds (get_scoped_tvs_from_sig sig_ty) $ |