Skip to content

Commit 5591ba9

Browse files
fix(bindgen): allow for imported resources to be lifted out
1 parent 99beacc commit 5591ba9

1 file changed

Lines changed: 5 additions & 9 deletions

File tree

crates/js-component-bindgen/src/transpile_bindgen.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3932,11 +3932,11 @@ impl<'a> Instantiator<'a, '_> {
39323932
}
39333933

39343934
fn exports(&mut self, exports: &NameMap<String, ExportIndex>) {
3935-
let mut export_resource_map = ResourceMap::new();
39363935
for (export_name, export_idx) in exports.raw_iter() {
39373936
let export = &self.component.export_items[*export_idx];
39383937
let world_key = &self.exports[export_name];
39393938
let item = &self.resolve.worlds[self.world].exports[world_key];
3939+
let mut export_resource_map = ResourceMap::new();
39403940

39413941
match export {
39423942
Export::LiftedFunction {
@@ -4105,10 +4105,11 @@ impl<'a> Instantiator<'a, '_> {
41054105
// This can't be tested at this time so leave it unimplemented
41064106
Export::ModuleStatic { .. } | Export::ModuleImport { .. } => unimplemented!(),
41074107
}
4108+
4109+
// Save information about exported resources for later
4110+
self.resource_exports.extend(export_resource_map);
41084111
}
41094112

4110-
// Save information about exported resources for later
4111-
self.resource_exports.extend(export_resource_map);
41124113
self.bindgen.esm_bindgen.populate_export_aliases();
41134114
}
41144115

@@ -4795,14 +4796,9 @@ pub fn gen_flat_lift_fn_js_expr(
47954796
if let Some(resource_typedef) = intrinsic_mgr
47964797
.exports_resource_index_types
47974798
.get(&resource_idx)
4798-
&& let Some(ResourceTable { imported, data }) =
4799+
&& let Some(ResourceTable { data, .. }) =
47994800
intrinsic_mgr.resource_exports.get(resource_typedef)
48004801
{
4801-
assert!(
4802-
!imported,
4803-
"imported resources cannot be owned and returned via lifting"
4804-
);
4805-
48064802
let (resource_class_name, create_resource_fn_js) = match data {
48074803
ResourceData::Guest { .. } => {
48084804
unimplemented!(

0 commit comments

Comments
 (0)