Module Flambda2_terms.Call_kind
Classification of application expressions.
module Function_call : sig ... endmodule Method_kind : sig ... endmodule Effect : sig ... endAlgebraic effect operations. The corresponding Apply_expr will have the callee set to None and an empty argument list for these. This is done to ensure there is no confusion between the different Simples.
type t = private | Function of {function_call : Flambda2_terms.Call_kind.Function_call.t;alloc_mode : Flambda2_term_basics.Alloc_mode.For_applications.t;
}| Method of {kind : Flambda2_terms.Call_kind.Method_kind.t;obj : Flambda2_term_basics.Simple.t;alloc_mode : Flambda2_term_basics.Alloc_mode.For_applications.t;
}| C_call of {needs_caml_c_call : bool;is_c_builtin : bool;effects : Flambda2_terms.Effects.t;coeffects : Flambda2_terms.Coeffects.t;alloc_mode : Flambda2_term_basics.Alloc_mode.For_applications.t;
}| Effect of Flambda2_terms.Call_kind.Effect.t
Whether an application expression corresponds to an OCaml function invocation, an OCaml method invocation, or an external call.
include Flambda2_terms.Expr_std.S with type t := Flambda2_terms.Call_kind.t
val print : Stdlib.Format.formatter -> Flambda2_terms.Call_kind.t -> unitinclude Flambda2_nominal.Contains_names.S
with type t := Flambda2_terms.Call_kind.t
val free_names :
Flambda2_terms.Call_kind.t ->
Flambda2_nominal.Name_occurrences.tCompute the free names of a term. Such computation covers all kinds of bindable names (variables, continuations, ...)
val apply_renaming :
Flambda2_terms.Call_kind.t ->
Flambda2_nominal.Renaming.t ->
Flambda2_terms.Call_kind.tApply a renaming throughout a term.
include Flambda2_nominal.Contains_ids.S
with type t := Flambda2_terms.Call_kind.t
val ids_for_export :
Flambda2_terms.Call_kind.t ->
Flambda2_nominal.Ids_for_export.tGather all table identifiers to export them.
val direct_function_call :
Flambda2_identifiers.Code_id.t ->
Flambda2_term_basics.Alloc_mode.For_applications.t ->
Flambda2_terms.Call_kind.tval indirect_function_call_unknown_arity :
Flambda2_term_basics.Alloc_mode.For_applications.t ->
Flambda2_terms.Call_kind.tval indirect_function_call_known_arity :
code_ids:Flambda2_identifiers.Code_id.Set.t Flambda2_lattices.Or_unknown.t ->
Flambda2_term_basics.Alloc_mode.For_applications.t ->
Flambda2_terms.Call_kind.tval c_call :
needs_caml_c_call:bool ->
is_c_builtin:bool ->
effects:Flambda2_terms.Effects.t ->
coeffects:Flambda2_terms.Coeffects.t ->
Flambda2_term_basics.Alloc_mode.For_applications.t ->
Flambda2_terms.Call_kind.tval effect : Flambda2_terms.Call_kind.Effect.t -> Flambda2_terms.Call_kind.t