Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/crates/component-macro/test-helpers/src/lib.rs
1692 views
1
use proc_macro::TokenStream;
2
use proc_macro2::{Ident, Span};
3
use quote::quote;
4
5
#[proc_macro]
6
pub fn foreach(input: TokenStream) -> TokenStream {
7
let input = proc_macro2::TokenStream::from(input);
8
let mut cwd = std::env::current_dir().unwrap();
9
cwd.push("crates/component-macro/tests/codegen");
10
let mut result = Vec::new();
11
for f in cwd.read_dir().unwrap() {
12
let f = f.unwrap().path();
13
if f.extension().and_then(|s| s.to_str()) == Some("wit") || f.is_dir() {
14
let name = f.file_stem().unwrap().to_str().unwrap();
15
let ident = Ident::new(&name.replace("-", "_"), Span::call_site());
16
let path = f.to_str().unwrap();
17
result.push(quote! {
18
#input!(#ident #name #path);
19
});
20
}
21
}
22
(quote!( #(#result)*)).into()
23
}
24
25