@@ -388,7 +388,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
388
388
ImplPolarity :: Negative ( s) => ImplPolarity :: Negative ( self . lower_span ( * s) ) ,
389
389
} ;
390
390
hir:: ItemKind :: Impl ( self . arena . alloc ( hir:: Impl {
391
- safety : self . lower_safety ( * safety) ,
391
+ safety : self . lower_safety ( * safety, hir :: Safety :: Safe ) ,
392
392
polarity,
393
393
defaultness,
394
394
defaultness_span,
@@ -418,7 +418,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
418
418
let items = this. arena . alloc_from_iter (
419
419
items. iter ( ) . map ( |item| this. lower_trait_item_ref ( item) ) ,
420
420
) ;
421
- let safety = this. lower_safety ( * safety) ;
421
+ let safety = this. lower_safety ( * safety, hir :: Safety :: Safe ) ;
422
422
( safety, items, bounds)
423
423
} ,
424
424
) ;
@@ -660,13 +660,21 @@ impl<'hir> LoweringContext<'_, 'hir> {
660
660
this. lower_fn_params_to_names ( fdec) ,
661
661
)
662
662
} ) ;
663
+ let safety = self . lower_safety ( sig. header . safety , hir:: Safety :: Unsafe ) ;
663
664
664
- hir:: ForeignItemKind :: Fn ( fn_dec, fn_args, generics)
665
+ hir:: ForeignItemKind :: Fn ( fn_dec, fn_args, generics, safety )
665
666
}
666
- ForeignItemKind :: Static ( box StaticForeignItem { ty, mutability, expr : _ } ) => {
667
+ ForeignItemKind :: Static ( box StaticForeignItem {
668
+ ty,
669
+ mutability,
670
+ expr : _,
671
+ safety,
672
+ } ) => {
667
673
let ty = self
668
674
. 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)
670
678
}
671
679
ForeignItemKind :: TyAlias ( ..) => hir:: ForeignItemKind :: Type ,
672
680
ForeignItemKind :: MacCall ( _) => panic ! ( "macro shouldn't exist here" ) ,
@@ -1360,7 +1368,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1360
1368
hir:: IsAsync :: NotAsync
1361
1369
} ;
1362
1370
hir:: FnHeader {
1363
- safety : self . lower_safety ( h. safety ) ,
1371
+ safety : self . lower_safety ( h. safety , hir :: Safety :: Safe ) ,
1364
1372
asyncness : asyncness,
1365
1373
constness : self . lower_constness ( h. constness ) ,
1366
1374
abi : self . lower_extern ( h. ext ) ,
@@ -1410,10 +1418,11 @@ impl<'hir> LoweringContext<'_, 'hir> {
1410
1418
}
1411
1419
}
1412
1420
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 {
1414
1422
match s {
1415
1423
Safety :: Unsafe ( _) => hir:: Safety :: Unsafe ,
1416
- Safety :: Default => hir:: Safety :: Safe ,
1424
+ Safety :: Default => default,
1425
+ Safety :: Safe ( _) => hir:: Safety :: Safe ,
1417
1426
}
1418
1427
}
1419
1428
0 commit comments