Remove false positive attr compleitons

This commit is contained in:
Aleksey Kladov 2020-05-04 16:48:50 +02:00
parent 8f4478390e
commit b211c5814e
2 changed files with 40 additions and 4 deletions

View file

@ -2,16 +2,21 @@
use hir::{Adt, HasVisibility, PathResolution, ScopeDef};
use ra_syntax::AstNode;
use rustc_hash::FxHashSet;
use test_utils::tested_by;
use crate::completion::{CompletionContext, Completions};
use rustc_hash::FxHashSet;
pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionContext) {
let path = match &ctx.path_prefix {
Some(path) => path.clone(),
_ => return,
None => return,
};
if ctx.attribute_under_caret.is_some() {
return;
}
let scope = ctx.scope();
let context_module = scope.module();
@ -1325,4 +1330,18 @@ mod tests {
"###
);
}
#[test]
fn dont_complete_attr() {
assert_debug_snapshot!(
do_reference_completion(
r"
mod foo { pub struct Foo; }
#[foo::<|>]
fn f() {}
"
),
@r###"[]"###
)
}
}

View file

@ -8,9 +8,12 @@ use hir::{Adt, ModuleDef, Type};
use ra_syntax::AstNode;
pub(super) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionContext) {
if (!ctx.is_trivial_path && !ctx.is_pat_binding_or_const)
|| ctx.record_lit_syntax.is_some()
if !(ctx.is_trivial_path || ctx.is_pat_binding_or_const) {
return;
}
if ctx.record_lit_syntax.is_some()
|| ctx.record_pat_syntax.is_some()
|| ctx.attribute_under_caret.is_some()
{
return;
}
@ -1369,4 +1372,18 @@ mod tests {
"###
)
}
#[test]
fn dont_complete_attr() {
assert_debug_snapshot!(
do_reference_completion(
r"
struct Foo;
#[<|>]
fn f() {}
"
),
@r###"[]"###
)
}
}