diff --git a/crates/ide_completion/src/completions/attribute.rs b/crates/ide_completion/src/completions/attribute.rs index 8acb26ffa16..2b130cecf5c 100644 --- a/crates/ide_completion/src/completions/attribute.rs +++ b/crates/ide_completion/src/completions/attribute.rs @@ -22,7 +22,11 @@ mod repr; pub(crate) fn complete_attribute(acc: &mut Completions, ctx: &CompletionContext) -> Option<()> { let attribute = ctx.attribute_under_caret.as_ref()?; - match (attribute.path().and_then(|p| p.as_single_name_ref()), attribute.token_tree()) { + let name_ref = match attribute.path() { + Some(p) => Some(p.as_single_name_ref()?), + None => None, + }; + match (name_ref, attribute.token_tree()) { (Some(path), Some(token_tree)) => match path.text().as_str() { "derive" => derive::complete_derive(acc, ctx, token_tree), "repr" => repr::complete_repr(acc, ctx, token_tree), diff --git a/crates/ide_completion/src/tests/attribute.rs b/crates/ide_completion/src/tests/attribute.rs index 72c47fe96e9..7d0bdc58210 100644 --- a/crates/ide_completion/src/tests/attribute.rs +++ b/crates/ide_completion/src/tests/attribute.rs @@ -33,6 +33,18 @@ use self as this; ) } +#[test] +fn doesnt_complete_qualified() { + check( + r#" +struct Foo; +#[foo::$0] +use self as this; +"#, + expect![[r#""#]], + ) +} + #[test] fn inside_nested_attr() { check(r#"#[cfg($0)]"#, expect![[]])