(
&mut self,
resolve: &Resolve,
name: &WorldKey,
id: InterfaceId,
_files: &mut Files,
)
| 511 | } |
| 512 | |
| 513 | fn import_interface( |
| 514 | &mut self, |
| 515 | resolve: &Resolve, |
| 516 | name: &WorldKey, |
| 517 | id: InterfaceId, |
| 518 | _files: &mut Files, |
| 519 | ) -> anyhow::Result<()> { |
| 520 | self.imported_interfaces.insert(id); |
| 521 | |
| 522 | let full_name = resolve.name_world_key(name); |
| 523 | match self.opts.with.iter().find(|e| e.0 == full_name) { |
| 524 | None => { |
| 525 | if let Some(prefix) = self |
| 526 | .interface_prefixes |
| 527 | .get(&(Direction::Import, name.clone())) |
| 528 | { |
| 529 | self.import_prefix = Some(prefix.clone()); |
| 530 | } |
| 531 | |
| 532 | let store = self.start_new_file(None); |
| 533 | let wasm_import_module = resolve.name_world_key(name); |
| 534 | let binding = Some(name); |
| 535 | let mut r#gen = self.interface(resolve, binding, true, Some(wasm_import_module)); |
| 536 | r#gen.interface = Some(id); |
| 537 | let namespace = |
| 538 | namespace(resolve, &TypeOwner::Interface(id), false, &r#gen.r#gen.opts); |
| 539 | let docs = resolve.interfaces[id].docs.contents.as_deref(); |
| 540 | r#gen |
| 541 | .r#gen |
| 542 | .h_src |
| 543 | .change_namespace_with_docs(&namespace, docs); |
| 544 | r#gen.types(id); |
| 545 | |
| 546 | for (_name, func) in resolve.interfaces[id].functions.iter() { |
| 547 | if matches!(func.kind, FunctionKind::Freestanding) { |
| 548 | r#gen.r#gen.h_src.change_namespace(&namespace); |
| 549 | r#gen.generate_function( |
| 550 | func, |
| 551 | &TypeOwner::Interface(id), |
| 552 | AbiVariant::GuestImport, |
| 553 | ); |
| 554 | } |
| 555 | } |
| 556 | self.finish_file(&namespace, store); |
| 557 | } |
| 558 | Some((_, val)) => { |
| 559 | let with_quotes = format!("\"{val}\""); |
| 560 | if !self.includes.contains(&with_quotes) { |
| 561 | self.includes.push(with_quotes); |
| 562 | } |
| 563 | } |
| 564 | } |
| 565 | let _ = self.import_prefix.take(); |
| 566 | Ok(()) |
| 567 | } |
| 568 | |
| 569 | fn export_interface( |
| 570 | &mut self, |
nothing calls this directly
no test coverage detected