diff --git a/crates/cli-support/src/js.rs b/crates/cli-support/src/js.rs index fbc820cd..85233ae4 100644 --- a/crates/cli-support/src/js.rs +++ b/crates/cli-support/src/js.rs @@ -1171,7 +1171,7 @@ impl<'a> Context<'a> { let module = mem::replace(self.module, Module::default()); let wasm_bytes = parity_wasm::serialize(module).unwrap(); let bytes = wasm_gc::Config::new() - .demangle(false) + .demangle(self.config.demangle) .gc(&wasm_bytes) .unwrap(); *self.module = deserialize_buffer(&bytes).unwrap(); diff --git a/crates/cli-support/src/lib.rs b/crates/cli-support/src/lib.rs index 271bd6fd..5ed7f7b9 100644 --- a/crates/cli-support/src/lib.rs +++ b/crates/cli-support/src/lib.rs @@ -19,6 +19,7 @@ pub struct Bindgen { browser: bool, debug: bool, typescript: bool, + demangle: bool, } #[derive(Debug)] @@ -38,6 +39,7 @@ impl Bindgen { browser: false, debug: false, typescript: false, + demangle: true, } } @@ -66,6 +68,11 @@ impl Bindgen { self } + pub fn demangle(&mut self, demangle: bool) -> &mut Bindgen { + self.demangle = demangle; + self + } + pub fn generate>(&mut self, path: P) -> Result<(), Error> { self._generate(path.as_ref()) } diff --git a/crates/cli/src/bin/wasm-bindgen.rs b/crates/cli/src/bin/wasm-bindgen.rs index b2a00f8f..746d811c 100644 --- a/crates/cli/src/bin/wasm-bindgen.rs +++ b/crates/cli/src/bin/wasm-bindgen.rs @@ -24,6 +24,7 @@ Options: --browser Generate output that only works in a browser --typescript Output a TypeScript definition file --debug Include otherwise-extraneous debug checks in output + --no-demangle Don't demangle Rust symbol names -V --version Print the version number of wasm-bindgen "; @@ -35,6 +36,7 @@ struct Args { flag_out_dir: Option, flag_debug: bool, flag_version: bool, + flag_no_demangle: bool, arg_input: Option, } @@ -58,6 +60,7 @@ fn main() { .nodejs(args.flag_nodejs) .browser(args.flag_browser) .debug(args.flag_debug) + .demangle(!args.flag_no_demangle) .typescript(args.flag_typescript); let out_dir = match args.flag_out_dir {