Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_db/src/helpers/famous_defs.rs')
| -rw-r--r-- | crates/ide_db/src/helpers/famous_defs.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/crates/ide_db/src/helpers/famous_defs.rs b/crates/ide_db/src/helpers/famous_defs.rs index b5e3907cfa..e8993d327f 100644 --- a/crates/ide_db/src/helpers/famous_defs.rs +++ b/crates/ide_db/src/helpers/famous_defs.rs @@ -1,5 +1,5 @@ //! See [`FamousDefs`]. -use hir::{Crate, Enum, Module, ScopeDef, Semantics, Trait}; +use hir::{Crate, Enum, MacroDef, Module, ScopeDef, Semantics, Trait}; use crate::RootDatabase; @@ -80,6 +80,10 @@ impl FamousDefs<'_, '_> { self.find_trait("core:marker:Copy") } + pub fn core_macros_builtin_derive(&self) -> Option<MacroDef> { + self.find_macro("core:macros:builtin:derive") + } + pub fn alloc(&self) -> Option<Crate> { self.find_crate("alloc") } @@ -110,6 +114,13 @@ impl FamousDefs<'_, '_> { } } + fn find_macro(&self, path: &str) -> Option<MacroDef> { + match self.find_def(path)? { + hir::ScopeDef::MacroDef(it) => Some(it), + _ => None, + } + } + fn find_enum(&self, path: &str) -> Option<Enum> { match self.find_def(path)? { hir::ScopeDef::ModuleDef(hir::ModuleDef::Adt(hir::Adt::Enum(it))) => Some(it), |