Merge pull request #1617 from alexcrichton/fix-gc

Be sure to GC our imports as well as the module
This commit is contained in:
Alex Crichton 2019-06-23 13:27:50 -05:00 committed by GitHub
commit 7f55067fa0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 1 deletions

View File

@ -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.

View File

@ -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();
}