Fix 'cyclomatic complexity' warning

This commit is contained in:
Stanislav Tkach 2017-08-23 17:13:51 +03:00
parent 45ff467c31
commit 81538f6ff3

View file

@ -212,16 +212,10 @@ fn check_ty(cx: &LateContext, ast_ty: &hir::Ty, is_local: bool) {
let PathParameters::AngleBracketedParameters(ref ab_data) = bx.parameters, let PathParameters::AngleBracketedParameters(ref ab_data) = bx.parameters,
let [ref inner] = *ab_data.types let [ref inner] = *ab_data.types
], { ], {
if_let_chain! {[ if is_any_trait(inner) {
let TyTraitObject(ref traits, _) = inner.node,
traits.len() >= 1,
// Only Send/Sync can be used as additional traits, so it is enough to
// check only the first trait.
match_path_old(&traits[0].trait_ref.path, &paths::ANY_TRAIT)
], {
// Ignore `Box<Any>` types, see #1884 for details. // Ignore `Box<Any>` types, see #1884 for details.
return; return;
}} }
let ltopt = if lt.is_elided() { let ltopt = if lt.is_elided() {
"".to_owned() "".to_owned()
@ -260,6 +254,21 @@ fn check_ty(cx: &LateContext, ast_ty: &hir::Ty, is_local: bool) {
} }
} }
// Returns true if given type is `Any` trait.
fn is_any_trait(t: &hir::Ty) -> bool {
if_let_chain! {[
let TyTraitObject(ref traits, _) = t.node,
traits.len() >= 1,
// Only Send/Sync can be used as additional traits, so it is enough to
// check only the first trait.
match_path_old(&traits[0].trait_ref.path, &paths::ANY_TRAIT)
], {
return true;
}}
false
}
#[allow(missing_copy_implementations)] #[allow(missing_copy_implementations)]
pub struct LetPass; pub struct LetPass;