diff options
Diffstat (limited to 'crates/ra_hir/src/ids.rs')
-rw-r--r-- | crates/ra_hir/src/ids.rs | 11 |
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, |