diff options
author | Benjamin Coenen <[email protected]> | 2020-04-14 18:20:30 +0100 |
---|---|---|
committer | Benjamin Coenen <[email protected]> | 2020-04-14 18:20:30 +0100 |
commit | b092bbc83d13af6a79f8f282632ec1ea0a1560bd (patch) | |
tree | 2638559990ee6a93cd3b6d6d957b67063eb75c2d /crates/ra_ide/src/completion/completion_context.rs | |
parent | 064095742980d4c825391f643e437520599f51d8 (diff) | |
parent | c82e7696e6f86cc0843c5aab9f09b5d6dd0d4bac (diff) |
Merge branch 'master' of github.com:rust-analyzer/rust-analyzer
Diffstat (limited to 'crates/ra_ide/src/completion/completion_context.rs')
-rw-r--r-- | crates/ra_ide/src/completion/completion_context.rs | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/crates/ra_ide/src/completion/completion_context.rs b/crates/ra_ide/src/completion/completion_context.rs index eb8016dd1..da054f7a2 100644 --- a/crates/ra_ide/src/completion/completion_context.rs +++ b/crates/ra_ide/src/completion/completion_context.rs | |||
@@ -31,7 +31,7 @@ pub(crate) struct CompletionContext<'a> { | |||
31 | pub(super) function_syntax: Option<ast::FnDef>, | 31 | pub(super) function_syntax: Option<ast::FnDef>, |
32 | pub(super) use_item_syntax: Option<ast::UseItem>, | 32 | pub(super) use_item_syntax: Option<ast::UseItem>, |
33 | pub(super) record_lit_syntax: Option<ast::RecordLit>, | 33 | pub(super) record_lit_syntax: Option<ast::RecordLit>, |
34 | pub(super) record_lit_pat: Option<ast::RecordPat>, | 34 | pub(super) record_pat_syntax: Option<ast::RecordPat>, |
35 | pub(super) impl_def: Option<ast::ImplDef>, | 35 | pub(super) impl_def: Option<ast::ImplDef>, |
36 | pub(super) call_info: Option<CallInfo>, | 36 | pub(super) call_info: Option<CallInfo>, |
37 | pub(super) is_param: bool, | 37 | pub(super) is_param: bool, |
@@ -97,7 +97,7 @@ impl<'a> CompletionContext<'a> { | |||
97 | call_info: None, | 97 | call_info: None, |
98 | use_item_syntax: None, | 98 | use_item_syntax: None, |
99 | record_lit_syntax: None, | 99 | record_lit_syntax: None, |
100 | record_lit_pat: None, | 100 | record_pat_syntax: None, |
101 | impl_def: None, | 101 | impl_def: None, |
102 | is_param: false, | 102 | is_param: false, |
103 | is_pat_binding_or_const: false, | 103 | is_pat_binding_or_const: false, |
@@ -186,6 +186,11 @@ impl<'a> CompletionContext<'a> { | |||
186 | self.is_param = true; | 186 | self.is_param = true; |
187 | return; | 187 | return; |
188 | } | 188 | } |
189 | // FIXME: remove this (V) duplication and make the check more precise | ||
190 | if name_ref.syntax().ancestors().find_map(ast::RecordFieldPatList::cast).is_some() { | ||
191 | self.record_pat_syntax = | ||
192 | self.sema.find_node_at_offset_with_macros(&original_file, offset); | ||
193 | } | ||
189 | self.classify_name_ref(original_file, name_ref, offset); | 194 | self.classify_name_ref(original_file, name_ref, offset); |
190 | } | 195 | } |
191 | 196 | ||
@@ -215,8 +220,9 @@ impl<'a> CompletionContext<'a> { | |||
215 | self.is_param = true; | 220 | self.is_param = true; |
216 | return; | 221 | return; |
217 | } | 222 | } |
223 | // FIXME: remove this (^) duplication and make the check more precise | ||
218 | if name.syntax().ancestors().find_map(ast::RecordFieldPatList::cast).is_some() { | 224 | if name.syntax().ancestors().find_map(ast::RecordFieldPatList::cast).is_some() { |
219 | self.record_lit_pat = | 225 | self.record_pat_syntax = |
220 | self.sema.find_node_at_offset_with_macros(&original_file, offset); | 226 | self.sema.find_node_at_offset_with_macros(&original_file, offset); |
221 | } | 227 | } |
222 | } | 228 | } |