]> git.lizzy.rs Git - rust.git/commitdiff
clippy::complexity simplifications related to Iterators
authorMatthias Krüger <matthias.krueger@famsik.de>
Sun, 21 Mar 2021 12:13:34 +0000 (13:13 +0100)
committerMatthias Krüger <matthias.krueger@famsik.de>
Sun, 21 Mar 2021 12:13:34 +0000 (13:13 +0100)
12 files changed:
crates/hir/src/lib.rs
crates/hir_def/src/attr.rs
crates/hir_ty/src/infer/pat.rs
crates/ide/src/extend_selection.rs
crates/ide_assists/src/handlers/convert_comment_block.rs
crates/ide_assists/src/handlers/expand_glob_import.rs
crates/ide_assists/src/handlers/reorder_impl.rs
crates/ide_completion/src/patterns.rs
crates/ide_ssr/src/parsing.rs
crates/mbe/src/tests/expand.rs
crates/project_model/src/build_data.rs
crates/syntax/src/ast/edit.rs

index e34be7e42f1999af1830a6f78ef3b3fcfa1cf065..44eaeffb9e6f10cbb62ff554c53a74f17217fc39 100644 (file)
@@ -213,7 +213,7 @@ pub fn get_html_root_url(self: &Crate, db: &dyn HirDatabase) -> Option<String> {
                 Some(TokenTree::Leaf(Leaf::Literal(Literal{ref text, ..}))) => Some(text),
                 _ => None
             }
-        }).flat_map(|t| t).next();
+        }).flatten().next();
 
         doc_url.map(|s| s.trim_matches('"').trim_end_matches('/').to_owned() + "/")
     }
