mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-16 02:00:51 +00:00
Merge pull request #1617 from alexcrichton/fix-gc
Be sure to GC our imports as well as the module
This commit is contained in:
commit
7f55067fa0
@ -204,8 +204,18 @@ impl<'a> Context<'a> {
|
||||
// After all we've done, especially
|
||||
// `unexport_unused_internal_exports()`, we probably have a bunch of
|
||||
// garbage in the module that's no longer necessary, so delete
|
||||
// everything that we don't actually need.
|
||||
// everything that we don't actually need. Afterwards make sure we don't
|
||||
// try to emit bindings for now-nonexistent imports by pruning our
|
||||
// `wasm_import_definitions` set.
|
||||
walrus::passes::gc::run(self.module);
|
||||
let remaining_imports = self
|
||||
.module
|
||||
.imports
|
||||
.iter()
|
||||
.map(|i| i.id())
|
||||
.collect::<HashSet<_>>();
|
||||
self.wasm_import_definitions
|
||||
.retain(|id, _| remaining_imports.contains(id));
|
||||
|
||||
// Cause any future calls to `should_write_global` to panic, making sure
|
||||
// we don't ask for items which we can no longer emit.
|
||||
|
@ -136,3 +136,18 @@ fn works_on_empty_project() {
|
||||
}
|
||||
|
||||
mod npm;
|
||||
|
||||
#[test]
|
||||
fn one_export_works() {
|
||||
let (mut cmd, _out_dir) = Project::new("one_export_works")
|
||||
.file(
|
||||
"src/lib.rs",
|
||||
r#"
|
||||
use wasm_bindgen::prelude::*;
|
||||
#[wasm_bindgen]
|
||||
pub fn foo() {}
|
||||
"#,
|
||||
)
|
||||
.wasm_bindgen("");
|
||||
cmd.assert().success();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user