use std::path::Path;
pub(crate) fn ensure_builtin_signatures_installed() {
harn_parser::install_builtin_signatures(harn_vm::stdlib::all_builtin_signatures());
}
pub(crate) fn compiler_for_source(path: &Path, source: &str) -> harn_vm::Compiler {
harn_vm::Compiler::new()
.with_imported_enum_candidates(imported_enum_candidates_for_source(path, source))
}
pub(crate) fn imported_enum_candidates_for_source(path: &Path, source: &str) -> Vec<String> {
let mut candidates = harn_modules::build_with_source(path, source)
.imported_names_by_kind_for_file(path, harn_modules::DefKind::Enum)
.unwrap_or_default();
let mut candidates = candidates.drain().collect::<Vec<_>>();
candidates.sort_unstable();
candidates
}
pub(crate) fn compiler_with_imported_enum_candidates(
candidates: impl IntoIterator<Item = String>,
) -> harn_vm::Compiler {
harn_vm::Compiler::new().with_imported_enum_candidates(candidates)
}