diff options
author | Aleksey Kladov <[email protected]> | 2019-01-01 17:59:00 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-01-01 19:15:35 +0000 |
commit | 289391e1635987d6a1ccbb9b40bce242590d461d (patch) | |
tree | 2567207cde92e5ef77a2378ef6726eaa548a0dea /crates/ra_hir/src/lib.rs | |
parent | 4161466918baedaeef995040888471a65ca997a4 (diff) |
use MFile
Diffstat (limited to 'crates/ra_hir/src/lib.rs')
-rw-r--r-- | crates/ra_hir/src/lib.rs | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs index 4c67921bd..1219b9fba 100644 --- a/crates/ra_hir/src/lib.rs +++ b/crates/ra_hir/src/lib.rs | |||
@@ -57,11 +57,18 @@ pub use self::function::FnSignatureInfo; | |||
57 | 57 | ||
58 | /// An `MFileId` is like a `FileId`, but it can also refer to code generated by | 58 | /// An `MFileId` is like a `FileId`, but it can also refer to code generated by |
59 | /// macros. | 59 | /// macros. |
60 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | ||
60 | pub enum MFileId { | 61 | pub enum MFileId { |
61 | File(FileId), | 62 | File(FileId), |
62 | Macro(MacroCallId), | 63 | Macro(MacroCallId), |
63 | } | 64 | } |
64 | 65 | ||
66 | impl From<FileId> for MFileId { | ||
67 | fn from(file_id: FileId) -> MFileId { | ||
68 | MFileId::File(file_id) | ||
69 | } | ||
70 | } | ||
71 | |||
65 | /// Def's are a core concept of hir. A `Def` is an Item (function, module, etc) | 72 | /// Def's are a core concept of hir. A `Def` is an Item (function, module, etc) |
66 | /// in a specific module. | 73 | /// in a specific module. |
67 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 74 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
@@ -163,7 +170,7 @@ pub(crate) type SourceFileItemId = Id<SyntaxNode>; | |||
163 | 170 | ||
164 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 171 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
165 | pub struct SourceItemId { | 172 | pub struct SourceItemId { |
166 | file_id: FileId, | 173 | mfile_id: MFileId, |
167 | /// None for the whole file. | 174 | /// None for the whole file. |
168 | item_id: Option<SourceFileItemId>, | 175 | item_id: Option<SourceFileItemId>, |
169 | } | 176 | } |
@@ -171,14 +178,14 @@ pub struct SourceItemId { | |||
171 | /// Maps item's `SyntaxNode`s to `SourceFileItemId` and back. | 178 | /// Maps item's `SyntaxNode`s to `SourceFileItemId` and back. |
172 | #[derive(Debug, PartialEq, Eq)] | 179 | #[derive(Debug, PartialEq, Eq)] |
173 | pub struct SourceFileItems { | 180 | pub struct SourceFileItems { |
174 | file_id: FileId, | 181 | mfile_id: MFileId, |
175 | arena: Arena<SyntaxNode>, | 182 | arena: Arena<SyntaxNode>, |
176 | } | 183 | } |
177 | 184 | ||
178 | impl SourceFileItems { | 185 | impl SourceFileItems { |
179 | fn new(file_id: FileId, source_file: SourceFile) -> SourceFileItems { | 186 | fn new(mfile_id: MFileId, source_file: SourceFile) -> SourceFileItems { |
180 | let mut res = SourceFileItems { | 187 | let mut res = SourceFileItems { |
181 | file_id, | 188 | mfile_id, |
182 | arena: Arena::default(), | 189 | arena: Arena::default(), |
183 | }; | 190 | }; |
184 | res.init(source_file); | 191 | res.init(source_file); |
@@ -198,11 +205,11 @@ impl SourceFileItems { | |||
198 | fn alloc(&mut self, item: SyntaxNode) -> SourceFileItemId { | 205 | fn alloc(&mut self, item: SyntaxNode) -> SourceFileItemId { |
199 | self.arena.alloc(item) | 206 | self.arena.alloc(item) |
200 | } | 207 | } |
201 | pub fn id_of(&self, file_id: FileId, item: SyntaxNodeRef) -> SourceFileItemId { | 208 | pub fn id_of(&self, mfile_id: MFileId, item: SyntaxNodeRef) -> SourceFileItemId { |
202 | assert_eq!( | 209 | assert_eq!( |
203 | self.file_id, file_id, | 210 | self.mfile_id, mfile_id, |
204 | "SourceFileItems: wrong file, expected {:?}, got {:?}", | 211 | "SourceFileItems: wrong file, expected {:?}, got {:?}", |
205 | self.file_id, file_id | 212 | self.mfile_id, mfile_id |
206 | ); | 213 | ); |
207 | self.id_of_unchecked(item) | 214 | self.id_of_unchecked(item) |
208 | } | 215 | } |