@@ -388,7 +388,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
388388 ImplPolarity :: Negative ( s) => ImplPolarity :: Negative ( self . lower_span ( * s) ) ,
389389 } ;
390390 hir:: ItemKind :: Impl ( self . arena . alloc ( hir:: Impl {
391- safety : self . lower_safety ( * safety) ,
391+ safety : self . lower_safety ( * safety, hir :: Safety :: Safe ) ,
392392 polarity,
393393 defaultness,
394394 defaultness_span,
@@ -418,7 +418,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
418418 let items = this. arena . alloc_from_iter (
419419 items. iter ( ) . map ( |item| this. lower_trait_item_ref ( item) ) ,
420420 ) ;
421- let safety = this. lower_safety ( * safety) ;
421+ let safety = this. lower_safety ( * safety, hir :: Safety :: Safe ) ;
422422 ( safety, items, bounds)
423423 } ,
424424 ) ;
@@ -660,13 +660,21 @@ impl<'hir> LoweringContext<'_, 'hir> {
660660 this. lower_fn_params_to_names ( fdec) ,
661661 )
662662 } ) ;
663+ let safety = self . lower_safety ( sig. header . safety , hir:: Safety :: Unsafe ) ;
663664
664- hir:: ForeignItemKind :: Fn ( fn_dec, fn_args, generics)
665+ hir:: ForeignItemKind :: Fn ( fn_dec, fn_args, generics, safety )
665666 }
666- ForeignItemKind :: Static ( box StaticForeignItem { ty, mutability, expr : _ } ) => {
667+ ForeignItemKind :: Static ( box StaticForeignItem {
668+ ty,
669+ mutability,
670+ expr : _,
671+ safety,
672+ } ) => {
667673 let ty = self
668674 . lower_ty ( ty, ImplTraitContext :: Disallowed ( ImplTraitPosition :: StaticTy ) ) ;
669- hir:: ForeignItemKind :: Static ( ty, * mutability)
675+ let safety = self . lower_safety ( * safety, hir:: Safety :: Unsafe ) ;
676+
677+ hir:: ForeignItemKind :: Static ( ty, * mutability, safety)
670678 }
671679 ForeignItemKind :: TyAlias ( ..) => hir:: ForeignItemKind :: Type ,
672680 ForeignItemKind :: MacCall ( _) => panic ! ( "macro shouldn't exist here" ) ,
@@ -1360,7 +1368,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
13601368 hir:: IsAsync :: NotAsync
13611369 } ;
13621370 hir:: FnHeader {
1363- safety : self . lower_safety ( h. safety ) ,
1371+ safety : self . lower_safety ( h. safety , hir :: Safety :: Safe ) ,
13641372 asyncness : asyncness,
13651373 constness : self . lower_constness ( h. constness ) ,
13661374 abi : self . lower_extern ( h. ext ) ,
@@ -1410,10 +1418,11 @@ impl<'hir> LoweringContext<'_, 'hir> {
14101418 }
14111419 }
14121420
1413- pub ( super ) fn lower_safety ( & mut self , s : Safety ) -> hir:: Safety {
1421+ pub ( super ) fn lower_safety ( & mut self , s : Safety , default : hir :: Safety ) -> hir:: Safety {
14141422 match s {
14151423 Safety :: Unsafe ( _) => hir:: Safety :: Unsafe ,
1416- Safety :: Default => hir:: Safety :: Safe ,
1424+ Safety :: Default => default,
1425+ Safety :: Safe ( _) => hir:: Safety :: Safe ,
14171426 }
14181427 }
14191428
0 commit comments