mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-06-20 16:26:33 +00:00
Implement static
imports
This allows importing static objects like `document`, `window`, or an arbitrary JS object from a module
This commit is contained in:
@ -1044,9 +1044,12 @@ impl<'a, 'b> SubContext<'a, 'b> {
|
||||
for f in self.program.exports.iter() {
|
||||
self.generate_export(f);
|
||||
}
|
||||
for f in self.program.imports.iter() {
|
||||
for f in self.program.imported_functions.iter() {
|
||||
self.generate_import(f);
|
||||
}
|
||||
for f in self.program.imported_fields.iter() {
|
||||
self.generate_import_field(f);
|
||||
}
|
||||
for e in self.program.enums.iter() {
|
||||
self.generate_enum(e);
|
||||
}
|
||||
@ -1319,6 +1322,24 @@ impl<'a, 'b> SubContext<'a, 'b> {
|
||||
(format!("{} {}", prefix, dst), format!("{} {}", prefix, dst_ts))
|
||||
}
|
||||
|
||||
pub fn generate_import_field(&mut self, import: &shared::ImportField) {
|
||||
let name = import.shim_name();
|
||||
self.cx.imports_to_rewrite.insert(name.clone());
|
||||
|
||||
if let Some(ref module) = import.module {
|
||||
self.cx.imports.push_str(&format!("
|
||||
import {{ {} }} from '{}';
|
||||
", import.name, module));
|
||||
}
|
||||
|
||||
self.cx.expose_add_heap_object();
|
||||
self.cx.globals.push_str(&format!("
|
||||
export function {}() {{
|
||||
return addHeapObject({});
|
||||
}}
|
||||
", name, import.name));
|
||||
}
|
||||
|
||||
pub fn generate_import(&mut self, import: &shared::Import) {
|
||||
if let Some(ref module) = import.module {
|
||||
let name_to_import = import.class.as_ref().unwrap_or(&import.function.name);
|
||||
|
Reference in New Issue
Block a user