Skip to main content

sim_lib_lang_matrix/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Assembly point for the SIM language conformance matrix.
4
5use sim_lib_lang_cl::cl_lite_matrix_row;
6use sim_lib_lang_clojure::clojure_core_matrix_row;
7use sim_lib_lang_islisp::islisp_matrix_row;
8use sim_lib_lang_javascript::javascript_core_matrix_row;
9use sim_lib_lang_julia::julia_core_matrix_row;
10use sim_lib_lang_lua::lua_core_matrix_row;
11use sim_lib_lang_prolog::prolog_matrix_row;
12use sim_lib_lang_python::python_core_matrix_row;
13use sim_lib_lang_ruby::ruby_dsl_matrix_row;
14use sim_lib_lang_scheme::r7rs_small_matrix_row;
15use sim_lib_lang_typed_lazy::typed_lazy_matrix_row;
16use sim_lib_standard_core::ConformanceMatrix;
17
18/// Builds the complete runtime language conformance matrix.
19pub fn language_matrix() -> ConformanceMatrix {
20    let mut matrix = ConformanceMatrix::new();
21    matrix.register(r7rs_small_matrix_row());
22    matrix.register(cl_lite_matrix_row());
23    matrix.register(clojure_core_matrix_row());
24    matrix.register(islisp_matrix_row());
25    matrix.register(julia_core_matrix_row());
26    matrix.register(javascript_core_matrix_row());
27    matrix.register(lua_core_matrix_row());
28    matrix.register(ruby_dsl_matrix_row());
29    matrix.register(typed_lazy_matrix_row());
30    matrix.register(prolog_matrix_row());
31    matrix.register(python_core_matrix_row());
32    matrix
33}
34
35/// Cookbook recipes for this lib, embedded at build time.
36pub static RECIPES: sim_cookbook::EmbeddedDir =
37    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
38
39#[cfg(test)]
40mod closure_tests;
41#[cfg(test)]
42mod cross_language_specimen;
43#[cfg(test)]
44mod tests;