diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-05-04 15:52:35 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-05-04 15:52:35 +0100 |
| commit | 15de338703fd9c789c4cf8041a59d8730f12bc78 (patch) | |
| tree | d40870bd19c030c44592edb2875b9bf8462dfefe | |
| parent | a1ccd09d4bf2b08313620f43de85cf0778f459e4 (diff) | |
| parent | b211c5814e994a411095e4392d804d692d58d43b (diff) | |
Merge #4303
4303: Remove false positive attr compleitons r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <[email protected]>
| -rw-r--r-- | crates/ra_ide/src/completion/complete_qualified_path.rs | 23 | ||||
| -rw-r--r-- | crates/ra_ide/src/completion/complete_unqualified_path.rs | 21 |
2 files changed, 40 insertions, 4 deletions
diff --git a/crates/ra_ide/src/completion/complete_qualified_path.rs b/crates/ra_ide/src/completion/complete_qualified_path.rs index aa56a5cd8..d9ea92ef8 100644 --- a/crates/ra_ide/src/completion/complete_qualified_path.rs +++ b/crates/ra_ide/src/completion/complete_qualified_path.rs | |||
| @@ -2,16 +2,21 @@ | |||
| 2 | 2 | ||
| 3 | use hir::{Adt, HasVisibility, PathResolution, ScopeDef}; | 3 | use hir::{Adt, HasVisibility, PathResolution, ScopeDef}; |
| 4 | use ra_syntax::AstNode; | 4 | use ra_syntax::AstNode; |
| 5 | use rustc_hash::FxHashSet; | ||
| 5 | use test_utils::tested_by; | 6 | use test_utils::tested_by; |
| 6 | 7 | ||
| 7 | use crate::completion::{CompletionContext, Completions}; | 8 | use crate::completion::{CompletionContext, Completions}; |
| 8 | use rustc_hash::FxHashSet; | ||
| 9 | 9 | ||
| 10 | pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionContext) { | 10 | pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionContext) { |
| 11 | let path = match &ctx.path_prefix { | 11 | let path = match &ctx.path_prefix { |
| 12 | Some(path) => path.clone(), | 12 | Some(path) => path.clone(), |
| 13 | _ => return, | 13 | None => return, |
| 14 | }; | 14 | }; |
| 15 | |||
| 16 | if ctx.attribute_under_caret.is_some() { | ||
| 17 | return; | ||
| 18 | } | ||
| 19 | |||
| 15 | let scope = ctx.scope(); | 20 | let scope = ctx.scope(); |
| 16 | let context_module = scope.module(); | 21 | let context_module = scope.module(); |
| 17 | 22 | ||
| @@ -1325,4 +1330,18 @@ mod tests { | |||
| 1325 | "### | 1330 | "### |
| 1326 | ); | 1331 | ); |
| 1327 | } | 1332 | } |
| 1333 | |||
| 1334 | #[test] | ||
| 1335 | fn dont_complete_attr() { | ||
| 1336 | assert_debug_snapshot!( | ||
| 1337 | do_reference_completion( | ||
| 1338 | r" | ||
| 1339 | mod foo { pub struct Foo; } | ||
| 1340 | #[foo::<|>] | ||
| 1341 | fn f() {} | ||
| 1342 | " | ||
| 1343 | ), | ||
| 1344 | @r###"[]"### | ||
| 1345 | ) | ||
| 1346 | } | ||
| 1328 | } | 1347 | } |
diff --git a/crates/ra_ide/src/completion/complete_unqualified_path.rs b/crates/ra_ide/src/completion/complete_unqualified_path.rs index a6a5568de..bd40af1cb 100644 --- a/crates/ra_ide/src/completion/complete_unqualified_path.rs +++ b/crates/ra_ide/src/completion/complete_unqualified_path.rs | |||
| @@ -8,9 +8,12 @@ use hir::{Adt, ModuleDef, Type}; | |||
| 8 | use ra_syntax::AstNode; | 8 | use ra_syntax::AstNode; |
| 9 | 9 | ||
| 10 | pub(super) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionContext) { | 10 | pub(super) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionContext) { |
| 11 | if (!ctx.is_trivial_path && !ctx.is_pat_binding_or_const) | 11 | if !(ctx.is_trivial_path || ctx.is_pat_binding_or_const) { |
| 12 | || ctx.record_lit_syntax.is_some() | 12 | return; |
| 13 | } | ||
| 14 | if ctx.record_lit_syntax.is_some() | ||
| 13 | || ctx.record_pat_syntax.is_some() | 15 | || ctx.record_pat_syntax.is_some() |
| 16 | || ctx.attribute_under_caret.is_some() | ||
| 14 | { | 17 | { |
| 15 | return; | 18 | return; |
| 16 | } | 19 | } |
| @@ -1369,4 +1372,18 @@ mod tests { | |||
| 1369 | "### | 1372 | "### |
| 1370 | ) | 1373 | ) |
| 1371 | } | 1374 | } |
| 1375 | |||
| 1376 | #[test] | ||
| 1377 | fn dont_complete_attr() { | ||
| 1378 | assert_debug_snapshot!( | ||
| 1379 | do_reference_completion( | ||
| 1380 | r" | ||
| 1381 | struct Foo; | ||
| 1382 | #[<|>] | ||
| 1383 | fn f() {} | ||
| 1384 | " | ||
| 1385 | ), | ||
| 1386 | @r###"[]"### | ||
| 1387 | ) | ||
| 1388 | } | ||
| 1372 | } | 1389 | } |
