nyar_wasm/instances/
display.rs

1use 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}