-
Notifications
You must be signed in to change notification settings - Fork 257
Open
Labels
gen-rustRelated to bindings for Rust-compiled-to-WebAssemblyRelated to bindings for Rust-compiled-to-WebAssembly
Description
This input:
mod a {
wit_bindgen::generate!({
inline: r#"
package a:b;
interface foo {
x: func();
}
world a {
export foo;
}
"#,
world: "a",
pub_export_macro: true,
});
}
mod b {
wit_bindgen::generate!({
inline: r#"
package a:b;
interface foo {
x: func();
}
interface bar {
x: func();
}
world b {
export foo;
export bar;
}
"#,
world: "b",
pub_export_macro: true,
});
}
fn main() {}fails with:
error[E0428]: the name `__export_a_b_foo_cabi` is defined multiple times
--> src/main.rs:20:5
|
2 | wit_bindgen::generate!({
| ----------------------- previous definition of the macro `__export_a_b_foo_cabi` here
...
20 | wit_bindgen::generate!({
| ^^^^^^^^^^^^^^^^^^^^^^^ `__export_a_b_foo_cabi` redefined here
|
= note: `__export_a_b_foo_cabi` must be defined only once in the macro namespace of this module
= note: this error originates in the macro `wit_bindgen::generate` (in Nightly builds, run with -Z macro-backtrace for more info)
For more information about this error, try `rustc --explain E0428`.
error: could not compile `wat` (bin "wat") due to 1 previous error
Basically we need to do more namespacing/scoping of macros that avoids #[macro_export]. I couldn't figure it out earlier but it's probably possible nowadays.
Metadata
Metadata
Assignees
Labels
gen-rustRelated to bindings for Rust-compiled-to-WebAssemblyRelated to bindings for Rust-compiled-to-WebAssembly