use sim_kernel::{Export, Symbol};
use crate::runtime::shape_ops::shape_class_symbols;
use crate::shapes::CORE_SHAPE_CLASS;
use super::optional::append_optional_core_function_exports;
pub(super) fn core_exports() -> Vec<Export> {
let mut exports = Vec::new();
for symbol in [
Symbol::qualified("core", "Class"),
Symbol::qualified("core", "Function"),
Symbol::qualified("core", "Macro"),
Symbol::qualified("core", CORE_SHAPE_CLASS),
Symbol::qualified("core", "ShapeMatch"),
Symbol::qualified("core", "Codec"),
Symbol::qualified("core", "Help"),
Symbol::qualified("core", "Test"),
Symbol::qualified("core", "NumberDomain"),
Symbol::qualified("core", "Nil"),
Symbol::qualified("core", "Bool"),
Symbol::qualified("core", "Number"),
Symbol::qualified("core", "Symbol"),
Symbol::qualified("core", "String"),
Symbol::qualified("core", "Bytes"),
Symbol::qualified("core", "List"),
Symbol::qualified("core", "Table"),
Symbol::qualified("core", "Expr"),
Symbol::qualified("core", "Thunk"),
Symbol::qualified("core", "EvalRequest"),
Symbol::qualified("core", "EvalReply"),
Symbol::qualified("core", "LocalEvalFabric"),
Symbol::qualified("core", "Card"),
] {
exports.push(Export::Class {
symbol,
class_id: None,
});
}
for symbol in shape_class_symbols() {
exports.push(Export::Class {
symbol,
class_id: None,
});
}
for symbol in [
Symbol::qualified("core", "Any"),
Symbol::qualified("core", "Number"),
Symbol::qualified("core", "Expr"),
Symbol::qualified("core", "EncodeOptions"),
Symbol::qualified("core", "MacroSyntax"),
Symbol::qualified("codec", "LispSurface"),
Symbol::qualified("codec", "JsonTaggedExpr"),
Symbol::qualified("codec", "BinaryFrame"),
Symbol::qualified("codec", "BinaryBase64Text"),
Symbol::qualified("codec", "ChatTranscript"),
Symbol::qualified("codec", "AlgolSurface"),
Symbol::qualified("core", "Card"),
Symbol::qualified("browse", "Help"),
Symbol::qualified("browse", "Test"),
Symbol::qualified("browse", "Coverage"),
Symbol::qualified("browse", "Facet"),
Symbol::qualified("browse", "Redaction"),
Symbol::qualified("browse", "TestReport"),
] {
exports.push(Export::Shape {
symbol,
shape_id: None,
});
}
for symbol in [
Symbol::qualified("core", "macroexpand"),
Symbol::new("macroexpand"),
Symbol::qualified("core", "lambda"),
Symbol::new("lambda"),
Symbol::qualified("core", "with-eval-policy"),
Symbol::new("with-eval-policy"),
Symbol::qualified("core", "libs"),
Symbol::qualified("core", "lib"),
Symbol::qualified("core", "browse"),
Symbol::new("browse"),
Symbol::qualified("core", "exports"),
Symbol::qualified("core", "export"),
Symbol::qualified("core", "classes"),
Symbol::qualified("core", "functions"),
Symbol::qualified("core", "macros"),
Symbol::qualified("core", "shapes"),
Symbol::qualified("core", "codecs"),
Symbol::qualified("core", "number-domains"),
Symbol::qualified("core", "eval-policies"),
Symbol::qualified("core", "tests"),
Symbol::qualified("core", "lib-tests"),
Symbol::qualified("core", "run-tests"),
Symbol::qualified("core", "help"),
Symbol::qualified("core", "args"),
Symbol::qualified("core", "result"),
Symbol::qualified("core", "examples"),
Symbol::qualified("core", "coverage"),
Symbol::qualified("core", "facets"),
Symbol::qualified("core", "help-object"),
Symbol::qualified("core", "browse-neighbors"),
Symbol::new("browse-neighbors"),
Symbol::qualified("core", "browse-path"),
Symbol::new("browse-path"),
Symbol::qualified("class", "subclass?"),
Symbol::qualified("shape", "subshape?"),
Symbol::qualified("shape", "parents"),
Symbol::qualified("shape", "check"),
Symbol::qualified("shape", "check-expr"),
Symbol::qualified("shape", "assert"),
Symbol::qualified("shape", "accepted?"),
Symbol::qualified("shape", "rejected?"),
Symbol::qualified("shape", "score"),
Symbol::qualified("shape", "value-captures"),
Symbol::qualified("shape", "expr-captures"),
Symbol::qualified("shape", "diagnostics"),
Symbol::qualified("shape", "and"),
Symbol::qualified("shape", "or"),
Symbol::qualified("shape", "not"),
Symbol::qualified("shape", "list"),
Symbol::qualified("shape", "list-rest"),
Symbol::qualified("shape", "table"),
Symbol::qualified("shape", "table-required"),
Symbol::qualified("shape", "table-open"),
Symbol::qualified("shape", "table-closed"),
Symbol::qualified("shape", "repeat"),
Symbol::qualified("shape", "repeat-bounds"),
Symbol::qualified("shape", "all"),
Symbol::qualified("shape", "any"),
Symbol::qualified("shape", "none"),
Symbol::qualified("shape", "without"),
Symbol::qualified("shape", "compare"),
Symbol::qualified("shape", "compare-with"),
Symbol::qualified("shape", "venn"),
Symbol::qualified("shape", "venn-union"),
Symbol::qualified("shape", "venn-intersection"),
Symbol::qualified("shape", "venn-only"),
Symbol::qualified("shape", "venn-outside"),
Symbol::qualified("shape", "venn-exactly"),
Symbol::qualified("shape", "hook"),
Symbol::qualified("shape", "hook-trace"),
Symbol::qualified("shape", "hook-score-floor"),
Symbol::qualified("shape", "hook-accept-on-no-diagnostics"),
Symbol::qualified("shape", "hook-discard-on-diagnostic-prefix"),
Symbol::qualified("core", "list"),
Symbol::new("list"),
Symbol::qualified("core", "table"),
Symbol::new("table"),
Symbol::qualified("table", "catalog"),
Symbol::qualified("core", "cons"),
Symbol::new("cons"),
Symbol::qualified("core", "car"),
Symbol::new("car"),
Symbol::qualified("core", "cdr"),
Symbol::new("cdr"),
Symbol::qualified("core", "head"),
Symbol::new("head"),
Symbol::qualified("core", "tail"),
Symbol::new("tail"),
Symbol::qualified("core", "empty?"),
Symbol::new("empty?"),
Symbol::qualified("core", "len"),
Symbol::new("len"),
Symbol::qualified("core", "len-cmp"),
Symbol::new("len-cmp"),
Symbol::qualified("core", "len<"),
Symbol::new("len<"),
Symbol::qualified("core", "len<="),
Symbol::new("len<="),
Symbol::qualified("core", "len="),
Symbol::new("len="),
Symbol::qualified("core", "len>="),
Symbol::new("len>="),
Symbol::qualified("core", "len>"),
Symbol::new("len>"),
Symbol::qualified("core", "nth"),
Symbol::new("nth"),
Symbol::qualified("core", "take"),
Symbol::new("take"),
Symbol::qualified("core", "drop"),
Symbol::new("drop"),
Symbol::qualified("core", "list-impl"),
Symbol::new("list-impl"),
Symbol::qualified("core", "table-impl"),
Symbol::new("table-impl"),
Symbol::qualified("core", "get"),
Symbol::new("get"),
Symbol::qualified("core", "set"),
Symbol::new("set"),
Symbol::qualified("core", "has?"),
Symbol::new("has?"),
Symbol::qualified("core", "del"),
Symbol::new("del"),
Symbol::qualified("core", "keys"),
Symbol::new("keys"),
Symbol::qualified("core", "entries"),
Symbol::new("entries"),
Symbol::qualified("core", "clear"),
Symbol::new("clear"),
Symbol::qualified("core", "mkdir"),
Symbol::new("mkdir"),
Symbol::qualified("core", "opendir"),
Symbol::new("opendir"),
Symbol::qualified("core", "rmdir"),
Symbol::new("rmdir"),
Symbol::qualified("core", "dir?"),
Symbol::new("dir?"),
Symbol::qualified("core", "realize"),
Symbol::new("realize"),
] {
exports.push(Export::Function {
symbol,
function_id: None,
});
}
append_optional_core_function_exports(&mut exports);
exports.push(Export::Value {
symbol: Symbol::qualified("core", "local-fabric"),
});
exports
}