From 174952e89b891b20ea580f37e34389467fb9e23c Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 24 Apr 2020 01:24:08 +0200 Subject: Refactor --- crates/ra_ide/src/completion/presentation.rs | 42 ++++++++++++---------------- 1 file changed, 18 insertions(+), 24 deletions(-) (limited to 'crates') diff --git a/crates/ra_ide/src/completion/presentation.rs b/crates/ra_ide/src/completion/presentation.rs index 6d8a5dc08..ab43d2a0a 100644 --- a/crates/ra_ide/src/completion/presentation.rs +++ b/crates/ra_ide/src/completion/presentation.rs @@ -307,42 +307,36 @@ impl Completions { pub(crate) fn compute_score( ctx: &CompletionContext, + // FIXME: this definitely should be a `Type` ty: &str, name: &str, ) -> Option { let (active_name, active_type) = if let Some(record_field) = &ctx.record_field_syntax { - if let Some((struct_field, _)) = ctx.sema.resolve_record_field(record_field) { - ( - struct_field.name(ctx.db).to_string(), - struct_field.signature_ty(ctx.db).display(ctx.db).to_string(), - ) - } else { - return None; - } + let (struct_field, _local) = ctx.sema.resolve_record_field(record_field)?; + ( + struct_field.name(ctx.db).to_string(), + struct_field.signature_ty(ctx.db).display(ctx.db).to_string(), + ) } else if let Some(call_info) = call_info(ctx.db, ctx.file_position) { - if call_info.active_parameter_type().is_some() - && call_info.active_parameter_name().is_some() - { - (call_info.active_parameter_name().unwrap(), call_info.active_parameter_type().unwrap()) - } else { - return None; - } + (call_info.active_parameter_name()?, call_info.active_parameter_type()?) } else { return None; }; // Compute score // For the same type - if &active_type == ty { - // If same type + same name then go top position - let res = if active_name == name { - CompletionScore::TypeAndNameMatch - } else { - CompletionScore::TypeMatch - }; - return Some(res); + if &active_type != ty { + return None; + } + + let mut res = CompletionScore::TypeMatch; + + // If same type + same name then go top position + if active_name == name { + res = CompletionScore::TypeAndNameMatch } - None + + Some(res) } enum Params { -- cgit v1.2.3