pub fn register_vm_stdlib(vm: &mut harn_vm::Vm) {
force_link();
harn_vm::register_vm_stdlib(vm);
}
pub fn register_core_stdlib(vm: &mut harn_vm::Vm) {
force_link();
harn_vm::register_core_stdlib(vm);
}
pub fn force_link() {
harn_vm::stdlib::force_link();
harn_builtins::force_link();
harn_flow::force_link();
}
#[cfg(test)]
mod tests {
const OWNED_ELSEWHERE: &[&str] = &["url_parse", "flow_invariant_allow"];
#[test]
fn every_family_crate_contributes_its_builtins() {
super::force_link();
let names: Vec<_> = harn_vm::stdlib::all_builtin_manifest()
.iter()
.map(|entry| entry.name)
.collect();
for owned_elsewhere in OWNED_ELSEWHERE {
assert!(
names.contains(owned_elsewhere),
"`{owned_elsewhere}` is missing: its family crate was not linked"
);
}
}
}