(
&mut self,
resolve: &Resolve,
name: &WorldKey,
id: InterfaceId,
_files: &mut Files,
)
| 781 | } |
| 782 | |
| 783 | fn export_interface( |
| 784 | &mut self, |
| 785 | resolve: &Resolve, |
| 786 | name: &WorldKey, |
| 787 | id: InterfaceId, |
| 788 | _files: &mut Files, |
| 789 | ) -> Result<()> { |
| 790 | if let WorldKey::Name(_) = name { |
| 791 | self.interface_names.insert(id, name.clone()); |
| 792 | } |
| 793 | |
| 794 | for (type_name, ty) in &resolve.interfaces[id].types { |
| 795 | let exported = matches!(resolve.types[*ty].kind, TypeDefKind::Resource) |
| 796 | || self.has_exported_resource(resolve, Type::Id(*ty)); |
| 797 | |
| 798 | let mut generator = InterfaceGenerator::new(self, resolve, Some((id, name)), false); |
| 799 | |
| 800 | if exported || !generator.generator.types.contains(ty) { |
| 801 | generator.generator.types.insert(*ty); |
| 802 | generator.define_type(type_name, *ty); |
| 803 | } |
| 804 | |
| 805 | let data = generator.into(); |
| 806 | |
| 807 | let name = self.interface_name(resolve, Some(name)); |
| 808 | if exported { |
| 809 | &mut self.export_interfaces |
| 810 | } else { |
| 811 | &mut self.interfaces |
| 812 | } |
| 813 | .entry(name) |
| 814 | .or_default() |
| 815 | .extend(data); |
| 816 | } |
| 817 | |
| 818 | for (_, func) in &resolve.interfaces[id].functions { |
| 819 | let code = self.export(resolve, func, Some(name)); |
| 820 | self.src.push_str(&code); |
| 821 | } |
| 822 | |
| 823 | Ok(()) |
| 824 | } |
| 825 | |
| 826 | fn export_funcs( |
| 827 | &mut self, |
nothing calls this directly
no test coverage detected