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.rs13
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),