Module Scalc.From_lcalc

type translation_config = {
  1. keep_special_ops : bool;
    (*

    When keep_special_ops is true, then this translation uses special Scalc AST nodes for higher-order operators like map, fold, handle_default, etc. This is useful if the target language after Scalc does not support nested functions like C.

    *)
  2. dead_value_assignment : bool;
    (*

    When dead_value_assignment is true, the translation inserts dummy assignments of the variable being defined in the current code branch just before raising a terminal error. This is useful for languages like Python and their linting tools like mypy. The assignment uses the polymorphic Ast.dead_value.

    *)
  3. no_struct_literals : bool;
    (*

    When no_struct_literals is true, the translation inserts a temporary variable to hold the initialization of struct literals. This matches what C89 expects.

    *)
  4. keep_module_names : bool;
    (*

    Without this flag, references to modules are expected to be variables defined in the preamble of the output. If set, module names are immutable and must be used as is in all references.

    *)
  5. renaming_context : Shared_ast.Renaming.context;
}