Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/lib.rs')
-rw-r--r--crates/hir-def/src/lib.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/crates/hir-def/src/lib.rs b/crates/hir-def/src/lib.rs
index 97af8ad93d..fde1e6ca17 100644
--- a/crates/hir-def/src/lib.rs
+++ b/crates/hir-def/src/lib.rs
@@ -30,6 +30,7 @@ pub mod dyn_map;
pub mod item_tree;
+pub mod builtin_derive;
pub mod lang_item;
pub mod hir;
@@ -80,6 +81,7 @@ pub use hir_expand::{Intern, Lookup, tt};
use crate::{
attrs::AttrFlags,
+ builtin_derive::BuiltinDeriveImplTrait,
builtin_type::BuiltinType,
db::DefDatabase,
expr_store::ExpressionStoreSourceMap,
@@ -331,6 +333,19 @@ impl ImplId {
}
}
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+pub struct BuiltinDeriveImplLoc {
+ pub adt: AdtId,
+ pub trait_: BuiltinDeriveImplTrait,
+}
+
+#[salsa::interned(debug, no_lifetime)]
+#[derive(PartialOrd, Ord)]
+pub struct BuiltinDeriveImplId {
+ #[returns(ref)]
+ pub loc: BuiltinDeriveImplLoc,
+}
+
type UseLoc = ItemLoc<ast::Use>;
impl_intern!(UseId, UseLoc, intern_use, lookup_intern_use);
@@ -1009,6 +1024,20 @@ fn module_for_assoc_item_loc<'db>(
id.lookup(db).container.module(db)
}
+impl HasModule for BuiltinDeriveImplLoc {
+ #[inline]
+ fn module(&self, db: &dyn DefDatabase) -> ModuleId {
+ self.adt.module(db)
+ }
+}
+
+impl HasModule for BuiltinDeriveImplId {
+ #[inline]
+ fn module(&self, db: &dyn DefDatabase) -> ModuleId {
+ self.loc(db).module(db)
+ }
+}
+
impl HasModule for FunctionId {
#[inline]
fn module(&self, db: &dyn DefDatabase) -> ModuleId {