@@ -462,8 +462,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
462
462
)
463
463
}
464
464
465
- /// Desugar `try { <stmts>; <expr> }` into `{ <stmts>; ::std::ops::Try::from_ok (<expr>) }`,
466
- /// `try { <stmts>; }` into `{ <stmts>; ::std::ops::Try::from_ok (()) }`
465
+ /// Desugar `try { <stmts>; <expr> }` into `{ <stmts>; ::std::ops::Try::continue_with (<expr>) }`,
466
+ /// `try { <stmts>; }` into `{ <stmts>; ::std::ops::Try::continue_with (()) }`
467
467
/// and save the block id to use it as a break target for desugaring of the `?` operator.
468
468
fn lower_expr_try_block ( & mut self , body : & Block ) -> hir:: ExprKind < ' hir > {
469
469
self . with_catch_scope ( body. id , |this| {
@@ -492,9 +492,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
492
492
let ok_wrapped_span =
493
493
this. mark_span_with_reason ( DesugaringKind :: TryBlock , tail_expr. span , None ) ;
494
494
495
- // `::std::ops::Try::from_ok ($tail_expr)`
495
+ // `::std::ops::Try::continue_with ($tail_expr)`
496
496
block. expr = Some ( this. wrap_in_try_constructor (
497
- hir:: LangItem :: TryFromOk ,
497
+ hir:: LangItem :: TryContinueWith ,
498
498
try_span,
499
499
tail_expr,
500
500
ok_wrapped_span,
@@ -1793,14 +1793,14 @@ impl<'hir> LoweringContext<'_, 'hir> {
1793
1793
self . allow_try_trait . clone ( ) ,
1794
1794
) ;
1795
1795
1796
- // `Try::into_result (<expr>)`
1796
+ // `Try::branch (<expr>)`
1797
1797
let scrutinee = {
1798
1798
// expand <expr>
1799
1799
let sub_expr = self . lower_expr_mut ( sub_expr) ;
1800
1800
1801
1801
self . expr_call_lang_item_fn (
1802
1802
unstable_span,
1803
- hir:: LangItem :: TryIntoResult ,
1803
+ hir:: LangItem :: TryBranch ,
1804
1804
arena_vec ! [ self ; sub_expr] ,
1805
1805
)
1806
1806
} ;
@@ -1818,8 +1818,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
1818
1818
} ;
1819
1819
let attrs = vec ! [ attr] ;
1820
1820
1821
- // `Ok (val) => #[allow(unreachable_code)] val,`
1822
- let ok_arm = {
1821
+ // `ControlFlow::Continue (val) => #[allow(unreachable_code)] val,`
1822
+ let continue_arm = {
1823
1823
let val_ident = Ident :: with_dummy_span ( sym:: val) ;
1824
1824
let ( val_pat, val_pat_nid) = self . pat_ident ( span, val_ident) ;
1825
1825
let val_expr = self . arena . alloc ( self . expr_ident_with_attrs (
@@ -1828,27 +1828,21 @@ impl<'hir> LoweringContext<'_, 'hir> {
1828
1828
val_pat_nid,
1829
1829
ThinVec :: from ( attrs. clone ( ) ) ,
1830
1830
) ) ;
1831
- let ok_pat = self . pat_ok ( span , val_pat) ;
1832
- self . arm ( ok_pat , val_expr)
1831
+ let continue_pat = self . pat_cf_continue ( unstable_span , val_pat) ;
1832
+ self . arm ( continue_pat , val_expr)
1833
1833
} ;
1834
1834
1835
- // `Err (err) => #[allow(unreachable_code)]
1835
+ // `ControlFlow::Break (err) => #[allow(unreachable_code)]
1836
1836
// return Try::from_error(From::from(err)),`
1837
- let err_arm = {
1838
- let err_ident = Ident :: with_dummy_span ( sym:: err) ;
1839
- let ( err_local, err_local_nid) = self . pat_ident ( try_span, err_ident) ;
1840
- let from_expr = {
1841
- let err_expr = self . expr_ident_mut ( try_span, err_ident, err_local_nid) ;
1842
- self . expr_call_lang_item_fn (
1843
- try_span,
1844
- hir:: LangItem :: FromFrom ,
1845
- arena_vec ! [ self ; err_expr] ,
1846
- )
1847
- } ;
1848
- let from_err_expr = self . wrap_in_try_constructor (
1849
- hir:: LangItem :: TryFromError ,
1837
+ let break_arm = {
1838
+ let holder_ident = Ident :: with_dummy_span ( sym:: holder) ;
1839
+ let ( holder_local, holder_local_nid) = self . pat_ident ( try_span, holder_ident) ;
1840
+ let holder_expr =
1841
+ self . arena . alloc ( self . expr_ident_mut ( try_span, holder_ident, holder_local_nid) ) ;
1842
+ let from_holder_expr = self . wrap_in_try_constructor (
1843
+ hir:: LangItem :: FromHolder ,
1850
1844
unstable_span,
1851
- from_expr ,
1845
+ holder_expr ,
1852
1846
unstable_span,
1853
1847
) ;
1854
1848
let thin_attrs = ThinVec :: from ( attrs) ;
@@ -1859,25 +1853,25 @@ impl<'hir> LoweringContext<'_, 'hir> {
1859
1853
try_span,
1860
1854
hir:: ExprKind :: Break (
1861
1855
hir:: Destination { label : None , target_id } ,
1862
- Some ( from_err_expr ) ,
1856
+ Some ( from_holder_expr ) ,
1863
1857
) ,
1864
1858
thin_attrs,
1865
1859
) )
1866
1860
} else {
1867
1861
self . arena . alloc ( self . expr (
1868
1862
try_span,
1869
- hir:: ExprKind :: Ret ( Some ( from_err_expr ) ) ,
1863
+ hir:: ExprKind :: Ret ( Some ( from_holder_expr ) ) ,
1870
1864
thin_attrs,
1871
1865
) )
1872
1866
} ;
1873
1867
1874
- let err_pat = self . pat_err ( try_span , err_local ) ;
1875
- self . arm ( err_pat , ret_expr)
1868
+ let break_pat = self . pat_cf_break ( unstable_span , holder_local ) ;
1869
+ self . arm ( break_pat , ret_expr)
1876
1870
} ;
1877
1871
1878
1872
hir:: ExprKind :: Match (
1879
1873
scrutinee,
1880
- arena_vec ! [ self ; err_arm , ok_arm ] ,
1874
+ arena_vec ! [ self ; break_arm , continue_arm ] ,
1881
1875
hir:: MatchSource :: TryDesugar ,
1882
1876
)
1883
1877
}
0 commit comments