mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-17 02:08:30 +00:00
Remove false positive attr compleitons
This commit is contained in:
parent
8f4478390e
commit
b211c5814e
2 changed files with 40 additions and 4 deletions
|
@ -2,16 +2,21 @@
|
||||||
|
|
||||||
use hir::{Adt, HasVisibility, PathResolution, ScopeDef};
|
use hir::{Adt, HasVisibility, PathResolution, ScopeDef};
|
||||||
use ra_syntax::AstNode;
|
use ra_syntax::AstNode;
|
||||||
|
use rustc_hash::FxHashSet;
|
||||||
use test_utils::tested_by;
|
use test_utils::tested_by;
|
||||||
|
|
||||||
use crate::completion::{CompletionContext, Completions};
|
use crate::completion::{CompletionContext, Completions};
|
||||||
use rustc_hash::FxHashSet;
|
|
||||||
|
|
||||||
pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionContext) {
|
pub(super) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionContext) {
|
||||||
let path = match &ctx.path_prefix {
|
let path = match &ctx.path_prefix {
|
||||||
Some(path) => path.clone(),
|
Some(path) => path.clone(),
|
||||||
_ => return,
|
None => return,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if ctx.attribute_under_caret.is_some() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let scope = ctx.scope();
|
let scope = ctx.scope();
|
||||||
let context_module = scope.module();
|
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###"[]"###
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,9 +8,12 @@ use hir::{Adt, ModuleDef, Type};
|
||||||
use ra_syntax::AstNode;
|
use ra_syntax::AstNode;
|
||||||
|
|
||||||
pub(super) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionContext) {
|
pub(super) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionContext) {
|
||||||
if (!ctx.is_trivial_path && !ctx.is_pat_binding_or_const)
|
if !(ctx.is_trivial_path || ctx.is_pat_binding_or_const) {
|
||||||
|| ctx.record_lit_syntax.is_some()
|
return;
|
||||||
|
}
|
||||||
|
if ctx.record_lit_syntax.is_some()
|
||||||
|| ctx.record_pat_syntax.is_some()
|
|| ctx.record_pat_syntax.is_some()
|
||||||
|
|| ctx.attribute_under_caret.is_some()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1369,4 +1372,18 @@ mod tests {
|
||||||
"###
|
"###
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn dont_complete_attr() {
|
||||||
|
assert_debug_snapshot!(
|
||||||
|
do_reference_completion(
|
||||||
|
r"
|
||||||
|
struct Foo;
|
||||||
|
#[<|>]
|
||||||
|
fn f() {}
|
||||||
|
"
|
||||||
|
),
|
||||||
|
@r###"[]"###
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue