From d0b6ed4441469acfb6bc6555d78abf12637b6cf4 Mon Sep 17 00:00:00 2001 From: Edwin Cheng Date: Wed, 18 Mar 2020 20:56:46 +0800 Subject: Add ProcMacroClient --- crates/ra_hir_expand/src/proc_macro.rs | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'crates/ra_hir_expand') diff --git a/crates/ra_hir_expand/src/proc_macro.rs b/crates/ra_hir_expand/src/proc_macro.rs index a8dee2052..296325b05 100644 --- a/crates/ra_hir_expand/src/proc_macro.rs +++ b/crates/ra_hir_expand/src/proc_macro.rs @@ -1,33 +1,31 @@ //! Proc Macro Expander stub -use crate::{db::AstDatabase, LazyMacroId, MacroCallKind, MacroCallLoc}; -use ra_db::CrateId; +use crate::{db::AstDatabase, LazyMacroId}; +use ra_db::{CrateId, ProcMacroId}; #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] pub struct ProcMacroExpander { krate: CrateId, + proc_macro_id: ProcMacroId, } impl ProcMacroExpander { - pub fn new(krate: CrateId) -> ProcMacroExpander { - ProcMacroExpander { krate } + pub fn new(krate: CrateId, proc_macro_id: ProcMacroId) -> ProcMacroExpander { + ProcMacroExpander { krate, proc_macro_id } } pub fn expand( &self, db: &dyn AstDatabase, - id: LazyMacroId, - _tt: &tt::Subtree, + _id: LazyMacroId, + tt: &tt::Subtree, ) -> Result { - let loc: MacroCallLoc = db.lookup_intern_macro(id); - let name = match loc.kind { - MacroCallKind::FnLike(_) => return Err(mbe::ExpandError::ConversionError), - MacroCallKind::Attr(_, name) => name, - }; - - log::debug!("Proc-macro-expanding name = {}", name); - - // Return nothing for now - return Ok(tt::Subtree::default()); + let krate_graph = db.crate_graph(); + let proc_macro = krate_graph[self.krate] + .proc_macro + .get(self.proc_macro_id.0) + .clone() + .ok_or_else(|| mbe::ExpandError::ConversionError)?; + proc_macro.custom_derive(tt) } } -- cgit v1.2.3 From db162df264a222021dbc7f1f93af94029f3948d9 Mon Sep 17 00:00:00 2001 From: Edwin Cheng Date: Fri, 27 Mar 2020 00:41:44 +0800 Subject: Remove deps on tt_mbe --- crates/ra_hir_expand/src/proc_macro.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'crates/ra_hir_expand') diff --git a/crates/ra_hir_expand/src/proc_macro.rs b/crates/ra_hir_expand/src/proc_macro.rs index 296325b05..4d270e0de 100644 --- a/crates/ra_hir_expand/src/proc_macro.rs +++ b/crates/ra_hir_expand/src/proc_macro.rs @@ -23,9 +23,10 @@ impl ProcMacroExpander { let krate_graph = db.crate_graph(); let proc_macro = krate_graph[self.krate] .proc_macro - .get(self.proc_macro_id.0) + .get(self.proc_macro_id.0 as usize) .clone() .ok_or_else(|| mbe::ExpandError::ConversionError)?; - proc_macro.custom_derive(tt) + + proc_macro.expander.expand(&tt, None).map_err(mbe::ExpandError::from) } } -- cgit v1.2.3