From 3dbbcfca67ed09322227f2190b5364754a29a216 Mon Sep 17 00:00:00 2001 From: adamrk Date: Tue, 29 Sep 2020 22:24:56 +0200 Subject: Insert ref for completions --- crates/completion/src/completion_context.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'crates/completion/src/completion_context.rs') diff --git a/crates/completion/src/completion_context.rs b/crates/completion/src/completion_context.rs index dc4e136c6..e4f86d0e0 100644 --- a/crates/completion/src/completion_context.rs +++ b/crates/completion/src/completion_context.rs @@ -246,6 +246,19 @@ impl<'a> CompletionContext<'a> { } } + pub(crate) fn active_name_and_type(&self) -> Option<(String, Type)> { + if let Some(record_field) = &self.record_field_syntax { + mark::hit!(record_field_type_match); + let (struct_field, _local) = self.sema.resolve_record_field(record_field)?; + Some((struct_field.name(self.db).to_string(), struct_field.signature_ty(self.db))) + } else if let Some(active_parameter) = &self.active_parameter { + mark::hit!(active_param_type_match); + Some((active_parameter.name.clone(), active_parameter.ty.clone())) + } else { + None + } + } + fn fill_keyword_patterns(&mut self, file_with_fake_ident: &SyntaxNode, offset: TextSize) { let fake_ident_token = file_with_fake_ident.token_at_offset(offset).right_biased().unwrap(); let syntax_element = NodeOrToken::Token(fake_ident_token); -- cgit v1.2.3