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.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs
index 246377100..bcbcd3dd7 100644
--- a/crates/ra_hir/src/ids.rs
+++ b/crates/ra_hir/src/ids.rs
@@ -58,6 +58,17 @@ impl HirFileId {
58 } 58 }
59 } 59 }
60 60
61 /// Get the crate which the macro lives in, if it is a macro file.
62 pub(crate) fn macro_crate(self, db: &impl AstDatabase) -> Option<Crate> {
63 match self.0 {
64 HirFileIdRepr::File(_) => None,
65 HirFileIdRepr::Macro(macro_file) => {
66 let loc = macro_file.macro_call_id.loc(db);
67 Some(loc.def.krate)
68 }
69 }
70 }
71
61 pub(crate) fn parse_or_expand_query( 72 pub(crate) fn parse_or_expand_query(
62 db: &impl AstDatabase, 73 db: &impl AstDatabase,
63 file_id: HirFileId, 74 file_id: HirFileId,