diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-07-11 00:31:57 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2020-07-11 00:31:57 +0100 |
commit | 343b9c6e76919c255466fd9b12fc7fd46f59022e (patch) | |
tree | 107769c5884b71e865b7efe44604cfad979e1f72 /crates/ra_ide/src/completion/completion_context.rs | |
parent | 349c4fcecaab90a521d4344cf965202ed7a0a54e (diff) | |
parent | a36ff4a100c2c321eec898f2cfee25c0be85ffc6 (diff) |
Merge #5303
5303: Speed up completion r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_ide/src/completion/completion_context.rs')
-rw-r--r-- | crates/ra_ide/src/completion/completion_context.rs | 7 |
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)] |
25 | pub(crate) struct CompletionContext<'a> { | 25 | pub(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()); |