diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-11-03 07:54:45 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2020-11-03 07:54:45 +0000 |
commit | 07c7f35effe1a4602ba02baf9ff67a4eb214818f (patch) | |
tree | 1cf4253dc23366dfd20f36285036d73b168a526e /crates/completion/src/context.rs | |
parent | 658e97a39e77bcb978697a66ddccd7e4b58990cf (diff) | |
parent | 8efe43245bc64ed27f88c333541b2cb7af2ce44c (diff) |
Merge #6430
6430: Move completions rendering into a separate module r=popzxc a=popzxc
This PR extracts rendering-related things from `Completions` structure to the new `render` module.
`render` module declares a `Render` structure (which is a generic renderer interface), `RenderContext` (interface for data/methods not required for completions generating, but required for rendering), and a bunch of smaller `*Render` structures which encapsulate logic behind rendering a certain item.
This is just a step in full separation direction, since the following this are still to be done:
- Move some data from `CompletionContext` to the `RenderContext`;
- Forbid any kind of rendering outside of `render` module;
- Extract score computing into a separate module.
This PR is already pretty big, so not to make it even harder to review I decided to split this process into several subsequent PRs.
Co-authored-by: Igor Aleksanov <[email protected]>
Diffstat (limited to 'crates/completion/src/context.rs')
-rw-r--r-- | crates/completion/src/context.rs | 13 |
1 files changed, 0 insertions, 13 deletions
diff --git a/crates/completion/src/context.rs b/crates/completion/src/context.rs index dca304a8f..bf70ee478 100644 --- a/crates/completion/src/context.rs +++ b/crates/completion/src/context.rs | |||
@@ -245,19 +245,6 @@ impl<'a> CompletionContext<'a> { | |||
245 | } | 245 | } |
246 | } | 246 | } |
247 | 247 | ||
248 | pub(crate) fn active_name_and_type(&self) -> Option<(String, Type)> { | ||
249 | if let Some(record_field) = &self.record_field_syntax { | ||
250 | mark::hit!(record_field_type_match); | ||
251 | let (struct_field, _local) = self.sema.resolve_record_field(record_field)?; | ||
252 | Some((struct_field.name(self.db).to_string(), struct_field.signature_ty(self.db))) | ||
253 | } else if let Some(active_parameter) = &self.active_parameter { | ||
254 | mark::hit!(active_param_type_match); | ||
255 | Some((active_parameter.name.clone(), active_parameter.ty.clone())) | ||
256 | } else { | ||
257 | None | ||
258 | } | ||
259 | } | ||
260 | |||
261 | fn fill_keyword_patterns(&mut self, file_with_fake_ident: &SyntaxNode, offset: TextSize) { | 248 | fn fill_keyword_patterns(&mut self, file_with_fake_ident: &SyntaxNode, offset: TextSize) { |
262 | let fake_ident_token = file_with_fake_ident.token_at_offset(offset).right_biased().unwrap(); | 249 | let fake_ident_token = file_with_fake_ident.token_at_offset(offset).right_biased().unwrap(); |
263 | let syntax_element = NodeOrToken::Token(fake_ident_token); | 250 | let syntax_element = NodeOrToken::Token(fake_ident_token); |