@@ -4685,6 +4685,14 @@ impl<'a> LoweringContext<'a> {
4685
4685
Symbol :: intern( "try_trait" )
4686
4686
] . into ( ) ) ,
4687
4687
) ;
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
+ ) ;
4688
4696
4689
4697
// `Try::into_result(<expr>)`
4690
4698
let discr = {
@@ -4729,14 +4737,14 @@ impl<'a> LoweringContext<'a> {
4729
4737
// return Try::from_error(From::from(err)),`
4730
4738
let err_arm = {
4731
4739
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) ;
4733
4741
let from_expr = {
4734
4742
let path = & [ "convert" , "From" , "from" ] ;
4735
4743
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) ;
4738
4746
4739
- self . expr_call ( e . span , from, hir_vec ! [ err_expr] )
4747
+ self . expr_call ( try_span , from, hir_vec ! [ err_expr] )
4740
4748
} ;
4741
4749
let from_err_expr =
4742
4750
self . wrap_in_try_constructor ( "from_error" , from_expr, unstable_span) ;
@@ -4745,7 +4753,7 @@ impl<'a> LoweringContext<'a> {
4745
4753
let ret_expr = if let Some ( catch_node) = catch_scope {
4746
4754
let target_id = Ok ( self . lower_node_id ( catch_node) . hir_id ) ;
4747
4755
P ( self . expr (
4748
- e . span ,
4756
+ try_span ,
4749
4757
hir:: ExprKind :: Break (
4750
4758
hir:: Destination {
4751
4759
label : None ,
@@ -4756,10 +4764,10 @@ impl<'a> LoweringContext<'a> {
4756
4764
thin_attrs,
4757
4765
) )
4758
4766
} 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) )
4760
4768
} ;
4761
4769
4762
- let err_pat = self . pat_err ( e . span , err_local) ;
4770
+ let err_pat = self . pat_err ( try_span , err_local) ;
4763
4771
self . arm ( hir_vec ! [ err_pat] , ret_expr)
4764
4772
} ;
4765
4773
0 commit comments