Skip to main content

harn_parser/
lib.rs

1mod ast;
2pub(crate) mod builtin_signatures;
3pub mod diagnostic;
4mod parser;
5pub mod typechecker;
6
7pub use ast::*;
8pub use parser::*;
9pub use typechecker::{
10    block_definitely_exits, format_type, stmt_definitely_exits, DiagnosticSeverity, InlayHintInfo,
11    TypeChecker, TypeDiagnostic,
12};
13
14/// Returns `true` if `name` is a builtin recognized by the parser's static
15/// analyzer. Exposed for cross-crate drift tests (see
16/// `crates/harn-vm/tests/builtin_registry_alignment.rs`) and any future
17/// tooling that needs to validate builtin references without running the
18/// VM.
19pub fn is_known_builtin(name: &str) -> bool {
20    builtin_signatures::is_builtin(name)
21}
22
23/// Iterator over every builtin name known to the parser, in alphabetical
24/// order. Enables bidirectional drift checks against the VM's runtime
25/// registry — a parser entry with no runtime counterpart means a stale
26/// signature that should be removed.
27pub fn known_builtin_names() -> impl Iterator<Item = &'static str> {
28    builtin_signatures::iter_builtin_names()
29}
30
31pub fn known_builtin_metadata() -> impl Iterator<Item = builtin_signatures::BuiltinMetadata> {
32    builtin_signatures::iter_builtin_metadata()
33}