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.rs7
1 files changed, 3 insertions, 4 deletions
diff --git a/crates/ra_ide/src/completion/completion_context.rs b/crates/ra_ide/src/completion/completion_context.rs
index 02811a91e..3d93f7067 100644
--- a/crates/ra_ide/src/completion/completion_context.rs
+++ b/crates/ra_ide/src/completion/completion_context.rs
@@ -24,6 +24,7 @@ use test_utils::mark;
24#[derive(Debug)] 24#[derive(Debug)]
25pub(crate) struct CompletionContext<'a> { 25pub(crate) struct CompletionContext<'a> {
26 pub(super) sema: Semantics<'a, RootDatabase>, 26 pub(super) sema: Semantics<'a, RootDatabase>,
27 pub(super) scope: SemanticsScope<'a>,
27 pub(super) db: &'a RootDatabase, 28 pub(super) db: &'a RootDatabase,
28 pub(super) config: &'a CompletionConfig, 29 pub(super) config: &'a CompletionConfig,
29 pub(super) offset: TextSize, 30 pub(super) offset: TextSize,
@@ -106,8 +107,10 @@ impl<'a> CompletionContext<'a> {
106 let original_token = 107 let original_token =
107 original_file.syntax().token_at_offset(position.offset).left_biased()?; 108 original_file.syntax().token_at_offset(position.offset).left_biased()?;
108 let token = sema.descend_into_macros(original_token.clone()); 109 let token = sema.descend_into_macros(original_token.clone());
110 let scope = sema.scope_at_offset(&token.parent(), position.offset);
109 let mut ctx = CompletionContext { 111 let mut ctx = CompletionContext {
110 sema, 112 sema,
113 scope,
111 db, 114 db,
112 config, 115 config,
113 original_token, 116 original_token,
@@ -207,10 +210,6 @@ impl<'a> CompletionContext<'a> {
207 } 210 }
208 } 211 }
209 212
210 pub(crate) fn scope(&self) -> SemanticsScope<'_> {
211 self.sema.scope_at_offset(&self.token.parent(), self.offset)
212 }
213
214 fn fill_keyword_patterns(&mut self, file_with_fake_ident: &SyntaxNode, offset: TextSize) { 213 fn fill_keyword_patterns(&mut self, file_with_fake_ident: &SyntaxNode, offset: TextSize) {
215 let fake_ident_token = file_with_fake_ident.token_at_offset(offset).right_biased().unwrap(); 214 let fake_ident_token = file_with_fake_ident.token_at_offset(offset).right_biased().unwrap();
216 let syntax_element = NodeOrToken::Token(fake_ident_token.clone()); 215 let syntax_element = NodeOrToken::Token(fake_ident_token.clone());