diff options
-rw-r--r-- | crates/ra_db/src/lib.rs | 14 | ||||
-rw-r--r-- | crates/ra_hir/src/ids.rs | 15 | ||||
-rw-r--r-- | crates/ra_hir_def/src/lib.rs | 15 |
3 files changed, 16 insertions, 28 deletions
diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs index f9d012cb0..e8852531b 100644 --- a/crates/ra_db/src/lib.rs +++ b/crates/ra_db/src/lib.rs | |||
@@ -15,6 +15,20 @@ pub use crate::{ | |||
15 | pub use relative_path::{RelativePath, RelativePathBuf}; | 15 | pub use relative_path::{RelativePath, RelativePathBuf}; |
16 | pub use salsa; | 16 | pub use salsa; |
17 | 17 | ||
18 | #[macro_export] | ||
19 | macro_rules! impl_intern_key { | ||
20 | ($name:ident) => { | ||
21 | impl $crate::salsa::InternKey for $name { | ||
22 | fn from_intern_id(v: $crate::salsa::InternId) -> Self { | ||
23 | $name(v) | ||
24 | } | ||
25 | fn as_intern_id(&self) -> $crate::salsa::InternId { | ||
26 | self.0 | ||
27 | } | ||
28 | } | ||
29 | }; | ||
30 | } | ||
31 | |||
18 | pub trait CheckCanceled { | 32 | pub trait CheckCanceled { |
19 | /// Aborts current query if there are pending changes. | 33 | /// Aborts current query if there are pending changes. |
20 | /// | 34 | /// |
diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs index 145837f7f..67de8b243 100644 --- a/crates/ra_hir/src/ids.rs +++ b/crates/ra_hir/src/ids.rs | |||
@@ -5,20 +5,7 @@ | |||
5 | //! This module defines a bunch of ids we are using. The most important ones are | 5 | //! This module defines a bunch of ids we are using. The most important ones are |
6 | //! probably `HirFileId` and `DefId`. | 6 | //! probably `HirFileId` and `DefId`. |
7 | 7 | ||
8 | use ra_db::salsa; | 8 | use ra_db::{impl_intern_key, salsa}; |
9 | |||
10 | macro_rules! impl_intern_key { | ||
11 | ($name:ident) => { | ||
12 | impl salsa::InternKey for $name { | ||
13 | fn from_intern_id(v: salsa::InternId) -> Self { | ||
14 | $name(v) | ||
15 | } | ||
16 | fn as_intern_id(&self) -> salsa::InternId { | ||
17 | self.0 | ||
18 | } | ||
19 | } | ||
20 | }; | ||
21 | } | ||
22 | 9 | ||
23 | /// This exists just for Chalk, because Chalk just has a single `StructId` where | 10 | /// This exists just for Chalk, because Chalk just has a single `StructId` where |
24 | /// we have different kinds of ADTs, primitive types and special type | 11 | /// we have different kinds of ADTs, primitive types and special type |
diff --git a/crates/ra_hir_def/src/lib.rs b/crates/ra_hir_def/src/lib.rs index 1d195d65d..b063530c2 100644 --- a/crates/ra_hir_def/src/lib.rs +++ b/crates/ra_hir_def/src/lib.rs | |||
@@ -35,7 +35,7 @@ use std::hash::{Hash, Hasher}; | |||
35 | 35 | ||
36 | use hir_expand::{ast_id_map::FileAstId, db::AstDatabase, AstId, HirFileId, MacroDefId, Source}; | 36 | use hir_expand::{ast_id_map::FileAstId, db::AstDatabase, AstId, HirFileId, MacroDefId, Source}; |
37 | use ra_arena::{impl_arena_id, map::ArenaMap, RawId}; | 37 | use ra_arena::{impl_arena_id, map::ArenaMap, RawId}; |
38 | use ra_db::{salsa, CrateId}; | 38 | use ra_db::{impl_intern_key, salsa, CrateId}; |
39 | use ra_syntax::{ast, AstNode}; | 39 | use ra_syntax::{ast, AstNode}; |
40 | 40 | ||
41 | use crate::{builtin_type::BuiltinType, db::InternDatabase}; | 41 | use crate::{builtin_type::BuiltinType, db::InternDatabase}; |
@@ -56,19 +56,6 @@ pub struct ModuleId { | |||
56 | pub struct LocalModuleId(RawId); | 56 | pub struct LocalModuleId(RawId); |
57 | impl_arena_id!(LocalModuleId); | 57 | impl_arena_id!(LocalModuleId); |
58 | 58 | ||
59 | macro_rules! impl_intern_key { | ||
60 | ($name:ident) => { | ||
61 | impl salsa::InternKey for $name { | ||
62 | fn from_intern_id(v: salsa::InternId) -> Self { | ||
63 | $name(v) | ||
64 | } | ||
65 | fn as_intern_id(&self) -> salsa::InternId { | ||
66 | self.0 | ||
67 | } | ||
68 | } | ||
69 | }; | ||
70 | } | ||
71 | |||
72 | #[derive(Debug)] | 59 | #[derive(Debug)] |
73 | pub struct ItemLoc<N: AstNode> { | 60 | pub struct ItemLoc<N: AstNode> { |
74 | pub(crate) module: ModuleId, | 61 | pub(crate) module: ModuleId, |