(
&mut self,
resolve: &Resolve,
name: &WorldKey,
id: InterfaceId,
in_world: bool,
)
| 550 | } |
| 551 | |
| 552 | fn import_interface( |
| 553 | &mut self, |
| 554 | resolve: &Resolve, |
| 555 | name: &WorldKey, |
| 556 | id: InterfaceId, |
| 557 | in_world: bool, |
| 558 | ) { |
| 559 | let mut generator = InterfaceGenerator::new(self, resolve); |
| 560 | |
| 561 | generator.current_interface = Some((id, name, InterfaceKind::Import)); |
| 562 | let snake = to_rust_ident(&match name { |
| 563 | WorldKey::Name(s) => s.to_snake_case(), |
| 564 | WorldKey::Interface(id) => resolve.interfaces[*id] |
| 565 | .name |
| 566 | .as_ref() |
| 567 | .unwrap() |
| 568 | .to_snake_case(), |
| 569 | }); |
| 570 | let module = if generator |
| 571 | .generator |
| 572 | .name_interface(resolve, id, name, InterfaceKind::Import) |
| 573 | { |
| 574 | // If this interface is remapped then that means that it was |
| 575 | // provided via the `with` key in the bindgen configuration. |
| 576 | // That means that bindings generation is skipped here. To |
| 577 | // accommodate future bindgens depending on this bindgen |
| 578 | // though we still generate a module which reexports the |
| 579 | // original module. This helps maintain the same output |
| 580 | // structure regardless of whether `with` is used. |
| 581 | let name_at_root = match &generator.generator.interface_names[&id] { |
| 582 | InterfaceName::Remapped { name_at_root, .. } => name_at_root, |
| 583 | InterfaceName::Path(_) => unreachable!(), |
| 584 | }; |
| 585 | let path_to_root = generator.path_to_root(); |
| 586 | format!( |
| 587 | " |
| 588 | pub mod {snake} {{ |
| 589 | #[allow(unused_imports)] |
| 590 | pub use {path_to_root}{name_at_root}::*; |
| 591 | }} |
| 592 | " |
| 593 | ) |
| 594 | } else { |
| 595 | // If this interface is not remapped then it's time to |
| 596 | // actually generate bindings here. |
| 597 | generator.generator.interface_link_options[&id].write_struct(&mut generator.src); |
| 598 | generator.types(id); |
| 599 | let key_name = resolve.name_world_key(name); |
| 600 | generator.generate_add_to_linker(id, &key_name); |
| 601 | |
| 602 | let module = &generator.src[..]; |
| 603 | let wt = generator.generator.wasmtime_path(); |
| 604 | |
| 605 | format!( |
| 606 | " |
| 607 | #[allow(clippy::all)] |
| 608 | pub mod {snake} {{ |
| 609 | #[allow(unused_imports)] |
no test coverage detected