Skip to main content

Crate mos_core

Crate mos_core 

Source
Expand description

Core types for the Mosaic typesetting engine.

Implements the document model (manifest §5) and diagnostics surface (manifest §31). Every other crate depends on this one; nothing here depends on parsing, layout, or backends.

The implementation is split into focused modules and re-exported flat at the crate root: consumers use mos_core::Diagnostic, mos_core::SourceSpan, etc., never the module paths. Internally:

Re-exports§

pub use codes::DiagnosticCategory;
pub use codes::DiagnosticCode;
pub use codes::DiagnosticDef;

Modules§

codes
Diagnostic code registry; the single source of truth for every diagnostic the compiler can emit.
diagnostics 🔒
User-facing diagnostics: severities, sub-message annotations, and machine-actionable fix-it suggestions.
document 🔒
The lowered semantic document graph (manifest §5, §6 stage 2).
error 🔒
The crate-level error type and Result alias.
hash 🔒
Deterministic content hashing for cache boundaries (design note docs/incremental-dependencies.md §4, §5).
path 🔒
Portable path resolution and display helpers.
sink 🔒
Diagnostic emission plumbing.
span 🔒
Source locations.

Structs§

CollectingSink
Collects every diagnostic and remembers whether any was an error.
ContentHash
Opaque content / dependency hash.
ContentHasher
An incremental builder for a deterministic ContentHash over a sequence of typed fields (design note §4).
Diagnostic
A user-facing diagnostic (manifest §16, §31).
DiagnosticAbort
A phase aborted for structural reasons (see the module docs). Carries no payload: the diagnostics explaining why have already been emitted to the sink.
Document
The lowered semantic document graph (manifest §5, §6 stage 2).
Node
A semantic document node (manifest §5.1).
NodeId
Stable identifier for a document node.
NodeSpec
The blueprint for a node handed to Document::alloc / Document::alloc_child. Carries only the fields a caller legitimately chooses: kind, span, and attributes. The arena supplies the id, the empty children list, and the content_hash/style_id placeholders, so an invalid node is unrepresentable at the call site.
SourceSpan
A byte-range location in a source file (manifest §6 stage 1).
StyleId
Identifier for a resolved style bundle.
Suggestion
A machine-actionable fix for a Diagnostic.

Enums§

AttrValue
Attribute value carried on a semantic Node.
CoreError
Convenience top-level error type for crates that want a single Result alias without inventing their own.
DiagnosticAnnotation
A sub-message attached to a Diagnostic.
NodeKind
The kinds of nodes Mosaic recognises (manifest §5.1).
PathError
Why a portable, /-separated path could not be resolved.
Severity
Diagnostic severity (manifest §31).

Traits§

DiagnosticSink
Receiver for diagnostics emitted during a compiler phase.

Functions§

display_path
Render a filesystem path for user-facing output with forward slashes on every platform.
linecol
Convert a byte offset into a 1-based (line, column) pair.
resolve_relative
Join a portable, /-separated relative path onto base, using the platform path separator throughout.
resolve_source_path
Resolve a portable, /-separated src_path (as written in a source file) relative to the directory containing source_file.

Type Aliases§

AttrMap
Attribute map carried on each node. Keys are interned strings in a later iteration; for now plain String keys are fine for the stub.
DiagnosticResult
Result of a compiler phase. Ok(T) on (possibly diagnostic-bearing) completion; Err(DiagnosticAbort) only on a structural abort.
Result