mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 21:23:56 +00:00
Auto merge of #11504 - Alexendoo:type-lints-closures, r=xFrednet
Ignore closures for some type lints Fixes #11417 `hir_ty_to_ty` is used in a couple of the `!is_local` lints, which doesn't play nicely inside bodies changelog: none
This commit is contained in:
commit
2c629cc137
4 changed files with 21 additions and 5 deletions
|
@ -315,7 +315,7 @@ impl<'tcx> LateLintPass<'tcx> for Types {
|
|||
fn check_fn(
|
||||
&mut self,
|
||||
cx: &LateContext<'_>,
|
||||
_: FnKind<'_>,
|
||||
fn_kind: FnKind<'_>,
|
||||
decl: &FnDecl<'_>,
|
||||
_: &Body<'_>,
|
||||
_: Span,
|
||||
|
@ -340,6 +340,7 @@ impl<'tcx> LateLintPass<'tcx> for Types {
|
|||
CheckTyContext {
|
||||
is_in_trait_impl,
|
||||
is_exported,
|
||||
in_body: matches!(fn_kind, FnKind::Closure),
|
||||
..CheckTyContext::default()
|
||||
},
|
||||
);
|
||||
|
@ -427,7 +428,7 @@ impl<'tcx> LateLintPass<'tcx> for Types {
|
|||
cx,
|
||||
ty,
|
||||
CheckTyContext {
|
||||
is_local: true,
|
||||
in_body: true,
|
||||
..CheckTyContext::default()
|
||||
},
|
||||
);
|
||||
|
@ -481,7 +482,7 @@ impl Types {
|
|||
}
|
||||
|
||||
match hir_ty.kind {
|
||||
TyKind::Path(ref qpath) if !context.is_local => {
|
||||
TyKind::Path(ref qpath) if !context.in_body => {
|
||||
let hir_id = hir_ty.hir_id;
|
||||
let res = cx.qpath_res(qpath, hir_id);
|
||||
if let Some(def_id) = res.opt_def_id() {
|
||||
|
@ -581,8 +582,8 @@ impl Types {
|
|||
#[derive(Clone, Copy, Default)]
|
||||
struct CheckTyContext {
|
||||
is_in_trait_impl: bool,
|
||||
/// `true` for types on local variables.
|
||||
is_local: bool,
|
||||
/// `true` for types on local variables and in closure signatures.
|
||||
in_body: bool,
|
||||
/// `true` for types that are part of the public API.
|
||||
is_exported: bool,
|
||||
is_nested_call: bool,
|
||||
|
|
|
@ -159,4 +159,9 @@ mod box_fat_ptr {
|
|||
//~| NOTE: `Box<Box<DynSized>>` is already on the heap, `Rc<Box<Box<DynSized>>>` makes
|
||||
}
|
||||
|
||||
// https://github.com/rust-lang/rust-clippy/issues/11417
|
||||
fn type_in_closure() {
|
||||
let _ = |_: &mut Box<Box<dyn ToString>>| {};
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
@ -49,4 +49,9 @@ mod inner_mod {
|
|||
}
|
||||
}
|
||||
|
||||
// https://github.com/rust-lang/rust-clippy/issues/11417
|
||||
fn in_closure() {
|
||||
let _ = |_: Vec<Box<dyn ToString>>| {};
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
@ -49,4 +49,9 @@ mod inner_mod {
|
|||
}
|
||||
}
|
||||
|
||||
// https://github.com/rust-lang/rust-clippy/issues/11417
|
||||
fn in_closure() {
|
||||
let _ = |_: Vec<Box<dyn ToString>>| {};
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
Loading…
Reference in a new issue