MCPcopy Create free account
hub / github.com/bytecodealliance/wit-bindgen / export_interface

Method export_interface

crates/go/src/lib.rs:783–824  ·  view source on GitHub ↗
(
        &mut self,
        resolve: &Resolve,
        name: &WorldKey,
        id: InterfaceId,
        _files: &mut Files,
    )

Source from the content-addressed store, hash-verified

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,

Callers

nothing calls this directly

Calls 8

newFunction · 0.85
has_exported_resourceMethod · 0.80
extendMethod · 0.80
insertMethod · 0.45
define_typeMethod · 0.45
interface_nameMethod · 0.45
exportMethod · 0.45
push_strMethod · 0.45

Tested by

no test coverage detected