Don't classify attributes on macro-calls are the macro itself
This commit is contained in:
parent
c6133fe51c
commit
26c869ddc0
@ -1380,4 +1380,24 @@ macro_rules! foo$0 {
|
|||||||
"#]],
|
"#]],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn macro_doesnt_reference_attribute_on_call() {
|
||||||
|
check(
|
||||||
|
r#"
|
||||||
|
macro_rules! m {
|
||||||
|
() => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[proc_macro_test::attr_noop]
|
||||||
|
m$0!();
|
||||||
|
|
||||||
|
"#,
|
||||||
|
expect![[r#"
|
||||||
|
m Macro FileId(0) 0..32 13..14
|
||||||
|
|
||||||
|
FileId(0) 64..65
|
||||||
|
"#]],
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -357,9 +357,9 @@ pub fn classify(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(macro_call) = parent.ancestors().find_map(ast::MacroCall::cast) {
|
if let Some(path) = name_ref.syntax().ancestors().find_map(ast::Path::cast) {
|
||||||
if let Some(path) = macro_call.path() {
|
if path.qualifier().is_none() {
|
||||||
if path.qualifier().is_none() {
|
if let Some(macro_call) = path.syntax().parent().and_then(ast::MacroCall::cast) {
|
||||||
// Only use this to resolve single-segment macro calls like `foo!()`. Multi-segment
|
// Only use this to resolve single-segment macro calls like `foo!()`. Multi-segment
|
||||||
// paths are handled below (allowing `log$0::info!` to resolve to the log crate).
|
// paths are handled below (allowing `log$0::info!` to resolve to the log crate).
|
||||||
if let Some(macro_def) = sema.resolve_macro_call(¯o_call) {
|
if let Some(macro_def) = sema.resolve_macro_call(¯o_call) {
|
||||||
@ -367,9 +367,7 @@ pub fn classify(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(path) = name_ref.syntax().ancestors().find_map(ast::Path::cast) {
|
|
||||||
if let Some(resolved) = sema.resolve_path(&path) {
|
if let Some(resolved) = sema.resolve_path(&path) {
|
||||||
if path.syntax().parent().and_then(ast::Attr::cast).is_some() {
|
if path.syntax().parent().and_then(ast::Attr::cast).is_some() {
|
||||||
if let PathResolution::Def(ModuleDef::Function(func)) = resolved {
|
if let PathResolution::Def(ModuleDef::Function(func)) = resolved {
|
||||||
|
Loading…
Reference in New Issue
Block a user