1
//! Symbol table and entries.
2
//!
3
//! Split by responsibility:
4
//! - [`entry`] — the `Symbol` struct + `SymbolKind`.
5
//! - [`table`] — the `SymbolTable` struct and core read/write API
6
//!   (`define`, `lookup`, `register_host_fns`, test/coverage state).
7
//! - [`builtins`] — `register_builtins` + entity constants/accessors
8
//!   + map-family macros.
9
//! - [`stdlib`] — financial-domain structs, `when`/`unless`/`upcase`
10
//!   essentials. Runs after `register_builtins`.
11

            
12
mod builtins;
13
mod builtins_generated;
14
mod entry;
15
mod stdlib;
16
mod table;
17

            
18
#[cfg(test)]
19
mod tests;
20

            
21
pub use entry::{Symbol, SymbolKind};
22
pub use table::{MAX_INLINE_DEPTH, SymbolTable};
23

            
24
/// The native builtin names registered from the org-tangled registry
25
/// (`builtins_generated::NATIVES`). Exposed so the native-dispatch
26
/// registry test can assert every documented native actually has a
27
/// codegen handler — the guard that catches "phantom natives" (a name
28
/// the reader accepts but codegen rejects with "not yet implemented").
29
#[cfg(test)]
30
#[must_use]
31
1
pub(crate) fn registered_native_names() -> &'static [&'static str] {
32
1
    builtins_generated::NATIVES
33
1
}