MCPcopy Create free account
hub / github.com/arcjet/gravity / analyze_interface

Method analyze_interface

cmd/gravity/src/codegen/imports.rs:75–115  ·  view source on GitHub ↗
(&self, interface_id: InterfaceId)

Source from the content-addressed store, hash-verified

73 }
74
75 fn analyze_interface(&self, interface_id: InterfaceId) -> AnalyzedInterface {
76 let interface = &self.resolve.interfaces[interface_id];
77 let interface_name = interface.name.as_ref().expect("interface missing name");
78
79 // Analyze methods
80 let methods = interface
81 .functions
82 .values()
83 .map(|func| self.analyze_interface_method(func, interface_name))
84 .collect();
85
86 // Analyze interface types
87 let types = interface
88 .types
89 .values()
90 .filter_map(|&id| self.analyze_type(id))
91 .collect();
92
93 // Generate names
94 let go_interface_name =
95 GoIdentifier::public(format!("i-{}-{}", self.world.name, interface_name));
96
97 let wazero_module_name = if let Some(package_id) = interface.package {
98 let package = &self.resolve.packages[package_id];
99 format!(
100 "{}:{}/{}",
101 package.name.namespace, package.name.name, interface_name
102 )
103 } else {
104 interface_name.to_string()
105 };
106
107 AnalyzedInterface {
108 name: interface_name.clone(),
109 methods,
110 types,
111 constructor_param_name: GoIdentifier::private(interface_name),
112 go_interface_name,
113 wazero_module_name,
114 }
115 }
116
117 fn analyze_interface_method(&self, func: &Function, _interface_name: &str) -> InterfaceMethod {
118 let parameters = func

Callers 1

analyzeMethod · 0.80

Calls 2

analyze_typeMethod · 0.80

Tested by

no test coverage detected