package dune-rpc

  1. Overview
  2. Docs
Communicate with dune using rpc

Install

dune-project
 Dependency

Authors

Maintainers

Sources

dune-3.22.2.tbz
sha256=c2ccf8bc6b17afa47c450297357496303aa7c8680e329b79d98c68e35013a118
sha512=26d3df56a509c6e8937a9333944303bdd8800a41e1b869c3adfb76d1e1fe615b6ec41491d596bd5982e338dcf70b97c18f963f37bfbf2bd581cbd356f3d5f4e5

doc/src/dune-rpc.private/version_error.ml.html

Source file version_error.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
36
37
38
open Import
open Types

type t =
  { payload : Csexp.t option
  ; message : string
  }

let payload t = t.payload
let message t = t.message

let to_dyn { payload; message } =
  Dyn.record
    [ "message", Dyn.string message; "payload", Dyn.(option Sexp.to_dyn) payload ]
;;

let create ?payload ~message () = { payload; message }

exception E of t

let () =
  Printexc.register_printer (function
    | E { payload; message } ->
      Some
        (let messages =
           match payload with
           | None -> []
           | Some payload -> [ Sexp.pp payload ]
         in
         Format.asprintf "%a@." Pp.to_fmt
         @@ Pp.concat
         @@ (Pp.textf "Version_error: %s" message :: messages))
    | _ -> None)
;;

let to_response_error { payload; message } =
  Response.Error.create ~kind:Invalid_request ?payload ~message ()
;;