aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_expand/src/proc_macro.rs
diff options
context:
space:
mode:
authorEdwin Cheng <[email protected]>2020-03-18 09:47:59 +0000
committerEdwin Cheng <[email protected]>2020-03-25 11:50:12 +0000
commit34dc8d25c1e461cc311d6d4404f74502513cd3ae (patch)
tree00aab26b07c1cd42dfa350eeddc6c41e5bea178b /crates/ra_hir_expand/src/proc_macro.rs
parente2dd17f75b1bb5e1185acff66211e74430177592 (diff)
Add basic custom derive lowering
Diffstat (limited to 'crates/ra_hir_expand/src/proc_macro.rs')
-rw-r--r--crates/ra_hir_expand/src/proc_macro.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/crates/ra_hir_expand/src/proc_macro.rs b/crates/ra_hir_expand/src/proc_macro.rs
new file mode 100644
index 000000000..68c828790
--- /dev/null
+++ b/crates/ra_hir_expand/src/proc_macro.rs
@@ -0,0 +1,32 @@
1//! Proc Macro Expander stub
2
3use crate::{db::AstDatabase, LazyMacroId, MacroCallKind, MacroCallLoc};
4use ra_db::CrateId;
5
6#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
7pub struct ProcMacroExpander {
8 krate: CrateId,
9}
10
11impl ProcMacroExpander {
12 pub fn new(krate: CrateId) -> ProcMacroExpander {
13 ProcMacroExpander { krate }
14 }
15
16 pub fn expand(
17 &self,
18 db: &dyn AstDatabase,
19 id: LazyMacroId,
20 _tt: &tt::Subtree,
21 ) -> Result<tt::Subtree, mbe::ExpandError> {
22 let loc: MacroCallLoc = db.lookup_intern_macro(id);
23 let name = match loc.kind {
24 MacroCallKind::FnLike(_) => return Err(mbe::ExpandError::ConversionError),
25 MacroCallKind::Attr(_, name) => name,
26 };
27
28 dbg!(name);
29
30 unimplemented!()
31 }
32}