@@ -562,8 +562,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
562562 )
563563 }
564564
565- /// Desugar `try { <stmts>; <expr> }` into `{ <stmts>; ::std::ops::Try::from_ok (<expr>) }`,
566- /// `try { <stmts>; }` into `{ <stmts>; ::std::ops::Try::from_ok (()) }`
565+ /// Desugar `try { <stmts>; <expr> }` into `{ <stmts>; ::std::ops::Try::from_output (<expr>) }`,
566+ /// `try { <stmts>; }` into `{ <stmts>; ::std::ops::Try::from_output (()) }`
567567 /// and save the block id to use it as a break target for desugaring of the `?` operator.
568568 fn lower_expr_try_block ( & mut self , body : & Block ) -> hir:: ExprKind < ' hir > {
569569 self . with_catch_scope ( body. id , |this| {
@@ -592,9 +592,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
592592 let ok_wrapped_span =
593593 this. mark_span_with_reason ( DesugaringKind :: TryBlock , tail_expr. span , None ) ;
594594
595- // `::std::ops::Try::from_ok ($tail_expr)`
595+ // `::std::ops::Try::from_output ($tail_expr)`
596596 block. expr = Some ( this. wrap_in_try_constructor (
597- hir:: LangItem :: TryFromOk ,
597+ hir:: LangItem :: TryTraitFromOutput ,
598598 try_span,
599599 tail_expr,
600600 ok_wrapped_span,
@@ -1896,14 +1896,14 @@ impl<'hir> LoweringContext<'_, 'hir> {
18961896 self . allow_try_trait . clone ( ) ,
18971897 ) ;
18981898
1899- // `Try::into_result (<expr>)`
1899+ // `Try::branch (<expr>)`
19001900 let scrutinee = {
19011901 // expand <expr>
19021902 let sub_expr = self . lower_expr_mut ( sub_expr) ;
19031903
19041904 self . expr_call_lang_item_fn (
19051905 unstable_span,
1906- hir:: LangItem :: TryIntoResult ,
1906+ hir:: LangItem :: TryTraitBranch ,
19071907 arena_vec ! [ self ; sub_expr] ,
19081908 )
19091909 } ;
@@ -1921,8 +1921,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
19211921 } ;
19221922 let attrs = vec ! [ attr] ;
19231923
1924- // `Ok (val) => #[allow(unreachable_code)] val,`
1925- let ok_arm = {
1924+ // `ControlFlow::Continue (val) => #[allow(unreachable_code)] val,`
1925+ let continue_arm = {
19261926 let val_ident = Ident :: with_dummy_span ( sym:: val) ;
19271927 let ( val_pat, val_pat_nid) = self . pat_ident ( span, val_ident) ;
19281928 let val_expr = self . arena . alloc ( self . expr_ident_with_attrs (
@@ -1931,27 +1931,21 @@ impl<'hir> LoweringContext<'_, 'hir> {
19311931 val_pat_nid,
19321932 ThinVec :: from ( attrs. clone ( ) ) ,
19331933 ) ) ;
1934- let ok_pat = self . pat_ok ( span , val_pat) ;
1935- self . arm ( ok_pat , val_expr)
1934+ let continue_pat = self . pat_cf_continue ( unstable_span , val_pat) ;
1935+ self . arm ( continue_pat , val_expr)
19361936 } ;
19371937
1938- // `Err(err) => #[allow(unreachable_code)]
1939- // return Try::from_error(From::from(err)),`
1940- let err_arm = {
1941- let err_ident = Ident :: with_dummy_span ( sym:: err) ;
1942- let ( err_local, err_local_nid) = self . pat_ident ( try_span, err_ident) ;
1943- let from_expr = {
1944- let err_expr = self . expr_ident_mut ( try_span, err_ident, err_local_nid) ;
1945- self . expr_call_lang_item_fn (
1946- try_span,
1947- hir:: LangItem :: FromFrom ,
1948- arena_vec ! [ self ; err_expr] ,
1949- )
1950- } ;
1951- let from_err_expr = self . wrap_in_try_constructor (
1952- hir:: LangItem :: TryFromError ,
1953- unstable_span,
1954- from_expr,
1938+ // `ControlFlow::Break(residual) =>
1939+ // #[allow(unreachable_code)]
1940+ // return Try::from_residual(residual),`
1941+ let break_arm = {
1942+ let residual_ident = Ident :: with_dummy_span ( sym:: residual) ;
1943+ let ( residual_local, residual_local_nid) = self . pat_ident ( try_span, residual_ident) ;
1944+ let residual_expr = self . expr_ident_mut ( try_span, residual_ident, residual_local_nid) ;
1945+ let from_residual_expr = self . wrap_in_try_constructor (
1946+ hir:: LangItem :: TryTraitFromResidual ,
1947+ try_span,
1948+ self . arena . alloc ( residual_expr) ,
19551949 unstable_span,
19561950 ) ;
19571951 let thin_attrs = ThinVec :: from ( attrs) ;
@@ -1962,25 +1956,25 @@ impl<'hir> LoweringContext<'_, 'hir> {
19621956 try_span,
19631957 hir:: ExprKind :: Break (
19641958 hir:: Destination { label : None , target_id } ,
1965- Some ( from_err_expr ) ,
1959+ Some ( from_residual_expr ) ,
19661960 ) ,
19671961 thin_attrs,
19681962 ) )
19691963 } else {
19701964 self . arena . alloc ( self . expr (
19711965 try_span,
1972- hir:: ExprKind :: Ret ( Some ( from_err_expr ) ) ,
1966+ hir:: ExprKind :: Ret ( Some ( from_residual_expr ) ) ,
19731967 thin_attrs,
19741968 ) )
19751969 } ;
19761970
1977- let err_pat = self . pat_err ( try_span, err_local ) ;
1978- self . arm ( err_pat , ret_expr)
1971+ let break_pat = self . pat_cf_break ( try_span, residual_local ) ;
1972+ self . arm ( break_pat , ret_expr)
19791973 } ;
19801974
19811975 hir:: ExprKind :: Match (
19821976 scrutinee,
1983- arena_vec ! [ self ; err_arm , ok_arm ] ,
1977+ arena_vec ! [ self ; break_arm , continue_arm ] ,
19841978 hir:: MatchSource :: TryDesugar ,
19851979 )
19861980 }
0 commit comments