Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/context/analysis.rs')
| -rw-r--r-- | crates/ide-completion/src/context/analysis.rs | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs index 7da6648365..0264931db1 100644 --- a/crates/ide-completion/src/context/analysis.rs +++ b/crates/ide-completion/src/context/analysis.rs @@ -866,9 +866,7 @@ fn classify_name_ref( TypeLocation::TypeAscription(TypeAscriptionTarget::Const(original.body())) }, ast::RetType(it) => { - if it.thin_arrow_token().is_none() { - return None; - } + it.thin_arrow_token()?; let parent = match ast::Fn::cast(parent.parent()?) { Some(it) => it.param_list(), None => ast::ClosureExpr::cast(parent.parent()?)?.param_list(), @@ -888,15 +886,11 @@ fn classify_name_ref( })) }, ast::Param(it) => { - if it.colon_token().is_none() { - return None; - } + it.colon_token()?; TypeLocation::TypeAscription(TypeAscriptionTarget::FnParam(find_opt_node_in_file(original_file, it.pat()))) }, ast::LetStmt(it) => { - if it.colon_token().is_none() { - return None; - } + it.colon_token()?; TypeLocation::TypeAscription(TypeAscriptionTarget::Let(find_opt_node_in_file(original_file, it.pat()))) }, ast::Impl(it) => { @@ -1312,7 +1306,7 @@ fn pattern_context_for( .parent() .and_then(ast::MatchExpr::cast) .and_then(|match_expr| { - let expr_opt = find_opt_node_in_file(&original_file, match_expr.expr()); + let expr_opt = find_opt_node_in_file(original_file, match_expr.expr()); expr_opt.and_then(|expr| { sema.type_of_expr(&expr)? @@ -1321,24 +1315,20 @@ fn pattern_context_for( .find_map(|ty| match ty.as_adt() { Some(hir::Adt::Enum(e)) => Some(e), _ => None, - }).and_then(|enum_| { - Some(enum_.variants(sema.db)) - }) + }).map(|enum_| enum_.variants(sema.db)) }) - }).and_then(|variants| { - Some(variants.iter().filter_map(|variant| { + }).map(|variants| variants.iter().filter_map(|variant| { let variant_name = variant.name(sema.db).display(sema.db).to_string(); let variant_already_present = match_arm_list.arms().any(|arm| { arm.pat().and_then(|pat| { let pat_already_present = pat.syntax().to_string().contains(&variant_name); - pat_already_present.then(|| pat_already_present) + pat_already_present.then_some(pat_already_present) }).is_some() }); - (!variant_already_present).then_some(variant.clone()) + (!variant_already_present).then_some(*variant) }).collect::<Vec<Variant>>()) - }) }); if let Some(missing_variants_) = missing_variants_opt { |