@@ -310,7 +310,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
310
310
) ;
311
311
let sig = hir:: FnSig {
312
312
decl,
313
- header : this. lower_fn_header ( header) ,
313
+ header : this. lower_fn_header ( header, fn_sig_span , id ) ,
314
314
span : fn_sig_span,
315
315
} ;
316
316
hir:: ItemKind :: Fn ( sig, generics, body_id)
@@ -806,13 +806,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
806
806
AssocItemKind :: Fn ( _, ref sig, ref generics, None ) => {
807
807
let names = self . lower_fn_params_to_names ( & sig. decl ) ;
808
808
let ( generics, sig) =
809
- self . lower_method_sig ( generics, sig, trait_item_def_id, false , None ) ;
809
+ self . lower_method_sig ( generics, sig, trait_item_def_id, false , None , i . id ) ;
810
810
( generics, hir:: TraitItemKind :: Fn ( sig, hir:: TraitFn :: Required ( names) ) )
811
811
}
812
812
AssocItemKind :: Fn ( _, ref sig, ref generics, Some ( ref body) ) => {
813
813
let body_id = self . lower_fn_body_block ( i. span , & sig. decl , Some ( body) ) ;
814
814
let ( generics, sig) =
815
- self . lower_method_sig ( generics, sig, trait_item_def_id, false , None ) ;
815
+ self . lower_method_sig ( generics, sig, trait_item_def_id, false , None , i . id ) ;
816
816
( generics, hir:: TraitItemKind :: Fn ( sig, hir:: TraitFn :: Provided ( body_id) ) )
817
817
}
818
818
AssocItemKind :: TyAlias ( _, ref generics, ref bounds, ref default) => {
@@ -882,6 +882,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
882
882
impl_item_def_id,
883
883
impl_trait_return_allow,
884
884
asyncness. opt_return_id ( ) ,
885
+ i. id ,
885
886
) ;
886
887
887
888
( generics, hir:: ImplItemKind :: Fn ( sig, body_id) )
@@ -1275,8 +1276,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
1275
1276
fn_def_id : LocalDefId ,
1276
1277
impl_trait_return_allow : bool ,
1277
1278
is_async : Option < NodeId > ,
1279
+ id : NodeId ,
1278
1280
) -> ( hir:: Generics < ' hir > , hir:: FnSig < ' hir > ) {
1279
- let header = self . lower_fn_header ( sig. header ) ;
1281
+ let header = self . lower_fn_header ( sig. header , sig . span , id ) ;
1280
1282
let ( generics, decl) = self . add_in_band_defs (
1281
1283
generics,
1282
1284
fn_def_id,
@@ -1293,12 +1295,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
1293
1295
( generics, hir:: FnSig { header, decl, span : sig. span } )
1294
1296
}
1295
1297
1296
- fn lower_fn_header ( & mut self , h : FnHeader ) -> hir:: FnHeader {
1298
+ fn lower_fn_header ( & mut self , h : FnHeader , span : Span , id : NodeId ) -> hir:: FnHeader {
1297
1299
hir:: FnHeader {
1298
1300
unsafety : self . lower_unsafety ( h. unsafety ) ,
1299
1301
asyncness : self . lower_asyncness ( h. asyncness ) ,
1300
1302
constness : self . lower_constness ( h. constness ) ,
1301
- abi : self . lower_extern ( h. ext ) ,
1303
+ abi : self . lower_extern ( h. ext , span , id ) ,
1302
1304
}
1303
1305
}
1304
1306
@@ -1309,10 +1311,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
1309
1311
} )
1310
1312
}
1311
1313
1312
- pub ( super ) fn lower_extern ( & mut self , ext : Extern ) -> abi:: Abi {
1314
+ pub ( super ) fn lower_extern ( & mut self , ext : Extern , span : Span , id : NodeId ) -> abi:: Abi {
1313
1315
match ext {
1314
1316
Extern :: None => abi:: Abi :: Rust ,
1315
- Extern :: Implicit => abi:: Abi :: C ,
1317
+ Extern :: Implicit => {
1318
+ self . maybe_lint_missing_abi ( span, id, abi:: Abi :: C ) ;
1319
+ abi:: Abi :: C
1320
+ }
1316
1321
Extern :: Explicit ( abi) => self . lower_abi ( abi) ,
1317
1322
}
1318
1323
}
0 commit comments