wasm_bindgen_macro/
lib.rs1#![doc(html_root_url = "https://docs.rs/wasm-bindgen-macro/0.2")]
2
3extern crate proc_macro;
4
5use proc_macro::TokenStream;
6use quote::quote;
7
8#[proc_macro_attribute]
10pub fn wasm_bindgen(attr: TokenStream, input: TokenStream) -> TokenStream {
11 match wasm_bindgen_macro_support::expand(attr.into(), input.into()) {
12 Ok(tokens) => {
13 if cfg!(feature = "xxx_debug_only_print_generated_code") {
14 println!("{}", tokens);
15 }
16 tokens.into()
17 }
18 Err(diagnostic) => (quote! { #diagnostic }).into(),
19 }
20}
21
22#[proc_macro]
36pub fn link_to(input: TokenStream) -> TokenStream {
37 match wasm_bindgen_macro_support::expand_link_to(input.into()) {
38 Ok(tokens) => {
39 if cfg!(feature = "xxx_debug_only_print_generated_code") {
40 println!("{}", tokens);
41 }
42 tokens.into()
43 }
44 Err(diagnostic) => (quote! { String::clone(#diagnostic) }).into(),
48 }
49}
50
51#[proc_macro_attribute]
52pub fn __wasm_bindgen_class_marker(attr: TokenStream, input: TokenStream) -> TokenStream {
53 match wasm_bindgen_macro_support::expand_class_marker(attr.into(), input.into()) {
54 Ok(tokens) => {
55 if cfg!(feature = "xxx_debug_only_print_generated_code") {
56 println!("{}", tokens);
57 }
58 tokens.into()
59 }
60 Err(diagnostic) => (quote! { #diagnostic }).into(),
61 }
62}
63
64#[proc_macro_derive(BindgenedStruct, attributes(wasm_bindgen))]
65pub fn __wasm_bindgen_struct_marker(item: TokenStream) -> TokenStream {
66 match wasm_bindgen_macro_support::expand_struct_marker(item.into()) {
67 Ok(tokens) => {
68 if cfg!(feature = "xxx_debug_only_print_generated_code") {
69 println!("{}", tokens);
70 }
71 tokens.into()
72 }
73 Err(diagnostic) => (quote! { #diagnostic }).into(),
74 }
75}