jon.recoil.org

Module Flambda2_reaper.Rev_expr

type tail_expr =
  1. | Invalid of {
    1. message : string;
    }
  2. | Apply_cont of Flambda2_terms.Apply_cont_expr.t
  3. | Switch of Flambda2_terms.Switch_expr.t
  4. | Apply of Flambda2_terms.Apply_expr.t
type rev_expr_holed =
  1. | Hole
  2. | Let of {
    1. bound_pattern : Flambda2_bound_identifiers.Bound_pattern.t;
    2. defining_expr : rev_named;
    3. parent : rev_expr_holed;
    }
  3. | Let_cont of {
    1. cont : Flambda2_identifiers.Continuation.t;
    2. handler : cont_handler;
    3. parent : rev_expr_holed;
    }
  4. | Let_cont_rec of {
    1. invariant_params : Flambda2_bound_identifiers.Bound_parameters.t;
    2. handlers : cont_handler Flambda2_identifiers.Continuation.Lmap.t;
    3. parent : rev_expr_holed;
    }
and rev_named =
  1. | Named of Flambda2_terms.Flambda.named
  2. | Set_of_closures of rev_set_of_closures
  3. | Static_consts of rev_static_const_or_code list
and rev_static_const_or_code =
  1. | Code
  2. | Deleted_code
  3. | Static_const of rev_static_const
and rev_static_const =
  1. | Set_of_closures of rev_set_of_closures
  2. | Other of Flambda2_terms.Static_const.t
    (*

    The Set_of_closures case in Static_const is not allowed in conjunction with Other.

    *)
and rev_code = {
  1. params_and_body : rev_params_and_body;
  2. free_names_of_params_and_body : Flambda2_nominal.Name_occurrences.t;
  3. code_metadata : Flambda2_terms.Code_metadata.t;
}
and cont_handler = {
  1. bound_parameters : Flambda2_bound_identifiers.Bound_parameters.t;
  2. is_exn_handler : bool;
  3. is_cold : bool;
  4. expr : rev_expr;
}
and rev_expr = {
  1. expr : tail_expr;
  2. holed_expr : rev_expr_holed;
}
type t = rev_expr