@@ -1854,28 +1854,29 @@ impl<'a> LoweringContext<'a> {
18541854 P ( self . expr_call ( e. span , path, hir_vec ! [ sub_expr] ) )
18551855 } ;
18561856
1857+ // #[allow(unreachable_code)]
1858+ let attr = {
1859+ // allow(unreachable_code)
1860+ let allow = {
1861+ let allow_ident = self . str_to_ident ( "allow" ) ;
1862+ let uc_ident = self . str_to_ident ( "unreachable_code" ) ;
1863+ let uc_meta_item = attr:: mk_spanned_word_item ( e. span , uc_ident) ;
1864+ let uc_nested = NestedMetaItemKind :: MetaItem ( uc_meta_item) ;
1865+ let uc_spanned = respan ( e. span , uc_nested) ;
1866+ attr:: mk_spanned_list_item ( e. span , allow_ident, vec ! [ uc_spanned] )
1867+ } ;
1868+ attr:: mk_spanned_attr_outer ( e. span , attr:: mk_attr_id ( ) , allow)
1869+ } ;
1870+ let attrs = vec ! [ attr] ;
1871+
18571872 // Ok(val) => { #[allow(unreachable_code)] val }
18581873 let ok_arm = {
18591874 let val_ident = self . str_to_ident ( "val" ) ;
18601875 let val_pat = self . pat_ident ( e. span , val_ident) ;
1861- // #[allow(unreachable_code)]
1862- let val_attr = {
1863- // allow(unreachable_code)
1864- let allow = {
1865- let allow_ident = self . str_to_ident ( "allow" ) ;
1866- let uc_ident = self . str_to_ident ( "unreachable_code" ) ;
1867- let uc_meta_item = attr:: mk_spanned_word_item ( e. span , uc_ident) ;
1868- let uc_nested = NestedMetaItemKind :: MetaItem ( uc_meta_item) ;
1869- let uc_spanned = respan ( e. span , uc_nested) ;
1870- attr:: mk_spanned_list_item ( e. span , allow_ident, vec ! [ uc_spanned] )
1871- } ;
1872- attr:: mk_spanned_attr_outer ( e. span , attr:: mk_attr_id ( ) , allow)
1873- } ;
1874- let attrs = From :: from ( vec ! [ val_attr] ) ;
18751876 let val_expr = P ( self . expr_ident_with_attrs ( e. span ,
18761877 val_ident,
18771878 val_pat. id ,
1878- attrs) ) ;
1879+ From :: from ( attrs. clone ( ) ) ) ) ;
18791880 let ok_pat = self . pat_ok ( e. span , val_pat) ;
18801881
18811882 self . arm ( hir_vec ! [ ok_pat] , val_expr)
@@ -1901,7 +1902,7 @@ impl<'a> LoweringContext<'a> {
19011902
19021903 let ret_expr = P ( self . expr ( e. span ,
19031904 hir:: Expr_ :: ExprRet ( Some ( from_err_expr) ) ,
1904- ThinVec :: new ( ) ) ) ;
1905+ From :: from ( attrs ) ) ) ;
19051906
19061907 let err_pat = self . pat_err ( e. span , err_local) ;
19071908 self . arm ( hir_vec ! [ err_pat] , ret_expr)
0 commit comments