index 2c10f46d8a1b7ed238cfd41b742fca08a971fcfb..52a2bce9b10aad3a18892e1863cbe4b20e9af1ed 100644 (file)
@@ -638,7 +638,7 @@ fn collect_attrs(
     owner: &dyn ast::AttrsOwner,
 ) -> impl Iterator<Item = Either<ast::Attr, ast::Comment>> {
     let (inner_attrs, inner_docs) = inner_attributes(owner.syntax())
-        .map_or((None, None), |(attrs, docs)| ((Some(attrs), Some(docs))));
+        .map_or((None, None), |(attrs, docs)| (Some(attrs), Some(docs)));
 
     let outer_attrs = owner.attrs().filter(|attr| attr.excl_token().is_none());
     let attrs = outer_attrs
index befa0d69b079872458987236f3dfc18b4cc58641..ec491648fe9a33ab1c01e03c992206fdd933d726 100644 (file)
@@ -38,7 +38,7 @@ fn infer_tuple_struct_pat(
         let field_tys = def.map(|it| self.db.field_types(it)).unwrap_or_default();
         let (pre, post) = match ellipsis {
             Some(idx) => subpats.split_at(idx),
-            None => (&subpats[..], &[][..]),
+            None => (subpats, &[][..]),
         };
         let post_idx_offset = field_tys.iter().count() - post.len();
 
index e187243cbf9b38b16d9a5d9456eed88b8cc611b9..5201ce587a8570ee7ef851246680cabf10266bc6 100644 (file)
@@ -263,11 +263,10 @@ fn nearby_delimiter(
     ) -> Option<SyntaxToken> {
         node.siblings_with_tokens(dir)
             .skip(1)
-            .skip_while(|node| match node {
-                NodeOrToken::Node(_) => false,
-                NodeOrToken::Token(it) => is_single_line_ws(it),
+            .find(|node| match node {
+                NodeOrToken::Node(_) => true,
+                NodeOrToken::Token(it) => !is_single_line_ws(it),
             })
-            .next()
             .and_then(|it| it.into_token())
             .filter(|node| node.kind() == delimiter_kind)
     }
index cdc45fc42c286feb2817a570ff8f539fc0007a67..9dc3ee28fd168b93aba734d1d6db7c2db499426d 100644 (file)
@@ -1,5 +1,4 @@
 use itertools::Itertools;
-use std::convert::identity;
 use syntax::{
     ast::{
         self,
@@ -140,7 +139,7 @@ fn relevant_line_comments(comment: &ast::Comment) -> Vec<Comment> {
         .filter(|s| !skippable(s))
         .map(|not| not.into_token().and_then(Comment::cast).filter(same_prefix))
         .take_while(|opt_com| opt_com.is_some())
-        .filter_map(identity)
+        .flatten()
         .skip(1); // skip the first element so we don't duplicate it in next_comments
 
     let next_comments = comment
@@ -149,7 +148,7 @@ fn relevant_line_comments(comment: &ast::Comment) -> Vec<Comment> {
         .filter(|s| !skippable(s))
         .map(|not| not.into_token().and_then(Comment::cast).filter(same_prefix))
         .take_while(|opt_com| opt_com.is_some())
-        .filter_map(identity);
+        .flatten();
 
     let mut comments: Vec<_> = prev_comments.collect();
     comments.reverse();
index 83aa11d52c733622ea7df82055ba2d54610b4dca..98389e4f7b1a990533b7137de3d691fbcb38d765 100644 (file)
@@ -136,18 +136,13 @@ fn used_refs(&self, ctx: &AssistContext) -> Refs {
                 .into_iter()
                 .filter(|r| {
                     if let Def::ModuleDef(ModuleDef::Trait(tr)) = r.def {
-                        if tr
-                            .items(ctx.db())
-                            .into_iter()
-                            .find(|ai| {
-                                if let AssocItem::Function(f) = *ai {
-                                    Def::ModuleDef(ModuleDef::Function(f)).is_referenced_in(ctx)
-                                } else {
-                                    false
-                                }
-                            })
-                            .is_some()
-                        {
+                        if tr.items(ctx.db()).into_iter().any(|ai| {
+                            if let AssocItem::Function(f) = ai {
+                                Def::ModuleDef(ModuleDef::Function(f)).is_referenced_in(ctx)
+                            } else {
+                                false
+                            }
+                        }) {
                             return true;
                         }
                     }
index edf4b0bfeb5c0a82755cf6e556edd0e3e1796b27..f976e73adc30b9d95c545104e7ec10e7068a8969 100644 (file)
@@ -95,7 +95,7 @@ fn compute_method_ranks(path: &ast::Path, ctx: &AssistContext) -> Option<FxHashM
                 _ => None,
             })
             .enumerate()
-            .map(|(idx, func)| ((func.name(ctx.db()).to_string(), idx)))
+            .map(|(idx, func)| (func.name(ctx.db()).to_string(), idx))
             .collect(),
     )
 }
index cf5ef07b726fa8e987a27884e5028844fd96ec2f..d82564381d19def76985b2d002f73419a945eb1a 100644 (file)
@@ -71,7 +71,7 @@ fn test_has_block_expr_parent() {
 }
 
 pub(crate) fn has_bind_pat_parent(element: SyntaxElement) -> bool {
-    element.ancestors().find(|it| it.kind() == IDENT_PAT).is_some()
+    element.ancestors().any(|it| it.kind() == IDENT_PAT)
 }
 #[test]
 fn test_has_bind_pat_parent() {
index 5ff25cb6d75c7ce22f6844cae6dca1b27dbfa579..5e757e70191a1142254db6eb83ba303a08336693 100644 (file)
@@ -67,7 +67,7 @@ fn new(
     ) -> Result<Vec<ParsedRule>, SsrError> {
         let raw_pattern = pattern.as_rust_code();
         let raw_template = template.map(|t| t.as_rust_code());
-        let raw_template = raw_template.as_ref().map(|s| s.as_str());
+        let raw_template = raw_template.as_deref();
         let mut builder = RuleBuilder {
             placeholders_by_stand_in: pattern.placeholders_by_stand_in(),
             rules: Vec::new(),
index 2cce62781a41f3aee6dfef8e3679822aa492dd89..8951f3813759497656d9469f70a0a5452516185b 100644 (file)
@@ -1225,8 +1225,7 @@ macro_rules! m {
     )
     .expand_statements(r#"m!(C("0"))"#)
     .descendants()
-    .find(|token| token.kind() == ERROR)
-    .is_some());
+    .any(|token| token.kind() == ERROR));
 }
 
 #[test]
index 728a258eaeae96ed4b4b6ed8237c1ea03553d883..f7050be4e7f0c5fe5b6d103ed132b577335054f9 100644 (file)
@@ -137,60 +137,53 @@ fn collect_from_workspace(
     let stdout = BufReader::new(child_stdout);
 
     let mut res = BuildDataMap::default();
-    for message in cargo_metadata::Message::parse_stream(stdout) {
-        if let Ok(message) = message {
-            match message {
-                Message::BuildScriptExecuted(BuildScript {
-                    package_id,
-                    out_dir,
-                    cfgs,
-                    env,
-                    ..
-                }) => {
-                    let cfgs = {
-                        let mut acc = Vec::new();
-                        for cfg in cfgs {
-                            match cfg.parse::<CfgFlag>() {
-                                Ok(it) => acc.push(it),
-                                Err(err) => {
-                                    anyhow::bail!("invalid cfg from cargo-metadata: {}", err)
-                                }
-                            };
-                        }
-                        acc
-                    };
-                    let res = res.entry(package_id.repr.clone()).or_default();
-                    // cargo_metadata crate returns default (empty) path for
-                    // older cargos, which is not absolute, so work around that.
-                    if !out_dir.as_str().is_empty() {
-                        let out_dir = AbsPathBuf::assert(PathBuf::from(out_dir.into_os_string()));
-                        res.out_dir = Some(out_dir);
-                        res.cfgs = cfgs;
+    for message in cargo_metadata::Message::parse_stream(stdout).flatten() {
+        match message {
+            Message::BuildScriptExecuted(BuildScript {
+                package_id, out_dir, cfgs, env, ..
+            }) => {
+                let cfgs = {
+                    let mut acc = Vec::new();
+                    for cfg in cfgs {
+                        match cfg.parse::<CfgFlag>() {
+                            Ok(it) => acc.push(it),
+                            Err(err) => {
+                                anyhow::bail!("invalid cfg from cargo-metadata: {}", err)
+                            }
+                        };
                     }
-
-                    res.envs = env;
+                    acc
+                };
+                let res = res.entry(package_id.repr.clone()).or_default();
+                // cargo_metadata crate returns default (empty) path for
+                // older cargos, which is not absolute, so work around that.
+                if !out_dir.as_str().is_empty() {
+                    let out_dir = AbsPathBuf::assert(PathBuf::from(out_dir.into_os_string()));
+                    res.out_dir = Some(out_dir);
+                    res.cfgs = cfgs;
                 }
-                Message::CompilerArtifact(message) => {
-                    progress(format!("metadata {}", message.target.name));
-
-                    if message.target.kind.contains(&"proc-macro".to_string()) {
-                        let package_id = message.package_id;
-                        // Skip rmeta file
-                        if let Some(filename) = message.filenames.iter().find(|name| is_dylib(name))
-                        {
-                            let filename = AbsPathBuf::assert(PathBuf::from(&filename));
-                            let res = res.entry(package_id.repr.clone()).or_default();
-                            res.proc_macro_dylib_path = Some(filename);
-                        }
+
+                res.envs = env;
+            }
+            Message::CompilerArtifact(message) => {
+                progress(format!("metadata {}", message.target.name));
+
+                if message.target.kind.contains(&"proc-macro".to_string()) {
+                    let package_id = message.package_id;
+                    // Skip rmeta file
+                    if let Some(filename) = message.filenames.iter().find(|name| is_dylib(name)) {
+                        let filename = AbsPathBuf::assert(PathBuf::from(&filename));
+                        let res = res.entry(package_id.repr.clone()).or_default();
+                        res.proc_macro_dylib_path = Some(filename);
                     }
                 }
-                Message::CompilerMessage(message) => {
-                    progress(message.target.name.clone());
-                }
-                Message::BuildFinished(_) => {}
-                Message::TextLine(_) => {}
-                _ => {}
             }
+            Message::CompilerMessage(message) => {
+                progress(message.target.name.clone());
+            }
+            Message::BuildFinished(_) => {}
+            Message::TextLine(_) => {}
+            _ => {}
         }
     }
 
index 80be8b79c6e25b539689fcacefde1b797eac0f16..365de4463163c3b2d59b553b07764013bdd67bf8 100644 (file)
@@ -461,8 +461,7 @@ fn remove_arm(&self, arm: &ast::MatchArm) -> ast::MatchArmList {
         let end = if let Some(comma) = start
             .siblings_with_tokens(Direction::Next)
             .skip(1)
-            .skip_while(|it| it.kind().is_trivia())
-            .next()
+            .find(|it| !it.kind().is_trivia())
             .filter(|it| it.kind() == T![,])
         {
             comma