Skip to main content

submilli_engine/
lib.rs

1//! Submilli interpreter library.
2//!
3
4pub mod arena;
5pub(crate) mod artifact_f64;
6pub mod asi;
7pub mod ast;
8pub mod authority;
9pub mod backtrace;
10pub mod capability_derivation;
11pub mod codegen;
12pub mod compile;
13mod compile_capabilities;
14pub mod compiler_error;
15pub mod compiler_limits;
16pub mod diagnostics;
17pub mod did_you_mean;
18pub mod doc_comment;
19pub mod lexer;
20pub(crate) mod literal_units;
21pub mod lower_patterns;
22pub mod mangle;
23pub mod package_declaration;
24pub mod packages;
25pub mod parser;
26pub mod rendering;
27pub mod runtime;
28pub mod shape;
29pub mod source;
30mod source_validation;
31pub mod span;
32pub mod stdlib;
33pub mod token;
34pub mod tree_height;
35pub mod type_info;
36mod type_rendering;
37pub mod type_size;
38mod type_walk;
39pub mod typechecker;
40pub mod typed_ast;
41pub mod types;
42
43pub use asi::Asi;
44pub use ast::{
45    AccessorKind, ArrayLiteralElement, ArrowBody, Ast, BinOp, Binding, BindingKind, CatchClause,
46    ChainPart, ClassMember, ClassModifiers, EnumInitializer, EnumMember, ExportedDecl, Expr,
47    ExprId, ExprKind, Ident, ImportKind, ImportSpecifier, IndexSignatureAnnotation,
48    InterfaceMember, ObjectLiteralField, ObjectLiteralMember, ObjectPatternField, ParamDecl,
49    PatternOrigin, PostfixOp, Stmt, StmtId, StmtKind, SwitchCase, SwitchDefault, TypeAnnotation,
50    TypeAnnotationField, TypeAnnotationKind, TypePredicateAnnotation, UnOp, Visibility,
51};
52pub use authority::{
53    AuthorityCallable, AuthorityCallableKind, AuthorityCheck, AuthorityEdge, AuthorityEffect,
54    AuthorityExposure, AuthorityMap, AuthorityPosition, AuthorityRoute, AuthorityRouteEffect,
55    AuthoritySpan, AuthorityWitnessStep,
56};
57pub use backtrace::{BacktraceMode, failure_message, render as render_backtrace};
58pub use capability_derivation::{DerivedCapability, derive_call_site_capability};
59pub use codegen::{SymbolTable, codegen};
60pub use compile::{
61    CompiledPackage, CompiledScript, PackageSourceModule, ParsedScript, PhaseTimings,
62    ScriptImports, compile_package, compile_package_with_transitive, compile_parsed_script_timed,
63    compile_script, compile_script_owned_by, parse_script, typecheck,
64    typecheck_package_to_typed_ast, typecheck_to_typed_ast,
65};
66pub use diagnostics::{Diagnostic, Severity};
67pub use doc_comment::{
68    DocCapability, DocCapabilityBinding, DocCapabilityBindingKind, DocCapabilityDiagnostic,
69    DocCapabilityLiteral, DocComment, DocParam, DocReturns, DocText, DocUnknownTag, RawDoc, doc,
70    parse_doc_comment,
71};
72pub use lexer::Lexer;
73pub use lower_patterns::lower as lower_patterns;
74pub use mangle::MangledName;
75pub use package_declaration::{
76    AccessorSig, ClassExtends, DefaultValue, Dispatch, EnumVariantValue, FieldSig, MethodSig,
77    NamespaceSymbol, PackageDeclaration, Param, PropertySig, RuntimeFunction, TypeKind, TypeSymbol,
78    ValueKind, ValueSymbol, VirtualDispatch,
79};
80pub use parser::parse;
81pub use runtime::{RunResult, RuntimeConfig, dispatch_main_async, instantiate_program_async};
82pub use shape::Shape;
83pub use source::{ModulePath, SourceFile, Sources};
84pub use span::{FileId, LineIndex, Span};
85pub use stdlib::{OptionalPackage, Stdlib};
86pub use token::{Token, TokenKind};
87pub use type_info::{FieldInfo, TypeInfo, TypeInfoId, TypeInfoIndex, TypeInfoKind, TypeInfoTable};
88pub use typechecker::{capability_binding_type, capture, check, desugar, infer, infer_package};
89pub use typed_ast::{
90    CapturedVar, ClosureBody, EnumVariantPayload, ExportEntry, ExportKind, FieldNarrowingCheck,
91    FieldNarrowingTest, ForOfKind, GenericArgument, GlobalKind, InterfaceCarrier,
92    InterfaceNarrowingTest, Intrinsic, PostfixTarget, TypedArrayElement, TypedAst,
93    TypedCatchClause, TypedChainPart, TypedClassAccessor, TypedClassConstructor, TypedClassDecl,
94    TypedClassField, TypedClassMethod, TypedExpr, TypedExprKind, TypedFunction, TypedGlobal,
95    TypedInterfaceDecl, TypedInterfaceMember, TypedNumberEnumDecl, TypedNumberEnumMember,
96    TypedObjectFieldOrigin, TypedObjectFieldSource, TypedObjectLiteralField, TypedObjectMember,
97    TypedParam, TypedStmt, TypedStmtKind, TypedStringEnumDecl, TypedStringEnumMember,
98    TypedSwitchCase, TypedSwitchValue, TypedTypeAliasDecl, TypedTypeDecl, TypeofTagKind,
99};
100pub use types::{IndexSignature, ObjectField, Package, TupleType, Type, TypePredicate};