From 3d9b3a8575ef3cb557fd847b941000df3b2db670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Sun, 21 Mar 2021 12:05:08 +0100 Subject: remove more redundant clones (clippy::redundant_clone()) --- crates/hir_def/src/resolver.rs | 2 +- crates/hir_expand/src/db.rs | 2 +- crates/hir_ty/src/lower.rs | 3 +-- crates/syntax/src/algo.rs | 4 ++-- crates/syntax/src/ast/make.rs | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/hir_def/src/resolver.rs b/crates/hir_def/src/resolver.rs index 4a2d1c087..04ea9c5d7 100644 --- a/crates/hir_def/src/resolver.rs +++ b/crates/hir_def/src/resolver.rs @@ -472,7 +472,7 @@ impl Scope { } Scope::ExprScope(scope) => { if let Some((label, name)) = scope.expr_scopes.label(scope.scope_id) { - f(name.clone(), ScopeDef::Label(label)) + f(name, ScopeDef::Label(label)) } scope.expr_scopes.entries(scope.scope_id).iter().for_each(|e| { f(e.name().clone(), ScopeDef::Local(e.pat())); diff --git a/crates/hir_expand/src/db.rs b/crates/hir_expand/src/db.rs index 2748e25cf..fc73e435b 100644 --- a/crates/hir_expand/src/db.rs +++ b/crates/hir_expand/src/db.rs @@ -173,7 +173,7 @@ fn macro_arg_text(db: &dyn AstDatabase, id: MacroCallId) -> Option { }; let loc = db.lookup_intern_macro(id); let arg = loc.kind.arg(db)?; - Some(arg.green().to_owned()) + Some(arg.green()) } fn macro_arg(db: &dyn AstDatabase, id: MacroCallId) -> Option> { diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs index cbbb535e5..c914a3b8e 100644 --- a/crates/hir_ty/src/lower.rs +++ b/crates/hir_ty/src/lower.rs @@ -946,8 +946,7 @@ pub(crate) fn trait_environment_query( let substs = Substitution::type_params(db, trait_id); let trait_ref = TraitRef { trait_id: to_chalk_trait_id(trait_id), substitution: substs }; let pred = WhereClause::Implemented(trait_ref); - let program_clause: chalk_ir::ProgramClause = - pred.clone().to_chalk(db).cast(&Interner); + let program_clause: chalk_ir::ProgramClause = pred.to_chalk(db).cast(&Interner); clauses.push(program_clause.into_from_env_clause(&Interner)); } diff --git a/crates/syntax/src/algo.rs b/crates/syntax/src/algo.rs index 82ebf9037..a153a9e1c 100644 --- a/crates/syntax/src/algo.rs +++ b/crates/syntax/src/algo.rs @@ -567,7 +567,7 @@ impl<'a> SyntaxRewriter<'a> { fn element_to_green(element: SyntaxElement) -> NodeOrToken { match element { - NodeOrToken::Node(it) => NodeOrToken::Node(it.green().to_owned()), + NodeOrToken::Node(it) => NodeOrToken::Node(it.green()), NodeOrToken::Token(it) => NodeOrToken::Token(it.green().to_owned()), } } @@ -625,7 +625,7 @@ fn position_of_child(parent: &SyntaxNode, child: SyntaxElement) -> usize { fn to_green_element(element: SyntaxElement) -> NodeOrToken { match element { - NodeOrToken::Node(it) => it.green().to_owned().into(), + NodeOrToken::Node(it) => it.green().into(), NodeOrToken::Token(it) => it.green().to_owned().into(), } } diff --git a/crates/syntax/src/ast/make.rs b/crates/syntax/src/ast/make.rs index 810c8d4c8..7049affd9 100644 --- a/crates/syntax/src/ast/make.rs +++ b/crates/syntax/src/ast/make.rs @@ -532,7 +532,7 @@ fn ast_from_text(text: &str) -> N { } fn unroot(n: SyntaxNode) -> SyntaxNode { - SyntaxNode::new_root(n.green().to_owned()) + SyntaxNode::new_root(n.green()) } pub mod tokens { -- cgit v1.2.3 From 8a671168576b9b552a22be285646fc293a80d8c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Sun, 21 Mar 2021 12:38:21 +0100 Subject: use strip_prefix() instead of starts_with and slicing (clippy::manual_strip) --- crates/hir_expand/src/name.rs | 5 ++--- crates/syntax/src/ast/edit.rs | 3 +-- xtask/src/codegen/gen_assists_docs.rs | 4 ++-- xtask/src/codegen/gen_parser_tests.rs | 10 ++++------ 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/crates/hir_expand/src/name.rs b/crates/hir_expand/src/name.rs index 43de9edd6..0aeea48d5 100644 --- a/crates/hir_expand/src/name.rs +++ b/crates/hir_expand/src/name.rs @@ -48,9 +48,8 @@ impl Name { /// Resolve a name from the text of token. fn resolve(raw_text: &str) -> Name { - let raw_start = "r#"; - if raw_text.starts_with(raw_start) { - Name::new_text(SmolStr::new(&raw_text[raw_start.len()..])) + if let Some(text) = raw_text.strip_prefix("r#") { + Name::new_text(SmolStr::new(text)) } else { Name::new_text(raw_text.into()) } diff --git a/crates/syntax/src/ast/edit.rs b/crates/syntax/src/ast/edit.rs index 64fac13a7..80be8b79c 100644 --- a/crates/syntax/src/ast/edit.rs +++ b/crates/syntax/src/ast/edit.rs @@ -333,8 +333,7 @@ impl ast::Use { .and_then(ast::Whitespace::cast); if let Some(next_ws) = next_ws { let ws_text = next_ws.syntax().text(); - if ws_text.starts_with('\n') { - let rest = &ws_text[1..]; + if let Some(rest) = ws_text.strip_prefix('\n') { if rest.is_empty() { res.delete(next_ws.syntax()) } else { diff --git a/xtask/src/codegen/gen_assists_docs.rs b/xtask/src/codegen/gen_assists_docs.rs index 158680993..c91716409 100644 --- a/xtask/src/codegen/gen_assists_docs.rs +++ b/xtask/src/codegen/gen_assists_docs.rs @@ -154,8 +154,8 @@ fn hide_hash_comments(text: &str) -> String { fn reveal_hash_comments(text: &str) -> String { text.split('\n') // want final newline .map(|it| { - if it.starts_with("# ") { - &it[2..] + if let Some(stripped) = it.strip_prefix("# ") { + stripped } else if it == "#" { "" } else { diff --git a/xtask/src/codegen/gen_parser_tests.rs b/xtask/src/codegen/gen_parser_tests.rs index 096590653..2fecb9b5b 100644 --- a/xtask/src/codegen/gen_parser_tests.rs +++ b/xtask/src/codegen/gen_parser_tests.rs @@ -60,12 +60,10 @@ fn collect_tests(s: &str) -> Vec { let mut res = Vec::new(); for comment_block in extract_comment_blocks(s) { let first_line = &comment_block[0]; - let (name, ok) = if first_line.starts_with("test ") { - let name = first_line["test ".len()..].to_string(); - (name, true) - } else if first_line.starts_with("test_err ") { - let name = first_line["test_err ".len()..].to_string(); - (name, false) + let (name, ok) = if let Some(name) = first_line.strip_prefix("test ") { + (name.to_string(), true) + } else if let Some(name) = first_line.strip_prefix("test_err ") { + (name.to_string(), false) } else { continue; }; -- cgit v1.2.3 From bd407a9882250cbbb0897faba08e7d5ef80a4862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Sun, 21 Mar 2021 12:49:40 +0100 Subject: xtask: remove redundant lifetime (clippy::extra_unused_lifetimes) --- xtask/src/metrics.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xtask/src/metrics.rs b/xtask/src/metrics.rs index 97395738b..b0b76b8aa 100644 --- a/xtask/src/metrics.rs +++ b/xtask/src/metrics.rs @@ -167,7 +167,7 @@ impl Host { return Ok(Host { os, cpu, mem }); - fn read_field<'a>(path: &str, field: &str) -> Result { + fn read_field(path: &str, field: &str) -> Result { let text = read_file(path)?; let line = text -- cgit v1.2.3 From ae7e55c1dd801c60092205ec8890179e10a47814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Sun, 21 Mar 2021 13:13:34 +0100 Subject: clippy::complexity simplifications related to Iterators --- crates/hir/src/lib.rs | 2 +- crates/hir_def/src/attr.rs | 2 +- crates/hir_ty/src/infer/pat.rs | 2 +- crates/ide/src/extend_selection.rs | 7 +- .../src/handlers/convert_comment_block.rs | 5 +- .../ide_assists/src/handlers/expand_glob_import.rs | 19 ++--- crates/ide_assists/src/handlers/reorder_impl.rs | 2 +- crates/ide_completion/src/patterns.rs | 2 +- crates/ide_ssr/src/parsing.rs | 2 +- crates/mbe/src/tests/expand.rs | 3 +- crates/project_model/src/build_data.rs | 91 ++++++++++------------ crates/syntax/src/ast/edit.rs | 3 +- 12 files changed, 62 insertions(+), 78 deletions(-) diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index e34be7e42..44eaeffb9 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -213,7 +213,7 @@ impl Crate { 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() + "/") } diff --git a/crates/hir_def/src/attr.rs b/crates/hir_def/src/attr.rs index 2c10f46d8..52a2bce9b 100644 --- a/crates/hir_def/src/attr.rs +++ b/crates/hir_def/src/attr.rs @@ -638,7 +638,7 @@ fn collect_attrs( owner: &dyn ast::AttrsOwner, ) -> impl Iterator> { 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 diff --git a/crates/hir_ty/src/infer/pat.rs b/crates/hir_ty/src/infer/pat.rs index befa0d69b..ec491648f 100644 --- a/crates/hir_ty/src/infer/pat.rs +++ b/crates/hir_ty/src/infer/pat.rs @@ -38,7 +38,7 @@ impl<'a> InferenceContext<'a> { 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(); diff --git a/crates/ide/src/extend_selection.rs b/crates/ide/src/extend_selection.rs index e187243cb..5201ce587 100644 --- a/crates/ide/src/extend_selection.rs +++ b/crates/ide/src/extend_selection.rs @@ -263,11 +263,10 @@ fn extend_list_item(node: &SyntaxNode) -> Option { ) -> Option { 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) } diff --git a/crates/ide_assists/src/handlers/convert_comment_block.rs b/crates/ide_assists/src/handlers/convert_comment_block.rs index cdc45fc42..9dc3ee28f 100644 --- a/crates/ide_assists/src/handlers/convert_comment_block.rs +++ b/crates/ide_assists/src/handlers/convert_comment_block.rs @@ -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 { .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 { .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(); diff --git a/crates/ide_assists/src/handlers/expand_glob_import.rs b/crates/ide_assists/src/handlers/expand_glob_import.rs index 83aa11d52..98389e4f7 100644 --- a/crates/ide_assists/src/handlers/expand_glob_import.rs +++ b/crates/ide_assists/src/handlers/expand_glob_import.rs @@ -136,18 +136,13 @@ impl 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; } } diff --git a/crates/ide_assists/src/handlers/reorder_impl.rs b/crates/ide_assists/src/handlers/reorder_impl.rs index edf4b0bfe..f976e73ad 100644 --- a/crates/ide_assists/src/handlers/reorder_impl.rs +++ b/crates/ide_assists/src/handlers/reorder_impl.rs @@ -95,7 +95,7 @@ fn compute_method_ranks(path: &ast::Path, ctx: &AssistContext) -> Option None, }) .enumerate() - .map(|(idx, func)| ((func.name(ctx.db()).to_string(), idx))) + .map(|(idx, func)| (func.name(ctx.db()).to_string(), idx)) .collect(), ) } diff --git a/crates/ide_completion/src/patterns.rs b/crates/ide_completion/src/patterns.rs index cf5ef07b7..d82564381 100644 --- a/crates/ide_completion/src/patterns.rs +++ b/crates/ide_completion/src/patterns.rs @@ -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() { diff --git a/crates/ide_ssr/src/parsing.rs b/crates/ide_ssr/src/parsing.rs index 5ff25cb6d..5e757e701 100644 --- a/crates/ide_ssr/src/parsing.rs +++ b/crates/ide_ssr/src/parsing.rs @@ -67,7 +67,7 @@ impl ParsedRule { ) -> Result, 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(), diff --git a/crates/mbe/src/tests/expand.rs b/crates/mbe/src/tests/expand.rs index 2cce62781..8951f3813 100644 --- a/crates/mbe/src/tests/expand.rs +++ b/crates/mbe/src/tests/expand.rs @@ -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] diff --git a/crates/project_model/src/build_data.rs b/crates/project_model/src/build_data.rs index 728a258ea..f7050be4e 100644 --- a/crates/project_model/src/build_data.rs +++ b/crates/project_model/src/build_data.rs @@ -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::() { - 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::() { + 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(_) => {} + _ => {} } } diff --git a/crates/syntax/src/ast/edit.rs b/crates/syntax/src/ast/edit.rs index 80be8b79c..365de4463 100644 --- a/crates/syntax/src/ast/edit.rs +++ b/crates/syntax/src/ast/edit.rs @@ -461,8 +461,7 @@ impl 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 -- cgit v1.2.3 From 202b51bc7b6999900e06ec2cfb8d72fe9aa4af29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Sun, 21 Mar 2021 15:33:18 +0100 Subject: a lot of clippy::style fixes --- crates/base_db/src/input.rs | 2 +- crates/cfg/src/dnf.rs | 8 ++-- crates/mbe/src/expander/matcher.rs | 9 ++--- crates/mbe/src/lib.rs | 2 +- crates/mbe/src/parser.rs | 2 +- crates/mbe/src/syntax_bridge.rs | 2 +- crates/rust-analyzer/src/main_loop.rs | 7 +--- crates/rust-analyzer/src/reload.rs | 2 +- .../rust-analyzer/tests/rust-analyzer/support.rs | 2 +- crates/syntax/src/ast/edit.rs | 2 +- crates/syntax/src/ast/expr_ext.rs | 44 +++++++++++----------- crates/syntax/src/ast/node_ext.rs | 19 ++-------- crates/syntax/src/ast/token_ext.rs | 5 +-- crates/syntax/src/fuzz.rs | 2 +- crates/syntax/src/validation.rs | 4 +- crates/tt/src/lib.rs | 3 +- xtask/src/codegen/gen_syntax.rs | 2 +- xtask/src/main.rs | 2 +- xtask/src/tidy.rs | 2 +- 19 files changed, 52 insertions(+), 69 deletions(-) diff --git a/crates/base_db/src/input.rs b/crates/base_db/src/input.rs index d0def2181..e9e8dfc2e 100644 --- a/crates/base_db/src/input.rs +++ b/crates/base_db/src/input.rs @@ -410,7 +410,7 @@ impl CrateId { impl CrateData { fn add_dep(&mut self, name: CrateName, crate_id: CrateId) { - self.dependencies.push(Dependency { name, crate_id }) + self.dependencies.push(Dependency { crate_id, name }) } } diff --git a/crates/cfg/src/dnf.rs b/crates/cfg/src/dnf.rs index 30f4bcdf7..75ded9aa1 100644 --- a/crates/cfg/src/dnf.rs +++ b/crates/cfg/src/dnf.rs @@ -255,9 +255,9 @@ impl Builder { fn make_dnf(expr: CfgExpr) -> CfgExpr { match expr { CfgExpr::Invalid | CfgExpr::Atom(_) | CfgExpr::Not(_) => expr, - CfgExpr::Any(e) => CfgExpr::Any(e.into_iter().map(|expr| make_dnf(expr)).collect()), + CfgExpr::Any(e) => CfgExpr::Any(e.into_iter().map(make_dnf).collect()), CfgExpr::All(e) => { - let e = e.into_iter().map(|expr| make_nnf(expr)).collect::>(); + let e = e.into_iter().map(make_nnf).collect::>(); CfgExpr::Any(distribute_conj(&e)) } @@ -300,8 +300,8 @@ fn distribute_conj(conj: &[CfgExpr]) -> Vec { fn make_nnf(expr: CfgExpr) -> CfgExpr { match expr { CfgExpr::Invalid | CfgExpr::Atom(_) => expr, - CfgExpr::Any(expr) => CfgExpr::Any(expr.into_iter().map(|expr| make_nnf(expr)).collect()), - CfgExpr::All(expr) => CfgExpr::All(expr.into_iter().map(|expr| make_nnf(expr)).collect()), + CfgExpr::Any(expr) => CfgExpr::Any(expr.into_iter().map(make_nnf).collect()), + CfgExpr::All(expr) => CfgExpr::All(expr.into_iter().map(make_nnf).collect()), CfgExpr::Not(operand) => match *operand { CfgExpr::Invalid | CfgExpr::Atom(_) => CfgExpr::Not(operand.clone()), // Original negated expr CfgExpr::Not(expr) => { diff --git a/crates/mbe/src/expander/matcher.rs b/crates/mbe/src/expander/matcher.rs index 1682b21b0..75d2f2eed 100644 --- a/crates/mbe/src/expander/matcher.rs +++ b/crates/mbe/src/expander/matcher.rs @@ -304,7 +304,7 @@ impl BindingsBuilder { link_nodes: &'a Vec>>, nodes: &mut Vec<&'a Rc>, ) { - link_nodes.into_iter().for_each(|it| match it { + link_nodes.iter().for_each(|it| match it { LinkNode::Node(it) => nodes.push(it), LinkNode::Parent { idx, len } => self.collect_nodes_ref(*idx, *len, nodes), }); @@ -713,10 +713,9 @@ fn match_meta_var(kind: &str, input: &mut TtIter) -> ExpandResult input.expect_tt().map(Some).map_err(|()| err!()), - "lifetime" => input - .expect_lifetime() - .map(|tt| Some(tt)) - .map_err(|()| err!("expected lifetime")), + "lifetime" => { + input.expect_lifetime().map(Some).map_err(|()| err!("expected lifetime")) + } "literal" => { let neg = input.eat_char('-'); input diff --git a/crates/mbe/src/lib.rs b/crates/mbe/src/lib.rs index 33b85e23d..e74f8cf3f 100644 --- a/crates/mbe/src/lib.rs +++ b/crates/mbe/src/lib.rs @@ -356,6 +356,6 @@ impl ExpandResult { impl From> for ExpandResult { fn from(result: Result) -> Self { - result.map_or_else(|e| Self::only_err(e), |it| Self::ok(it)) + result.map_or_else(Self::only_err, Self::ok) } } diff --git a/crates/mbe/src/parser.rs b/crates/mbe/src/parser.rs index c88387653..61b2a4955 100644 --- a/crates/mbe/src/parser.rs +++ b/crates/mbe/src/parser.rs @@ -57,7 +57,7 @@ impl<'a> Iterator for OpDelimitedIter<'a> { fn size_hint(&self) -> (usize, Option) { let len = self.inner.len() + if self.delimited.is_some() { 2 } else { 0 }; - let remain = len.checked_sub(self.idx).unwrap_or(0); + let remain = len.saturating_sub(self.idx); (remain, Some(remain)) } } diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index 8bba3d3d5..9d433b3b0 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs @@ -362,7 +362,7 @@ trait TokenConvertor { if let Some((kind, closed)) = delim { let mut subtree = tt::Subtree::default(); let (id, idx) = self.id_alloc().open_delim(range); - subtree.delimiter = Some(tt::Delimiter { kind, id }); + subtree.delimiter = Some(tt::Delimiter { id, kind }); while self.peek().map(|it| it.kind() != closed).unwrap_or(false) { self.collect_leaf(&mut subtree.token_trees); diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 984790d35..c63a0eaea 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -242,11 +242,8 @@ impl GlobalState { } BuildDataProgress::End(collector) => { self.fetch_build_data_completed(); - let workspaces = (*self.workspaces) - .clone() - .into_iter() - .map(|it| Ok(it)) - .collect(); + let workspaces = + (*self.workspaces).clone().into_iter().map(Ok).collect(); self.switch_workspaces(workspaces, Some(collector)); (Some(Progress::End), None) } diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs index aa8504c3d..76fdbcddd 100644 --- a/crates/rust-analyzer/src/reload.rs +++ b/crates/rust-analyzer/src/reload.rs @@ -237,7 +237,7 @@ impl GlobalState { None => None, }; - if &*self.workspaces == &workspaces && self.workspace_build_data == workspace_build_data { + if *self.workspaces == workspaces && self.workspace_build_data == workspace_build_data { return; } diff --git a/crates/rust-analyzer/tests/rust-analyzer/support.rs b/crates/rust-analyzer/tests/rust-analyzer/support.rs index cd0c91481..95bf26f01 100644 --- a/crates/rust-analyzer/tests/rust-analyzer/support.rs +++ b/crates/rust-analyzer/tests/rust-analyzer/support.rs @@ -54,7 +54,7 @@ impl<'a> Project<'a> { } pub(crate) fn server(self) -> Server { - let tmp_dir = self.tmp_dir.unwrap_or_else(|| TestDir::new()); + let tmp_dir = self.tmp_dir.unwrap_or_else(TestDir::new); static INIT: Once = Once::new(); INIT.call_once(|| { env_logger::builder().is_test(true).parse_env("RA_LOG").try_init().unwrap(); diff --git a/crates/syntax/src/ast/edit.rs b/crates/syntax/src/ast/edit.rs index 365de4463..347862b8a 100644 --- a/crates/syntax/src/ast/edit.rs +++ b/crates/syntax/src/ast/edit.rs @@ -595,7 +595,7 @@ impl IndentLevel { pub fn from_node(node: &SyntaxNode) -> IndentLevel { match node.first_token() { Some(it) => Self::from_token(&it), - None => return IndentLevel(0), + None => IndentLevel(0), } } diff --git a/crates/syntax/src/ast/expr_ext.rs b/crates/syntax/src/ast/expr_ext.rs index 636ce166d..6317d84ba 100644 --- a/crates/syntax/src/ast/expr_ext.rs +++ b/crates/syntax/src/ast/expr_ext.rs @@ -11,16 +11,16 @@ impl ast::AttrsOwner for ast::Expr {} impl ast::Expr { pub fn is_block_like(&self) -> bool { - match self { + matches!( + self, ast::Expr::IfExpr(_) - | ast::Expr::LoopExpr(_) - | ast::Expr::ForExpr(_) - | ast::Expr::WhileExpr(_) - | ast::Expr::BlockExpr(_) - | ast::Expr::MatchExpr(_) - | ast::Expr::EffectExpr(_) => true, - _ => false, - } + | ast::Expr::LoopExpr(_) + | ast::Expr::ForExpr(_) + | ast::Expr::WhileExpr(_) + | ast::Expr::BlockExpr(_) + | ast::Expr::MatchExpr(_) + | ast::Expr::EffectExpr(_) + ) } pub fn name_ref(&self) -> Option { @@ -151,20 +151,20 @@ pub enum BinOp { impl BinOp { pub fn is_assignment(self) -> bool { - match self { + matches!( + self, BinOp::Assignment - | BinOp::AddAssign - | BinOp::DivAssign - | BinOp::MulAssign - | BinOp::RemAssign - | BinOp::ShrAssign - | BinOp::ShlAssign - | BinOp::SubAssign - | BinOp::BitOrAssign - | BinOp::BitAndAssign - | BinOp::BitXorAssign => true, - _ => false, - } + | BinOp::AddAssign + | BinOp::DivAssign + | BinOp::MulAssign + | BinOp::RemAssign + | BinOp::ShrAssign + | BinOp::ShlAssign + | BinOp::SubAssign + | BinOp::BitOrAssign + | BinOp::BitAndAssign + | BinOp::BitXorAssign + ) } } diff --git a/crates/syntax/src/ast/node_ext.rs b/crates/syntax/src/ast/node_ext.rs index 42a7b9c2a..bdf907a21 100644 --- a/crates/syntax/src/ast/node_ext.rs +++ b/crates/syntax/src/ast/node_ext.rs @@ -58,10 +58,7 @@ impl From for Macro { impl AstNode for Macro { fn can_cast(kind: SyntaxKind) -> bool { - match kind { - SyntaxKind::MACRO_RULES | SyntaxKind::MACRO_DEF => true, - _ => false, - } + matches!(kind, SyntaxKind::MACRO_RULES | SyntaxKind::MACRO_DEF) } fn cast(syntax: SyntaxNode) -> Option { let res = match syntax.kind() { @@ -462,10 +459,8 @@ impl ast::FieldExpr { pub fn field_access(&self) -> Option { if let Some(nr) = self.name_ref() { Some(FieldKind::Name(nr)) - } else if let Some(tok) = self.index_token() { - Some(FieldKind::Index(tok)) } else { - None + self.index_token().map(FieldKind::Index) } } } @@ -482,16 +477,10 @@ impl ast::SlicePat { let prefix = args .peeking_take_while(|p| match p { ast::Pat::RestPat(_) => false, - ast::Pat::IdentPat(bp) => match bp.pat() { - Some(ast::Pat::RestPat(_)) => false, - _ => true, - }, + ast::Pat::IdentPat(bp) => !matches!(bp.pat(), Some(ast::Pat::RestPat(_))), ast::Pat::RefPat(rp) => match rp.pat() { Some(ast::Pat::RestPat(_)) => false, - Some(ast::Pat::IdentPat(bp)) => match bp.pat() { - Some(ast::Pat::RestPat(_)) => false, - _ => true, - }, + Some(ast::Pat::IdentPat(bp)) => !matches!(bp.pat(), Some(ast::Pat::RestPat(_))), _ => true, }, _ => true, diff --git a/crates/syntax/src/ast/token_ext.rs b/crates/syntax/src/ast/token_ext.rs index 6c242d126..090282d28 100644 --- a/crates/syntax/src/ast/token_ext.rs +++ b/crates/syntax/src/ast/token_ext.rs @@ -494,9 +494,8 @@ pub trait HasFormatSpecifier: AstToken { } _ => { while let Some((_, Ok(next_char))) = chars.peek() { - match next_char { - '{' => break, - _ => {} + if next_char == &'{' { + break; } chars.next(); } diff --git a/crates/syntax/src/fuzz.rs b/crates/syntax/src/fuzz.rs index fbb97aa27..aa84239d2 100644 --- a/crates/syntax/src/fuzz.rs +++ b/crates/syntax/src/fuzz.rs @@ -43,7 +43,7 @@ impl CheckReparse { TextRange::at(delete_start.try_into().unwrap(), delete_len.try_into().unwrap()); let edited_text = format!("{}{}{}", &text[..delete_start], &insert, &text[delete_start + delete_len..]); - let edit = Indel { delete, insert }; + let edit = Indel { insert, delete }; Some(CheckReparse { text, edit, edited_text }) } diff --git a/crates/syntax/src/validation.rs b/crates/syntax/src/validation.rs index 3e216fb70..bbe802174 100644 --- a/crates/syntax/src/validation.rs +++ b/crates/syntax/src/validation.rs @@ -297,7 +297,7 @@ fn validate_path_keywords(segment: ast::PathSegment, errors: &mut Vec bool { @@ -314,7 +314,7 @@ fn validate_path_keywords(segment: ast::PathSegment, errors: &mut Vec { let s = match it { diff --git a/xtask/src/codegen/gen_syntax.rs b/xtask/src/codegen/gen_syntax.rs index 80f26e8f5..ba4b24848 100644 --- a/xtask/src/codegen/gen_syntax.rs +++ b/xtask/src/codegen/gen_syntax.rs @@ -707,7 +707,7 @@ fn extract_struct_trait(node: &mut AstNodeSrc, trait_name: &str, methods: &[&str let mut to_remove = Vec::new(); for (i, field) in node.fields.iter().enumerate() { let method_name = field.method_name().to_string(); - if methods.iter().any(|&it| it == &method_name) { + if methods.iter().any(|&it| it == method_name) { to_remove.push(i); } } diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 915aae71a..960927fc0 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -37,7 +37,7 @@ fn main() -> Result<()> { match flags.subcommand { flags::XtaskCmd::Help(_) => { println!("{}", flags::Xtask::HELP); - return Ok(()); + Ok(()) } flags::XtaskCmd::Install(cmd) => cmd.run(), flags::XtaskCmd::FuzzTests(_) => run_fuzzer(), diff --git a/xtask/src/tidy.rs b/xtask/src/tidy.rs index 1352d1218..50d9efccd 100644 --- a/xtask/src/tidy.rs +++ b/xtask/src/tidy.rs @@ -193,7 +193,7 @@ https://github.blog/2015-06-08-how-to-undo-almost-anything-with-git/#redo-after- } } -fn deny_clippy(path: &PathBuf, text: &String) { +fn deny_clippy(path: &Path, text: &str) { let ignore = &[ // The documentation in string literals may contain anything for its own purposes "ide_completion/src/generated_lint_completions.rs", -- cgit v1.2.3