package validate

  1. Overview
  2. Docs

Source file pats.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
open Ppxlib
open Ast_helper

let var_pat ~loc name = Pat.var { txt = name; loc }

let n_element_tuple_pat ~prefix ~loc n =
  match n with
  | 0 -> Pat.construct { txt = Lident "()"; loc } None
  | 1 -> var_pat ~loc (Printf.sprintf "%s0" prefix)
  | _ ->
      Pat.tuple
        (List.init n (fun i -> var_pat ~loc (Printf.sprintf "%s%d" prefix i)))

let record_pat ~loc fields =
  let fields =
    List.map
      (fun name -> ({ txt = Lident name; loc }, Pat.var { txt = name; loc }))
      fields
  in
  Pat.record fields Closed
OCaml

Innovation. Community. Security.