(
&mut self,
resolve: &Resolve,
key: &WorldKey,
id: InterfaceId,
files: &mut Files,
)
| 259 | } |
| 260 | |
| 261 | fn import_interface( |
| 262 | &mut self, |
| 263 | resolve: &Resolve, |
| 264 | key: &WorldKey, |
| 265 | id: InterfaceId, |
| 266 | files: &mut Files, |
| 267 | ) -> Result<()> { |
| 268 | let name = PkgResolver::interface_name(resolve, key); |
| 269 | let name = self.interface_ns.tmp(&name); |
| 270 | self.pkg_resolver |
| 271 | .import_interface_names |
| 272 | .insert(id, name.clone()); |
| 273 | |
| 274 | let mut r#gen = self.interface(resolve, &name, Direction::Import, Some(key)); |
| 275 | r#gen.types(id); |
| 276 | |
| 277 | for (_, func) in resolve.interfaces[id].functions.iter() { |
| 278 | r#gen.import(func); |
| 279 | } |
| 280 | |
| 281 | let fragment = r#gen.finish(); |
| 282 | // Write files |
| 283 | { |
| 284 | let directory = name.replace('.', "/"); |
| 285 | |
| 286 | // README |
| 287 | if let Some(content) = &resolve.interfaces[id].docs.contents |
| 288 | && !content.is_empty() |
| 289 | { |
| 290 | files.push(&format!("{directory}/README.md"), content.as_bytes()); |
| 291 | } |
| 292 | |
| 293 | // Source |
| 294 | let mut src = Source::default(); |
| 295 | wit_bindgen_core::generated_preamble(&mut src, VERSION); |
| 296 | uwriteln!(src, "{}", fragment.src); |
| 297 | files.push(&format!("{directory}/top.mbt"), indent(&src).as_bytes()); |
| 298 | |
| 299 | // FFI |
| 300 | let mut ffi = Source::default(); |
| 301 | wit_bindgen_core::generated_preamble(&mut ffi, VERSION); |
| 302 | uwriteln!(ffi, "{}", fragment.ffi); |
| 303 | for builtin in fragment.builtins { |
| 304 | uwriteln!(ffi, "{}", builtin); |
| 305 | } |
| 306 | files.push(&format!("{directory}/ffi.mbt"), indent(&ffi).as_bytes()); |
| 307 | |
| 308 | // moon.pkg.json |
| 309 | let mut moon_pkg = Source::default(); |
| 310 | self.write_moon_pkg( |
| 311 | &mut moon_pkg, |
| 312 | self.pkg_resolver.package_import.get(&name), |
| 313 | false, |
| 314 | ); |
| 315 | files.push(&format!("{directory}/moon.pkg.json"), moon_pkg.as_bytes()); |
| 316 | } |
| 317 | |
| 318 | Ok(()) |
nothing calls this directly
no test coverage detected