| ... |
... |
@@ -123,30 +123,11 @@ tcPolyLExpr, tcPolyLExprNC :: LHsExpr GhcRn -> ExpSigmaType |
|
123
|
123
|
|
|
124
|
124
|
tcPolyLExpr (L loc expr) res_ty
|
|
125
|
125
|
= addLExprCtxt (locA loc) expr $ -- Note [Error contexts in generated code]
|
|
126
|
|
- do { (L loc' expanded_expr, mb_ret_ty, ctxt, did_expand) <- tcExpandLExpr loc expr res_ty
|
|
127
|
|
- ; e <-
|
|
128
|
|
- mb_add_xexpr_wrap (ExprCtxt expr) did_expand $ mb_add_ctxt ctxt (locA loc') expanded_expr $
|
|
129
|
|
- case mb_ret_ty of
|
|
130
|
|
- Nothing -> tcPolyExpr expanded_expr res_ty
|
|
131
|
|
- Just ds_res_ty -> do expr' <- tcPolyExpr expanded_expr (Check ds_res_ty)
|
|
132
|
|
- tcWrapResult expr expr' ds_res_ty res_ty
|
|
133
|
|
- ; return (L loc' e)
|
|
134
|
|
- }
|
|
135
|
|
- where
|
|
136
|
|
- mb_add_ctxt :: Maybe HsCtxt -> SrcSpan -> HsExpr GhcRn -> TcM a -> TcM a
|
|
137
|
|
- mb_add_ctxt Nothing _ _ thing_inside
|
|
138
|
|
- = thing_inside
|
|
139
|
|
- mb_add_ctxt (Just ctxt) loc expanded_expr thing_inside
|
|
140
|
|
- = addExpansionErrCtxt ctxt $
|
|
141
|
|
- addLExprCtxt loc expanded_expr $
|
|
142
|
|
- thing_inside
|
|
143
|
|
-
|
|
144
|
|
- mb_add_xexpr_wrap :: HsCtxt -> Bool -> TcM (HsExpr GhcTc) -> TcM (HsExpr GhcTc)
|
|
145
|
|
- mb_add_xexpr_wrap hs_ctxt True thing_inside = mkExpandedTc hs_ctxt <$> setInGeneratedCode thing_inside
|
|
146
|
|
- mb_add_xexpr_wrap _ False thing_inside = thing_inside
|
|
|
126
|
+ tcPolyLExprNC (L loc expr) res_ty
|
|
147
|
127
|
|
|
148
|
128
|
tcPolyLExprNC (L loc expr) res_ty
|
|
149
|
|
- = do { (L loc' expanded_expr, mb_ret_ty, ctxt, did_expand) <- tcExpandLExpr loc expr res_ty
|
|
|
129
|
+ = setSrcSpanA loc $
|
|
|
130
|
+ do { (L loc' expanded_expr, mb_ret_ty, ctxt, did_expand) <- tcExpandLExpr loc expr res_ty
|
|
150
|
131
|
; e <-
|
|
151
|
132
|
mb_add_xexpr_wrap (ExprCtxt expr) did_expand $ mb_add_ctxt ctxt (locA loc') expanded_expr $
|
|
152
|
133
|
case mb_ret_ty of
|
| ... |
... |
@@ -313,30 +294,11 @@ tcMonoLExpr, tcMonoLExprNC |
|
313
|
294
|
|
|
314
|
295
|
tcMonoLExpr (L loc expr) res_ty
|
|
315
|
296
|
= addLExprCtxt (locA loc) expr $ -- Note [Error contexts in generated code]
|
|
316
|
|
- do { (L loc' expanded_expr, mb_ret_ty, ctxt, did_expand) <- tcExpandLExpr loc expr res_ty
|
|
317
|
|
- ; e <-
|
|
318
|
|
- mb_add_xexpr_wrap (ExprCtxt expr) did_expand $ mb_add_ctxt ctxt (locA loc') expanded_expr $
|
|
319
|
|
- case mb_ret_ty of
|
|
320
|
|
- Nothing -> tcExpr expanded_expr res_ty
|
|
321
|
|
- Just ds_res_ty -> do expr' <- tcExpr expanded_expr (Check ds_res_ty)
|
|
322
|
|
- tcWrapResultMono expr expr' ds_res_ty res_ty
|
|
323
|
|
- ; return (L loc' e)
|
|
324
|
|
- }
|
|
325
|
|
- where
|
|
326
|
|
- mb_add_ctxt :: Maybe HsCtxt -> SrcSpan -> HsExpr GhcRn -> TcM a -> TcM a
|
|
327
|
|
- mb_add_ctxt Nothing _ _ thing_inside
|
|
328
|
|
- = thing_inside
|
|
329
|
|
- mb_add_ctxt (Just ctxt) loc expanded_expr thing_inside
|
|
330
|
|
- = addExpansionErrCtxt ctxt $
|
|
331
|
|
- addLExprCtxt loc expanded_expr $
|
|
332
|
|
- thing_inside
|
|
333
|
|
-
|
|
334
|
|
- mb_add_xexpr_wrap :: HsCtxt -> Bool -> TcM (HsExpr GhcTc) -> TcM (HsExpr GhcTc)
|
|
335
|
|
- mb_add_xexpr_wrap hs_ctxt True thing_inside = mkExpandedTc hs_ctxt <$> setInGeneratedCode thing_inside
|
|
336
|
|
- mb_add_xexpr_wrap _ False thing_inside = thing_inside
|
|
|
297
|
+ tcMonoLExprNC (L loc expr) res_ty
|
|
337
|
298
|
|
|
338
|
299
|
tcMonoLExprNC (L loc expr) res_ty
|
|
339
|
|
- = do { (L loc' expanded_expr, mb_ret_ty, ctxt, did_expand) <- tcExpandLExpr loc expr res_ty
|
|
|
300
|
+ = setSrcSpanA loc $
|
|
|
301
|
+ do { (L loc' expanded_expr, mb_ret_ty, ctxt, did_expand) <- tcExpandLExpr loc expr res_ty
|
|
340
|
302
|
; e <-
|
|
341
|
303
|
mb_add_xexpr_wrap (ExprCtxt expr) did_expand $ mb_add_ctxt ctxt (locA loc') expanded_expr $
|
|
342
|
304
|
case mb_ret_ty of
|