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.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/crates/ra_ide/src/completion/completion_context.rs b/crates/ra_ide/src/completion/completion_context.rs
index 81a033fcb..fe9777487 100644
--- a/crates/ra_ide/src/completion/completion_context.rs
+++ b/crates/ra_ide/src/completion/completion_context.rs
@@ -165,7 +165,7 @@ impl<'a> CompletionContext<'a> {
165 self.is_param = true; 165 self.is_param = true;
166 return; 166 return;
167 } 167 }
168 self.classify_name_ref(original_file, name_ref); 168 self.classify_name_ref(original_file, name_ref, offset);
169 } 169 }
170 170
171 // Otherwise, see if this is a declaration. We can use heuristics to 171 // Otherwise, see if this is a declaration. We can use heuristics to
@@ -190,13 +190,18 @@ impl<'a> CompletionContext<'a> {
190 } 190 }
191 } 191 }
192 192
193 fn classify_name_ref(&mut self, original_file: &SyntaxNode, name_ref: ast::NameRef) { 193 fn classify_name_ref(
194 &mut self,
195 original_file: &SyntaxNode,
196 name_ref: ast::NameRef,
197 offset: TextUnit,
198 ) {
194 self.name_ref_syntax = 199 self.name_ref_syntax =
195 find_node_at_offset(&original_file, name_ref.syntax().text_range().start()); 200 find_node_at_offset(&original_file, name_ref.syntax().text_range().start());
196 let name_range = name_ref.syntax().text_range(); 201 let name_range = name_ref.syntax().text_range();
197 if name_ref.syntax().parent().and_then(ast::RecordField::cast).is_some() { 202 if name_ref.syntax().parent().and_then(ast::RecordField::cast).is_some() {
198 self.record_lit_syntax = 203 self.record_lit_syntax =
199 self.sema.find_node_at_offset_with_macros(&original_file, self.offset); 204 self.sema.find_node_at_offset_with_macros(&original_file, offset);
200 } 205 }
201 206
202 self.impl_def = self 207 self.impl_def = self