Move the macro support code into its own crate (#529)

This commit is contained in:
konstin
2018-07-29 17:59:46 +02:00
committed by Alex Crichton
parent 0f50f39079
commit 0bd21b7bd2
7 changed files with 282 additions and 21 deletions

26
crates/macro-support/src/lib.rs Executable file
View File

@ -0,0 +1,26 @@
//! This crate contains the part of the implementation of the `#[wasm_bindgen]` optsibute that is
//! not in the shared backend crate.
#![doc(html_root_url = "https://docs.rs/wasm-bindgen-macro-support/0.2")]
extern crate proc_macro2;
extern crate quote;
#[macro_use]
extern crate syn;
extern crate wasm_bindgen_backend as backend;
extern crate wasm_bindgen_shared as shared;
pub use parser::BindgenAttrs;
use parser::MacroParse;
use quote::ToTokens;
mod parser;
/// Takes the parsed input from a `#[wasm_bindgen]` macro and returns the generated bindings
pub fn expand(item: syn::Item, opts: parser::BindgenAttrs) -> proc_macro2::TokenStream {
let mut tokens = proc_macro2::TokenStream::new();
let mut program = backend::ast::Program::default();
item.macro_parse(&mut program, (Some(opts), &mut tokens));
program.to_tokens(&mut tokens);
tokens
}