generate a module trait and call it

This commit is contained in:
Pat Hickey
2020-01-23 12:46:57 -08:00
parent cb24fd97c0
commit b4f21752b0
7 changed files with 139 additions and 17 deletions

View File

@@ -1,6 +1,7 @@
extern crate proc_macro;
mod funcs;
mod module_trait;
mod names;
mod parse;
mod types;
@@ -10,6 +11,7 @@ use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
use funcs::define_func;
use module_trait::define_module_trait;
use names::Names;
use types::define_datatype;
@@ -27,12 +29,14 @@ pub fn from_witx(args: TokenStream) -> TokenStream {
let modules = doc.modules().map(|module| {
let modname = names.module(&module.name);
let fs = module.funcs().map(|f| define_func(&names, &f));
let modtrait = define_module_trait(&names, &module);
quote!(
mod #modname {
use super::*;
use super::WasiCtx;
use super::types::*;
use memory::*;
#(#fs)*
#modtrait
}
)
});