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 | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs index 7da6648365..8a4ac00de9 100644 --- a/crates/ide-completion/src/context/analysis.rs +++ b/crates/ide-completion/src/context/analysis.rs @@ -796,8 +796,7 @@ fn classify_name_ref( ast::AssocTypeArg(arg) => { let trait_ = ast::PathSegment::cast(arg.syntax().parent()?.parent()?)?; match sema.resolve_path(&trait_.parent_path().top_path())? { - hir::PathResolution::Def(def) => match def { - hir::ModuleDef::Trait(trait_) => { + hir::PathResolution::Def(hir::ModuleDef::Trait(trait_)) => { let arg_name = arg.name_ref()?; let arg_name = arg_name.text(); let trait_items = trait_.items_with_supertraits(sema.db); @@ -810,8 +809,6 @@ fn classify_name_ref( })?; sema.source(*assoc_ty)?.value.generic_param_list() } - _ => None, - }, _ => None, } }, @@ -866,9 +863,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 +883,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 +1303,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 +1312,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 { |