Lint on extern in item declaration position
This commit is contained in:
parent
8a3edb1d66
commit
920b5ee722
@ -310,7 +310,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
);
|
);
|
||||||
let sig = hir::FnSig {
|
let sig = hir::FnSig {
|
||||||
decl,
|
decl,
|
||||||
header: this.lower_fn_header(header),
|
header: this.lower_fn_header(header, fn_sig_span, id),
|
||||||
span: fn_sig_span,
|
span: fn_sig_span,
|
||||||
};
|
};
|
||||||
hir::ItemKind::Fn(sig, generics, body_id)
|
hir::ItemKind::Fn(sig, generics, body_id)
|
||||||
@ -806,13 +806,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
AssocItemKind::Fn(_, ref sig, ref generics, None) => {
|
AssocItemKind::Fn(_, ref sig, ref generics, None) => {
|
||||||
let names = self.lower_fn_params_to_names(&sig.decl);
|
let names = self.lower_fn_params_to_names(&sig.decl);
|
||||||
let (generics, sig) =
|
let (generics, sig) =
|
||||||
self.lower_method_sig(generics, sig, trait_item_def_id, false, None);
|
self.lower_method_sig(generics, sig, trait_item_def_id, false, None, i.id);
|
||||||
(generics, hir::TraitItemKind::Fn(sig, hir::TraitFn::Required(names)))
|
(generics, hir::TraitItemKind::Fn(sig, hir::TraitFn::Required(names)))
|
||||||
}
|
}
|
||||||
AssocItemKind::Fn(_, ref sig, ref generics, Some(ref body)) => {
|
AssocItemKind::Fn(_, ref sig, ref generics, Some(ref body)) => {
|
||||||
let body_id = self.lower_fn_body_block(i.span, &sig.decl, Some(body));
|
let body_id = self.lower_fn_body_block(i.span, &sig.decl, Some(body));
|
||||||
let (generics, sig) =
|
let (generics, sig) =
|
||||||
self.lower_method_sig(generics, sig, trait_item_def_id, false, None);
|
self.lower_method_sig(generics, sig, trait_item_def_id, false, None, i.id);
|
||||||
(generics, hir::TraitItemKind::Fn(sig, hir::TraitFn::Provided(body_id)))
|
(generics, hir::TraitItemKind::Fn(sig, hir::TraitFn::Provided(body_id)))
|
||||||
}
|
}
|
||||||
AssocItemKind::TyAlias(_, ref generics, ref bounds, ref default) => {
|
AssocItemKind::TyAlias(_, ref generics, ref bounds, ref default) => {
|
||||||
@ -882,6 +882,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
impl_item_def_id,
|
impl_item_def_id,
|
||||||
impl_trait_return_allow,
|
impl_trait_return_allow,
|
||||||
asyncness.opt_return_id(),
|
asyncness.opt_return_id(),
|
||||||
|
i.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
(generics, hir::ImplItemKind::Fn(sig, body_id))
|
(generics, hir::ImplItemKind::Fn(sig, body_id))
|
||||||
@ -1275,8 +1276,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
fn_def_id: LocalDefId,
|
fn_def_id: LocalDefId,
|
||||||
impl_trait_return_allow: bool,
|
impl_trait_return_allow: bool,
|
||||||
is_async: Option<NodeId>,
|
is_async: Option<NodeId>,
|
||||||
|
id: NodeId,
|
||||||
) -> (hir::Generics<'hir>, hir::FnSig<'hir>) {
|
) -> (hir::Generics<'hir>, hir::FnSig<'hir>) {
|
||||||
let header = self.lower_fn_header(sig.header);
|
let header = self.lower_fn_header(sig.header, sig.span, id);
|
||||||
let (generics, decl) = self.add_in_band_defs(
|
let (generics, decl) = self.add_in_band_defs(
|
||||||
generics,
|
generics,
|
||||||
fn_def_id,
|
fn_def_id,
|
||||||
@ -1293,12 +1295,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
(generics, hir::FnSig { header, decl, span: sig.span })
|
(generics, hir::FnSig { header, decl, span: sig.span })
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lower_fn_header(&mut self, h: FnHeader) -> hir::FnHeader {
|
fn lower_fn_header(&mut self, h: FnHeader, span: Span, id: NodeId) -> hir::FnHeader {
|
||||||
hir::FnHeader {
|
hir::FnHeader {
|
||||||
unsafety: self.lower_unsafety(h.unsafety),
|
unsafety: self.lower_unsafety(h.unsafety),
|
||||||
asyncness: self.lower_asyncness(h.asyncness),
|
asyncness: self.lower_asyncness(h.asyncness),
|
||||||
constness: self.lower_constness(h.constness),
|
constness: self.lower_constness(h.constness),
|
||||||
abi: self.lower_extern(h.ext),
|
abi: self.lower_extern(h.ext, span, id),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1309,10 +1311,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn lower_extern(&mut self, ext: Extern) -> abi::Abi {
|
pub(super) fn lower_extern(&mut self, ext: Extern, span: Span, id: NodeId) -> abi::Abi {
|
||||||
match ext {
|
match ext {
|
||||||
Extern::None => abi::Abi::Rust,
|
Extern::None => abi::Abi::Rust,
|
||||||
Extern::Implicit => abi::Abi::C,
|
Extern::Implicit => {
|
||||||
|
self.maybe_lint_missing_abi(span, id, abi::Abi::C);
|
||||||
|
abi::Abi::C
|
||||||
|
}
|
||||||
Extern::Explicit(abi) => self.lower_abi(abi),
|
Extern::Explicit(abi) => self.lower_abi(abi),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1290,6 +1290,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
}
|
}
|
||||||
TyKind::BareFn(ref f) => self.with_in_scope_lifetime_defs(&f.generic_params, |this| {
|
TyKind::BareFn(ref f) => self.with_in_scope_lifetime_defs(&f.generic_params, |this| {
|
||||||
this.with_anonymous_lifetime_mode(AnonymousLifetimeMode::PassThrough, |this| {
|
this.with_anonymous_lifetime_mode(AnonymousLifetimeMode::PassThrough, |this| {
|
||||||
|
let span = this.sess.source_map().next_point(t.span.shrink_to_lo());
|
||||||
hir::TyKind::BareFn(this.arena.alloc(hir::BareFnTy {
|
hir::TyKind::BareFn(this.arena.alloc(hir::BareFnTy {
|
||||||
generic_params: this.lower_generic_params(
|
generic_params: this.lower_generic_params(
|
||||||
&f.generic_params,
|
&f.generic_params,
|
||||||
@ -1297,7 +1298,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||||||
ImplTraitContext::disallowed(),
|
ImplTraitContext::disallowed(),
|
||||||
),
|
),
|
||||||
unsafety: this.lower_unsafety(f.unsafety),
|
unsafety: this.lower_unsafety(f.unsafety),
|
||||||
abi: this.lower_extern(f.ext),
|
abi: this.lower_extern(f.ext, span, t.id),
|
||||||
decl: this.lower_fn_decl(&f.decl, None, false, None),
|
decl: this.lower_fn_decl(&f.decl, None, false, None),
|
||||||
param_names: this.lower_fn_params_to_names(&f.decl),
|
param_names: this.lower_fn_params_to_names(&f.decl),
|
||||||
}))
|
}))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user