1697 lines
53 KiB
OCaml
1697 lines
53 KiB
OCaml
|
|
open! Base
|
||
|
|
|
||
|
|
open struct
|
||
|
|
type _shadow_constructors =
|
||
|
|
| []
|
||
|
|
| ( :: )
|
||
|
|
| None
|
||
|
|
| Some
|
||
|
|
end
|
||
|
|
|
||
|
|
module Abstract = struct
|
||
|
|
type t [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__002_ = "expansion.ml.Abstract.t" in
|
||
|
|
fun x__003_ -> Sexplib0.Sexp_conv_error.empty_type error_source__002_ x__003_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
let sexp_of_t = (fun _ -> assert false : t -> Sexplib0.Sexp.t)
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Tuple = struct
|
||
|
|
type t = int * int * int [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__012_ = "expansion.ml.Tuple.t" in
|
||
|
|
function
|
||
|
|
| Sexplib0.Sexp.List [ arg0__005_; arg1__006_; arg2__007_ ] ->
|
||
|
|
let res0__008_ = int_of_sexp arg0__005_
|
||
|
|
and res1__009_ = int_of_sexp arg1__006_
|
||
|
|
and res2__010_ = int_of_sexp arg2__007_ in
|
||
|
|
res0__008_, res1__009_, res2__010_
|
||
|
|
| sexp__011_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.tuple_of_size_n_expected error_source__012_ 3 sexp__011_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun (arg0__013_, arg1__014_, arg2__015_) ->
|
||
|
|
let res0__016_ = sexp_of_int arg0__013_
|
||
|
|
and res1__017_ = sexp_of_int arg1__014_
|
||
|
|
and res2__018_ = sexp_of_int arg2__015_ in
|
||
|
|
Sexplib0.Sexp.List [ res0__016_; res1__017_; res2__018_ ]
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Record = struct
|
||
|
|
type t =
|
||
|
|
{ a : int
|
||
|
|
; b : int
|
||
|
|
; c : int
|
||
|
|
}
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__020_ = "expansion.ml.Record.t" in
|
||
|
|
fun x__021_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__020_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "c"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest = Empty
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "c" -> 2
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, (c, ()))) : t -> { a; b; c })
|
||
|
|
x__021_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun { a = a__023_; b = b__025_; c = c__027_ } ->
|
||
|
|
let bnds__022_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__022_ =
|
||
|
|
let arg__028_ = sexp_of_int c__027_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "c"; arg__028_ ] :: bnds__022_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__022_ =
|
||
|
|
let arg__026_ = sexp_of_int b__025_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__026_ ] :: bnds__022_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__022_ =
|
||
|
|
let arg__024_ = sexp_of_int a__023_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__024_ ] :: bnds__022_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__022_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Mutable_record = struct
|
||
|
|
type t =
|
||
|
|
{ mutable a : int
|
||
|
|
; mutable b : int
|
||
|
|
; mutable c : int
|
||
|
|
}
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__030_ = "expansion.ml.Mutable_record.t" in
|
||
|
|
fun x__031_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__030_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "c"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest = Empty
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "c" -> 2
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, (c, ()))) : t -> { a; b; c })
|
||
|
|
x__031_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun { a = a__033_; b = b__035_; c = c__037_ } ->
|
||
|
|
let bnds__032_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__032_ =
|
||
|
|
let arg__038_ = sexp_of_int c__037_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "c"; arg__038_ ] :: bnds__032_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__032_ =
|
||
|
|
let arg__036_ = sexp_of_int b__035_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__036_ ] :: bnds__032_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__032_ =
|
||
|
|
let arg__034_ = sexp_of_int a__033_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__034_ ] :: bnds__032_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__032_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Variant = struct
|
||
|
|
type t =
|
||
|
|
| A
|
||
|
|
| B of int * int
|
||
|
|
| C of
|
||
|
|
{ a : int
|
||
|
|
; b : int
|
||
|
|
; d : int
|
||
|
|
}
|
||
|
|
| D of
|
||
|
|
{ mutable a : int
|
||
|
|
; mutable b : int
|
||
|
|
; mutable t : int
|
||
|
|
}
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__041_ = "expansion.ml.Variant.t" in
|
||
|
|
function
|
||
|
|
| Sexplib0.Sexp.Atom ("a" | "A") -> A
|
||
|
|
| Sexplib0.Sexp.List
|
||
|
|
(Sexplib0.Sexp.Atom (("b" | "B") as _tag__044_) :: sexp_args__045_) as
|
||
|
|
_sexp__043_ ->
|
||
|
|
(match sexp_args__045_ with
|
||
|
|
| [ arg0__046_; arg1__047_ ] ->
|
||
|
|
let res0__048_ = int_of_sexp arg0__046_
|
||
|
|
and res1__049_ = int_of_sexp arg1__047_ in
|
||
|
|
B (res0__048_, res1__049_)
|
||
|
|
| _ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_incorrect_n_args
|
||
|
|
error_source__041_
|
||
|
|
_tag__044_
|
||
|
|
_sexp__043_)
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom ("c" | "C") :: sexps__051_) as sexp__050_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexps
|
||
|
|
~context:sexp__050_
|
||
|
|
~caller:error_source__041_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "d"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest = Empty
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "d" -> 2
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, (d, ()))) : t -> C { a; b; d })
|
||
|
|
sexps__051_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom ("d" | "D") :: sexps__053_) as sexp__052_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexps
|
||
|
|
~context:sexp__052_
|
||
|
|
~caller:error_source__041_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "t"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest = Empty
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "t" -> 2
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, (t, ()))) : t -> D { a; b; t })
|
||
|
|
sexps__053_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom ("a" | "A") :: _) as sexp__042_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_no_args error_source__041_ sexp__042_
|
||
|
|
| Sexplib0.Sexp.Atom ("b" | "B") as sexp__042_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_takes_args error_source__041_ sexp__042_
|
||
|
|
| Sexplib0.Sexp.Atom ("c" | "C") as sexp__042_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_takes_args error_source__041_ sexp__042_
|
||
|
|
| Sexplib0.Sexp.Atom ("d" | "D") as sexp__042_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_takes_args error_source__041_ sexp__042_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__040_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_sum error_source__041_ sexp__040_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__040_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_sum error_source__041_ sexp__040_
|
||
|
|
| sexp__040_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.unexpected_stag error_source__041_ sexp__040_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(function
|
||
|
|
| A -> Sexplib0.Sexp.Atom "A"
|
||
|
|
| B (arg0__054_, arg1__055_) ->
|
||
|
|
let res0__056_ = sexp_of_int arg0__054_
|
||
|
|
and res1__057_ = sexp_of_int arg1__055_ in
|
||
|
|
Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "B"; res0__056_; res1__057_ ]
|
||
|
|
| C { a = a__059_; b = b__061_; d = d__063_ } ->
|
||
|
|
let bnds__058_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__058_ =
|
||
|
|
let arg__064_ = sexp_of_int d__063_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "d"; arg__064_ ] :: bnds__058_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__058_ =
|
||
|
|
let arg__062_ = sexp_of_int b__061_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__062_ ] :: bnds__058_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__058_ =
|
||
|
|
let arg__060_ = sexp_of_int a__059_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__060_ ] :: bnds__058_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List (Sexplib0.Sexp.Atom "C" :: bnds__058_)
|
||
|
|
| D { a = a__066_; b = b__068_; t = t__070_ } ->
|
||
|
|
let bnds__065_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__065_ =
|
||
|
|
let arg__071_ = sexp_of_int t__070_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "t"; arg__071_ ] :: bnds__065_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__065_ =
|
||
|
|
let arg__069_ = sexp_of_int b__068_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__069_ ] :: bnds__065_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__065_ =
|
||
|
|
let arg__067_ = sexp_of_int a__066_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__067_ ] :: bnds__065_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List (Sexplib0.Sexp.Atom "D" :: bnds__065_)
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Poly_variant = struct
|
||
|
|
type t =
|
||
|
|
[ `A
|
||
|
|
| `B of int
|
||
|
|
]
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let __t_of_sexp__ =
|
||
|
|
(let error_source__077_ = "expansion.ml.Poly_variant.t" in
|
||
|
|
function
|
||
|
|
| Sexplib0.Sexp.Atom atom__073_ as _sexp__075_ ->
|
||
|
|
(match atom__073_ with
|
||
|
|
| "A" -> `A
|
||
|
|
| "B" -> Sexplib0.Sexp_conv_error.ptag_takes_args error_source__077_ _sexp__075_
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom atom__073_ :: sexp_args__076_) as
|
||
|
|
_sexp__075_ ->
|
||
|
|
(match atom__073_ with
|
||
|
|
| "B" as _tag__078_ ->
|
||
|
|
(match sexp_args__076_ with
|
||
|
|
| [ arg0__079_ ] ->
|
||
|
|
let res0__080_ = int_of_sexp arg0__079_ in
|
||
|
|
`B res0__080_
|
||
|
|
| _ ->
|
||
|
|
Sexplib0.Sexp_conv_error.ptag_incorrect_n_args
|
||
|
|
error_source__077_
|
||
|
|
_tag__078_
|
||
|
|
_sexp__075_)
|
||
|
|
| "A" -> Sexplib0.Sexp_conv_error.ptag_no_args error_source__077_ _sexp__075_
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__074_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_poly_var error_source__077_ sexp__074_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__074_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_poly_var error_source__077_ sexp__074_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = __t_of_sexp__
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__082_ = "expansion.ml.Poly_variant.t" in
|
||
|
|
fun sexp__081_ ->
|
||
|
|
try __t_of_sexp__ sexp__081_ with
|
||
|
|
| Sexplib0.Sexp_conv_error.No_variant_match ->
|
||
|
|
Sexplib0.Sexp_conv_error.no_matching_variant_found error_source__082_ sexp__081_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(function
|
||
|
|
| `A -> Sexplib0.Sexp.Atom "A"
|
||
|
|
| `B v__083_ -> Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "B"; sexp_of_int v__083_ ]
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Inline_poly_variant = struct
|
||
|
|
type t =
|
||
|
|
[ Poly_variant.t
|
||
|
|
| `C of int * int
|
||
|
|
]
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let __t_of_sexp__ =
|
||
|
|
(let error_source__095_ = "expansion.ml.Inline_poly_variant.t" in
|
||
|
|
fun sexp__084_ ->
|
||
|
|
try (Poly_variant.__t_of_sexp__ sexp__084_ :> t) with
|
||
|
|
| Sexplib0.Sexp_conv_error.No_variant_match ->
|
||
|
|
(match sexp__084_ with
|
||
|
|
| Sexplib0.Sexp.Atom atom__085_ as _sexp__087_ ->
|
||
|
|
(match atom__085_ with
|
||
|
|
| "C" ->
|
||
|
|
Sexplib0.Sexp_conv_error.ptag_takes_args error_source__095_ _sexp__087_
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom atom__085_ :: sexp_args__088_) as
|
||
|
|
_sexp__087_ ->
|
||
|
|
(match atom__085_ with
|
||
|
|
| "C" as _tag__089_ ->
|
||
|
|
(match sexp_args__088_ with
|
||
|
|
| [ arg0__096_ ] ->
|
||
|
|
let res0__097_ =
|
||
|
|
match arg0__096_ with
|
||
|
|
| Sexplib0.Sexp.List [ arg0__090_; arg1__091_ ] ->
|
||
|
|
let res0__092_ = int_of_sexp arg0__090_
|
||
|
|
and res1__093_ = int_of_sexp arg1__091_ in
|
||
|
|
res0__092_, res1__093_
|
||
|
|
| sexp__094_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.tuple_of_size_n_expected
|
||
|
|
error_source__095_
|
||
|
|
2
|
||
|
|
sexp__094_
|
||
|
|
in
|
||
|
|
`C res0__097_
|
||
|
|
| _ ->
|
||
|
|
Sexplib0.Sexp_conv_error.ptag_incorrect_n_args
|
||
|
|
error_source__095_
|
||
|
|
_tag__089_
|
||
|
|
_sexp__087_)
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__086_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_poly_var
|
||
|
|
error_source__095_
|
||
|
|
sexp__086_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__086_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_poly_var
|
||
|
|
error_source__095_
|
||
|
|
sexp__086_)
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = __t_of_sexp__
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__099_ = "expansion.ml.Inline_poly_variant.t" in
|
||
|
|
fun sexp__098_ ->
|
||
|
|
try __t_of_sexp__ sexp__098_ with
|
||
|
|
| Sexplib0.Sexp_conv_error.No_variant_match ->
|
||
|
|
Sexplib0.Sexp_conv_error.no_matching_variant_found error_source__099_ sexp__098_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(function
|
||
|
|
| #Poly_variant.t as v__100_ -> Poly_variant.sexp_of_t v__100_
|
||
|
|
| `C v__101_ ->
|
||
|
|
Sexplib0.Sexp.List
|
||
|
|
[ Sexplib0.Sexp.Atom "C"
|
||
|
|
; (let arg0__102_, arg1__103_ = v__101_ in
|
||
|
|
let res0__104_ = sexp_of_int arg0__102_
|
||
|
|
and res1__105_ = sexp_of_int arg1__103_ in
|
||
|
|
Sexplib0.Sexp.List [ res0__104_; res1__105_ ])
|
||
|
|
]
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Recursive = struct
|
||
|
|
type t =
|
||
|
|
| Banana of t
|
||
|
|
| Orange
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let rec t_of_sexp =
|
||
|
|
(let error_source__108_ = "expansion.ml.Recursive.t" in
|
||
|
|
function
|
||
|
|
| Sexplib0.Sexp.List
|
||
|
|
(Sexplib0.Sexp.Atom (("banana" | "Banana") as _tag__111_) :: sexp_args__112_) as
|
||
|
|
_sexp__110_ ->
|
||
|
|
(match sexp_args__112_ with
|
||
|
|
| [ arg0__113_ ] ->
|
||
|
|
let res0__114_ = t_of_sexp arg0__113_ in
|
||
|
|
Banana res0__114_
|
||
|
|
| _ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_incorrect_n_args
|
||
|
|
error_source__108_
|
||
|
|
_tag__111_
|
||
|
|
_sexp__110_)
|
||
|
|
| Sexplib0.Sexp.Atom ("orange" | "Orange") -> Orange
|
||
|
|
| Sexplib0.Sexp.Atom ("banana" | "Banana") as sexp__109_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_takes_args error_source__108_ sexp__109_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom ("orange" | "Orange") :: _) as sexp__109_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_no_args error_source__108_ sexp__109_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__107_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_sum error_source__108_ sexp__107_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__107_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_sum error_source__108_ sexp__107_
|
||
|
|
| sexp__107_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.unexpected_stag error_source__108_ sexp__107_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let rec sexp_of_t =
|
||
|
|
(function
|
||
|
|
| Banana arg0__115_ ->
|
||
|
|
let res0__116_ = sexp_of_t arg0__115_ in
|
||
|
|
Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "Banana"; res0__116_ ]
|
||
|
|
| Orange -> Sexplib0.Sexp.Atom "Orange"
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Nonrecursive = struct
|
||
|
|
open Recursive
|
||
|
|
|
||
|
|
type nonrec t = t [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
let t_of_sexp = (t_of_sexp : Sexplib0.Sexp.t -> t)
|
||
|
|
let _ = t_of_sexp
|
||
|
|
let sexp_of_t = (sexp_of_t : t -> Sexplib0.Sexp.t)
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Mutually_recursive = struct
|
||
|
|
type a =
|
||
|
|
| A
|
||
|
|
| B of b
|
||
|
|
| C of
|
||
|
|
{ a : a
|
||
|
|
; b : b
|
||
|
|
; c : c
|
||
|
|
}
|
||
|
|
|
||
|
|
and b =
|
||
|
|
{ a : a
|
||
|
|
; b : b
|
||
|
|
}
|
||
|
|
|
||
|
|
and c = a [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : a) -> ()
|
||
|
|
let _ = fun (_ : b) -> ()
|
||
|
|
let _ = fun (_ : c) -> ()
|
||
|
|
|
||
|
|
let rec a_of_sexp =
|
||
|
|
(let error_source__120_ = "expansion.ml.Mutually_recursive.a" in
|
||
|
|
function
|
||
|
|
| Sexplib0.Sexp.Atom ("a" | "A") -> A
|
||
|
|
| Sexplib0.Sexp.List
|
||
|
|
(Sexplib0.Sexp.Atom (("b" | "B") as _tag__123_) :: sexp_args__124_) as
|
||
|
|
_sexp__122_ ->
|
||
|
|
(match sexp_args__124_ with
|
||
|
|
| [ arg0__125_ ] ->
|
||
|
|
let res0__126_ = b_of_sexp arg0__125_ in
|
||
|
|
B res0__126_
|
||
|
|
| _ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_incorrect_n_args
|
||
|
|
error_source__120_
|
||
|
|
_tag__123_
|
||
|
|
_sexp__122_)
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom ("c" | "C") :: sexps__128_) as sexp__127_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexps
|
||
|
|
~context:sexp__127_
|
||
|
|
~caller:error_source__120_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Required
|
||
|
|
; conv = a_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Required
|
||
|
|
; conv = b_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "c"; kind = Required; conv = c_of_sexp; rest = Empty }
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "c" -> 2
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, (c, ()))) : a -> C { a; b; c })
|
||
|
|
sexps__128_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom ("a" | "A") :: _) as sexp__121_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_no_args error_source__120_ sexp__121_
|
||
|
|
| Sexplib0.Sexp.Atom ("b" | "B") as sexp__121_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_takes_args error_source__120_ sexp__121_
|
||
|
|
| Sexplib0.Sexp.Atom ("c" | "C") as sexp__121_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_takes_args error_source__120_ sexp__121_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__119_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_sum error_source__120_ sexp__119_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__119_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_sum error_source__120_ sexp__119_
|
||
|
|
| sexp__119_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.unexpected_stag error_source__120_ sexp__119_
|
||
|
|
: Sexplib0.Sexp.t -> a)
|
||
|
|
|
||
|
|
and b_of_sexp =
|
||
|
|
(let error_source__130_ = "expansion.ml.Mutually_recursive.b" in
|
||
|
|
fun x__131_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__130_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Required
|
||
|
|
; conv = a_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field { name = "b"; kind = Required; conv = b_of_sexp; rest = Empty }
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, ())) : b -> { a; b })
|
||
|
|
x__131_
|
||
|
|
: Sexplib0.Sexp.t -> b)
|
||
|
|
|
||
|
|
and c_of_sexp = (fun x__133_ -> a_of_sexp x__133_ : Sexplib0.Sexp.t -> c)
|
||
|
|
|
||
|
|
let _ = a_of_sexp
|
||
|
|
and _ = b_of_sexp
|
||
|
|
and _ = c_of_sexp
|
||
|
|
|
||
|
|
let rec sexp_of_a =
|
||
|
|
(function
|
||
|
|
| A -> Sexplib0.Sexp.Atom "A"
|
||
|
|
| B arg0__134_ ->
|
||
|
|
let res0__135_ = sexp_of_b arg0__134_ in
|
||
|
|
Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "B"; res0__135_ ]
|
||
|
|
| C { a = a__137_; b = b__139_; c = c__141_ } ->
|
||
|
|
let bnds__136_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__136_ =
|
||
|
|
let arg__142_ = sexp_of_c c__141_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "c"; arg__142_ ] :: bnds__136_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__136_ =
|
||
|
|
let arg__140_ = sexp_of_b b__139_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__140_ ] :: bnds__136_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__136_ =
|
||
|
|
let arg__138_ = sexp_of_a a__137_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__138_ ] :: bnds__136_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List (Sexplib0.Sexp.Atom "C" :: bnds__136_)
|
||
|
|
: a -> Sexplib0.Sexp.t)
|
||
|
|
|
||
|
|
and sexp_of_b =
|
||
|
|
(fun { a = a__144_; b = b__146_ } ->
|
||
|
|
let bnds__143_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__143_ =
|
||
|
|
let arg__147_ = sexp_of_b b__146_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__147_ ] :: bnds__143_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__143_ =
|
||
|
|
let arg__145_ = sexp_of_a a__144_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__145_ ] :: bnds__143_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__143_
|
||
|
|
: b -> Sexplib0.Sexp.t)
|
||
|
|
|
||
|
|
and sexp_of_c = (fun x__148_ -> sexp_of_a x__148_ : c -> Sexplib0.Sexp.t)
|
||
|
|
|
||
|
|
let _ = sexp_of_a
|
||
|
|
and _ = sexp_of_b
|
||
|
|
and _ = sexp_of_c
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Alias = struct
|
||
|
|
type t = Recursive.t [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
let t_of_sexp = (Recursive.t_of_sexp : Sexplib0.Sexp.t -> t)
|
||
|
|
let _ = t_of_sexp
|
||
|
|
let sexp_of_t = (Recursive.sexp_of_t : t -> Sexplib0.Sexp.t)
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Re_export = struct
|
||
|
|
type t = Recursive.t =
|
||
|
|
| Banana of t
|
||
|
|
| Orange
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let rec t_of_sexp =
|
||
|
|
(let error_source__152_ = "expansion.ml.Re_export.t" in
|
||
|
|
function
|
||
|
|
| Sexplib0.Sexp.List
|
||
|
|
(Sexplib0.Sexp.Atom (("banana" | "Banana") as _tag__155_) :: sexp_args__156_) as
|
||
|
|
_sexp__154_ ->
|
||
|
|
(match sexp_args__156_ with
|
||
|
|
| [ arg0__157_ ] ->
|
||
|
|
let res0__158_ = t_of_sexp arg0__157_ in
|
||
|
|
Banana res0__158_
|
||
|
|
| _ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_incorrect_n_args
|
||
|
|
error_source__152_
|
||
|
|
_tag__155_
|
||
|
|
_sexp__154_)
|
||
|
|
| Sexplib0.Sexp.Atom ("orange" | "Orange") -> Orange
|
||
|
|
| Sexplib0.Sexp.Atom ("banana" | "Banana") as sexp__153_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_takes_args error_source__152_ sexp__153_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom ("orange" | "Orange") :: _) as sexp__153_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_no_args error_source__152_ sexp__153_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__151_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_sum error_source__152_ sexp__151_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__151_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_sum error_source__152_ sexp__151_
|
||
|
|
| sexp__151_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.unexpected_stag error_source__152_ sexp__151_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let rec sexp_of_t =
|
||
|
|
(function
|
||
|
|
| Banana arg0__159_ ->
|
||
|
|
let res0__160_ = sexp_of_t arg0__159_ in
|
||
|
|
Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "Banana"; res0__160_ ]
|
||
|
|
| Orange -> Sexplib0.Sexp.Atom "Orange"
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Unary = struct
|
||
|
|
type 'a t = 'a list option [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : 'a t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp : 'a. (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a t =
|
||
|
|
fun _of_a__161_ x__163_ -> option_of_sexp (list_of_sexp _of_a__161_) x__163_
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t : 'a. ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.t =
|
||
|
|
fun _of_a__164_ x__165_ -> sexp_of_option (sexp_of_list _of_a__164_) x__165_
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Binary = struct
|
||
|
|
type ('a, 'b) t = ('a, 'b) Either.t [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : ('a, 'b) t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp :
|
||
|
|
'a 'b.
|
||
|
|
(Sexplib0.Sexp.t -> 'a)
|
||
|
|
-> (Sexplib0.Sexp.t -> 'b)
|
||
|
|
-> Sexplib0.Sexp.t
|
||
|
|
-> ('a, 'b) t
|
||
|
|
=
|
||
|
|
Either.t_of_sexp
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t :
|
||
|
|
'a 'b.
|
||
|
|
('a -> Sexplib0.Sexp.t)
|
||
|
|
-> ('b -> Sexplib0.Sexp.t)
|
||
|
|
-> ('a, 'b) t
|
||
|
|
-> Sexplib0.Sexp.t
|
||
|
|
=
|
||
|
|
Either.sexp_of_t
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module First_order = struct
|
||
|
|
type 'a t = 'a -> 'a [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : 'a t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp : 'a. (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a t =
|
||
|
|
fun _of_a__173_ -> Sexplib0.Sexp_conv.fun_of_sexp
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t : 'a. ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.t =
|
||
|
|
fun _of_a__175_ _ -> Sexplib0.Sexp_conv.sexp_of_fun Sexplib0.Sexp_conv.ignore
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Second_order = struct
|
||
|
|
type ('a, 'b) t = ('a -> 'a) -> ('a -> 'b) -> ('b -> 'b) -> 'a -> 'b
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : ('a, 'b) t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp :
|
||
|
|
'a 'b.
|
||
|
|
(Sexplib0.Sexp.t -> 'a)
|
||
|
|
-> (Sexplib0.Sexp.t -> 'b)
|
||
|
|
-> Sexplib0.Sexp.t
|
||
|
|
-> ('a, 'b) t
|
||
|
|
=
|
||
|
|
fun _of_a__176_ _of_b__177_ -> Sexplib0.Sexp_conv.fun_of_sexp
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t :
|
||
|
|
'a 'b.
|
||
|
|
('a -> Sexplib0.Sexp.t)
|
||
|
|
-> ('b -> Sexplib0.Sexp.t)
|
||
|
|
-> ('a, 'b) t
|
||
|
|
-> Sexplib0.Sexp.t
|
||
|
|
=
|
||
|
|
fun _of_a__179_ _of_b__180_ _ ->
|
||
|
|
Sexplib0.Sexp_conv.sexp_of_fun Sexplib0.Sexp_conv.ignore
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Named_arguments = struct
|
||
|
|
type t = ?a:int -> b:int -> int -> int [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
let t_of_sexp = (Sexplib0.Sexp_conv.fun_of_sexp : Sexplib0.Sexp.t -> t)
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun _ -> Sexplib0.Sexp_conv.sexp_of_fun Sexplib0.Sexp_conv.ignore
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Gadt = struct
|
||
|
|
type _ t =
|
||
|
|
| A : _ option t
|
||
|
|
| B : int -> int t
|
||
|
|
| C : 'a list -> unit t
|
||
|
|
[@@deriving_inline sexp_of]
|
||
|
|
|
||
|
|
let _ = fun (_ : _ t) -> ()
|
||
|
|
|
||
|
|
let sexp_of_t : 'a__182_. ('a__182_ -> Sexplib0.Sexp.t) -> 'a__182_ t -> Sexplib0.Sexp.t
|
||
|
|
=
|
||
|
|
fun (type a__188_) : ((a__188_ -> Sexplib0.Sexp.t) -> a__188_ t -> Sexplib0.Sexp.t) ->
|
||
|
|
fun _of_a__183_ -> function
|
||
|
|
| A -> Sexplib0.Sexp.Atom "A"
|
||
|
|
| B arg0__184_ ->
|
||
|
|
let res0__185_ = sexp_of_int arg0__184_ in
|
||
|
|
Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "B"; res0__185_ ]
|
||
|
|
| C arg0__186_ ->
|
||
|
|
let res0__187_ = sexp_of_list (fun _ -> Sexplib0.Sexp.Atom "_") arg0__186_ in
|
||
|
|
Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "C"; res0__187_ ]
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Recursive_record_containing_variant = struct
|
||
|
|
type t =
|
||
|
|
{ a : [ `A of t ]
|
||
|
|
; b : [ `B ] [@sexp_drop_default Poly.equal] [@default `B]
|
||
|
|
}
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let rec t_of_sexp =
|
||
|
|
(let (default__191_ : [ `B ]) = `B in
|
||
|
|
let error_source__190_ = "expansion.ml.Recursive_record_containing_variant.t" in
|
||
|
|
fun x__207_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__190_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Required
|
||
|
|
; conv =
|
||
|
|
(fun sexp__206_ ->
|
||
|
|
try
|
||
|
|
match sexp__206_ with
|
||
|
|
| Sexplib0.Sexp.Atom atom__199_ as _sexp__201_ ->
|
||
|
|
(match atom__199_ with
|
||
|
|
| "A" ->
|
||
|
|
Sexplib0.Sexp_conv_error.ptag_takes_args
|
||
|
|
error_source__190_
|
||
|
|
_sexp__201_
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List
|
||
|
|
(Sexplib0.Sexp.Atom atom__199_ :: sexp_args__202_) as
|
||
|
|
_sexp__201_ ->
|
||
|
|
(match atom__199_ with
|
||
|
|
| "A" as _tag__203_ ->
|
||
|
|
(match sexp_args__202_ with
|
||
|
|
| [ arg0__204_ ] ->
|
||
|
|
let res0__205_ = t_of_sexp arg0__204_ in
|
||
|
|
`A res0__205_
|
||
|
|
| _ ->
|
||
|
|
Sexplib0.Sexp_conv_error.ptag_incorrect_n_args
|
||
|
|
error_source__190_
|
||
|
|
_tag__203_
|
||
|
|
_sexp__201_)
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__200_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_poly_var
|
||
|
|
error_source__190_
|
||
|
|
sexp__200_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__200_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_poly_var
|
||
|
|
error_source__190_
|
||
|
|
sexp__200_
|
||
|
|
with
|
||
|
|
| Sexplib0.Sexp_conv_error.No_variant_match ->
|
||
|
|
Sexplib0.Sexp_conv_error.no_matching_variant_found
|
||
|
|
error_source__190_
|
||
|
|
sexp__206_)
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Default (fun () -> default__191_)
|
||
|
|
; conv =
|
||
|
|
(fun sexp__197_ ->
|
||
|
|
try
|
||
|
|
match sexp__197_ with
|
||
|
|
| Sexplib0.Sexp.Atom atom__193_ as _sexp__195_ ->
|
||
|
|
(match atom__193_ with
|
||
|
|
| "B" -> `B
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom atom__193_ :: _) as
|
||
|
|
_sexp__195_ ->
|
||
|
|
(match atom__193_ with
|
||
|
|
| "B" ->
|
||
|
|
Sexplib0.Sexp_conv_error.ptag_no_args
|
||
|
|
error_source__190_
|
||
|
|
_sexp__195_
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__194_
|
||
|
|
->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_poly_var
|
||
|
|
error_source__190_
|
||
|
|
sexp__194_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__194_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_poly_var
|
||
|
|
error_source__190_
|
||
|
|
sexp__194_
|
||
|
|
with
|
||
|
|
| Sexplib0.Sexp_conv_error.No_variant_match ->
|
||
|
|
Sexplib0.Sexp_conv_error.no_matching_variant_found
|
||
|
|
error_source__190_
|
||
|
|
sexp__197_)
|
||
|
|
; rest = Empty
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, ())) : t -> { a; b })
|
||
|
|
x__207_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let rec sexp_of_t =
|
||
|
|
(let (default__214_ : [ `B ]) = `B
|
||
|
|
and (drop_default__213_ : [ `B ] -> [ `B ] -> Stdlib.Bool.t) = Poly.equal in
|
||
|
|
fun { a = a__209_; b = b__215_ } ->
|
||
|
|
let bnds__208_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__208_ =
|
||
|
|
if drop_default__213_ default__214_ b__215_
|
||
|
|
then bnds__208_
|
||
|
|
else (
|
||
|
|
let arg__217_ = (fun `B -> Sexplib0.Sexp.Atom "B") b__215_ in
|
||
|
|
let bnd__216_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__217_ ] in
|
||
|
|
(bnd__216_ :: bnds__208_ : _ Stdlib.List.t))
|
||
|
|
in
|
||
|
|
let bnds__208_ =
|
||
|
|
let arg__210_ =
|
||
|
|
let (`A v__211_) = a__209_ in
|
||
|
|
Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "A"; sexp_of_t v__211_ ]
|
||
|
|
in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__210_ ] :: bnds__208_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__208_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Poly_record = struct
|
||
|
|
type t =
|
||
|
|
{ a : 'a. 'a list
|
||
|
|
; b : 'b. 'b option
|
||
|
|
; c : 'c. 'c
|
||
|
|
}
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__219_ = "expansion.ml.Poly_record.t" in
|
||
|
|
fun x__229_ ->
|
||
|
|
let open struct
|
||
|
|
type a__220_ = { a__220_ : 'a. 'a list } [@@unboxed]
|
||
|
|
type b__221_ = { b__221_ : 'b. 'b option } [@@unboxed]
|
||
|
|
type c__222_ = { c__222_ : 'c. 'c } [@@unboxed]
|
||
|
|
end in
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__219_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Required
|
||
|
|
; conv =
|
||
|
|
(fun sexp__227_ ->
|
||
|
|
{ a__220_ =
|
||
|
|
(let _a__228_ =
|
||
|
|
Sexplib0.Sexp_conv_error.record_poly_field_value
|
||
|
|
error_source__219_
|
||
|
|
in
|
||
|
|
list_of_sexp _a__228_ sexp__227_)
|
||
|
|
})
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Required
|
||
|
|
; conv =
|
||
|
|
(fun sexp__225_ ->
|
||
|
|
{ b__221_ =
|
||
|
|
(let _b__226_ =
|
||
|
|
Sexplib0.Sexp_conv_error.record_poly_field_value
|
||
|
|
error_source__219_
|
||
|
|
in
|
||
|
|
option_of_sexp _b__226_ sexp__225_)
|
||
|
|
})
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "c"
|
||
|
|
; kind = Required
|
||
|
|
; conv =
|
||
|
|
(fun sexp__223_ ->
|
||
|
|
{ c__222_ =
|
||
|
|
(let _c__224_ =
|
||
|
|
Sexplib0.Sexp_conv_error.record_poly_field_value
|
||
|
|
error_source__219_
|
||
|
|
in
|
||
|
|
_c__224_ sexp__223_)
|
||
|
|
})
|
||
|
|
; rest = Empty
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "c" -> 2
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun ({ a__220_ = a }, ({ b__221_ = b }, ({ c__222_ = c }, ()))) : t ->
|
||
|
|
{ a; b; c })
|
||
|
|
x__229_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun { a = a__231_; b = b__234_; c = c__237_ } ->
|
||
|
|
let bnds__230_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__230_ =
|
||
|
|
let arg__238_ =
|
||
|
|
let _of_c__239_ = Sexplib0.Sexp_conv.sexp_of_opaque in
|
||
|
|
_of_c__239_ c__237_
|
||
|
|
in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "c"; arg__238_ ] :: bnds__230_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__230_ =
|
||
|
|
let arg__235_ =
|
||
|
|
let _of_b__236_ = Sexplib0.Sexp_conv.sexp_of_opaque in
|
||
|
|
sexp_of_option _of_b__236_ b__234_
|
||
|
|
in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__235_ ] :: bnds__230_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__230_ =
|
||
|
|
let arg__232_ =
|
||
|
|
let _of_a__233_ = Sexplib0.Sexp_conv.sexp_of_opaque in
|
||
|
|
sexp_of_list _of_a__233_ a__231_
|
||
|
|
in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__232_ ] :: bnds__230_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__230_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Record_with_defaults = struct
|
||
|
|
type t =
|
||
|
|
{ a : int [@default 0]
|
||
|
|
; b : int [@default 0] [@sexp_drop_default.compare]
|
||
|
|
; c : int [@default 0] [@sexp_drop_default.equal]
|
||
|
|
; d : int [@default 0] [@sexp_drop_default.sexp]
|
||
|
|
; e : int [@default 0] [@sexp_drop_default ( = )]
|
||
|
|
; f : int [@sexp_drop_if ( = ) 0]
|
||
|
|
}
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let (default__242_ : int) = 0
|
||
|
|
and (default__243_ : int) = 0
|
||
|
|
and (default__244_ : int) = 0
|
||
|
|
and (default__245_ : int) = 0
|
||
|
|
and (default__246_ : int) = 0 in
|
||
|
|
let error_source__241_ = "expansion.ml.Record_with_defaults.t" in
|
||
|
|
fun x__247_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__241_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Default (fun () -> default__246_)
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Default (fun () -> default__245_)
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "c"
|
||
|
|
; kind = Default (fun () -> default__244_)
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "d"
|
||
|
|
; kind = Default (fun () -> default__243_)
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "e"
|
||
|
|
; kind = Default (fun () -> default__242_)
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "f"
|
||
|
|
; kind = Required
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest = Empty
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "c" -> 2
|
||
|
|
| "d" -> 3
|
||
|
|
| "e" -> 4
|
||
|
|
| "f" -> 5
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, (c, (d, (e, (f, ())))))) : t -> { a; b; c; d; e; f })
|
||
|
|
x__247_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(let (default__252_ : int) = 0
|
||
|
|
and (default__257_ : int) = 0
|
||
|
|
and (default__262_ : int) = 0
|
||
|
|
and (default__268_ : int) = 0
|
||
|
|
and (drop_default__267_ : int -> int -> Stdlib.Bool.t) = ( = )
|
||
|
|
and (drop_if__273_ : Stdlib.Unit.t -> int -> Stdlib.Bool.t) = fun () -> ( = ) 0 in
|
||
|
|
fun { a = a__249_; b = b__253_; c = c__258_; d = d__263_; e = e__269_; f = f__274_ } ->
|
||
|
|
let bnds__248_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__248_ =
|
||
|
|
if (drop_if__273_ ()) f__274_
|
||
|
|
then bnds__248_
|
||
|
|
else (
|
||
|
|
let arg__276_ = sexp_of_int f__274_ in
|
||
|
|
let bnd__275_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "f"; arg__276_ ] in
|
||
|
|
(bnd__275_ :: bnds__248_ : _ Stdlib.List.t))
|
||
|
|
in
|
||
|
|
let bnds__248_ =
|
||
|
|
if drop_default__267_ default__268_ e__269_
|
||
|
|
then bnds__248_
|
||
|
|
else (
|
||
|
|
let arg__271_ = sexp_of_int e__269_ in
|
||
|
|
let bnd__270_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "e"; arg__271_ ] in
|
||
|
|
(bnd__270_ :: bnds__248_ : _ Stdlib.List.t))
|
||
|
|
in
|
||
|
|
let bnds__248_ =
|
||
|
|
let arg__265_ = sexp_of_int d__263_ in
|
||
|
|
if Sexplib0.Sexp_conv.( = ) (sexp_of_int default__262_) arg__265_
|
||
|
|
then bnds__248_
|
||
|
|
else (
|
||
|
|
let bnd__264_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "d"; arg__265_ ] in
|
||
|
|
(bnd__264_ :: bnds__248_ : _ Stdlib.List.t))
|
||
|
|
in
|
||
|
|
let bnds__248_ =
|
||
|
|
if [%equal: int] default__257_ c__258_
|
||
|
|
then bnds__248_
|
||
|
|
else (
|
||
|
|
let arg__260_ = sexp_of_int c__258_ in
|
||
|
|
let bnd__259_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "c"; arg__260_ ] in
|
||
|
|
(bnd__259_ :: bnds__248_ : _ Stdlib.List.t))
|
||
|
|
in
|
||
|
|
let bnds__248_ =
|
||
|
|
if [%compare.equal: int] default__252_ b__253_
|
||
|
|
then bnds__248_
|
||
|
|
else (
|
||
|
|
let arg__255_ = sexp_of_int b__253_ in
|
||
|
|
let bnd__254_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__255_ ] in
|
||
|
|
(bnd__254_ :: bnds__248_ : _ Stdlib.List.t))
|
||
|
|
in
|
||
|
|
let bnds__248_ =
|
||
|
|
let arg__250_ = sexp_of_int a__249_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__250_ ] :: bnds__248_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__248_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Record_with_special_types = struct
|
||
|
|
type t =
|
||
|
|
{ a : int option [@sexp.option]
|
||
|
|
; b : int list [@sexp.list]
|
||
|
|
; c : int array [@sexp.array]
|
||
|
|
; d : bool [@sexp.bool]
|
||
|
|
}
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__284_ = "expansion.ml.Record_with_special_types.t" in
|
||
|
|
fun x__285_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__284_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Sexp_option
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Sexp_list
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "c"
|
||
|
|
; kind = Sexp_array
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "d"; kind = Sexp_bool; conv = (); rest = Empty }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "c" -> 2
|
||
|
|
| "d" -> 3
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, (c, (d, ())))) : t -> { a; b; c; d })
|
||
|
|
x__285_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun { a = a__287_; b = b__292_; c = c__296_; d = d__299_ } ->
|
||
|
|
let bnds__286_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__286_ =
|
||
|
|
if d__299_
|
||
|
|
then (
|
||
|
|
let bnd__300_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "d" ] in
|
||
|
|
(bnd__300_ :: bnds__286_ : _ Stdlib.List.t))
|
||
|
|
else bnds__286_
|
||
|
|
in
|
||
|
|
let bnds__286_ =
|
||
|
|
if match c__296_ with
|
||
|
|
| [||] -> true
|
||
|
|
| _ -> false
|
||
|
|
then bnds__286_
|
||
|
|
else (
|
||
|
|
let arg__298_ = (sexp_of_array sexp_of_int) c__296_ in
|
||
|
|
let bnd__297_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "c"; arg__298_ ] in
|
||
|
|
(bnd__297_ :: bnds__286_ : _ Stdlib.List.t))
|
||
|
|
in
|
||
|
|
let bnds__286_ =
|
||
|
|
if match b__292_ with
|
||
|
|
| [] -> true
|
||
|
|
| _ -> false
|
||
|
|
then bnds__286_
|
||
|
|
else (
|
||
|
|
let arg__294_ = (sexp_of_list sexp_of_int) b__292_ in
|
||
|
|
let bnd__293_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__294_ ] in
|
||
|
|
(bnd__293_ :: bnds__286_ : _ Stdlib.List.t))
|
||
|
|
in
|
||
|
|
let bnds__286_ =
|
||
|
|
match a__287_ with
|
||
|
|
| Stdlib.Option.None -> bnds__286_
|
||
|
|
| Stdlib.Option.Some v__288_ ->
|
||
|
|
let arg__290_ = sexp_of_int v__288_ in
|
||
|
|
let bnd__289_ = Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__290_ ] in
|
||
|
|
(bnd__289_ :: bnds__286_ : _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__286_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Record_with_omit_nil = struct
|
||
|
|
type t =
|
||
|
|
{ a : int option [@sexp.omit_nil]
|
||
|
|
; b : int list [@sexp.omit_nil]
|
||
|
|
; c : unit [@sexp.omit_nil]
|
||
|
|
; d : int [@sexp.omit_nil]
|
||
|
|
}
|
||
|
|
[@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__302_ = "expansion.ml.Record_with_omit_nil.t" in
|
||
|
|
fun x__303_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__302_
|
||
|
|
~fields:
|
||
|
|
(Field
|
||
|
|
{ name = "a"
|
||
|
|
; kind = Omit_nil
|
||
|
|
; conv = option_of_sexp int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "b"
|
||
|
|
; kind = Omit_nil
|
||
|
|
; conv = list_of_sexp int_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "c"
|
||
|
|
; kind = Omit_nil
|
||
|
|
; conv = unit_of_sexp
|
||
|
|
; rest =
|
||
|
|
Field
|
||
|
|
{ name = "d"
|
||
|
|
; kind = Omit_nil
|
||
|
|
; conv = int_of_sexp
|
||
|
|
; rest = Empty
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| "b" -> 1
|
||
|
|
| "c" -> 2
|
||
|
|
| "d" -> 3
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:false
|
||
|
|
~create:(fun (a, (b, (c, (d, ())))) : t -> { a; b; c; d })
|
||
|
|
x__303_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun { a = a__305_; b = b__307_; c = c__309_; d = d__311_ } ->
|
||
|
|
let bnds__304_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__304_ =
|
||
|
|
match sexp_of_int d__311_ with
|
||
|
|
| Sexplib0.Sexp.List [] -> bnds__304_
|
||
|
|
| arg__312_ ->
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "d"; arg__312_ ] :: bnds__304_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__304_ =
|
||
|
|
match sexp_of_unit c__309_ with
|
||
|
|
| Sexplib0.Sexp.List [] -> bnds__304_
|
||
|
|
| arg__310_ ->
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "c"; arg__310_ ] :: bnds__304_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__304_ =
|
||
|
|
match sexp_of_list sexp_of_int b__307_ with
|
||
|
|
| Sexplib0.Sexp.List [] -> bnds__304_
|
||
|
|
| arg__308_ ->
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "b"; arg__308_ ] :: bnds__304_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
let bnds__304_ =
|
||
|
|
match sexp_of_option sexp_of_int a__305_ with
|
||
|
|
| Sexplib0.Sexp.List [] -> bnds__304_
|
||
|
|
| arg__306_ ->
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__306_ ] :: bnds__304_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__304_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Variant_with_sexp_list = struct
|
||
|
|
type t = A of int list [@sexp.list] [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__315_ = "expansion.ml.Variant_with_sexp_list.t" in
|
||
|
|
function
|
||
|
|
| Sexplib0.Sexp.List
|
||
|
|
(Sexplib0.Sexp.Atom (("a" | "A") as _tag__318_) :: sexp_args__319_) as
|
||
|
|
_sexp__317_ -> A (Sexplib0.Sexp_conv.list_map int_of_sexp sexp_args__319_)
|
||
|
|
| Sexplib0.Sexp.Atom ("a" | "A") as sexp__316_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.stag_takes_args error_source__315_ sexp__316_
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__314_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_sum error_source__315_ sexp__314_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__314_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_sum error_source__315_ sexp__314_
|
||
|
|
| sexp__314_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.unexpected_stag error_source__315_ sexp__314_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun (A l__320_) ->
|
||
|
|
Sexplib0.Sexp.List
|
||
|
|
(Sexplib0.Sexp.Atom "A" :: Sexplib0.Sexp_conv.list_map sexp_of_int l__320_)
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Poly_variant_with_sexp_list = struct
|
||
|
|
type t = [ `A of int list [@sexp.list] ] [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let __t_of_sexp__ =
|
||
|
|
(let error_source__327_ = "expansion.ml.Poly_variant_with_sexp_list.t" in
|
||
|
|
function
|
||
|
|
| Sexplib0.Sexp.Atom atom__322_ as _sexp__324_ ->
|
||
|
|
(match atom__322_ with
|
||
|
|
| "A" -> Sexplib0.Sexp_conv_error.ptag_takes_args error_source__327_ _sexp__324_
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.Atom atom__322_ :: sexp_args__325_) as
|
||
|
|
_sexp__324_ ->
|
||
|
|
(match atom__322_ with
|
||
|
|
| "A" as _tag__326_ ->
|
||
|
|
`A (Sexplib0.Sexp_conv.list_map int_of_sexp sexp_args__325_)
|
||
|
|
| _ -> Sexplib0.Sexp_conv_error.no_variant_match ())
|
||
|
|
| Sexplib0.Sexp.List (Sexplib0.Sexp.List _ :: _) as sexp__323_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.nested_list_invalid_poly_var error_source__327_ sexp__323_
|
||
|
|
| Sexplib0.Sexp.List [] as sexp__323_ ->
|
||
|
|
Sexplib0.Sexp_conv_error.empty_list_invalid_poly_var error_source__327_ sexp__323_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = __t_of_sexp__
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__329_ = "expansion.ml.Poly_variant_with_sexp_list.t" in
|
||
|
|
fun sexp__328_ ->
|
||
|
|
try __t_of_sexp__ sexp__328_ with
|
||
|
|
| Sexplib0.Sexp_conv_error.No_variant_match ->
|
||
|
|
Sexplib0.Sexp_conv_error.no_matching_variant_found error_source__329_ sexp__328_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun (`A l__330_) ->
|
||
|
|
Sexplib0.Sexp.List
|
||
|
|
(Sexplib0.Sexp.Atom "A" :: Sexplib0.Sexp_conv.list_map sexp_of_int l__330_)
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Record_allowing_extra_fields = struct
|
||
|
|
type t = { a : int } [@@allow_extra_fields] [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(let error_source__332_ = "expansion.ml.Record_allowing_extra_fields.t" in
|
||
|
|
fun x__333_ ->
|
||
|
|
Sexplib0.Sexp_conv_record.record_of_sexp
|
||
|
|
~caller:error_source__332_
|
||
|
|
~fields:(Field { name = "a"; kind = Required; conv = int_of_sexp; rest = Empty })
|
||
|
|
~index_of_field:(function
|
||
|
|
| "a" -> 0
|
||
|
|
| _ -> -1)
|
||
|
|
~allow_extra_fields:true
|
||
|
|
~create:(fun (a, ()) : t -> { a })
|
||
|
|
x__333_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun { a = a__335_ } ->
|
||
|
|
let bnds__334_ = ([] : _ Stdlib.List.t) in
|
||
|
|
let bnds__334_ =
|
||
|
|
let arg__336_ = sexp_of_int a__335_ in
|
||
|
|
(Sexplib0.Sexp.List [ Sexplib0.Sexp.Atom "a"; arg__336_ ] :: bnds__334_
|
||
|
|
: _ Stdlib.List.t)
|
||
|
|
in
|
||
|
|
Sexplib0.Sexp.List bnds__334_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|
||
|
|
|
||
|
|
module Opaque = struct
|
||
|
|
type t = (int[@sexp.opaque]) list [@@deriving_inline sexp]
|
||
|
|
|
||
|
|
let _ = fun (_ : t) -> ()
|
||
|
|
|
||
|
|
let t_of_sexp =
|
||
|
|
(fun x__338_ -> list_of_sexp Sexplib0.Sexp_conv.opaque_of_sexp x__338_
|
||
|
|
: Sexplib0.Sexp.t -> t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = t_of_sexp
|
||
|
|
|
||
|
|
let sexp_of_t =
|
||
|
|
(fun x__339_ -> sexp_of_list Sexplib0.Sexp_conv.sexp_of_opaque x__339_
|
||
|
|
: t -> Sexplib0.Sexp.t)
|
||
|
|
;;
|
||
|
|
|
||
|
|
let _ = sexp_of_t
|
||
|
|
|
||
|
|
[@@@end]
|
||
|
|
end
|