nyar_wasm/instances/
display.rs1use super::*;
2
3impl Debug for WasiInstance {
4 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
5 let resources: Vec<_> = self.resources.values().map(|s| s.wasi_name.to_string()).collect();
6 let functions: Vec<_> = self.functions.values().map(|s| &s.symbol).collect();
7
8 f.debug_struct("WasiInstance")
9 .field("module", &self.module.to_string())
10 .field("resources", &resources)
11 .field("functions", &functions)
12 .finish()
13 }
14}
15
16impl ComponentSections for WasiInstance {
17 fn wasi_define<W: Write>(&self, w: &mut WastEncoder<W>) -> std::fmt::Result {
18 write!(w, "(import \"{name}\" (instance ${name}", name = self.module)?;
19 w.indent();
20 for wasi in self.resources.values() {
21 w.newline()?;
22 wasi.write_wasi_define(w)?;
23 }
24 self.alias_outer(w)?;
25 w.dedent(2);
26 self.alias_export(w, &self.module)
27 }
28
29 fn alias_outer<W: Write>(&self, w: &mut WastEncoder<W>) -> std::fmt::Result {
30 for imports in self.dependencies(&w.source.graph) {
31 imports.alias_outer(w)?;
32 }
33 for wasi in self.functions.values() {
34 w.newline()?;
35 wasi.alias_outer(w)?;
36 }
37 Ok(())
38 }
39
40 fn alias_export<W: Write>(&self, w: &mut WastEncoder<W>, module: &WasiModule) -> std::fmt::Result {
41 for wasi in self.resources.values() {
42 w.newline()?;
43 wasi.alias_export(w, module)?;
44 }
45 for wasi in self.functions.values() {
46 w.newline()?;
47 wasi.alias_export(w, module)?;
48 }
49 Ok(())
50 }
51
52 fn canon_lower<W: Write>(&self, _: &mut WastEncoder<W>) -> std::fmt::Result {
53 unreachable!()
54 }
55
56 fn wasm_define<W: Write>(&self, _: &mut WastEncoder<W>) -> std::fmt::Result {
57 unreachable!()
58 }
59}