Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/references.rs')
| -rw-r--r-- | crates/ide/src/references.rs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs index 5e6f0ef6a5..4ef9e3d459 100644 --- a/crates/ide/src/references.rs +++ b/crates/ide/src/references.rs @@ -57,8 +57,6 @@ pub(crate) fn find_all_refs( let syntax = sema.parse(position.file_id).syntax().clone(); let make_searcher = |literal_search: bool| { move |def: Definition| { - let mut usages = - def.usages(sema).set_scope(search_scope.clone()).include_self_refs().all(); let declaration = match def { Definition::Module(module) => { Some(NavigationTarget::from_module_to_decl(sema.db, module)) @@ -72,6 +70,8 @@ pub(crate) fn find_all_refs( nav, } }); + let mut usages = + def.usages(sema).set_scope(search_scope.clone()).include_self_refs().all(); if literal_search { retain_adt_literal_usages(&mut usages, def, sema); } @@ -1535,4 +1535,34 @@ trait Trait { "#]], ) } + + #[test] + fn attr() { + check( + r#" +//- proc_macros: identity + +#[proc_macros::$0identity] +fn func() {} +"#, + expect![[r#" + identity Attribute FileId(1) 1..107 32..40 + + FileId(0) 16..24 + "#]], + ) + } + + #[test] + fn derive() { + check( + r#" +//- proc_macros: derive_identity + +#[derive(proc_macros::DeriveIdentity$0)] +struct Foo; +"#, + expect![[r#""#]], + ) + } } |