diff options
Diffstat (limited to 'crates/ra_ide/src/completion/completion_context.rs')
-rw-r--r-- | crates/ra_ide/src/completion/completion_context.rs | 13 |
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 | ||
3 | use hir::{db::HirDatabase, Semantics, SemanticsScope}; | 3 | use hir::{Semantics, SemanticsScope}; |
4 | use ra_db::SourceDatabase; | 4 | use ra_db::SourceDatabase; |
5 | use ra_ide_db::RootDatabase; | 5 | use ra_ide_db::RootDatabase; |
6 | use ra_syntax::{ | 6 | use 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 | } |