@@ -4685,6 +4685,14 @@ impl<'a> LoweringContext<'a> {
46854685 Symbol :: intern( "try_trait" )
46864686 ] . into ( ) ) ,
46874687 ) ;
4688+ let try_span = self . sess . source_map ( ) . end_point ( e. span ) ;
4689+ let try_span = self . mark_span_with_reason (
4690+ CompilerDesugaringKind :: QuestionMark ,
4691+ try_span,
4692+ Some ( vec ! [
4693+ Symbol :: intern( "try_trait" )
4694+ ] . into ( ) ) ,
4695+ ) ;
46884696
46894697 // `Try::into_result(<expr>)`
46904698 let discr = {
@@ -4729,14 +4737,14 @@ impl<'a> LoweringContext<'a> {
47294737 // return Try::from_error(From::from(err)),`
47304738 let err_arm = {
47314739 let err_ident = self . str_to_ident ( "err" ) ;
4732- let ( err_local, err_local_nid) = self . pat_ident ( e . span , err_ident) ;
4740+ let ( err_local, err_local_nid) = self . pat_ident ( try_span , err_ident) ;
47334741 let from_expr = {
47344742 let path = & [ "convert" , "From" , "from" ] ;
47354743 let from = P ( self . expr_std_path (
4736- e . span , path, None , ThinVec :: new ( ) ) ) ;
4737- let err_expr = self . expr_ident ( e . span , err_ident, err_local_nid) ;
4744+ try_span , path, None , ThinVec :: new ( ) ) ) ;
4745+ let err_expr = self . expr_ident ( try_span , err_ident, err_local_nid) ;
47384746
4739- self . expr_call ( e . span , from, hir_vec ! [ err_expr] )
4747+ self . expr_call ( try_span , from, hir_vec ! [ err_expr] )
47404748 } ;
47414749 let from_err_expr =
47424750 self . wrap_in_try_constructor ( "from_error" , from_expr, unstable_span) ;
@@ -4745,7 +4753,7 @@ impl<'a> LoweringContext<'a> {
47454753 let ret_expr = if let Some ( catch_node) = catch_scope {
47464754 let target_id = Ok ( self . lower_node_id ( catch_node) . hir_id ) ;
47474755 P ( self . expr (
4748- e . span ,
4756+ try_span ,
47494757 hir:: ExprKind :: Break (
47504758 hir:: Destination {
47514759 label : None ,
@@ -4756,10 +4764,10 @@ impl<'a> LoweringContext<'a> {
47564764 thin_attrs,
47574765 ) )
47584766 } else {
4759- P ( self . expr ( e . span , hir:: ExprKind :: Ret ( Some ( from_err_expr) ) , thin_attrs) )
4767+ P ( self . expr ( try_span , hir:: ExprKind :: Ret ( Some ( from_err_expr) ) , thin_attrs) )
47604768 } ;
47614769
4762- let err_pat = self . pat_err ( e . span , err_local) ;
4770+ let err_pat = self . pat_err ( try_span , err_local) ;
47634771 self . arm ( hir_vec ! [ err_pat] , ret_expr)
47644772 } ;
47654773
0 commit comments