aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_expand/src/hygiene.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_expand/src/hygiene.rs')
-rw-r--r--crates/ra_hir_expand/src/hygiene.rs23
1 files changed, 12 insertions, 11 deletions
diff --git a/crates/ra_hir_expand/src/hygiene.rs b/crates/ra_hir_expand/src/hygiene.rs
index ed0e7aa78..cb554ae4b 100644
--- a/crates/ra_hir_expand/src/hygiene.rs
+++ b/crates/ra_hir_expand/src/hygiene.rs
@@ -9,7 +9,7 @@ use ra_syntax::ast;
9use crate::{ 9use crate::{
10 db::AstDatabase, 10 db::AstDatabase,
11 name::{AsName, Name}, 11 name::{AsName, Name},
12 HirFileId, HirFileIdRepr, MacroDefKind, 12 HirFileId, HirFileIdRepr, MacroCallId, MacroDefKind,
13}; 13};
14 14
15#[derive(Debug)] 15#[derive(Debug)]
@@ -22,17 +22,18 @@ impl Hygiene {
22 pub fn new(db: &impl AstDatabase, file_id: HirFileId) -> Hygiene { 22 pub fn new(db: &impl AstDatabase, file_id: HirFileId) -> Hygiene {
23 let def_crate = match file_id.0 { 23 let def_crate = match file_id.0 {
24 HirFileIdRepr::FileId(_) => None, 24 HirFileIdRepr::FileId(_) => None,
25 HirFileIdRepr::MacroFile(macro_file) => { 25 HirFileIdRepr::MacroFile(macro_file) => match macro_file.macro_call_id {
26 let lazy_id = match macro_file.macro_call_id { 26 MacroCallId::LazyMacro(id) => {
27 crate::MacroCallId::LazyMacro(id) => id, 27 let loc = db.lookup_intern_macro(id);
28 }; 28 match loc.def.kind {
29 let loc = db.lookup_intern_macro(lazy_id); 29 MacroDefKind::Declarative => loc.def.krate,
30 match loc.def.kind { 30 MacroDefKind::BuiltIn(_) => None,
31 MacroDefKind::Declarative => loc.def.krate, 31 MacroDefKind::BuiltInDerive(_) => None,
32 MacroDefKind::BuiltIn(_) => None, 32 MacroDefKind::BuiltInEager(_) => None,
33 MacroDefKind::BuiltInDerive(_) => None, 33 }
34 } 34 }
35 } 35 MacroCallId::EagerMacro(_id) => None,
36 },
36 }; 37 };
37 Hygiene { def_crate } 38 Hygiene { def_crate }
38 } 39 }