jon.recoil.org

Module Ppx_log_kernel.Log_tag

type t = {
  1. label : Ppxlib.label;
  2. label_is_optional : Base.bool;
  3. data : Ppx_log_kernel.Tag_data.t Ppxlib.loc;
}
val label_is_optional : Ppx_log_kernel.Log_tag.t -> Base.bool @@ portable
val label : Ppx_log_kernel.Log_tag.t -> Ppxlib.label @@ portable

order by the labels

See tests in the implementation for more examples.

Parsing rules:

  ~x:123         => {label = "x"; data = Constant <123>}
  ~x:some_expr   => {label = "x"; data = String_expression some_expr}
  ~x             => {label = "x"; data = String_expression x}
  ~x:(expr : t)  => {label = "x"; data = Type_constrained (expr, t)}
  (expr : t)     => {label = to_string expr; data = Type_constrained (expr, t)}

  expr           => {label = ""; data = String_expression expr}
  ~_:expr        => {label = ""; data = String_expression expr}
  ~_:(expr : t)  => {label = ""; data = Type_constrained (expr, t)}
  ?x:expr        => invalid

Produces an expression that will evaluate to a Log_tag.t list.