aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ids.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ids.rs')
-rw-r--r--crates/ra_hir/src/ids.rs34
1 files changed, 33 insertions, 1 deletions
diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs
index cd32033f3..aa6b2d2aa 100644
--- a/crates/ra_hir/src/ids.rs
+++ b/crates/ra_hir/src/ids.rs
@@ -2,7 +2,7 @@ use ra_db::{SourceRootId, LocationIntener, Cancelable, FileId};
2use ra_syntax::{SourceFileNode, SyntaxKind, SyntaxNode, SyntaxNodeRef, SourceFile, AstNode, ast}; 2use ra_syntax::{SourceFileNode, SyntaxKind, SyntaxNode, SyntaxNodeRef, SourceFile, AstNode, ast};
3 3
4use crate::{ 4use crate::{
5 MacroCallId, HirDatabase, PerNs, ModuleId, Module, Def, Function, Struct, Enum, 5 HirDatabase, PerNs, ModuleId, Module, Def, Function, Struct, Enum,
6 arena::{Arena, Id}, 6 arena::{Arena, Id},
7}; 7};
8 8
@@ -77,6 +77,38 @@ impl From<MacroCallId> for HirFileId {
77 } 77 }
78} 78}
79 79
80/// `MacroCallId` identifies a particular macro invocation, like
81/// `println!("Hello, {}", world)`.
82#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
83pub struct MacroCallId(u32);
84ra_db::impl_numeric_id!(MacroCallId);
85
86#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
87pub struct MacroCallLoc {
88 pub(crate) source_root_id: SourceRootId,
89 pub(crate) module_id: ModuleId,
90 pub(crate) source_item_id: SourceItemId,
91}
92
93impl MacroCallId {
94 pub(crate) fn loc(
95 self,
96 db: &impl AsRef<LocationIntener<MacroCallLoc, MacroCallId>>,
97 ) -> MacroCallLoc {
98 db.as_ref().id2loc(self)
99 }
100}
101
102impl MacroCallLoc {
103 #[allow(unused)]
104 pub(crate) fn id(
105 &self,
106 db: &impl AsRef<LocationIntener<MacroCallLoc, MacroCallId>>,
107 ) -> MacroCallId {
108 db.as_ref().loc2id(&self)
109 }
110}
111
80/// Def's are a core concept of hir. A `Def` is an Item (function, module, etc) 112/// Def's are a core concept of hir. A `Def` is an Item (function, module, etc)
81/// in a specific module. 113/// in a specific module.
82#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 114#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]