jon.recoil.org

Module Flambda2_terms.Trap_action

Actions affecting exception traps on the stack. These are always associated with an Apply_cont node; the trap action is executed before the application of the continuation.

Beware: continuations cannot be used both as an exception handler and as a normal continuation (since continuations used as exception handlers use a calling convention that may differ from normal).

module Raise_kind : sig ... end
type t =
  1. | Push of {
    1. exn_handler : Flambda2_identifiers.Continuation.t;
    }
  2. | Pop of {
    1. exn_handler : Flambda2_identifiers.Continuation.t;
      (*

      Note that even for Pop, exn_handler might not match the target continuation in the enclosing Apply_cont_expr. One example is when a value is being returned from the end of the non-exceptional block of a try...with.

      *)
    2. raise_kind : Flambda2_terms.Trap_action.Raise_kind.t option;
    }
include Flambda2_terms.Expr_std.S with type t := Flambda2_terms.Trap_action.t
include Flambda2_nominal.Contains_names.S with type t := Flambda2_terms.Trap_action.t

Compute the free names of a term. Such computation covers all kinds of bindable names (variables, continuations, ...)

module Option : sig ... end