diff options
author | Lukas Wirth <[email protected]> | 2021-06-17 14:43:21 +0100 |
---|---|---|
committer | Lukas Wirth <[email protected]> | 2021-06-17 14:43:21 +0100 |
commit | 2a48b532208de413e4e5d39e81c33a4644ecaa22 (patch) | |
tree | 8c8fb1436a64a6bfd56558f41b734a966aa5725e /crates/ide_completion/src/completions | |
parent | a9a77671f2405e0cb65160c17268beec5114e259 (diff) |
Correct completions in items tests
Diffstat (limited to 'crates/ide_completion/src/completions')
-rw-r--r-- | crates/ide_completion/src/completions/keyword.rs | 3 | ||||
-rw-r--r-- | crates/ide_completion/src/completions/snippet.rs | 6 | ||||
-rw-r--r-- | crates/ide_completion/src/completions/unqualified_path.rs | 5 |
3 files changed, 12 insertions, 2 deletions
diff --git a/crates/ide_completion/src/completions/keyword.rs b/crates/ide_completion/src/completions/keyword.rs index c5cd3c2f7..c99fdef05 100644 --- a/crates/ide_completion/src/completions/keyword.rs +++ b/crates/ide_completion/src/completions/keyword.rs | |||
@@ -69,6 +69,9 @@ pub(crate) fn complete_expr_keyword(acc: &mut Completions, ctx: &CompletionConte | |||
69 | 69 | ||
70 | if ctx.has_impl_or_trait_prev_sibling() { | 70 | if ctx.has_impl_or_trait_prev_sibling() { |
71 | add_keyword("where", "where "); | 71 | add_keyword("where", "where "); |
72 | if ctx.has_impl_prev_sibling() { | ||
73 | add_keyword("for", "for "); | ||
74 | } | ||
72 | return; | 75 | return; |
73 | } | 76 | } |
74 | if ctx.previous_token_is(T![unsafe]) { | 77 | if ctx.previous_token_is(T![unsafe]) { |
diff --git a/crates/ide_completion/src/completions/snippet.rs b/crates/ide_completion/src/completions/snippet.rs index 81ddfa34f..cbc20cc2c 100644 --- a/crates/ide_completion/src/completions/snippet.rs +++ b/crates/ide_completion/src/completions/snippet.rs | |||
@@ -36,7 +36,11 @@ pub(crate) fn complete_expr_snippet(acc: &mut Completions, ctx: &CompletionConte | |||
36 | } | 36 | } |
37 | 37 | ||
38 | pub(crate) fn complete_item_snippet(acc: &mut Completions, ctx: &CompletionContext) { | 38 | pub(crate) fn complete_item_snippet(acc: &mut Completions, ctx: &CompletionContext) { |
39 | if !ctx.expects_item() || ctx.previous_token_is(T![unsafe]) || ctx.path_qual().is_some() { | 39 | if !ctx.expects_item() |
40 | || ctx.previous_token_is(T![unsafe]) | ||
41 | || ctx.path_qual().is_some() | ||
42 | || ctx.has_impl_or_trait_prev_sibling() | ||
43 | { | ||
40 | return; | 44 | return; |
41 | } | 45 | } |
42 | if ctx.has_visibility_prev_sibling() { | 46 | if ctx.has_visibility_prev_sibling() { |
diff --git a/crates/ide_completion/src/completions/unqualified_path.rs b/crates/ide_completion/src/completions/unqualified_path.rs index 1864bfbcc..8ea5a2d5b 100644 --- a/crates/ide_completion/src/completions/unqualified_path.rs +++ b/crates/ide_completion/src/completions/unqualified_path.rs | |||
@@ -6,7 +6,7 @@ use syntax::{ast, AstNode}; | |||
6 | use crate::{patterns::ImmediateLocation, CompletionContext, Completions}; | 6 | use crate::{patterns::ImmediateLocation, CompletionContext, Completions}; |
7 | 7 | ||
8 | pub(crate) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionContext) { | 8 | pub(crate) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionContext) { |
9 | if ctx.is_path_disallowed() || !ctx.is_trivial_path() { | 9 | if ctx.is_path_disallowed() || !ctx.is_trivial_path() || ctx.has_impl_or_trait_prev_sibling() { |
10 | return; | 10 | return; |
11 | } | 11 | } |
12 | 12 | ||
@@ -68,6 +68,9 @@ pub(crate) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionC | |||
68 | return; | 68 | return; |
69 | } | 69 | } |
70 | let add_resolution = match res { | 70 | let add_resolution = match res { |
71 | ScopeDef::ImplSelfType(_) => { | ||
72 | !ctx.previous_token_is(syntax::T![impl]) && !ctx.previous_token_is(syntax::T![for]) | ||
73 | } | ||
71 | // Don't suggest attribute macros and derives. | 74 | // Don't suggest attribute macros and derives. |
72 | ScopeDef::MacroDef(mac) => mac.is_fn_like(), | 75 | ScopeDef::MacroDef(mac) => mac.is_fn_like(), |
73 | // no values in type places | 76 | // no values in type places |