pub struct PackageDeclaration {
pub runtime_functions: BTreeMap<MangledName, RuntimeFunction>,
pub runtime_globals: BTreeMap<MangledName, Type>,
pub package_name: String,
pub mcp_server: Option<String>,
pub values: BTreeMap<String, ValueSymbol>,
pub types: BTreeMap<String, TypeSymbol>,
pub runtime_types: BTreeMap<String, TypeSymbol>,
pub runtime_generics: BTreeSet<MangledName>,
pub shapes: Vec<Shape>,
pub namespaces: BTreeMap<String, NamespaceSymbol>,
pub closure_caches: BTreeSet<MangledName>,
}Expand description
Maps are BTreeMap for deterministic iteration order; codegen derives stable function-index assignments from it.
Directly constructed declarations must pass Self::check_type_limits before
cloning, formatting, serializing, or calling type/shape accessors. Checked
compilation validates borrowed declarations before any such consumer. Mutation
invalidates that validation; namespace destruction itself needs no validation.
Fields§
§runtime_functions: BTreeMap<MangledName, RuntimeFunction>Physical user-code signatures, separate from the source API. Inferred refinements may not describe the values crossing a runtime boundary.
runtime_globals: BTreeMap<MangledName, Type>§package_name: StringAlso used as the Wasm import-module name when codegen imports symbols from this package.
mcp_server: Option<String>Some(server) for a @mcp/<server> virtual package. Tools resolve to
TypedExprKind::McpCall and dispatch through submilli:mcp.call, so codegen
skips emitting per-tool imports for these. Set by the discovery catalog —
the structured signal that replaces matching on the @mcp/ name prefix.
values: BTreeMap<String, ValueSymbol>§types: BTreeMap<String, TypeSymbol>Named declarations only (interfaces, enums, aliases). Anonymous structural shapes live on shapes.
runtime_types: BTreeMap<String, TypeSymbol>Compiler-only declarations used to reconstruct hidden runtime classes. These names never enter source imports or rendered package declarations.
runtime_generics: BTreeSet<MangledName>Generic functions using the hidden runtime-descriptor argument.
shapes: Vec<Shape>Anonymous structural shapes (Object, Array, Union) for cross-module WasmGC subtype alignment.
namespaces: BTreeMap<String, NamespaceSymbol>Prelude-declared namespaces (Math, Temporal). User namespace {} is a parse error; always empty for user-source modules.
closure_caches: BTreeSet<MangledName>Functions and static methods whose closure cache the package exports as
a global (see crate::mangle::closure_cache), so that a consumer reading
one as a value gets the same closure the package itself does.
Implementations§
Source§impl PackageDeclaration
impl PackageDeclaration
Sourcepub fn new() -> Self
pub fn new() -> Self
Prefer Self::with_package when the package name is known.
pub fn with_package(package_name: impl Into<String>) -> Self
Sourcepub fn from_typed_ast(ast: &TypedAst) -> Self
pub fn from_typed_ast(ast: &TypedAst) -> Self
First-occurrence wins on duplicate names — typecheck has already emitted the diagnostic.
Sourcepub fn type_symbol(&self, mangled: &MangledName) -> Option<&TypeSymbol>
pub fn type_symbol(&self, mangled: &MangledName) -> Option<&TypeSymbol>
The named type declared under mangled. runtime_types holds the
declarations of every module under the name a type refers to them by;
a type re-exported from the root module is also known by its public
name, which only types records.
pub fn refresh_shapes(&mut self)
pub fn collect_shapes(&self) -> Vec<Shape>
Sourcepub fn check_type_limits(&self) -> Result<(), TypeTooLarge>
pub fn check_type_limits(&self) -> Result<(), TypeTooLarge>
Rejects oversized namespace metadata and types beyond the limits in
crate::type_size. Declarations read from artifact JSON are bounded
by the parser’s nesting limit, but an embedder can build one directly,
and every recursive walk over its types trusts those limits.