aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src/completion/completion_context.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide/src/completion/completion_context.rs')
-rw-r--r--crates/ra_ide/src/completion/completion_context.rs13
1 files changed, 7 insertions, 6 deletions
diff --git a/crates/ra_ide/src/completion/completion_context.rs b/crates/ra_ide/src/completion/completion_context.rs
index fddaf21e4..eb8016dd1 100644
--- a/crates/ra_ide/src/completion/completion_context.rs
+++ b/crates/ra_ide/src/completion/completion_context.rs
@@ -1,13 +1,11 @@
1//! FIXME: write short doc here 1//! FIXME: write short doc here
2 2
3use hir::{db::HirDatabase, Semantics, SemanticsScope}; 3use hir::{Semantics, SemanticsScope};
4use ra_db::SourceDatabase; 4use ra_db::SourceDatabase;
5use ra_ide_db::RootDatabase; 5use ra_ide_db::RootDatabase;
6use ra_syntax::{ 6use ra_syntax::{
7 algo::{find_covering_element, find_node_at_offset}, 7 algo::{find_covering_element, find_node_at_offset},
8 ast, 8 ast, AstNode,
9 ast::ArgListOwner,
10 AstNode,
11 SyntaxKind::*, 9 SyntaxKind::*,
12 SyntaxNode, SyntaxToken, TextRange, TextUnit, 10 SyntaxNode, SyntaxToken, TextRange, TextUnit,
13}; 11};
@@ -196,7 +194,10 @@ impl<'a> CompletionContext<'a> {
196 if let Some(name) = find_node_at_offset::<ast::Name>(&file_with_fake_ident, offset) { 194 if let Some(name) = find_node_at_offset::<ast::Name>(&file_with_fake_ident, offset) {
197 if let Some(bind_pat) = name.syntax().ancestors().find_map(ast::BindPat::cast) { 195 if let Some(bind_pat) = name.syntax().ancestors().find_map(ast::BindPat::cast) {
198 self.is_pat_binding_or_const = true; 196 self.is_pat_binding_or_const = true;
199 if bind_pat.has_at() || bind_pat.is_ref() || bind_pat.is_mutable() { 197 if bind_pat.at_token().is_some()
198 || bind_pat.ref_token().is_some()
199 || bind_pat.mut_token().is_some()
200 {
200 self.is_pat_binding_or_const = false; 201 self.is_pat_binding_or_const = false;
201 } 202 }
202 if bind_pat.syntax().parent().and_then(ast::RecordFieldPatList::cast).is_some() { 203 if bind_pat.syntax().parent().and_then(ast::RecordFieldPatList::cast).is_some() {
@@ -230,7 +231,7 @@ impl<'a> CompletionContext<'a> {
230 self.name_ref_syntax = 231 self.name_ref_syntax =
231 find_node_at_offset(&original_file, name_ref.syntax().text_range().start()); 232 find_node_at_offset(&original_file, name_ref.syntax().text_range().start());
232 let name_range = name_ref.syntax().text_range(); 233 let name_range = name_ref.syntax().text_range();
233 if name_ref.syntax().parent().and_then(ast::RecordField::cast).is_some() { 234 if ast::RecordField::for_field_name(&name_ref).is_some() {
234 self.record_lit_syntax = 235 self.record_lit_syntax =
235 self.sema.find_node_at_offset_with_macros(&original_file, offset); 236 self.sema.find_node_at_offset_with_macros(&original_file, offset);
236 } 237 }