package streamable

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file or_error_clause.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
open! Base
open! Import

let type_parameter ~core_type =
  match core_type.ptyp_desc with
  | Ptyp_constr (longident_loc, [ type_parameter ]) ->
    (match
       Helpers.longident_is_like_t
         longident_loc.txt
         ~primitive_name:None
         ~first_module_name:"Or_error"
     with
     | false -> None
     | true -> Some type_parameter)
  | _ -> None
;;

let maybe_match type_ { Ctx.version; _ } =
  let%bind core_type = Type_.match_core_type type_ in
  let%map type_parameter = type_parameter ~core_type in
  ({ children =
       [ Core_type type_parameter
       ; Core_type
           (Helpers.core_type_with_atomic_attribute
              ~loc:(Type_.loc type_)
              ~module_dot_t:
                (match version with
                 | V1 -> "Core.Error.Stable.V2.t"))
       ]
   ; apply_functor =
       (fun ctx children ->
         Helpers.apply_streamable_dot ctx ~functor_name:"Of_result" ~arguments:children)
   }
    : Clause.Match.t)
;;
OCaml

Innovation. Community. Security.