aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_proc_macro_srv/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_proc_macro_srv/src/lib.rs')
-rw-r--r--crates/ra_proc_macro_srv/src/lib.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/crates/ra_proc_macro_srv/src/lib.rs b/crates/ra_proc_macro_srv/src/lib.rs
new file mode 100644
index 000000000..80cfa1174
--- /dev/null
+++ b/crates/ra_proc_macro_srv/src/lib.rs
@@ -0,0 +1,26 @@
1//! RA Proc Macro Server
2//!
3//! This library is able to call compiled Rust custom derive dynamic libraries on arbitrary code.
4//! The general idea here is based on https://github.com/fedochet/rust-proc-macro-expander.
5//!
6//! But we change some several design for fitting RA needs:
7//!
8//! * We use `ra_tt` for proc-macro `TokenStream` server, it is easy to manipute and interact with
9//! RA then proc-macro2 token stream.
10//! * By **copying** the whole rustc `lib_proc_macro` code, we are able to build this with `stable`
11//! rustc rather than `unstable`. (Although in gerenal ABI compatibility is still an issue)
12
13#[allow(dead_code)]
14#[doc(hidden)]
15mod proc_macro;
16
17use proc_macro::bridge::client::TokenStream;
18use ra_proc_macro::{ExpansionResult, ExpansionTask, ListMacrosResult, ListMacrosTask};
19
20pub fn expand_task(_task: &ExpansionTask) -> Result<ExpansionResult, String> {
21 unimplemented!()
22}
23
24pub fn list_macros(_task: &ListMacrosTask) -> Result<ListMacrosResult, String> {
25 unimplemented!()
26}