diff --git a/.ocamlformat b/.ocamlformat index b033b6163..eb29ad568 100644 --- a/.ocamlformat +++ b/.ocamlformat @@ -1,21 +1,3 @@ version=0.26.2 -profile=conventional +profile=janestreet ocaml-version=4.14.0 -break-separators=before -dock-collection-brackets=false -break-sequences=true -doc-comments=before -field-space=loose -let-and=sparse -sequence-style=terminator -type-decl=sparse -let-and=sparse -space-around-records -space-around-lists -space-around-arrays -cases-exp-indent=2 -break-cases=fit-or-vertical -indicate-nested-or-patterns=unsafe-no -parse-docstrings=true -module-item-spacing=sparse -wrap-fun-args=false diff --git a/fiber-test/fiber_test.ml b/fiber-test/fiber_test.ml index 701806a3d..5f0d10a36 100644 --- a/fiber-test/fiber_test.ml +++ b/fiber-test/fiber_test.ml @@ -1,7 +1,6 @@ open Stdune let print pp = Format.printf "%a@." Pp.to_fmt pp - let print_dyn dyn = print (Dyn.pp dyn) module Scheduler : sig @@ -10,13 +9,11 @@ module Scheduler : sig exception Never val create : unit -> t - val run : t -> 'a Fiber.t -> 'a end = struct type t = unit Fiber.Ivar.t Queue.t let t_var = Fiber.Var.create () - let create () = Queue.create () exception Never @@ -24,12 +21,13 @@ end = struct let run t fiber = let fiber = Fiber.Var.set t_var t (fun () -> fiber) in Fiber.run fiber ~iter:(fun () -> - let next = - match Queue.pop t with - | None -> raise Never - | Some e -> Fiber.Fill (e, ()) - in - Nonempty_list.[ next ]) + let next = + match Queue.pop t with + | None -> raise Never + | Some e -> Fiber.Fill (e, ()) + in + Nonempty_list.[ next ]) + ;; end let test ?(expect_never = false) to_dyn f = @@ -41,14 +39,14 @@ let test ?(expect_never = false) to_dyn f = in Fiber.with_error_handler f ~on_error in - (try Scheduler.run (Scheduler.create ()) f |> to_dyn |> print_dyn - with Scheduler.Never -> never_raised := true); - match (!never_raised, expect_never) with + (try Scheduler.run (Scheduler.create ()) f |> to_dyn |> print_dyn with + | Scheduler.Never -> never_raised := true); + match !never_raised, expect_never with | false, false -> (* We don't raise in this case b/c we assume something else is being tested *) () | true, true -> print_endline "[PASS] Never raised as expected" - | false, true -> - print_endline "[FAIL] expected Never to be raised but it wasn't" + | false, true -> print_endline "[FAIL] expected Never to be raised but it wasn't" | true, false -> print_endline "[FAIL] unexpected Never raised" +;; diff --git a/jsonrpc-fiber/src/import.ml b/jsonrpc-fiber/src/import.ml index aecdeb7a2..92a498edc 100644 --- a/jsonrpc-fiber/src/import.ml +++ b/jsonrpc-fiber/src/import.ml @@ -21,9 +21,7 @@ module Json = struct type t = Ppx_yojson_conv_lib.Yojson.Safe.t let to_pretty_string (t : t) = Yojson.Safe.pretty_to_string ~std:false t - let error = Ppx_yojson_conv_lib.Yojson_conv.of_yojson_error - let pp ppf (t : t) = Yojson.Safe.pretty_print ppf t let rec of_dyn (t : Dyn.t) : t = @@ -44,16 +42,15 @@ module Json = struct | List xs -> `List (List.map ~f:of_dyn xs) | Array xs -> `List (List.map ~f:of_dyn (Array.to_list xs)) | Tuple xs -> `List (List.map ~f:of_dyn xs) - | Record r -> `Assoc (List.map r ~f:(fun (k, v) -> (k, of_dyn v))) - | Variant (name, args) -> `Assoc [ (name, of_dyn (List args)) ] + | Record r -> `Assoc (List.map r ~f:(fun (k, v) -> k, of_dyn v)) + | Variant (name, args) -> `Assoc [ name, of_dyn (List args) ] | Set xs -> `List (List.map ~f:of_dyn xs) - | Map map -> - `List (List.map map ~f:(fun (k, v) -> `List [ of_dyn k; of_dyn v ])) + | Map map -> `List (List.map map ~f:(fun (k, v) -> `List [ of_dyn k; of_dyn v ])) + ;; end module Log = struct let level : (string option -> bool) ref = ref (fun _ -> false) - let out = ref Format.err_formatter type message = @@ -64,22 +61,25 @@ module Log = struct let msg message payload = { message; payload } let log ?section k = - if !level section then ( + if !level section + then ( let message = k () in (match section with - | None -> Format.fprintf !out "%s@." message.message - | Some section -> Format.fprintf !out "[%s] %s@." section message.message); + | None -> Format.fprintf !out "%s@." message.message + | Some section -> Format.fprintf !out "[%s] %s@." section message.message); (match message.payload with - | [] -> () - | fields -> Format.fprintf !out "%a@." Json.pp (`Assoc fields)); + | [] -> () + | fields -> Format.fprintf !out "%a@." Json.pp (`Assoc fields)); Format.pp_print_flush !out ()) + ;; end let sprintf = Printf.sprintf let () = Printexc.register_printer (function - | Jsonrpc.Response.Error.E t -> - let json = Jsonrpc.Response.Error.yojson_of_t t in - Some ("jsonrpc response error " ^ Json.to_pretty_string (json :> Json.t)) - | _ -> None) + | Jsonrpc.Response.Error.E t -> + let json = Jsonrpc.Response.Error.yojson_of_t t in + Some ("jsonrpc response error " ^ Json.to_pretty_string (json :> Json.t)) + | _ -> None) +;; diff --git a/jsonrpc-fiber/src/jsonrpc_fiber.ml b/jsonrpc-fiber/src/jsonrpc_fiber.ml index 2fbff2f4b..b715b3d05 100644 --- a/jsonrpc-fiber/src/jsonrpc_fiber.ml +++ b/jsonrpc-fiber/src/jsonrpc_fiber.ml @@ -23,22 +23,24 @@ module Sender = struct let send t (r : Response.t) : unit Fiber.t = Fiber.of_thunk (fun () -> - if t.called then Code_error.raise "cannot send response twice" [] - else if not (Id.equal t.for_ r.id) then Code_error.raise "invalid id" [] - else t.called <- true; - t.send r) + if t.called + then Code_error.raise "cannot send response twice" [] + else if not (Id.equal t.for_ r.id) + then Code_error.raise "invalid id" [] + else t.called <- true; + t.send r) + ;; end exception Stopped of Request.t let () = Printexc.register_printer (function - | Stopped req -> - let json = Request.yojson_of_t req in - Some - ("Session closed. Request will not be answered. " - ^ Json.to_pretty_string json) - | _ -> None) + | Stopped req -> + let json = Request.yojson_of_t req in + Some ("Session closed. Request will not be answered. " ^ Json.to_pretty_string json) + | _ -> None) +;; module Reply = struct type t = @@ -46,32 +48,28 @@ module Reply = struct | Later of ((Response.t -> unit Fiber.t) -> unit Fiber.t) let now (r : Response.t) = Now r - let later f = Later f let send (t : t) sender = match t with | Now r -> Sender.send sender r | Later f -> f (fun (r : Response.t) -> Sender.send sender r) + ;; end module Make (Chan : sig - type t - - val send : t -> Packet.t list -> unit Fiber.t - - val recv : t -> Packet.t option Fiber.t + type t - val close : t -> [ `Read | `Write ] -> unit Fiber.t -end) = + val send : t -> Packet.t list -> unit Fiber.t + val recv : t -> Packet.t option Fiber.t + val close : t -> [ `Read | `Write ] -> unit Fiber.t + end) = struct type 'state t = { chan : Chan.t ; on_request : ('state, Request.t) context -> (Reply.t * 'state) Fiber.t - ; on_notification : - ('state, Notification.t) context -> (Notify.t * 'state) Fiber.t - ; pending : - (Response.t, [ `Stopped | `Cancelled ]) result Fiber.Ivar.t Id.Table.t + ; on_notification : ('state, Notification.t) context -> (Notify.t * 'state) Fiber.t + ; pending : (Response.t, [ `Stopped | `Cancelled ]) result Fiber.Ivar.t Id.Table.t ; stopped : unit Fiber.Ivar.t ; name : string ; mutable running : bool @@ -90,9 +88,7 @@ struct type nonrec ('a, 'id) t = ('a, 'id) context let message = snd - let session = fst - let state t = (session t).state end @@ -104,46 +100,49 @@ struct | Jsonrpc.Response.Error.E resp -> resp | _ -> let data = exn |> Exn_with_backtrace.to_dyn |> Json.of_dyn in - Response.Error.make - ~code:InternalError - ~data - ~message:"uncaught exception" - () + Response.Error.make ~code:InternalError ~data ~message:"uncaught exception" () in Response.error id error + ;; let on_request_fail ctx : (Reply.t * _) Fiber.t = let req : Request.t = Context.message ctx in let state = Context.state ctx in - let error = - Response.Error.make ~code:InternalError ~message:"not implemented" () - in + let error = Response.Error.make ~code:InternalError ~message:"not implemented" () in Fiber.return (Reply.now (Response.error req.id error), state) + ;; let state t = t.state let on_notification_fail ctx = let state = Context.state ctx in Fiber.return (Notify.Continue, state) + ;; let stop_pending_requests t = Fiber.of_thunk (fun () -> - if t.pending_requests_stopped then Fiber.return () - else ( - t.pending_requests_stopped <- true; - let to_cancel = - Id.Table.fold t.pending ~init:[] ~f:(fun ~key:_ ~data:x acc -> - x :: acc) - in - Id.Table.clear t.pending; - Fiber.parallel_iter to_cancel ~f:(fun ivar -> - let* res = Fiber.Ivar.peek ivar in - match res with - | Some _ -> Fiber.return () - | None -> Fiber.Ivar.fill ivar (Error `Stopped)))) - - let create ?(on_request = on_request_fail) - ?(on_notification = on_notification_fail) ~name chan state = + if t.pending_requests_stopped + then Fiber.return () + else ( + t.pending_requests_stopped <- true; + let to_cancel = + Id.Table.fold t.pending ~init:[] ~f:(fun ~key:_ ~data:x acc -> x :: acc) + in + Id.Table.clear t.pending; + Fiber.parallel_iter to_cancel ~f:(fun ivar -> + let* res = Fiber.Ivar.peek ivar in + match res with + | Some _ -> Fiber.return () + | None -> Fiber.Ivar.fill ivar (Error `Stopped)))) + ;; + + let create + ?(on_request = on_request_fail) + ?(on_notification = on_notification_fail) + ~name + chan + state + = let pending = Id.Table.create 10 in { chan ; on_request @@ -156,6 +155,7 @@ struct ; state ; pending_requests_stopped = false } + ;; let stopped t = Fiber.Ivar.read t.stopped @@ -163,6 +163,7 @@ struct Fiber.fork_and_join_unit (fun () -> Chan.close t.chan `Read) (fun () -> stop_pending_requests t) + ;; let close t = Fiber.all_concurrently_unit @@ -171,46 +172,46 @@ struct ; Fiber.Ivar.fill t.stopped () ; stop_pending_requests t ] + ;; let run t = let send_response resp = log t (fun () -> - Log.msg "sending response" [ ("response", Response.yojson_of_t resp) ]); + Log.msg "sending response" [ "response", Response.yojson_of_t resp ]); Chan.send t.chan [ Response resp ] in let later = Fiber.Pool.create () in let rec loop () = t.tick <- t.tick + 1; - log t (fun () -> Log.msg "new tick" [ ("tick", `Int t.tick) ]); + log t (fun () -> Log.msg "new tick" [ "tick", `Int t.tick ]); let* res = Chan.recv t.chan in log t (fun () -> Log.msg "waited for something" []); match res with | None -> Fiber.return () - | Some packet -> ( - match packet with - | Notification r -> on_notification r - | Request r -> on_request r - | Response r -> - let* () = Fiber.Pool.task later ~f:(fun () -> on_response r) in - loop () - | Batch_call _ -> Code_error.raise "batch requests aren't supported" [] - | Batch_response _ -> assert false) + | Some packet -> + (match packet with + | Notification r -> on_notification r + | Request r -> on_request r + | Response r -> + let* () = Fiber.Pool.task later ~f:(fun () -> on_response r) in + loop () + | Batch_call _ -> Code_error.raise "batch requests aren't supported" [] + | Batch_response _ -> assert false) and on_response r = let log (what : string) = - log t (fun () -> - Log.msg ("response " ^ what) [ ("r", Response.yojson_of_t r) ]) + log t (fun () -> Log.msg ("response " ^ what) [ "r", Response.yojson_of_t r ]) in match Id.Table.find_opt t.pending r.id with | None -> log "dropped"; Fiber.return () - | Some ivar -> ( + | Some ivar -> log "acknowledged"; Id.Table.remove t.pending r.id; let* resp = Fiber.Ivar.peek ivar in - match resp with - | Some _ -> Fiber.return () - | None -> Fiber.Ivar.fill ivar (Ok r)) + (match resp with + | Some _ -> Fiber.return () + | None -> Fiber.Ivar.fill ivar (Ok r)) and on_request (r : Request.t) = log t (fun () -> Log.msg "handling request" []); let* result = @@ -218,12 +219,13 @@ struct Fiber.map_reduce_errors (module Stdune.Monoid.Unit) ~on_error:(fun exn_bt -> - if !sent then (* TODO log *) + if !sent + then (* TODO log *) Fiber.return () - else + else ( let response = response_of_exn r.id exn_bt in sent := true; - Fiber.Pool.task later ~f:(fun () -> send_response response)) + Fiber.Pool.task later ~f:(fun () -> send_response response))) (fun () -> t.on_request (t, r)) in log t (fun () -> Log.msg "received result" []); @@ -234,31 +236,31 @@ struct let sender = Sender.make r.id send_response in let* () = Fiber.Pool.task later ~f:(fun () -> - let+ res = - Fiber.map_reduce_errors - (module Stdune.Monoid.Unit) - (fun () -> Reply.send reply sender) - ~on_error:(fun exn_bt -> - if sender.called then - (* TODO we should log *) - Fiber.return () - else - let resp = response_of_exn r.id exn_bt in - Sender.send sender resp) - in - match res with - | Ok () -> () - | Error () -> ()) + let+ res = + Fiber.map_reduce_errors + (module Stdune.Monoid.Unit) + (fun () -> Reply.send reply sender) + ~on_error:(fun exn_bt -> + if sender.called + then (* TODO we should log *) + Fiber.return () + else ( + let resp = response_of_exn r.id exn_bt in + Sender.send sender resp)) + in + match res with + | Ok () -> () + | Error () -> ()) in loop () and on_notification (r : Notification.t) : unit Fiber.t = let* res = Fiber.collect_errors (fun () -> t.on_notification (t, r)) in match res with - | Ok (next, state) -> ( + | Ok (next, state) -> t.state <- state; - match next with - | Stop -> Fiber.return () - | Continue -> loop ()) + (match next with + | Stop -> Fiber.return () + | Continue -> loop ()) | Error errors -> Format.eprintf "Uncaught error when handling notification:@.%a@.Error:@.%s@." @@ -268,28 +270,32 @@ struct loop () in Fiber.of_thunk (fun () -> - t.running <- true; - let* () = - Fiber.fork_and_join_unit - (fun () -> - let* () = loop () in - Fiber.Pool.stop later) - (fun () -> Fiber.Pool.run later) - in - close t) + t.running <- true; + let* () = + Fiber.fork_and_join_unit + (fun () -> + let* () = loop () in + Fiber.Pool.stop later) + (fun () -> Fiber.Pool.run later) + in + close t) + ;; let check_running t = if not t.running then Code_error.raise "jsonrpc must be running" [] + ;; let notification t (n : Notification.t) = Fiber.of_thunk (fun () -> - check_running t; - Chan.send t.chan [ Notification n ]) + check_running t; + Chan.send t.chan [ Notification n ]) + ;; let register_request_ivar t id ivar = match Id.Table.find_opt t.pending id with | Some _ -> Code_error.raise "duplicate request id" [] | None -> Id.Table.add t.pending ~key:id ~data:ivar + ;; let read_request_ivar req ivar = let+ res = Fiber.Ivar.read ivar in @@ -297,32 +303,35 @@ struct | Ok s -> s | Error `Cancelled -> assert false | Error `Stopped -> raise (Stopped req) + ;; let request t (req : Request.t) = Fiber.of_thunk (fun () -> - check_running t; - let* () = Chan.send t.chan [ Request req ] in - let ivar = Fiber.Ivar.create () in - register_request_ivar t req.id ivar; - read_request_ivar req ivar) + check_running t; + let* () = Chan.send t.chan [ Request req ] in + let ivar = Fiber.Ivar.create () in + register_request_ivar t req.id ivar; + read_request_ivar req ivar) + ;; let request_with_cancel t (req : Request.t) = let ivar = Fiber.Ivar.create () in let cancel = Fiber.Ivar.fill ivar (Error `Cancelled) in let resp = Fiber.of_thunk (fun () -> - check_running t; - let* () = - let+ () = Chan.send t.chan [ Request req ] in - register_request_ivar t req.id ivar - in - let+ res = Fiber.Ivar.read ivar in - match res with - | Ok s -> `Ok s - | Error `Cancelled -> `Cancelled - | Error `Stopped -> raise (Stopped req)) + check_running t; + let* () = + let+ () = Chan.send t.chan [ Request req ] in + register_request_ivar t req.id ivar + in + let+ res = Fiber.Ivar.read ivar in + match res with + | Ok s -> `Ok s + | Error `Cancelled -> `Cancelled + | Error `Stopped -> raise (Stopped req)) in - (cancel, resp) + cancel, resp + ;; module Batch = struct type response = @@ -332,31 +341,30 @@ struct type t = [ `Notification of Notification.t | `Request of response ] list ref let await (req, resp) = read_request_ivar req resp - let create () = ref [] - let notification t n = t := `Notification n :: !t let request (t : t) r : response = let ivar = Fiber.Ivar.create () in - let resp = (r, ivar) in + let resp = r, ivar in t := `Request resp :: !t; resp + ;; end let submit (t : _ t) (batch : Batch.t) = Fiber.of_thunk (fun () -> - check_running t; - let pending = !batch in - batch := []; - let pending, ivars = - List.fold_left pending ~init:([], []) ~f:(fun (pending, ivars) -> + check_running t; + let pending = !batch in + batch := []; + let pending, ivars = + List.fold_left pending ~init:([], []) ~f:(fun (pending, ivars) -> function - | `Notification n -> - (Jsonrpc.Packet.Notification n :: pending, ivars) + | `Notification n -> Jsonrpc.Packet.Notification n :: pending, ivars | `Request ((r : Request.t), ivar) -> - (Jsonrpc.Packet.Request r :: pending, (r.id, ivar) :: ivars)) - in - List.iter ivars ~f:(fun (id, ivar) -> register_request_ivar t id ivar); - Chan.send t.chan pending) + Jsonrpc.Packet.Request r :: pending, (r.id, ivar) :: ivars) + in + List.iter ivars ~f:(fun (id, ivar) -> register_request_ivar t id ivar); + Chan.send t.chan pending) + ;; end diff --git a/jsonrpc-fiber/src/jsonrpc_fiber.mli b/jsonrpc-fiber/src/jsonrpc_fiber.mli index 13dae9f77..2c480148c 100644 --- a/jsonrpc-fiber/src/jsonrpc_fiber.mli +++ b/jsonrpc-fiber/src/jsonrpc_fiber.mli @@ -8,7 +8,6 @@ module Reply : sig type t val now : Jsonrpc.Response.t -> t - val later : ((Jsonrpc.Response.t -> unit Fiber.t) -> unit Fiber.t) -> t end @@ -18,57 +17,45 @@ exception Stopped of Jsonrpc.Request.t (** IO free implementation of the jsonrpc protocol. We stay completely agnostic of transport by only dealing with abstract jsonrpc packets *) module Make (Chan : sig - type t - - val send : t -> Jsonrpc.Packet.t list -> unit Fiber.t - - val recv : t -> Jsonrpc.Packet.t option Fiber.t + type t - val close : t -> [ `Read | `Write ] -> unit Fiber.t -end) : sig + val send : t -> Jsonrpc.Packet.t list -> unit Fiber.t + val recv : t -> Jsonrpc.Packet.t option Fiber.t + val close : t -> [ `Read | `Write ] -> unit Fiber.t + end) : sig type 'state t module Context : sig type 'a session := 'a t - type ('state, 'message) t val message : (_, 'message) t -> 'message - val state : ('a, _) t -> 'a - val session : ('a, _) t -> 'a session end - val create : - ?on_request: - (('state, Jsonrpc.Request.t) Context.t -> (Reply.t * 'state) Fiber.t) + val create + : ?on_request:(('state, Jsonrpc.Request.t) Context.t -> (Reply.t * 'state) Fiber.t) -> ?on_notification: - ( ('state, Jsonrpc.Notification.t) Context.t - -> (Notify.t * 'state) Fiber.t) + (('state, Jsonrpc.Notification.t) Context.t -> (Notify.t * 'state) Fiber.t) -> name:string -> Chan.t -> 'state -> 'state t val state : 'a t -> 'a - val stop : _ t -> unit Fiber.t - val stopped : _ t -> unit Fiber.t - val run : _ t -> unit Fiber.t - val notification : _ t -> Jsonrpc.Notification.t -> unit Fiber.t - val request : _ t -> Jsonrpc.Request.t -> Jsonrpc.Response.t Fiber.t type cancel val fire : cancel -> unit Fiber.t - val request_with_cancel : - _ t + val request_with_cancel + : _ t -> Jsonrpc.Request.t -> cancel * [ `Ok of Jsonrpc.Response.t | `Cancelled ] Fiber.t @@ -76,13 +63,11 @@ end) : sig type t val create : unit -> t - val notification : t -> Jsonrpc.Notification.t -> unit type response val await : response -> Jsonrpc.Response.t Fiber.t - val request : t -> Jsonrpc.Request.t -> response end diff --git a/jsonrpc-fiber/test/jsonrpc_fiber_tests.ml b/jsonrpc-fiber/test/jsonrpc_fiber_tests.ml index 89a351fb7..8d1336063 100644 --- a/jsonrpc-fiber/test/jsonrpc_fiber_tests.ml +++ b/jsonrpc-fiber/test/jsonrpc_fiber_tests.ml @@ -11,26 +11,27 @@ module Stream_chan = struct match what with | `Read -> Fiber.return () | `Write -> Out.write o None + ;; let send (_, o) p = Fiber.sequential_iter p ~f:(fun x -> Out.write o (Some x)) - let recv (i, _) = In.read i end module Jrpc = Jsonrpc_fiber.Make (Stream_chan) module Context = Jrpc.Context -let print_json json = - print_endline (Yojson.Safe.pretty_to_string ~std:false json) +let print_json json = print_endline (Yojson.Safe.pretty_to_string ~std:false json) let no_output () = let received_none = ref false in Out.create (function - | None -> - if !received_none then failwith "received None more than once" - else received_none := true; - Fiber.return () - | Some _ -> failwith "unexpected element") + | None -> + if !received_none + then failwith "received None more than once" + else received_none := true; + Fiber.return () + | Some _ -> failwith "unexpected element") +;; let%expect_test "start and stop server" = let run () = @@ -42,12 +43,11 @@ let%expect_test "start and stop server" = let () = Fiber_test.test Dyn.opaque run in [%expect {| |}] +;; let%expect_test "server accepts notifications" = let notif = - { Jsonrpc.Notification.method_ = "method" - ; params = Some (`List [ `String "bar" ]) - } + { Jsonrpc.Notification.method_ = "method"; params = Some (`List [ `String "bar" ]) } in let run () = let in_ = In.of_list [ Jsonrpc.Packet.Notification notif ] in @@ -58,22 +58,22 @@ let%expect_test "server accepts notifications" = print_endline "received notification"; Fiber.return (Notify.Stop, state) in - let jrpc = - Jrpc.create ~name:"test" ~on_notification (in_, no_output ()) () - in + let jrpc = Jrpc.create ~name:"test" ~on_notification (in_, no_output ()) () in Jrpc.run jrpc in Fiber_test.test Dyn.opaque run; [%expect {| received notification |}] +;; let of_ref ref = Fiber.Stream.Out.create (function - | None -> Fiber.return () - | Some x -> - ref := x :: !ref; - Fiber.return ()) + | None -> Fiber.return () + | Some x -> + ref := x :: !ref; + Fiber.return ()) +;; let%expect_test "serving requests" = let id = `Int 1 in @@ -95,23 +95,21 @@ let%expect_test "serving requests" = let jrpc = Jrpc.create ~name:"test" ~on_request (in_, out) () in let+ () = Jrpc.run jrpc in List.iter !responses ~f:(fun resp -> - let json = Jsonrpc.Packet.yojson_of_t resp in - print_endline (Yojson.Safe.pretty_to_string ~std:false json)) + let json = Jsonrpc.Packet.yojson_of_t resp in + print_endline (Yojson.Safe.pretty_to_string ~std:false json)) in Fiber_test.test Dyn.opaque run; - [%expect - {| + [%expect {| { "id": 1, "jsonrpc": "2.0", "result": "response" } |}] +;; (* The current client/server implement has no concurrent handling of requests. We can show this when we try to send a request when handling a response. *) let%expect_test "concurrent requests" = let print packet = print_endline - (Yojson.Safe.pretty_to_string - ~std:false - (Jsonrpc.Packet.yojson_of_t packet)) + (Yojson.Safe.pretty_to_string ~std:false (Jsonrpc.Packet.yojson_of_t packet)) in let waiter chan = let on_request c = @@ -121,21 +119,19 @@ let%expect_test "concurrent requests" = print (Request request); let response = Reply.later (fun send -> - print_endline "waiter: sending response"; - let* () = send (Jsonrpc.Response.ok request.id `Null) in - print_endline "waiter: making request"; - let* response = - let request = - Jsonrpc.Request.create ~id:(`Int 100) ~method_:"shutdown" () - in - Jrpc.request self request - in - print_endline "waiter: received response:"; - print (Response response); - let* () = send (Jsonrpc.Response.ok request.id `Null) in - print_endline "waiter: stopping"; - let+ () = Jrpc.stop self in - print_endline "waiter: stopped") + print_endline "waiter: sending response"; + let* () = send (Jsonrpc.Response.ok request.id `Null) in + print_endline "waiter: making request"; + let* response = + let request = Jsonrpc.Request.create ~id:(`Int 100) ~method_:"shutdown" () in + Jrpc.request self request + in + print_endline "waiter: received response:"; + print (Response response); + let* () = send (Jsonrpc.Response.ok request.id `Null) in + print_endline "waiter: stopping"; + let+ () = Jrpc.stop self in + print_endline "waiter: stopped") in Fiber.return (response, ()) in @@ -148,13 +144,14 @@ let%expect_test "concurrent requests" = print (Request request); let response = Reply.later (fun send -> - let* () = send (Jsonrpc.Response.ok request.id (`Int 42)) in - if request.method_ = "shutdown" then ( - let self = Context.session c in - print_endline "waitee: stopping"; - let+ () = Jrpc.stop self in - print_endline "waitee: stopped") - else Fiber.return ()) + let* () = send (Jsonrpc.Response.ok request.id (`Int 42)) in + if request.method_ = "shutdown" + then ( + let self = Context.session c in + print_endline "waitee: stopping"; + let+ () = Jrpc.stop self in + print_endline "waitee: stopped") + else Fiber.return ()) in let state = Context.state c in Fiber.return (response, state) @@ -167,16 +164,13 @@ let%expect_test "concurrent requests" = let waiter = waiter (waiter_in, waiter_out) in let run () = let initial_request () = - let request = - Jsonrpc.Request.create ~id:(`String "initial") ~method_:"init" () - in + let request = Jsonrpc.Request.create ~id:(`String "initial") ~method_:"init" () in print_endline "initial: waitee requests from waiter"; let+ resp = Jrpc.request waitee request in print_endline "initial request response:"; print (Response resp) in - Fiber.all_concurrently_unit - [ Jrpc.run waitee; initial_request (); Jrpc.run waiter ] + Fiber.all_concurrently_unit [ Jrpc.run waitee; initial_request (); Jrpc.run waiter ] in Fiber_test.test Dyn.opaque run; [%expect @@ -195,6 +189,7 @@ let%expect_test "concurrent requests" = waiter: received response: { "id": 100, "jsonrpc": "2.0", "result": 42 } [FAIL] unexpected Never raised |}] +;; let%expect_test "test from jsonrpc_test.ml" = Printexc.record_backtrace false; @@ -235,22 +230,21 @@ let%expect_test "test from jsonrpc_test.ml" = let reqs_in, reqs_out = pipe () in let chan = let out = of_ref responses in - (reqs_in, out) + reqs_in, out in let session = Jrpc.create ~on_notification ~on_request ~name:"test" chan () in let write_reqs () = let* () = - Fiber.sequential_iter initial_requests ~f:(fun req -> - Out.write reqs_out (Some req)) + Fiber.sequential_iter initial_requests ~f:(fun req -> Out.write reqs_out (Some req)) in Out.write reqs_out None in Fiber_test.test Dyn.opaque (fun () -> - Fiber.fork_and_join_unit write_reqs (fun () -> Jrpc.run session)); + Fiber.fork_and_join_unit write_reqs (fun () -> Jrpc.run session)); List.rev !responses |> List.iter ~f:(fun packet -> - let json = Jsonrpc.Packet.yojson_of_t packet in - print_json json); + let json = Jsonrpc.Packet.yojson_of_t packet in + print_json json); [%expect {| >> received notification @@ -264,14 +258,13 @@ let%expect_test "test from jsonrpc_test.ml" = { "id": 10, "jsonrpc": "2.0", "result": 1 } { "id": "testing", "jsonrpc": "2.0", "result": 2 } |}] +;; let%expect_test "cancellation" = let () = Printexc.record_backtrace true in let print packet = print_endline - (Yojson.Safe.pretty_to_string - ~std:false - (Jsonrpc.Packet.yojson_of_t packet)) + (Yojson.Safe.pretty_to_string ~std:false (Jsonrpc.Packet.yojson_of_t packet)) in let server_req_ack = Fiber.Ivar.create () in let client_req_ack = Fiber.Ivar.create () in @@ -284,11 +277,10 @@ let%expect_test "cancellation" = let* () = Fiber.Ivar.fill server_req_ack () in let response = Reply.later (fun send -> - print_endline - "server: waiting for client ack before sending response"; - let* () = Fiber.Ivar.read client_req_ack in - print_endline "server: got client ack, sending response"; - send (Jsonrpc.Response.ok request.id (`String "Ok"))) + print_endline "server: waiting for client ack before sending response"; + let* () = Fiber.Ivar.read client_req_ack in + print_endline "server: got client ack, sending response"; + send (Jsonrpc.Response.ok request.id (`String "Ok"))) in Fiber.return (response, state) in @@ -300,9 +292,7 @@ let%expect_test "cancellation" = let server_in, server_out = pipe () in let client = client (client_in, server_out) in let server = server (server_in, client_out) in - let request = - Jsonrpc.Request.create ~id:(`String "initial") ~method_:"init" () - in + let request = Jsonrpc.Request.create ~id:(`String "initial") ~method_:"init" () in let cancel, req = Jrpc.request_with_cancel client request in let fire_cancellation = let* () = Fiber.return () in @@ -346,3 +336,4 @@ let%expect_test "cancellation" = request has been cancelled server: got client ack, sending response |}] +;; diff --git a/jsonrpc/src/import.ml b/jsonrpc/src/import.ml index b28f37959..1f6bd09ee 100644 --- a/jsonrpc/src/import.ml +++ b/jsonrpc/src/import.ml @@ -5,6 +5,7 @@ module Option = struct match t with | None -> None | Some x -> Some (f x) + ;; end module Json = struct @@ -25,22 +26,21 @@ module Json = struct let () = Printexc.register_printer (function - | Of_json (msg, _) -> Some ("Jsonrpc: json conversion failed: " ^ msg) - | _ -> None) + | Of_json (msg, _) -> Some ("Jsonrpc: json conversion failed: " ^ msg) + | _ -> None) + ;; let error msg json = raise (Of_json (msg, json)) module Jsonable = struct module type S = sig - type json + type json + type t - type t - - val yojson_of_t : t -> json - - val t_of_yojson : json -> t - end - with type json := t + val yojson_of_t : t -> json + val t_of_yojson : json -> t + end + with type json := t end let field fields name conv = List.assoc_opt name fields |> Option.map ~f:conv @@ -49,10 +49,12 @@ module Json = struct match field fields name conv with | Some f -> f | None -> error ("missing field " ^ name) (`Assoc fields) + ;; module Conv = struct let string_of_yojson = function | `String s -> s | json -> error "expected string" json + ;; end end diff --git a/jsonrpc/src/jsonrpc.ml b/jsonrpc/src/jsonrpc.ml index 21251cc5a..3f3fbe9fa 100644 --- a/jsonrpc/src/jsonrpc.ml +++ b/jsonrpc/src/jsonrpc.ml @@ -11,41 +11,36 @@ module Id = struct let yojson_of_t = function | `String s -> `String s | `Int i -> `Int i + ;; let t_of_yojson = function | `String s -> `String s | `Int i -> `Int i | json -> Json.error "Id.t" json + ;; let hash x = Hashtbl.hash x - let equal = ( = ) end module Constant = struct let jsonrpc = "jsonrpc" - let jsonrpcv = "2.0" - let id = "id" - let method_ = "method" - let params = "params" - let result = "result" - let error = "error" end let assert_jsonrpc_version fields = - let jsonrpc = - Json.field_exn fields Constant.jsonrpc Json.Conv.string_of_yojson - in - if not (String.equal jsonrpc Constant.jsonrpcv) then + let jsonrpc = Json.field_exn fields Constant.jsonrpc Json.Conv.string_of_yojson in + if not (String.equal jsonrpc Constant.jsonrpcv) + then Json.error ("invalid packet: jsonrpc version doesn't match " ^ jsonrpc) (`Assoc fields) +;; module Structured = struct type t = @@ -57,6 +52,7 @@ module Structured = struct | `Assoc xs -> `Assoc xs | `List xs -> `List xs | json -> Json.error "invalid structured value" json + ;; let yojson_of_t t = (t :> Json.t) end @@ -69,16 +65,14 @@ module Notification = struct let fields ~method_ ~params = let json = - [ (Constant.method_, `String method_) - ; (Constant.jsonrpc, `String Constant.jsonrpcv) - ] + [ Constant.method_, `String method_; Constant.jsonrpc, `String Constant.jsonrpcv ] in match params with | None -> json | Some params -> (Constant.params, (params :> Json.t)) :: json + ;; let yojson_of_t { method_; params } = `Assoc (fields ~method_ ~params) - let create ?params ~method_ () = { params; method_ } end @@ -92,6 +86,7 @@ module Request = struct let yojson_of_t { id; method_; params } = let fields = Notification.fields ~method_ ~params in `Assoc ((Constant.id, Id.yojson_of_t id) :: fields) + ;; let create ?params ~id ~method_ () = { params; id; method_ } end @@ -132,6 +127,7 @@ module Response = struct | -32802 -> ServerCancelled | -32803 -> RequestFailed | code -> Other code + ;; let to_int = function | ParseError -> -32700 @@ -148,11 +144,13 @@ module Response = struct | ServerCancelled -> -32802 | RequestFailed -> -32803 | Other code -> code + ;; let t_of_yojson json = match json with | `Int i -> of_int i | _ -> Json.error "invalid code" json + ;; let yojson_of_t t = `Int (to_int t) end @@ -164,15 +162,14 @@ module Response = struct } let yojson_of_t { code; message; data } = - let assoc = - [ ("code", Code.yojson_of_t code); ("message", `String message) ] - in + let assoc = [ "code", Code.yojson_of_t code; "message", `String message ] in let assoc = match data with | None -> assoc | Some data -> ("data", data) :: assoc in `Assoc assoc + ;; let t_of_yojson json = match json with @@ -182,16 +179,17 @@ module Response = struct let data = Json.field fields "data" (fun x -> x) in { code; message; data } | _ -> Json.error "Jsonrpc.Response.t" json + ;; exception E of t let raise t = raise (E t) - let make ?data ~code ~message () = { data; code; message } let of_exn exn = let message = Printexc.to_string exn in make ~code:InternalError ~message () + ;; end type t = @@ -202,37 +200,34 @@ module Response = struct let yojson_of_t { id; result } = let result = match result with - | Ok json -> (Constant.result, json) - | Error e -> (Constant.error, Error.yojson_of_t e) + | Ok json -> Constant.result, json + | Error e -> Constant.error, Error.yojson_of_t e in `Assoc - [ (Constant.id, Id.yojson_of_t id) - ; (Constant.jsonrpc, `String Constant.jsonrpcv) + [ Constant.id, Id.yojson_of_t id + ; Constant.jsonrpc, `String Constant.jsonrpcv ; result ] + ;; let t_of_yojson json = match json with - | `Assoc fields -> ( + | `Assoc fields -> let id = Json.field_exn fields Constant.id Id.t_of_yojson in - let jsonrpc = - Json.field_exn fields Constant.jsonrpc Json.Conv.string_of_yojson - in - if jsonrpc <> Constant.jsonrpcv then Json.error "Invalid response" json - else + let jsonrpc = Json.field_exn fields Constant.jsonrpc Json.Conv.string_of_yojson in + if jsonrpc <> Constant.jsonrpcv + then Json.error "Invalid response" json + else ( match Json.field fields Constant.result (fun x -> x) with | Some res -> { id; result = Ok res } | None -> - let result = - Error (Json.field_exn fields Constant.error Error.t_of_yojson) - in + let result = Error (Json.field_exn fields Constant.error Error.t_of_yojson) in { id; result }) | _ -> Json.error "Jsonrpc.Result.t" json + ;; let make ~id ~result = { id; result } - let ok id result = make ~id ~result:(Ok result) - let error id error = make ~id ~result:(Error error) end @@ -242,8 +237,7 @@ module Packet = struct | Request of Request.t | Response of Response.t | Batch_response of Response.t list - | Batch_call of - [ `Request of Request.t | `Notification of Notification.t ] list + | Batch_call of [ `Request of Request.t | `Notification of Notification.t ] list let yojson_of_t = function | Notification r -> Notification.yojson_of_t r @@ -253,71 +247,73 @@ module Packet = struct | Batch_call r -> `List (List.map r ~f:(function - | `Request r -> Request.yojson_of_t r - | `Notification r -> Notification.yojson_of_t r)) + | `Request r -> Request.yojson_of_t r + | `Notification r -> Notification.yojson_of_t r)) + ;; let t_of_fields (fields : (string * Json.t) list) = assert_jsonrpc_version fields; match Json.field fields Constant.id Id.t_of_yojson with | None -> - let method_ = - Json.field_exn fields Constant.method_ Json.Conv.string_of_yojson - in + let method_ = Json.field_exn fields Constant.method_ Json.Conv.string_of_yojson in let params = Json.field fields Constant.params Structured.t_of_yojson in Notification { Notification.params; method_ } - | Some id -> ( - match Json.field fields Constant.method_ Json.Conv.string_of_yojson with - | Some method_ -> - let params = Json.field fields Constant.params Structured.t_of_yojson in - Request { Request.method_; params; id } - | None -> - Response - (match Json.field fields Constant.result (fun x -> x) with - | Some result -> { Response.id; result = Ok result } - | None -> - let error = - Json.field_exn fields Constant.error Response.Error.t_of_yojson - in - { id; result = Error error })) + | Some id -> + (match Json.field fields Constant.method_ Json.Conv.string_of_yojson with + | Some method_ -> + let params = Json.field fields Constant.params Structured.t_of_yojson in + Request { Request.method_; params; id } + | None -> + Response + (match Json.field fields Constant.result (fun x -> x) with + | Some result -> { Response.id; result = Ok result } + | None -> + let error = + Json.field_exn fields Constant.error Response.Error.t_of_yojson + in + { id; result = Error error })) + ;; let t_of_yojson_single json = match json with | `Assoc fields -> t_of_fields fields | _ -> Json.error "invalid packet" json + ;; let t_of_yojson (json : Json.t) = match json with | `List [] -> Json.error "invalid packet" json - | `List (x :: xs) -> ( + | `List (x :: xs) -> (* we inspect the first element to see what we're dealing with *) let x = match x with | `Assoc fields -> t_of_fields fields | _ -> Json.error "invalid packet" json in - match - match x with - | Notification x -> `Call (`Notification x) - | Request x -> `Call (`Request x) - | Response r -> `Response r - | _ -> Json.error "invalid packet" json - with - | `Call x -> - Batch_call - (x - :: List.map xs ~f:(fun call -> - let x = t_of_yojson_single call in - match x with - | Notification n -> `Notification n - | Request n -> `Request n - | _ -> Json.error "invalid packet" json)) - | `Response x -> - Batch_response - (x - :: List.map xs ~f:(fun resp -> - let resp = t_of_yojson_single resp in - match resp with - | Response n -> n - | _ -> Json.error "invalid packet" json))) + (match + match x with + | Notification x -> `Call (`Notification x) + | Request x -> `Call (`Request x) + | Response r -> `Response r + | _ -> Json.error "invalid packet" json + with + | `Call x -> + Batch_call + (x + :: List.map xs ~f:(fun call -> + let x = t_of_yojson_single call in + match x with + | Notification n -> `Notification n + | Request n -> `Request n + | _ -> Json.error "invalid packet" json)) + | `Response x -> + Batch_response + (x + :: List.map xs ~f:(fun resp -> + let resp = t_of_yojson_single resp in + match resp with + | Response n -> n + | _ -> Json.error "invalid packet" json))) | _ -> t_of_yojson_single json + ;; end diff --git a/jsonrpc/src/jsonrpc.mli b/jsonrpc/src/jsonrpc.mli index 3c44fe662..9b8193772 100644 --- a/jsonrpc/src/jsonrpc.mli +++ b/jsonrpc/src/jsonrpc.mli @@ -19,15 +19,13 @@ module Json : sig module Jsonable : sig module type S = sig - type json + type json + type t - type t - - val yojson_of_t : t -> json - - val t_of_yojson : json -> t - end - with type json := t + val yojson_of_t : t -> json + val t_of_yojson : json -> t + end + with type json := t end end @@ -40,7 +38,6 @@ module Id : sig include Json.Jsonable.S with type t := t val hash : t -> int - val equal : t -> t -> bool end @@ -60,7 +57,6 @@ module Notification : sig } val create : ?params:Structured.t -> method_:string -> unit -> t - val yojson_of_t : t -> Json.t end @@ -72,7 +68,6 @@ module Request : sig } val create : ?params:Structured.t -> id:Id.t -> method_:string -> unit -> t - val yojson_of_t : t -> Json.t end @@ -105,11 +100,8 @@ module Response : sig exception E of t val make : ?data:Json.t -> code:Code.t -> message:string -> unit -> t - val raise : t -> 'a - val of_exn : exn -> t - val yojson_of_t : t -> Json.t end @@ -119,7 +111,6 @@ module Response : sig } val ok : Id.t -> Json.t -> t - val error : Id.t -> Error.t -> t include Json.Jsonable.S with type t := t @@ -131,8 +122,7 @@ module Packet : sig | Request of Request.t | Response of Response.t | Batch_response of Response.t list - | Batch_call of - [ `Request of Request.t | `Notification of Notification.t ] list + | Batch_call of [ `Request of Request.t | `Notification of Notification.t ] list include Json.Jsonable.S with type t := t end diff --git a/lsp-fiber/src/fiber_io.ml b/lsp-fiber/src/fiber_io.ml index d4489e2ea..5fde56d8c 100644 --- a/lsp-fiber/src/fiber_io.ml +++ b/lsp-fiber/src/fiber_io.ml @@ -13,7 +13,6 @@ module Io = end) (struct type input = Lio.Reader.t - type output = Lio.Writer.t let read_line ic = @@ -21,32 +20,36 @@ module Io = match res with | Ok s -> Some s | Error (`Partial_eof _) -> None + ;; let read_exactly ic len = let+ res = Lio.Reader.read_exactly ic len in match res with | Ok s -> Some s | Error (`Partial_eof _) -> None + ;; let write oc strings = Fiber.of_thunk (fun () -> - List.iter strings ~f:(Lio.Writer.add_string oc); - Fiber.return ()) + List.iter strings ~f:(Lio.Writer.add_string oc); + Fiber.return ()) + ;; end) let send (_, oc, m) packets = Fiber.Mutex.with_lock m ~f:(fun () -> - Lio.with_write oc ~f:(fun writer -> - let* () = Fiber.sequential_iter packets ~f:(Io.write writer) in - Lio.Writer.flush writer)) + Lio.with_write oc ~f:(fun writer -> + let* () = Fiber.sequential_iter packets ~f:(Io.write writer) in + Lio.Writer.flush writer)) +;; let recv (ic, _, _) = Lio.with_read ic ~f:Io.read - -let make ic oc = (ic, oc, Fiber.Mutex.create ()) +let make ic oc = ic, oc, Fiber.Mutex.create () let close (ic, oc, _) what = Fiber.of_thunk (fun () -> - (match what with - | `Write -> Lio.close oc - | `Read -> Lio.close ic); - Fiber.return ()) + (match what with + | `Write -> Lio.close oc + | `Read -> Lio.close ic); + Fiber.return ()) +;; diff --git a/lsp-fiber/src/fiber_io.mli b/lsp-fiber/src/fiber_io.mli index 541b63cd7..95b5b9c07 100644 --- a/lsp-fiber/src/fiber_io.mli +++ b/lsp-fiber/src/fiber_io.mli @@ -6,10 +6,6 @@ open! Import type t val close : t -> [ `Read | `Write ] -> unit Fiber.t - val send : t -> Jsonrpc.Packet.t list -> unit Fiber.t - val recv : t -> Jsonrpc.Packet.t option Fiber.t - -val make : - Lev_fiber.Io.input Lev_fiber.Io.t -> Lev_fiber.Io.output Lev_fiber.Io.t -> t +val make : Lev_fiber.Io.input Lev_fiber.Io.t -> Lev_fiber.Io.output Lev_fiber.Io.t -> t diff --git a/lsp-fiber/src/import.ml b/lsp-fiber/src/import.ml index a251bdfe9..d2c5d4b04 100644 --- a/lsp-fiber/src/import.ml +++ b/lsp-fiber/src/import.ml @@ -27,11 +27,11 @@ module Json = struct | List xs -> `List (List.map ~f:of_dyn xs) | Array xs -> `List (List.map ~f:of_dyn (Array.to_list xs)) | Tuple xs -> `List (List.map ~f:of_dyn xs) - | Record r -> `Assoc (List.map r ~f:(fun (k, v) -> (k, of_dyn v))) - | Variant (name, args) -> `Assoc [ (name, of_dyn (List args)) ] + | Record r -> `Assoc (List.map r ~f:(fun (k, v) -> k, of_dyn v)) + | Variant (name, args) -> `Assoc [ name, of_dyn (List args) ] | Set xs -> `List (List.map ~f:of_dyn xs) - | Map map -> - `List (List.map map ~f:(fun (k, v) -> `List [ of_dyn k; of_dyn v ])) + | Map map -> `List (List.map map ~f:(fun (k, v) -> `List [ of_dyn k; of_dyn v ])) + ;; let rec to_dyn (t : t) : Dyn.t = match t with @@ -39,18 +39,18 @@ module Json = struct | `Int i -> Int i | `Float f -> Float f | `Bool f -> Bool f - | `Assoc o -> Record (List.map o ~f:(fun (k, v) -> (k, to_dyn v))) + | `Assoc o -> Record (List.map o ~f:(fun (k, v) -> k, to_dyn v)) | `List l -> List (List.map l ~f:to_dyn) | `Tuple args -> Tuple (List.map args ~f:to_dyn) | `Null -> Dyn.Variant ("Null", []) | `Variant (name, Some arg) -> Variant (name, [ to_dyn arg ]) | `Variant (name, None) -> Variant (name, []) | `Intlit s -> String s + ;; end module Log = struct let level : (string option -> bool) ref = ref (fun _ -> false) - let out = ref Format.err_formatter type message = @@ -61,15 +61,17 @@ module Log = struct let msg message payload = { message; payload } let log ?section k = - if !level section then ( + if !level section + then ( let message = k () in (match section with - | None -> Format.fprintf !out "%s@." message.message - | Some section -> Format.fprintf !out "[%s] %s@." section message.message); + | None -> Format.fprintf !out "%s@." message.message + | Some section -> Format.fprintf !out "[%s] %s@." section message.message); (match message.payload with - | [] -> () - | fields -> Format.fprintf !out "%a@." Json.pp (`Assoc fields)); + | [] -> () + | fields -> Format.fprintf !out "%a@." Json.pp (`Assoc fields)); Format.pp_print_flush !out ()) + ;; end let sprintf = Stdune.sprintf @@ -86,4 +88,5 @@ module Jrpc_id = struct let to_dyn = function | `String s -> Dyn.String s | `Int i -> Dyn.Int i + ;; end diff --git a/lsp-fiber/src/lazy_fiber.ml b/lsp-fiber/src/lazy_fiber.ml index f85d107f2..2321af1f8 100644 --- a/lsp-fiber/src/lazy_fiber.ml +++ b/lsp-fiber/src/lazy_fiber.ml @@ -11,7 +11,8 @@ let force t = | None -> Fiber.Ivar.read t.value | Some f -> Fiber.of_thunk (fun () -> - t.f <- None; - let* v = f () in - let+ () = Fiber.Ivar.fill t.value v in - v) + t.f <- None; + let* v = f () in + let+ () = Fiber.Ivar.fill t.value v in + v) +;; diff --git a/lsp-fiber/src/lazy_fiber.mli b/lsp-fiber/src/lazy_fiber.mli index 9af8d5afc..2b47ed7c2 100644 --- a/lsp-fiber/src/lazy_fiber.mli +++ b/lsp-fiber/src/lazy_fiber.mli @@ -1,5 +1,4 @@ type 'a t val create : (unit -> 'a Fiber.t) -> 'a t - val force : 'a t -> 'a Fiber.t diff --git a/lsp-fiber/src/rpc.ml b/lsp-fiber/src/rpc.ml index de48c8f5d..34c2004e9 100644 --- a/lsp-fiber/src/rpc.ml +++ b/lsp-fiber/src/rpc.ml @@ -10,7 +10,6 @@ module Reply = struct | Later of (('r -> unit Fiber.t) -> unit Fiber.t) let now r = Now r - let later f = Later f end @@ -25,74 +24,56 @@ end module type S = sig type 'a out_request - type out_notification - type 'a in_request - type in_notification - type 'state t module Handler : sig type 'a session := 'a t type 'state on_request = - { on_request : - 'a. 'state session -> 'a in_request -> ('a Reply.t * 'state) Fiber.t + { on_request : 'a. 'state session -> 'a in_request -> ('a Reply.t * 'state) Fiber.t } type 'state t - val make : - ?on_request:'state on_request + val make + : ?on_request:'state on_request -> ?on_notification:('state session -> in_notification -> 'state Fiber.t) -> unit -> 'state t end val state : 'a t -> 'a - val make : 'state Handler.t -> Fiber_io.t -> 'state -> 'state t - val stop : _ t -> unit Fiber.t - val request : _ t -> 'resp out_request -> 'resp Fiber.t - val notification : _ t -> out_notification -> unit Fiber.t - val cancel_token : unit -> Fiber.Cancel.t option Fiber.t module Batch : sig type 'a session := 'a t - type t val create : _ session -> t - val notification : t -> out_notification -> unit type 'a response val await : 'a response -> 'a Fiber.t - val request : t -> 'resp out_request -> 'resp response - val submit : t -> unit Fiber.t end end module type Request_intf = sig type 'a t - type packed = E : 'r t -> packed val of_jsonrpc : Jsonrpc.Request.t -> (packed, string) result - val yojson_of_result : 'a t -> 'a -> Json.t - val to_jsonrpc_request : 'a t -> id:Id.t -> Jsonrpc.Request.t - val response_of_json : 'a t -> Json.t -> 'a end @@ -100,7 +81,6 @@ module type Notification_intf = sig type t val of_jsonrpc : Jsonrpc.Notification.t -> (t, string) result - val to_jsonrpc : t -> Jsonrpc.Notification.t end @@ -108,19 +88,16 @@ module Table = Stdlib.Hashtbl.Make (Jsonrpc.Id) module Make (Initialize : sig - type t - end) + type t + end) (Out_request : Request_intf) (Out_notification : Notification_intf) (In_request : Request_intf) (In_notification : Notification_intf) = struct type 'a out_request = 'a Out_request.t - type 'a in_request = 'a In_request.t - type out_notification = Out_notification.t - type in_notification = In_notification.t type 'state t = @@ -137,9 +114,7 @@ struct } and 'state on_request = - { on_request : - 'a. 'state t -> 'a in_request -> ('a Reply.t * 'state) Fiber.t - } + { on_request : 'a. 'state t -> 'a in_request -> ('a Reply.t * 'state) Fiber.t } and 'state handler = { h_on_request : 'state on_request @@ -148,9 +123,7 @@ struct module Handler = struct type nonrec 'state on_request = 'state on_request = - { on_request : - 'a. 'state t -> 'a in_request -> ('a Reply.t * 'state) Fiber.t - } + { on_request : 'a. 'state t -> 'a in_request -> ('a Reply.t * 'state) Fiber.t } type nonrec 'state t = 'state handler = { h_on_request : 'state on_request @@ -162,23 +135,24 @@ struct let notification = In_notification.to_jsonrpc notification in Code_error.raise "unexpected notification" - [ ( "notification" - , Json.to_dyn (Jsonrpc.Notification.yojson_of_t notification) ) - ] + [ "notification", Json.to_dyn (Jsonrpc.Notification.yojson_of_t notification) ] + ;; let on_request_default = { on_request = (fun _ _ -> - Jsonrpc.Response.Error.make - ~code:InternalError - ~message:"Not supported" - () + Jsonrpc.Response.Error.make ~code:InternalError ~message:"Not supported" () |> Jsonrpc.Response.Error.raise) } + ;; - let make ?(on_request = on_request_default) - ?(on_notification = on_notification_default) () = + let make + ?(on_request = on_request_default) + ?(on_notification = on_notification_default) + () + = { h_on_request = on_request; h_on_notification = on_notification } + ;; end let state t = Session.state (Fdecl.get t.session) @@ -191,8 +165,7 @@ struct | Error message -> let code = Jsonrpc.Response.Error.Code.InvalidParams in let error = Jsonrpc.Response.Error.make ~code ~message () in - Fiber.return - (Jsonrpc_fiber.Reply.now (Jsonrpc.Response.error req.id error), state) + Fiber.return (Jsonrpc_fiber.Reply.now (Jsonrpc.Response.error req.id error), state) | Ok (In_request.E r) -> let cancel = Fiber.Cancel.create () in let remove = lazy (Table.remove t.pending req.id) in @@ -200,12 +173,12 @@ struct Fiber.with_error_handler ~on_error: (Stdune.Exn_with_backtrace.map_and_reraise ~f:(fun exn -> - Lazy.force remove; - exn)) + Lazy.force remove; + exn)) (fun () -> Fiber.Var.set cancel_token cancel (fun () -> - Table.replace t.pending req.id cancel; - h_on_request.on_request t r)) + Table.replace t.pending req.id cancel; + h_on_request.on_request t r)) in let to_response x = Jsonrpc.Response.ok req.id (In_request.yojson_of_result r x) @@ -220,14 +193,14 @@ struct Fiber.finalize (fun () -> Fiber.Var.set cancel_token cancel (fun () -> - k (fun r -> send (to_response r)))) + k (fun r -> send (to_response r)))) ~finally:(fun () -> Lazy.force remove; Fiber.return ()) in Jsonrpc_fiber.Reply.later f in - (reply, state) + reply, state in let on_notification ctx = let r = Session.Context.message ctx in @@ -235,11 +208,12 @@ struct | Ok r -> h_on_notification t r | Error error -> Log.log ~section:"lsp" (fun () -> - Log.msg "Invalid notification" [ ("error", `String error) ]); + Log.msg "Invalid notification" [ "error", `String error ]); let state = Session.Context.state ctx in Fiber.return (Jsonrpc_fiber.Notify.Continue, state) in - (on_request, on_notification) + on_request, on_notification + ;; let make ~name h_on_request h_on_notification io state = let t = @@ -253,34 +227,37 @@ struct } in let session = - let on_request, on_notification = - to_jsonrpc t h_on_request h_on_notification - in + let on_request, on_notification = to_jsonrpc t h_on_request h_on_notification in Session.create ~on_request ~on_notification ~name io state in Fdecl.set t.session session; t + ;; let create_request t req = let id = `Int t.req_id in t.req_id <- t.req_id + 1; Out_request.to_jsonrpc_request req ~id + ;; let receive_response req (resp : Jsonrpc.Response.t) = match resp.result |> Result.map (Out_request.response_of_json req) with | Ok s -> s | Error e -> raise (Jsonrpc.Response.Error.E e) + ;; let request (type r) (t : _ t) (req : r Out_request.t) : r Fiber.t = Fiber.of_thunk (fun () -> - let+ resp = - let req = create_request t req in - Session.request (Fdecl.get t.session) req - in - receive_response req resp) + let+ resp = + let req = create_request t req in + Session.request (Fdecl.get t.session) req + in + receive_response req resp) + ;; - let request_with_cancel (type r) (t : _ t) cancel ~on_cancel - (req : r Out_request.t) : [ `Ok of r | `Cancelled ] Fiber.t = + let request_with_cancel (type r) (t : _ t) cancel ~on_cancel (req : r Out_request.t) + : [ `Ok of r | `Cancelled ] Fiber.t + = let* () = Fiber.return () in let jsonrpc_req = create_request t req in let+ resp, cancel_status = @@ -297,14 +274,16 @@ struct in match cancel_status with | Cancelled () -> `Cancelled - | Not_cancelled -> ( - match resp with - | `Ok resp -> `Ok resp - | `Cancelled -> assert false) + | Not_cancelled -> + (match resp with + | `Ok resp -> `Ok resp + | `Cancelled -> assert false) + ;; let notification (t : _ t) (n : Out_notification.t) : unit Fiber.t = let jsonrpc_request = Out_notification.to_jsonrpc n in Session.notification (Fdecl.get t.session) jsonrpc_request + ;; module Batch = struct type session = E : 'a t -> session @@ -314,12 +293,12 @@ struct ; session : session } - let create session = - { batch = Session.Batch.create (); session = E session } + let create session = { batch = Session.Batch.create (); session = E session } let notification t n = let n = Out_notification.to_jsonrpc n in Session.Batch.notification t.batch n + ;; type 'a response = 'a Lazy_fiber.t @@ -332,12 +311,14 @@ struct Session.Batch.request t.batch req in Lazy_fiber.create (fun () -> - let+ response = Session.Batch.await response in - receive_response req response) + let+ response = Session.Batch.await response in + receive_response req response) + ;; let submit { session = E session; batch } = let t = Fdecl.get session.session in Session.submit t batch + ;; end let initialized t = Fiber.Ivar.read t.initialized @@ -345,6 +326,7 @@ struct let stop t = let+ () = Session.stop (Fdecl.get t.session) in t.state <- Closed + ;; let start_loop t = Fiber.fork_and_join_unit @@ -352,24 +334,25 @@ struct let* () = Session.run (Fdecl.get t.session) in Fiber.Pool.stop t.detached) (fun () -> Fiber.Pool.run t.detached) + ;; let handle_cancel_req t id = let+ () = match Table.find_opt t.pending id with | None -> Fiber.return () - | Some token -> - Fiber.Pool.task t.detached ~f:(fun () -> Fiber.Cancel.fire token) + | Some token -> Fiber.Pool.task t.detached ~f:(fun () -> Fiber.Cancel.fire token) in - (Jsonrpc_fiber.Notify.Continue, state t) + Jsonrpc_fiber.Notify.Continue, state t + ;; let cancel_token () = Fiber.Var.get cancel_token end module Client = struct open Types + include - Make (InitializeResult) (Client_request) (Client_notification) - (Server_request) + Make (InitializeResult) (Client_request) (Client_notification) (Server_request) (Server_notification) let h_on_notification handler t n = @@ -377,79 +360,83 @@ module Client = struct | Server_notification.CancelRequest id -> handle_cancel_req t id | _ -> let+ res = handler.h_on_notification t n in - (Jsonrpc_fiber.Notify.Continue, res) + Jsonrpc_fiber.Notify.Continue, res + ;; let make handler io = let h_on_notification = h_on_notification handler in make ~name:"client" handler.h_on_request h_on_notification io + ;; let request_with_cancel t cancel r = request_with_cancel t cancel r ~on_cancel:(fun id -> - notification t (Client_notification.CancelRequest id)) + notification t (Client_notification.CancelRequest id)) + ;; let start (t : _ t) (p : InitializeParams.t) = Fiber.of_thunk (fun () -> - assert (t.state = Waiting_for_init); - let loop () = start_loop t in - let init () = - let* resp = request t (Client_request.Initialize p) in - Log.log ~section:"client" (fun () -> - let resp = InitializeResult.yojson_of_t resp in - Log.msg "initialized" [ ("resp", resp) ]); - t.state <- Running; - Fiber.Ivar.fill t.initialized resp - in - Fiber.fork_and_join_unit loop init) + assert (t.state = Waiting_for_init); + let loop () = start_loop t in + let init () = + let* resp = request t (Client_request.Initialize p) in + Log.log ~section:"client" (fun () -> + let resp = InitializeResult.yojson_of_t resp in + Log.msg "initialized" [ "resp", resp ]); + t.state <- Running; + Fiber.Ivar.fill t.initialized resp + in + Fiber.fork_and_join_unit loop init) + ;; end module Server = struct open Types + include - Make (InitializeParams) (Server_request) (Server_notification) - (Client_request) + Make (InitializeParams) (Server_request) (Server_notification) (Client_request) (Client_notification) let h_on_notification handler t n = Fiber.of_thunk (fun () -> - match n with - | Client_notification.Exit -> - Log.log ~section:"server" (fun () -> - Log.msg "received exit notification" []); - let* () = stop t in - Fiber.return (Jsonrpc_fiber.Notify.Stop, state t) - | Client_notification.CancelRequest id -> handle_cancel_req t id - | _ -> - if t.state = Waiting_for_init then - let state = state t in - Fiber.return (Jsonrpc_fiber.Notify.Continue, state) - else - let+ state = handler.h_on_notification t n in - (Jsonrpc_fiber.Notify.Continue, state)) + match n with + | Client_notification.Exit -> + Log.log ~section:"server" (fun () -> Log.msg "received exit notification" []); + let* () = stop t in + Fiber.return (Jsonrpc_fiber.Notify.Stop, state t) + | Client_notification.CancelRequest id -> handle_cancel_req t id + | _ -> + if t.state = Waiting_for_init + then ( + let state = state t in + Fiber.return (Jsonrpc_fiber.Notify.Continue, state)) + else + let+ state = handler.h_on_notification t n in + Jsonrpc_fiber.Notify.Continue, state) + ;; let on_request handler t in_r = Fiber.of_thunk (fun () -> - match Client_request.E in_r with - | Client_request.E (Client_request.Initialize i) -> - if t.state = Waiting_for_init then ( - let* result = handler.h_on_request.on_request t in_r in - t.state <- Running; - (* XXX Should we wait for the waiter of initialized to finish? *) - let* () = Fiber.Ivar.fill t.initialized i in - Fiber.return result) - else - let code = Response.Error.Code.InvalidRequest in - let message = "already initialized" in - raise - (Jsonrpc.Response.Error.E - (Jsonrpc.Response.Error.make ~code ~message ())) - | Client_request.E _ -> - if t.state = Waiting_for_init then - let code = Response.Error.Code.ServerNotInitialized in - let message = "not initialized" in - raise - (Jsonrpc.Response.Error.E - (Jsonrpc.Response.Error.make ~code ~message ())) - else handler.h_on_request.on_request t in_r) + match Client_request.E in_r with + | Client_request.E (Client_request.Initialize i) -> + if t.state = Waiting_for_init + then ( + let* result = handler.h_on_request.on_request t in_r in + t.state <- Running; + (* XXX Should we wait for the waiter of initialized to finish? *) + let* () = Fiber.Ivar.fill t.initialized i in + Fiber.return result) + else ( + let code = Response.Error.Code.InvalidRequest in + let message = "already initialized" in + raise (Jsonrpc.Response.Error.E (Jsonrpc.Response.Error.make ~code ~message ()))) + | Client_request.E _ -> + if t.state = Waiting_for_init + then ( + let code = Response.Error.Code.ServerNotInitialized in + let message = "not initialized" in + raise (Jsonrpc.Response.Error.E (Jsonrpc.Response.Error.make ~code ~message ()))) + else handler.h_on_request.on_request t in_r) + ;; let make (type s) (handler : s Handler.t) io (initial_state : s) = let h_on_request : _ Handler.on_request = @@ -457,6 +444,7 @@ module Server = struct in let h_on_notification = h_on_notification handler in make ~name:"server" h_on_request h_on_notification io initial_state + ;; let start t = start_loop t end diff --git a/lsp-fiber/src/rpc.mli b/lsp-fiber/src/rpc.mli index 9eefe2106..71f0ca87b 100644 --- a/lsp-fiber/src/rpc.mli +++ b/lsp-fiber/src/rpc.mli @@ -6,46 +6,36 @@ module Reply : sig type 'resp t val now : 'r -> 'r t - val later : (('r -> unit Fiber.t) -> unit Fiber.t) -> 'r t end module type S = sig type 'a out_request - type out_notification - type 'a in_request - type in_notification - type 'state t module Handler : sig type 'a session := 'a t type 'state on_request = - { on_request : - 'a. 'state session -> 'a in_request -> ('a Reply.t * 'state) Fiber.t + { on_request : 'a. 'state session -> 'a in_request -> ('a Reply.t * 'state) Fiber.t } type 'state t - val make : - ?on_request:'state on_request + val make + : ?on_request:'state on_request -> ?on_notification:('state session -> in_notification -> 'state Fiber.t) -> unit -> 'state t end val state : 'a t -> 'a - val make : 'state Handler.t -> Fiber_io.t -> 'state -> 'state t - val stop : 'state t -> unit Fiber.t - val request : _ t -> 'resp out_request -> 'resp Fiber.t - val notification : _ t -> out_notification -> unit Fiber.t (** only available inside requests *) @@ -53,19 +43,15 @@ module type S = sig module Batch : sig type 'a session := 'a t - type t val create : _ session -> t - val notification : t -> out_notification -> unit type 'a response val await : 'a response -> 'a Fiber.t - val request : t -> 'resp out_request -> 'resp response - val submit : t -> unit Fiber.t end end @@ -75,19 +61,18 @@ module Client : sig include S - with type 'a out_request = 'a Client_request.t - and type out_notification = Client_notification.t - and type 'a in_request = 'a Server_request.t - and type in_notification = Server_notification.t + with type 'a out_request = 'a Client_request.t + and type out_notification = Client_notification.t + and type 'a in_request = 'a Server_request.t + and type in_notification = Server_notification.t - val request_with_cancel : - _ t + val request_with_cancel + : _ t -> Fiber.Cancel.t -> 'resp out_request -> [ `Ok of 'resp | `Cancelled ] Fiber.t val initialized : _ t -> InitializeResult.t Fiber.t - val start : _ t -> InitializeParams.t -> unit Fiber.t end @@ -96,12 +81,11 @@ module Server : sig include S - with type 'a out_request = 'a Server_request.t - and type out_notification = Server_notification.t - and type 'a in_request = 'a Client_request.t - and type in_notification = Client_notification.t + with type 'a out_request = 'a Server_request.t + and type out_notification = Server_notification.t + and type 'a in_request = 'a Client_request.t + and type in_notification = Client_notification.t val initialized : _ t -> InitializeParams.t Fiber.t - val start : _ t -> unit Fiber.t end diff --git a/lsp-fiber/src/server.mli b/lsp-fiber/src/server.mli index ae7840316..383814f76 100644 --- a/lsp-fiber/src/server.mli +++ b/lsp-fiber/src/server.mli @@ -1,3 +1,2 @@ open! Import - include module type of Rpc.Server diff --git a/lsp-fiber/test/lsp_fiber_test.ml b/lsp-fiber/test/lsp_fiber_test.ml index df7effeec..f849e39d8 100644 --- a/lsp-fiber/test/lsp_fiber_test.ml +++ b/lsp-fiber/test/lsp_fiber_test.ml @@ -5,15 +5,21 @@ open Lsp_fiber module Test = struct module Client = struct - let run ?(capabilities = ClientCapabilities.create ()) ?on_request - ?on_notification state (in_, out) = + let run + ?(capabilities = ClientCapabilities.create ()) + ?on_request + ?on_notification + state + (in_, out) + = let initialize = InitializeParams.create ~capabilities () in let client = let stream_io = Lsp_fiber.Fiber_io.make in_ out in let handler = Client.Handler.make ?on_request ?on_notification () in Client.make handler stream_io state in - (client, Client.start client initialize) + client, Client.start client initialize + ;; end module Server = struct @@ -23,7 +29,8 @@ module Test = struct let handler = Server.Handler.make ?on_request ?on_notification () in Server.make handler stream_io state in - (server, Server.start server) + server, Server.start server + ;; end end @@ -41,16 +48,15 @@ let test make_client make_server = in Lev_fiber.run run |> Lev_fiber.Error.ok_exn; print_endline "[TEST] finished" +;; let json_pp = Yojson.Safe.pretty_print ~std:false module End_to_end_client = struct let on_request (type a) _ (_ : a Server_request.t) = Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~message:"not implemented" - ~code:InternalError - ()) + (Jsonrpc.Response.Error.make ~message:"not implemented" ~code:InternalError ()) + ;; let on_notification (client : _ Client.t) n = let state = Client.state client in @@ -63,6 +69,7 @@ module End_to_end_client = struct let+ () = Fiber.Ivar.fill received_notification () in Format.eprintf "client: filled received_notification@.%!"; state + ;; let run io = let detached = Fiber.Pool.create () in @@ -78,13 +85,11 @@ module End_to_end_client = struct let cancel = Fiber.Cancel.create () in let* () = Fiber.Pool.task detached ~f:(fun () -> - Format.eprintf - "client: waiting to receive notification before cancelling the \ - request@.%!"; - let* () = Fiber.Ivar.read received_notification in - Format.eprintf - "client: received notification, cancelling the request@.%!"; - Fiber.Cancel.fire cancel) + Format.eprintf + "client: waiting to receive notification before cancelling the request@.%!"; + let* () = Fiber.Ivar.read received_notification in + Format.eprintf "client: received notification, cancelling the request@.%!"; + Fiber.Cancel.fire cancel) in let* res_cancel = let req_cancel = @@ -102,8 +107,8 @@ module End_to_end_client = struct Client.request client req_reply in (match res_cancel with - | `Cancelled -> Format.eprintf "client: req_cancel got cancelled@.%!" - | `Ok _ -> assert false); + | `Cancelled -> Format.eprintf "client: req_cancel got cancelled@.%!" + | `Ok _ -> assert false); Format.eprintf "client: Successfully executed req_reply with result:@.%a@." json_pp @@ -113,9 +118,8 @@ module End_to_end_client = struct Client.notification client Exit in Fiber.fork_and_join_unit init (fun () -> - Fiber.fork_and_join_unit - (fun () -> running) - (fun () -> Fiber.Pool.run detached)) + Fiber.fork_and_join_unit (fun () -> running) (fun () -> Fiber.Pool.run detached)) + ;; end module End_to_end_server = struct @@ -124,8 +128,7 @@ module End_to_end_server = struct | Initialized let on_request = - let on_request (type a) self (req : a Client_request.t) : - (a Rpc.Reply.t * _) Fiber.t = + let on_request (type a) self (req : a Client_request.t) : (a Rpc.Reply.t * _) Fiber.t = let state = Server.state self in let _status, detached = state in match req with @@ -135,61 +138,58 @@ module End_to_end_server = struct Format.eprintf "server: initializing server@."; Format.eprintf "server: returning initialization result@.%!"; Fiber.return (Rpc.Reply.now result, (Initialized, detached)) - | Client_request.ExecuteCommand { command; _ } -> ( + | Client_request.ExecuteCommand { command; _ } -> Format.eprintf "server: received command %s@.%!" command; let* () = match command with | "cmd_cancel" -> Fiber.Pool.task detached ~f:(fun () -> - Format.eprintf - "server: sending message notification to client@.%!"; - let msg = - ShowMessageParams.create - ~type_:MessageType.Info - ~message:"notifying client" - in - Server.notification self (Server_notification.ShowMessage msg)) + Format.eprintf "server: sending message notification to client@.%!"; + let msg = + ShowMessageParams.create + ~type_:MessageType.Info + ~message:"notifying client" + in + Server.notification self (Server_notification.ShowMessage msg)) | _ -> Fiber.return () in let* () = Fiber.Pool.stop detached in let result = `String "successful execution" in let* cancel = Rpc.Server.cancel_token () in - match command with - | "cmd_cancel" -> - let+ () = Lev_fiber.Timer.sleepf 0.2 in - ( Rpc.Reply.later (fun k -> - let* cancel = Rpc.Server.cancel_token () in - (* Make sure that we can access the cancel token in a Reply - response *) - assert (Option.is_some cancel); - k result) - , state ) - | _ -> - (* Make sure that we can access the cancel token in a Now response *) - assert (Option.is_some cancel); - Fiber.return (Rpc.Reply.now result, state)) + (match command with + | "cmd_cancel" -> + let+ () = Lev_fiber.Timer.sleepf 0.2 in + ( Rpc.Reply.later (fun k -> + let* cancel = Rpc.Server.cancel_token () in + (* Make sure that we can access the cancel token in a Reply + response *) + assert (Option.is_some cancel); + k result) + , state ) + | _ -> + (* Make sure that we can access the cancel token in a Now response *) + assert (Option.is_some cancel); + Fiber.return (Rpc.Reply.now result, state)) | _ -> Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:InternalError - ~message:"not supported" - ()) + (Jsonrpc.Response.Error.make ~code:InternalError ~message:"not supported" ()) in { Server.Handler.on_request } + ;; let on_notification self _ = let state = Server.state self in Format.eprintf "server: Received notification@.%!"; Fiber.return state + ;; let run io = let detached = Fiber.Pool.create () in let _server, running = Test.Server.run ~on_request ~on_notification (Started, detached) io in - Fiber.fork_and_join_unit - (fun () -> running) - (fun () -> Fiber.Pool.run detached) + Fiber.fork_and_join_unit (fun () -> running) (fun () -> Fiber.Pool.run detached) + ;; end let%expect_test "end to end run of lsp tests" = @@ -220,3 +220,4 @@ let%expect_test "end to end run of lsp tests" = client: sending request to shutdown Successful termination of test [TEST] finished |}] +;; diff --git a/lsp/bin/cinaps.ml b/lsp/bin/cinaps.ml index 999ccb3bc..81073a695 100644 --- a/lsp/bin/cinaps.ml +++ b/lsp/bin/cinaps.ml @@ -7,38 +7,39 @@ let preprocess_metamodel = method! or_ path (types : Metamodel.type_ list) = match List.filter_map types ~f:(function - | Literal (Record []) -> None - | _ as t -> Some (self#type_ path t)) + | Literal (Record []) -> None + | _ as t -> Some (self#type_ path t)) with | [] -> assert false | [ t ] -> t - | [ Metamodel.Literal (Record f1); Literal (Record f2) ] as ts -> ( - match path with - | Top (Alias s) when s.name = "TextDocumentContentChangeEvent" -> - let t = - let union_fields l1 l2 ~f = - let of_map = - String.Map.of_list_map_exn ~f:(fun (x : Metamodel.property) -> - (x.name, x)) - in - String.Map.merge (of_map l1) (of_map l2) ~f |> String.Map.values - in - union_fields f1 f2 ~f:(fun k t1 t2 -> - if k = "text" then t1 - else if k = "range" then - match (t1, t2) with - | None, Some s | Some s, None -> - assert (not s.optional); - Some { s with optional = true } - | None, None | Some _, Some _ -> assert false - else - match (t1, t2) with - | None, None -> assert false - | Some s, None | None, Some s -> Some s - | Some _, Some _ -> assert false) - in - self#type_ path (Metamodel.Literal (Record t)) - | _ -> super#or_ path ts) + | [ Metamodel.Literal (Record f1); Literal (Record f2) ] as ts -> + (match path with + | Top (Alias s) when s.name = "TextDocumentContentChangeEvent" -> + let t = + let union_fields l1 l2 ~f = + let of_map = + String.Map.of_list_map_exn ~f:(fun (x : Metamodel.property) -> x.name, x) + in + String.Map.merge (of_map l1) (of_map l2) ~f |> String.Map.values + in + union_fields f1 f2 ~f:(fun k t1 t2 -> + if k = "text" + then t1 + else if k = "range" + then ( + match t1, t2 with + | None, Some s | Some s, None -> + assert (not s.optional); + Some { s with optional = true } + | None, None | Some _, Some _ -> assert false) + else ( + match t1, t2 with + | None, None -> assert false + | Some s, None | None, Some s -> Some s + | Some _, Some _ -> assert false)) + in + self#type_ path (Metamodel.Literal (Record t)) + | _ -> super#or_ path ts) | ts -> super#or_ path ts method! property path (p : Metamodel.property) = @@ -52,11 +53,10 @@ let preprocess_metamodel = when p.name = "trace" && (s.name = "_InitializeParams" || s.name = "InitializeParams") -> update_type (Reference "TraceValues") - | Top (Structure s) when p.name = "location" && s.name = "WorkspaceSymbol" - -> ( - match p.type_ with - | Or [ type_; _ ] -> update_type type_ - | _ -> assert false) + | Top (Structure s) when p.name = "location" && s.name = "WorkspaceSymbol" -> + (match p.type_ with + | Or [ type_; _ ] -> update_type type_ + | _ -> assert false) | _ -> super#property path p method! enumeration m = @@ -75,43 +75,44 @@ let preprocess_metamodel = in { m with values }) end +;; let expand_superclasses db (m : Metamodel.t) = let structures = let uniquify_fields fields = - List.fold_left - fields - ~init:String.Map.empty - ~f:(fun acc (f : Metamodel.property) -> String.Map.set acc f.name f) + List.fold_left fields ~init:String.Map.empty ~f:(fun acc (f : Metamodel.property) -> + String.Map.set acc f.name f) |> String.Map.values in let rec fields_of_type (t : Metamodel.type_) = match t with - | Reference s -> ( - match Metamodel.Entity.DB.find db s with - | Structure s -> fields_of_structure s - | Enumeration _ -> assert false - | Alias a -> fields_of_type a.type_) + | Reference s -> + (match Metamodel.Entity.DB.find db s with + | Structure s -> fields_of_structure s + | Enumeration _ -> assert false + | Alias a -> fields_of_type a.type_) | _ -> assert false and fields_of_structure (s : Metamodel.structure) = - let fields = - List.map (s.extends @ s.mixins) ~f:fields_of_type @ [ s.properties ] - in + let fields = List.map (s.extends @ s.mixins) ~f:fields_of_type @ [ s.properties ] in List.concat fields in List.map m.structures ~f:(fun s -> - let properties = fields_of_structure s |> uniquify_fields in - { s with properties }) + let properties = fields_of_structure s |> uniquify_fields in + { s with properties }) in { m with structures } +;; let ocaml = lazy - (Metamodel_lsp.t () |> preprocess_metamodel#t - |> (fun metamodel -> - let db = Metamodel.Entity.DB.create metamodel in - expand_superclasses db metamodel) - |> Typescript.of_metamodel |> Ocaml.of_typescript) + (Metamodel_lsp.t () + |> preprocess_metamodel#t + |> (fun metamodel -> + let db = Metamodel.Entity.DB.create metamodel in + expand_superclasses db metamodel) + |> Typescript.of_metamodel + |> Ocaml.of_typescript) +;; module Output = struct open Ocaml @@ -128,6 +129,7 @@ module Output = struct match t.kind with | Intf -> (m.intf.name :> string) | Impl -> (m.impl.name :> string) + ;; let _skip (t : t) name = match t.modules with @@ -136,37 +138,41 @@ module Output = struct let name' = module_name t m in assert (String.equal name name'); t.modules <- modules + ;; let pp_file pp ch = let fmt = Format.formatter_of_out_channel ch in Pp.to_fmt fmt pp; Format.pp_print_flush fmt () + ;; let write t cmd = let to_write, modules = match cmd with - | `Finish -> (t.modules, []) + | `Finish -> t.modules, [] | `Until m -> let rec loop xs acc = match xs with - | [] -> (List.rev acc, []) + | [] -> List.rev acc, [] | x :: xs -> - if module_name t x = m then (List.rev acc, x :: xs) - else loop xs (x :: acc) + if module_name t x = m then List.rev acc, x :: xs else loop xs (x :: acc) in loop t.modules [] in t.modules <- modules; List.iter to_write ~f:(fun m -> - let pp = Module.pp m in - let pp = Ml.Kind.Map.get pp t.kind in - pp_file pp t.out) + let pp = Module.pp m in + let pp = Ml.Kind.Map.get pp t.kind in + pp_file pp t.out) + ;; end let print_ml () = let output = Output.create (Lazy.force ocaml) Ml.Kind.Impl stdout in Output.write output `Finish +;; let print_mli () = let output = Output.create (Lazy.force ocaml) Ml.Kind.Intf stdout in Output.write output `Finish +;; diff --git a/lsp/bin/cinaps.mli b/lsp/bin/cinaps.mli index a6185fded..6d5c4bc36 100644 --- a/lsp/bin/cinaps.mli +++ b/lsp/bin/cinaps.mli @@ -1,3 +1,2 @@ val print_ml : unit -> unit - val print_mli : unit -> unit diff --git a/lsp/bin/lsp_gen.ml b/lsp/bin/lsp_gen.ml index f20ead0c2..61bc5b654 100644 --- a/lsp/bin/lsp_gen.ml +++ b/lsp/bin/lsp_gen.ml @@ -4,5 +4,4 @@ module Cinaps = Cinaps module Metamodel = Metamodel let print_ml = Cinaps.print_ml - let print_mli = Cinaps.print_mli diff --git a/lsp/bin/metamodel/metamodel.ml b/lsp/bin/metamodel/metamodel.ml index 2103730d6..d9be957da 100644 --- a/lsp/bin/metamodel/metamodel.ml +++ b/lsp/bin/metamodel/metamodel.ml @@ -105,71 +105,78 @@ type t = ; typeAliases : typeAlias list } -let error msg json = - failwith (msg ^ "\n" ^ Yojson.Safe.pretty_to_string ~std:false json) +let error msg json = failwith (msg ^ "\n" ^ Yojson.Safe.pretty_to_string ~std:false json) let fields = function | `Assoc xs -> xs | xs -> error "expected fields" xs +;; let field ?default (name : string) p fields = match List.assoc fields name with | Some f -> p f - | None -> ( - match default with - | None -> error ("field not found " ^ name) (`Assoc fields) - | Some x -> x) + | None -> + (match default with + | None -> error ("field not found " ^ name) (`Assoc fields) + | Some x -> x) +;; let field_o name p fields = match List.assoc fields name with | None -> None | Some f -> Some (p f) +;; let bool = function | `Bool b -> b | json -> error "boolean expected" json +;; -let literal lit json = - if not (Poly.equal json lit) then error "unexpected literal" json +let literal lit json = if not (Poly.equal json lit) then error "unexpected literal" json let enum variants json = match json with - | `String s -> ( - match List.assoc variants s with - | None -> error "not a valid enum value" json - | Some v -> v) + | `String s -> + (match List.assoc variants s with + | None -> error "not a valid enum value" json + | Some v -> v) | _ -> error "not a valid enum value" json +;; let string = function | `String s -> s | json -> error "expected string" json +;; let string_or_number = function | `String s -> `String s | `Int i -> `Int i | json -> error "expected string or number" json +;; let name fields = field "name" string fields let list conv = function | `List xs -> List.map xs ~f:conv | json -> error "expected list" json +;; let baseType json : baseType = match json with - | `String s -> ( - match s with - | "URI" | "Uri" -> Uri - | "DocumentUri" -> DocumentUri - | "integer" -> Integer - | "uinteger" -> Uinteger - | "decimal" -> Decimal - | "RegExp" -> RegExp - | "string" -> String - | "boolean" -> Boolean - | "null" -> Null - | _ -> error "unknown base type" json) + | `String s -> + (match s with + | "URI" | "Uri" -> Uri + | "DocumentUri" -> DocumentUri + | "integer" -> Integer + | "uinteger" -> Uinteger + | "decimal" -> Decimal + | "RegExp" -> RegExp + | "string" -> String + | "boolean" -> Boolean + | "null" -> Null + | _ -> error "unknown base type" json) | _ -> error "unknown base type" json +;; let mapKeyType json : mapKeyType = let fields = fields json in @@ -180,19 +187,21 @@ let mapKeyType json : mapKeyType = field "name" (enum - [ ("Uri", Uri) - ; ("URI", Uri) - ; ("DocumentUri", DocumentUri) - ; ("string", String) - ; ("integer", Integer) + [ "Uri", Uri + ; "URI", Uri + ; "DocumentUri", DocumentUri + ; "string", String + ; "integer", Integer ]) fields | kind -> error ("invalid kind for map key type: " ^ kind) json +;; let doc fields = let since = field_o "since" string fields in let documentation = field_o "documentation" string fields in { since; documentation } +;; let rec type_ json = let fields_conv = fields in @@ -234,8 +243,7 @@ let rec type_ json = Literal (Record fields) | kind -> error "unrecognized kind" (`String kind) -and properties fields : property list = - field "properties" (list property) fields +and properties fields : property list = field "properties" (list property) fields and property json : property = let fields = fields json in @@ -251,6 +259,7 @@ let params = function | `List l -> `Params (List.map l ~f:type_) | `Assoc _ as json -> `Param (type_ json) | json -> error "list or object expected" json +;; let call fields = let method_ = field "method" string fields in @@ -258,11 +267,13 @@ let call fields = let doc = doc fields in let registrationOptions = field_o "registrationOptions" type_ fields in { registrationOptions; doc; method_; params } +;; let notification json = let fields = fields json in let call = call fields in { call } +;; let request json = let fields = fields json in @@ -271,6 +282,7 @@ let request json = let partialResult = field_o "partialResult" type_ fields in let result = field "result" type_ fields in { call; errorData; partialResult; result } +;; let enumerationEntry json : enumerationEntry = let fields = fields json in @@ -278,6 +290,7 @@ let enumerationEntry json : enumerationEntry = let doc = doc fields in let value = field "value" string_or_number fields in { name; value; doc } +;; let enumerationType json = let fields = fields json in @@ -285,11 +298,11 @@ let enumerationType json = let name = field "name" - (enum - [ ("integer", `Integer); ("string", `String); ("uinteger", `Uinteger) ]) + (enum [ "integer", `Integer; "string", `String; "uinteger", `Uinteger ]) fields in { name } +;; let enumeration json = let fields = fields json in @@ -297,10 +310,9 @@ let enumeration json = let doc = doc fields in let values = field "values" (list enumerationEntry) fields in let type_ = field "type" enumerationType fields in - let supportsCustomValues = - field ~default:false "supportsCustomValues" bool fields - in + let supportsCustomValues = field ~default:false "supportsCustomValues" bool fields in { supportsCustomValues; type_; values; name; doc } +;; let structure json = let fields = fields json in @@ -310,6 +322,7 @@ let structure json = let mixins = field ~default:[] "mixins" (list type_) fields in let properties = properties fields in { doc; name; extends; mixins; properties } +;; let typeAlias json : typeAlias = let fields = fields json in @@ -317,6 +330,7 @@ let typeAlias json : typeAlias = let type_ = type_field fields in let doc = doc fields in { doc; name; type_ } +;; let t json = let fields = fields json in @@ -326,6 +340,7 @@ let t json = let enumerations = field "enumerations" (list enumeration) fields in let typeAliases = field "typeAliases" (list typeAlias) fields in { requests; notifications; structures; enumerations; typeAliases } +;; type metamodel = t @@ -339,26 +354,21 @@ module Entity = struct type nonrec t = t String.Map.t let create - ({ structures - ; requests = _ - ; notifications = _ - ; enumerations - ; typeAliases - } : - metamodel) : t = + ({ structures; requests = _; notifications = _; enumerations; typeAliases } : + metamodel) + : t + = let structures = - String.Map.of_list_map_exn structures ~f:(fun s -> - (s.name, Structure s)) + String.Map.of_list_map_exn structures ~f:(fun s -> s.name, Structure s) in let enumerations = - String.Map.of_list_map_exn enumerations ~f:(fun s -> - (s.name, Enumeration s)) + String.Map.of_list_map_exn enumerations ~f:(fun s -> s.name, Enumeration s) in let typeAliases = - String.Map.of_list_map_exn typeAliases ~f:(fun a -> (a.name, Alias a)) + String.Map.of_list_map_exn typeAliases ~f:(fun a -> a.name, Alias a) in - String.Map.union_exn structures enumerations - |> String.Map.union_exn typeAliases + String.Map.union_exn structures enumerations |> String.Map.union_exn typeAliases + ;; let find t x = String.Map.find_exn t x end @@ -410,9 +420,7 @@ class map = in Option.map ~f:params c.params in - let registrationOptions = - Option.map ~f:(self#type_ path) c.registrationOptions - in + let registrationOptions = Option.map ~f:(self#type_ path) c.registrationOptions in { c with params; registrationOptions } method request (r : request) = @@ -440,8 +448,7 @@ class map = method enumeration (e : enumeration) : enumeration = e - method t { requests; notifications; structures; enumerations; typeAliases } - = + method t { requests; notifications; structures; enumerations; typeAliases } = let requests = List.map requests ~f:self#request in let notifications = List.map notifications ~f:self#notification in let structures = List.map structures ~f:self#structure in diff --git a/lsp/bin/metamodel/metamodel.mli b/lsp/bin/metamodel/metamodel.mli index 133947f88..a53c768e8 100644 --- a/lsp/bin/metamodel/metamodel.mli +++ b/lsp/bin/metamodel/metamodel.mli @@ -115,11 +115,9 @@ module Entity : sig module DB : sig type entity := t - type t val create : metamodel -> t - val find : t -> string -> entity end end @@ -139,22 +137,13 @@ end class map : object method literal : Path.t -> literalType -> literalType - method property : Path.t -> property -> property - method or_ : Path.t -> type_ list -> type_ - method type_ : Path.t -> type_ -> type_ - method t : t -> t - method request : request -> request - method structure : structure -> structure - method notification : notification -> notification - method typeAlias : typeAlias -> typeAlias - method enumeration : enumeration -> enumeration end diff --git a/lsp/bin/named.ml b/lsp/bin/named.ml index 9ac83aa8c..5f7a75876 100644 --- a/lsp/bin/named.ml +++ b/lsp/bin/named.ml @@ -4,15 +4,12 @@ type 'a t = } let make ~name data = { name; data } - let data t = t.data - let name t = t.name - let map t ~f = { t with data = f t.data } - let set_data t data = { t with data } let to_dyn f { name; data } = let open Dyn in - record [ ("name", String name); ("data", f data) ] + record [ "name", String name; "data", f data ] +;; diff --git a/lsp/bin/ocaml/json_gen.ml b/lsp/bin/ocaml/json_gen.ml index 92fac3778..44af31da8 100644 --- a/lsp/bin/ocaml/json_gen.ml +++ b/lsp/bin/ocaml/json_gen.ml @@ -7,21 +7,23 @@ let pat_of_literal (t : Ts_types.Literal.t) : Expr.pat = let open Expr in let tag, args = match t with - | Ts_types.Literal.String s -> ("String", Pat (Expr.String s)) - | Int i -> ("Int", Pat (Expr.Int i)) + | Ts_types.Literal.String s -> "String", Pat (Expr.String s) + | Int i -> "Int", Pat (Expr.Int i) | Float _ -> assert false in Pat (Constr { poly = true; tag; args = [ args ] }) +;; let constr_of_literal (t : Ts_types.Literal.t) : Expr.t = let open Expr in let tag, args = match t with - | Ts_types.Literal.String s -> ("String", Create (Expr.String s)) - | Int i -> ("Int", Create (Expr.Int i)) + | Ts_types.Literal.String s -> "String", Create (Expr.String s) + | Int i -> "Int", Create (Expr.Int i) | Float _ -> assert false in Create (Constr { poly = true; tag; args = [ args ] }) +;; let json_error_pat msg = let open Expr in @@ -29,43 +31,48 @@ let json_error_pat msg = , App ( Create (Ident "Json.error") , [ Unnamed (Create (String msg)); Unnamed (Create (Ident "json")) ] ) ) +;; let is_json_constr (constr : Type.constr) = List.mem [ "String"; "Int"; "Bool" ] constr.name ~equal:String.equal +;; module Name = struct let of_ = sprintf "%s_of_yojson" - let to_ = sprintf "yojson_of_%s" let conv = function | `To -> to_ | `Of -> of_ + ;; end open Arg let of_json ~name expr = - let pat = [ (Unnamed "json", Type.json) ] in + let pat = [ Unnamed "json", Type.json ] in let data = { Expr.pat; type_ = Type.name name; body = expr } in let name = Name.of_ name in { Named.name; data } +;; let to_json ~name expr = - let pat = [ (Unnamed name, Type.name name) ] in + let pat = [ Unnamed name, Type.name name ] in let data = { Expr.pat; type_ = Type.json; body = expr } in let name = Name.to_ name in { Named.name; data } +;; let add_json_conv_for_t (sig_ : Module.sig_ Module.t) = let conv_t = { Named.name = "t" ; data = (let t = Type.Path (Path.Ident "t") in - Module.Include (Module.Name.of_string "Json.Jsonable.S", [ (t, t) ])) + Module.Include (Module.Name.of_string "Json.Jsonable.S", [ t, t ])) } in { sig_ with bindings = sig_.bindings @ [ conv_t ] } +;; module Enum = struct let of_json ~allow_other ~poly { Named.name; data = constrs } = @@ -73,59 +80,60 @@ module Enum = struct let body = let clauses = List.map constrs ~f:(fun (constr, literal) -> - let pat = pat_of_literal literal in - let tag = constr in - (pat, Create (Constr { tag; poly; args = [] }))) + let pat = pat_of_literal literal in + let tag = constr in + pat, Create (Constr { tag; poly; args = [] })) in let clauses = - if allow_other then + if allow_other + then ( let s = Ident "s" in - let pat = - Pat (Constr { tag = "String"; poly = true; args = [ Pat s ] }) - in - let make = - Create (Constr { tag = "Other"; poly; args = [ Create s ] }) - in - clauses @ [ (pat, make) ] + let pat = Pat (Constr { tag = "String"; poly = true; args = [ Pat s ] }) in + let make = Create (Constr { tag = "Other"; poly; args = [ Create s ] }) in + clauses @ [ pat, make ]) else clauses in let msg = sprintf "Invalid value. Expected one of: %s" (List.map constrs ~f:(fun (_, literal) -> - Ts_types.Literal.to_maybe_quoted_string literal) - |> String.concat ~sep:", ") + Ts_types.Literal.to_maybe_quoted_string literal) + |> String.concat ~sep:", ") in Match (Create (Ident "json"), clauses @ [ json_error_pat msg ]) in of_json ~name body + ;; let to_json ~allow_other ~poly { Named.name; data = constrs } = let open Ml.Expr in let body = let clauses = List.map constrs ~f:(fun (constr, literal) -> - let pat = Pat (Constr { tag = constr; poly; args = [] }) in - (pat, constr_of_literal literal)) + let pat = Pat (Constr { tag = constr; poly; args = [] }) in + pat, constr_of_literal literal) in let clauses = - if allow_other then + if allow_other + then ( let s = Ident "s" in let pat = Pat (Constr { tag = "Other"; poly; args = [ Pat s ] }) in let make = Create (Constr { tag = "String"; poly = true; args = [ Create s ] }) in - clauses @ [ (pat, make) ] + clauses @ [ pat, make ]) else clauses in Match (Create (Ident name), clauses) in to_json ~name body + ;; let conv ~allow_other ~poly t = let to_json = to_json ~allow_other ~poly t in let of_json = of_json ~allow_other ~poly t in [ to_json; of_json ] + ;; end module Poly_variant = struct @@ -137,9 +145,10 @@ module Poly_variant = struct let split_clauses constrs = let json_constrs, untagged_constrs = List.partition_map constrs ~f:(fun x -> - if is_json_constr x then Left x else Right x) + if is_json_constr x then Left x else Right x) in { json_constrs; untagged_constrs } + ;; let conv_of_constr target (utc : Ml.Type.constr) = let rec conv (p : Ml.Path.t) : Ml.Path.t = @@ -168,15 +177,17 @@ module Poly_variant = struct | [ List (Path p) ] -> App (Create (json_mod "list"), [ Unnamed (conv p) ]) | [ Tuple [ Prim Int; Prim Int ] ] -> Create (json_mod "int_pair") | [] -> assert false - | _ -> Code_error.raise "untagged" [ ("utc", Ml.Type.dyn_of_constr utc) ] + | _ -> Code_error.raise "untagged" [ "utc", Ml.Type.dyn_of_constr utc ] + ;; let json_clauses json_constrs = List.map json_constrs ~f:(fun (c : Ml.Type.constr) -> - let open Ml.Expr in - let constr arg = Constr { tag = c.name; poly = true; args = [ arg ] } in - let pat = Pat (constr (Pat (Ident "j"))) in - let expr : t = Create (constr (Create (Ident "j"))) in - (pat, expr)) + let open Ml.Expr in + let constr arg = Constr { tag = c.name; poly = true; args = [ arg ] } in + let pat = Pat (constr (Pat (Ident "j"))) in + let expr : t = Create (constr (Create (Ident "j"))) in + pat, expr) + ;; let to_json { Named.name; data = constrs } = let { json_constrs; untagged_constrs } = split_clauses constrs in @@ -184,17 +195,14 @@ module Poly_variant = struct let json_clauses = json_clauses json_constrs in let untagged_clauses = List.map untagged_constrs ~f:(fun (utc : Ml.Type.constr) -> - let constr arg = - Constr { tag = utc.name; poly = true; args = [ arg ] } - in - let pat = Pat (constr (Pat (Ident "s"))) in - let expr = - App (conv_of_constr `To utc, [ Unnamed (Create (Ident "s")) ]) - in - (pat, expr)) + let constr arg = Constr { tag = utc.name; poly = true; args = [ arg ] } in + let pat = Pat (constr (Pat (Ident "s"))) in + let expr = App (conv_of_constr `To utc, [ Unnamed (Create (Ident "s")) ]) in + pat, expr) in let expr = Match (Create (Ident name), json_clauses @ untagged_clauses) in to_json ~name expr + ;; let of_json { Named.name; data = constrs } = let { json_constrs; untagged_constrs } = split_clauses constrs in @@ -204,15 +212,13 @@ module Poly_variant = struct let args = let constrs = List.map untagged_constrs ~f:(fun (utc : Ml.Type.constr) -> - let create = - let of_json = - App - (conv_of_constr `Of utc, [ Unnamed (Create (Ident "json")) ]) - in - Create - (Constr { tag = utc.name; poly = true; args = [ of_json ] }) + let create = + let of_json = + App (conv_of_constr `Of utc, [ Unnamed (Create (Ident "json")) ]) in - Fun ([ Unnamed (Pat (Ident "json")) ], create)) + Create (Constr { tag = utc.name; poly = true; args = [ of_json ] }) + in + Fun ([ Unnamed (Pat (Ident "json")) ], create)) in Create (List constrs) in @@ -224,14 +230,14 @@ module Poly_variant = struct ] ) in let expr = - match (json_constrs, untagged_constrs) with + match json_constrs, untagged_constrs with | [], [] -> assert false | [], _ -> untagged | _, [] -> Match (Create (Ident "json"), clauses @ [ json_error_pat name ]) - | _ :: _, _ :: _ -> - Match (Create (Ident "json"), clauses @ [ (Wildcard, untagged) ]) + | _ :: _, _ :: _ -> Match (Create (Ident "json"), clauses @ [ Wildcard, untagged ]) in of_json ~name expr + ;; end (* [name] is used as the pattern in the "to" converter. In the "of" converter, @@ -264,3 +270,4 @@ let make_literal_wrapper_conv ~field_name ~literal_value ~type_name = in [ to_json ~name:type_name to_; of_json ~name:type_name of_ ] |> List.map ~f:(Named.map ~f:(fun v -> Ml.Module.Value v)) +;; diff --git a/lsp/bin/ocaml/json_gen.mli b/lsp/bin/ocaml/json_gen.mli index c00286dae..1af2d63ff 100644 --- a/lsp/bin/ocaml/json_gen.mli +++ b/lsp/bin/ocaml/json_gen.mli @@ -1,11 +1,9 @@ val json_t : Ml.Type.t - -val add_json_conv_for_t : - Ml.Module.sig_ Ml.Module.t -> Ml.Module.sig_ Ml.Module.t +val add_json_conv_for_t : Ml.Module.sig_ Ml.Module.t -> Ml.Module.sig_ Ml.Module.t module Enum : sig - val conv : - allow_other:bool + val conv + : allow_other:bool -> poly:bool -> (string * Ts_types.Literal.t) list Named.t -> Ml.Expr.toplevel Named.t list @@ -13,12 +11,11 @@ end module Poly_variant : sig val of_json : Ml.Type.constr list Named.t -> Ml.Expr.toplevel Named.t - val to_json : Ml.Type.constr list Named.t -> Ml.Expr.toplevel Named.t end -val make_literal_wrapper_conv : - field_name:string +val make_literal_wrapper_conv + : field_name:string -> literal_value:string -> type_name:string -> Ml.Module.impl Named.t list diff --git a/lsp/bin/ocaml/ml.ml b/lsp/bin/ocaml/ml.ml index 9144a8ba2..4973e02e2 100644 --- a/lsp/bin/ocaml/ml.ml +++ b/lsp/bin/ocaml/ml.ml @@ -16,23 +16,27 @@ module Kind = struct let get { intf; impl } = function | Impl -> impl | Intf -> intf + ;; let make_both a = { intf = a; impl = a } let iter { intf; impl } ~f = f intf; f impl + ;; let map { intf; impl } ~f = { intf = f intf; impl = f impl } let both (type a b) (x : a t) (y : b t) : (a * b) t = - { intf = (x.intf, y.intf); impl = (x.impl, y.impl) } + { intf = x.intf, y.intf; impl = x.impl, y.impl } + ;; end end let is_kw = function | "type" | "method" | "end" | "to" | "external" -> true | _ -> false +;; module Arg = struct type 'e t = @@ -46,6 +50,7 @@ module Arg = struct | Unnamed a -> Dyn.variant "Unnamed" [ f a ] | Labeled (s, a) -> Dyn.variant "Labeled" [ string s; f a ] | Optional (s, a) -> Dyn.variant "Optional" [ string s; f a ] + ;; end module Path = struct @@ -58,11 +63,13 @@ module Path = struct | Ident s -> s | Dot (t, s) -> to_string t ^ "." ^ s | Apply (f, x) -> to_string f ^ "(" ^ to_string x ^ ")" + ;; let rec pp = function | Ident s -> Pp.verbatim s | Dot (s, p) -> Pp.concat [ pp s; Pp.verbatim "."; Pp.verbatim p ] | Apply (s, p) -> Pp.concat [ pp s; W.surround `Paren (pp p) ] + ;; end module Type = struct @@ -81,6 +88,7 @@ module Type = struct | String -> variant "String" [] | Int -> variant "Int" [] | Bool -> variant "Bool" [] + ;; type t = | Path of Path.t @@ -120,15 +128,16 @@ module Type = struct | Fun (arg, t) -> variant "Fun" [ Arg.to_dyn to_dyn arg; to_dyn t ] and dyn_of_constr { name; args } = - Dyn.(record [ ("name", string name); ("args", (list to_dyn) args) ]) + Dyn.(record [ "name", string name; "args", (list to_dyn) args ]) and dyn_of_field { name; typ; attrs } = let open Dyn in record - [ ("name", string name) - ; ("typ", to_dyn typ) - ; ("attrs", list (pair string (list string)) attrs) + [ "name", string name + ; "typ", to_dyn typ + ; "attrs", list (pair string (list string)) attrs ] + ;; type decl = | Alias of t @@ -141,46 +150,42 @@ module Type = struct | Alias a -> variant "Alias" [ to_dyn a ] | Record fs -> variant "Record" (List.map ~f:dyn_of_field fs) | Variant cs -> variant "Variant" (List.map ~f:dyn_of_constr cs) + ;; class virtual ['env, 'm] mapreduce = object (self : 'self) method virtual empty : 'm - method virtual plus : 'm -> 'm -> 'm method poly_variant env constrs = let r, s = self#fold_left_map constrs ~f:(fun c -> self#constr env c) in - (Poly_variant r, s) + Poly_variant r, s method tuple (env : 'env) t = - let (r : t list), s = - self#fold_left_map t ~f:(fun (t : t) -> self#t env t) - in - (Tuple r, s) - - method path _ p = (Path p, self#empty) - - method var _ n = (Var n, self#empty) + let (r : t list), s = self#fold_left_map t ~f:(fun (t : t) -> self#t env t) in + Tuple r, s - method prim _ p = (Prim p, self#empty) + method path _ p = Path p, self#empty + method var _ n = Var n, self#empty + method prim _ p = Prim p, self#empty method optional env p = let t, s = self#t env p in - (Optional t, s) + Optional t, s method list env t = let t, s = self#t env t in - (List t, s) + List t, s method assoc env k v = let k, s1 = self#t env k in let v, s2 = self#t env v in - (Assoc (k, v), self#plus s1 s2) + Assoc (k, v), self#plus s1 s2 method app env f xs = let f, s1 = self#t env f in let xs, s2 = self#fold_left_map xs ~f:(fun x -> self#t env x) in - (App (f, xs), self#plus s1 s2) + App (f, xs), self#plus s1 s2 method t env this = match (this : t) with @@ -197,35 +202,32 @@ module Type = struct method alias env t = let r0, s0 = self#t env t in - (Alias r0, s0) + Alias r0, s0 method constr env (constr : constr) = - let args, s = - self#fold_left_map constr.args ~f:(fun t -> self#t env t) - in - ({ constr with args }, s) + let args, s = self#fold_left_map constr.args ~f:(fun t -> self#t env t) in + { constr with args }, s - method private fold_left_map - : 'a. f:('a -> 'a * 'm) -> 'a list -> 'a list * 'm = + method private fold_left_map : 'a. f:('a -> 'a * 'm) -> 'a list -> 'a list * 'm = fun ~f xs -> let accf, accm = List.fold_left xs ~init:([], self#empty) ~f:(fun (accf, accm) x -> - let r, s = f x in - (r :: accf, self#plus accm s)) + let r, s = f x in + r :: accf, self#plus accm s) in - (List.rev accf, accm) + List.rev accf, accm method field env f = let typ, s = self#t env f.typ in - ({ f with typ }, s) + { f with typ }, s method record env fields = let r, s = self#fold_left_map fields ~f:(fun f -> self#field env f) in - (Record r, s) + Record r, s method variant env constrs = let v, s = self#fold_left_map constrs ~f:(fun f -> self#constr env f) in - (Variant v, s) + Variant v, s method decl env decl = match decl with @@ -235,50 +237,39 @@ module Type = struct end let field typ ~name = { name; typ; attrs = [] } - - let fun_ args t = - List.fold_right args ~init:t ~f:(fun arg acc -> Fun (arg, acc)) - + let fun_ args t = List.fold_right args ~init:t ~f:(fun arg acc -> Fun (arg, acc)) let constr args ~name = { name; args } - let list t = List t - let assoc_list ~key ~data = Assoc (key, data) - let t = Path (Ident "t") - let module_t m = Path (Dot (Ident (String.capitalize_ascii m), "t")) - let string = Prim String - let name s = Path (Ident s) - let int = Prim Int - let bool = Prim Bool - let alpha = Var "a" let enum constrs = Variant (List.map constrs ~f:(fun constr -> { name = constr; args = [] })) + ;; let poly_enum constrs = - Poly_variant - (List.map constrs ~f:(fun constr -> { name = constr; args = [] })) + Poly_variant (List.map constrs ~f:(fun constr -> { name = constr; args = [] })) + ;; let json = Path (Dot (Ident "Json", "t")) - let unit = Prim Unit - let array t = App (Path (Ident "array"), [ t ]) let void = let void = Path.Dot (Ident "Json", "Void") in Path (Dot (void, "t")) + ;; let json_object = let obj = Path.Dot (Ident "Json", "Object") in Path (Dot (obj, "t")) + ;; module Type = W.Type @@ -288,6 +279,7 @@ module Type = struct | Int -> Pp.verbatim "int" | Bool -> Pp.verbatim "bool" | Unit -> Pp.verbatim "unit" + ;; let rec pp (a : t) ~(kind : Kind.t) : W.t = match a with @@ -299,84 +291,85 @@ module Type = struct | Optional t -> pp ~kind (App (Path (Ident "option"), [ t ])) | List t -> pp ~kind (App (Path (Ident "list"), [ t ])) | Poly_variant constrs -> - List.map constrs ~f:(fun { name; args } -> - (name, List.map args ~f:(pp ~kind))) + List.map constrs ~f:(fun { name; args } -> name, List.map args ~f:(pp ~kind)) |> Type.poly | Assoc (k, v) -> let t = List (Tuple [ k; v ]) in pp t ~kind - | Fun (a, r) -> ( - match a with - | Arg.Unnamed t -> - Pp.concat - [ pp t ~kind; Pp.space; Pp.verbatim "->"; Pp.space; pp ~kind r ] - | Arg.Labeled (l, t) -> - Pp.concat - [ Pp.textf "%s:" l - ; pp t ~kind - ; Pp.space - ; Pp.verbatim "->" - ; Pp.space - ; pp ~kind r - ] - | Arg.Optional (l, t) -> - Pp.concat - [ Pp.textf "?%s:" l - ; pp t ~kind - ; Pp.space - ; Pp.verbatim "->" - ; Pp.space - ; pp ~kind r - ]) + | Fun (a, r) -> + (match a with + | Arg.Unnamed t -> + Pp.concat [ pp t ~kind; Pp.space; Pp.verbatim "->"; Pp.space; pp ~kind r ] + | Arg.Labeled (l, t) -> + Pp.concat + [ Pp.textf "%s:" l + ; pp t ~kind + ; Pp.space + ; Pp.verbatim "->" + ; Pp.space + ; pp ~kind r + ] + | Arg.Optional (l, t) -> + Pp.concat + [ Pp.textf "?%s:" l + ; pp t ~kind + ; Pp.space + ; Pp.verbatim "->" + ; Pp.space + ; pp ~kind r + ]) + ;; let pp_decl' ~(kind : Kind.t) (a : decl) = match a with - | Alias a -> ( + | Alias a -> let pp = pp ~kind a in - match (a, kind) with - | (List _ | Path _ | Prim _), Impl -> W.Type.deriving ~record:false pp - | _, _ -> pp) + (match a, kind with + | (List _ | Path _ | Prim _), Impl -> W.Type.deriving ~record:false pp + | _, _ -> pp) | Variant v -> - List.map v ~f:(fun { name; args } -> (name, List.map ~f:(pp ~kind) args)) + List.map v ~f:(fun { name; args } -> name, List.map ~f:(pp ~kind) args) |> Type.variant - | Record r -> ( + | Record r -> let r = List.map r ~f:(fun { name; typ; attrs } -> - let def = - let field = pp ~kind typ in + let def = + let field = pp ~kind typ in + let attrs = let attrs = - let attrs = - match kind with - | Intf -> [] - | Impl -> attrs - in - List.concat_map attrs ~f:(fun (a, r) -> - [ W.Attr.make a (List.map ~f:Pp.verbatim r) ]) + match kind with + | Intf -> [] + | Impl -> attrs in - Type.field_attrs ~field ~attrs + List.concat_map attrs ~f:(fun (a, r) -> + [ W.Attr.make a (List.map ~f:Pp.verbatim r) ]) in - (name, def)) + Type.field_attrs ~field ~attrs + in + name, def) |> Type.record in - match kind with - | Intf -> r - | Impl -> W.Type.deriving r ~record:true) + (match kind with + | Intf -> r + | Impl -> W.Type.deriving r ~record:true) + ;; let pp_decl ~name ~kind (a : decl) : W.t = let body = pp_decl' ~kind a in Type.decl name body + ;; end module Expr = struct [@@@ocaml.warning "-30-32-37"] type expr = - | Let of pat * expr * expr (** let pat = e1 in e2 *) - | Match of expr * (pat * expr) list (** match e1 with [p -> e]* *) - | Fun of pat Arg.t list * expr (** fun p2 p2 .. -> e *) - | App of expr * expr Arg.t list (** f e1 e2 .. *) - | Create of expr prim (** Literal/Primitive *) - | Assert_false (** assert false *) + | Let of pat * expr * expr (** let pat = e1 in e2 *) + | Match of expr * (pat * expr) list (** match e1 with [p -> e]* *) + | Fun of pat Arg.t list * expr (** fun p2 p2 .. -> e *) + | App of expr * expr Arg.t list (** f e1 e2 .. *) + | Create of expr prim (** Literal/Primitive *) + | Assert_false (** assert false *) and 'e prim = | Unit @@ -404,7 +397,7 @@ module Expr = struct type t = expr - let assert_false_clause = (Wildcard, Assert_false) + let assert_false_clause = Wildcard, Assert_false type toplevel = { pat : (string Arg.t * Type.t) list @@ -425,21 +418,23 @@ module Expr = struct let sep = Pp.verbatim "," in let args = W.surround `Paren (Pp.concat_map ~sep ~f args) in Pp.concat [ tag; Pp.space; args ] + ;; let rec pp_pat = function | Wildcard -> Pp.verbatim "_" - | Pat pat -> ( - match pat with - | Unit -> Pp.verbatim "()" - | Bool b -> Pp.textf "%b" b - | Int i -> Pp.textf "%i" i - | String s -> Pp.textf "%S" s - | Ident s -> Pp.verbatim s - | Cons _ -> assert false - | List _ -> assert false - | Tuple _ -> assert false - | Record _ -> assert false - | Constr c -> pp_constr pp_pat c) + | Pat pat -> + (match pat with + | Unit -> Pp.verbatim "()" + | Bool b -> Pp.textf "%b" b + | Int i -> Pp.textf "%i" i + | String s -> Pp.textf "%S" s + | Ident s -> Pp.verbatim s + | Cons _ -> assert false + | List _ -> assert false + | Tuple _ -> assert false + | Record _ -> assert false + | Constr c -> pp_constr pp_pat c) + ;; let rec pp_create : expr prim -> _ Pp.t = function | Unit -> Pp.verbatim "()" @@ -461,7 +456,8 @@ module Expr = struct fields ~sep:(Pp.verbatim ";" ++ Pp.space) ~f:(fun (name, expr) -> - if expr = Create (Ident name) then pp expr + if expr = Create (Ident name) + then pp expr else Pp.verbatim name ++ Pp.space ++ Pp.verbatim "=" ++ pp expr) in W.surround `Curly record @@ -471,35 +467,29 @@ module Expr = struct | Assert_false -> Pp.verbatim "assert false" | Match (expr, patterns) -> let with_ = - Pp.concat - [ Pp.verbatim "match" - ; Pp.space - ; pp expr - ; Pp.space - ; Pp.verbatim "with" - ] + Pp.concat [ Pp.verbatim "match"; Pp.space; pp expr; Pp.space; Pp.verbatim "with" ] in let clauses = Pp.concat_map patterns ~f:(fun (pat, expr) -> - Pp.concat - [ Pp.verbatim "| " - ; pp_pat pat - ; Pp.space - ; Pp.verbatim "->" - ; Pp.space - ; Pp.verbatim "(" - ; pp expr - ; Pp.verbatim ")" - ]) + Pp.concat + [ Pp.verbatim "| " + ; pp_pat pat + ; Pp.space + ; Pp.verbatim "->" + ; Pp.space + ; Pp.verbatim "(" + ; pp expr + ; Pp.verbatim ")" + ]) in Pp.concat [ with_; Pp.newline; clauses ] | Create c -> pp_create c | App (x, args) -> let args = Pp.concat_map args ~sep:Pp.space ~f:(fun arg -> - match arg with - | Unnamed e -> pp e - | _ -> assert false) + match arg with + | Unnamed e -> pp e + | _ -> assert false) in Pp.concat [ pp x; Pp.space; args ] | Fun (pats, expr) -> @@ -509,37 +499,32 @@ module Expr = struct [ Pp.verbatim "fun" ; Pp.space ; Pp.concat_map pats ~sep:Pp.space ~f:(fun arg -> - match arg with - | Unnamed e -> pp_pat e - | _ -> assert false) + match arg with + | Unnamed e -> pp_pat e + | _ -> assert false) ; Pp.space ; Pp.verbatim "->" ; pp expr ]) | _ -> assert false + ;; let pp_toplevel ~kind name { pat; type_; body } = let pat = Pp.concat_map pat ~f:(fun (pat, typ) -> - let typ = Type.pp ~kind typ in - match pat with - | Unnamed s -> - Pp.concat - [ Pp.verbatim "(" - ; Pp.verbatim s - ; Pp.verbatim " : " - ; typ - ; Pp.verbatim ")" - ] - | Labeled (l, r) -> - if l = r then - Pp.concat [ Pp.textf "~(%s :" l; typ; Pp.verbatim ")" ] - else assert false - | Optional (l, r) -> - if l = r then - Pp.concat - [ Pp.textf "?(%s :" l; typ; Pp.space; Pp.verbatim "option)" ] - else assert false) + let typ = Type.pp ~kind typ in + match pat with + | Unnamed s -> + Pp.concat + [ Pp.verbatim "("; Pp.verbatim s; Pp.verbatim " : "; typ; Pp.verbatim ")" ] + | Labeled (l, r) -> + if l = r + then Pp.concat [ Pp.textf "~(%s :" l; typ; Pp.verbatim ")" ] + else assert false + | Optional (l, r) -> + if l = r + then Pp.concat [ Pp.textf "?(%s :" l; typ; Pp.space; Pp.verbatim "option)" ] + else assert false) in let body = pp body in let type_ = Type.pp type_ ~kind in @@ -552,6 +537,7 @@ module Expr = struct ; Pp.newline ; body ] + ;; end module Module = struct @@ -564,9 +550,9 @@ module Module = struct let of_string s = match s.[0] with - | 'a' .. 'z' -> - Code_error.raise "invalid module name" [ ("s", Dyn.string s) ] + | 'a' .. 'z' -> Code_error.raise "invalid module name" [ "s", Dyn.string s ] | _ -> s + ;; end type 'a t = @@ -588,23 +574,25 @@ module Module = struct let pp_sig { name; bindings } = let bindings = Pp.concat_map bindings ~sep:Pp.newline ~f:(fun { name; data } -> - match (data : sig_) with - | Value t -> W.Sig.val_ name [ Type.pp ~kind:Intf t ] - | Type_decl t -> W.Type.decl name (Type.pp_decl' ~kind:Intf t) - | Include (mod_, destructive_subs) -> - List.map destructive_subs ~f:(fun (l, r) -> - let f = Type.pp ~kind:Intf in - (f l, f r)) - |> W.Sig.include_ (mod_ :> string)) + match (data : sig_) with + | Value t -> W.Sig.val_ name [ Type.pp ~kind:Intf t ] + | Type_decl t -> W.Type.decl name (Type.pp_decl' ~kind:Intf t) + | Include (mod_, destructive_subs) -> + List.map destructive_subs ~f:(fun (l, r) -> + let f = Type.pp ~kind:Intf in + f l, f r) + |> W.Sig.include_ (mod_ :> string)) in W.Sig.module_ (name :> string) bindings + ;; let pp_impl { name; bindings } = let bindings = Pp.concat_map bindings ~sep:Pp.newline ~f:(fun { name; data = v } -> - match v with - | Value decl -> Expr.pp_toplevel ~kind:Impl name decl - | Type_decl t -> W.Type.decl name (Type.pp_decl' ~kind:Impl t)) + match v with + | Value decl -> Expr.pp_toplevel ~kind:Impl name decl + | Type_decl t -> W.Type.decl name (Type.pp_decl' ~kind:Impl t)) in W.module_ (name :> string) bindings + ;; end diff --git a/lsp/bin/ocaml/ml.mli b/lsp/bin/ocaml/ml.mli index 137c58a8a..8545f57a3 100644 --- a/lsp/bin/ocaml/ml.mli +++ b/lsp/bin/ocaml/ml.mli @@ -13,21 +13,16 @@ module Kind : sig } module Map : sig - type 'a t = ('a, 'a) pair - - type kind - - val get : 'a t -> kind -> 'a - - val iter : 'a t -> f:('a -> unit) -> unit - - val map : 'a t -> f:('a -> 'b) -> 'b t - - val both : 'a t -> 'b t -> ('a * 'b) t - - val make_both : 'a -> 'a t - end - with type kind := t + type 'a t = ('a, 'a) pair + type kind + + val get : 'a t -> kind -> 'a + val iter : 'a t -> f:('a -> unit) -> unit + val map : 'a t -> f:('a -> 'b) -> 'b t + val both : 'a t -> 'b t -> ('a * 'b) t + val make_both : 'a -> 'a t + end + with type kind := t end module Arg : sig @@ -81,7 +76,6 @@ module Type : sig } val to_dyn : t -> Dyn.t - val dyn_of_constr : constr -> Dyn.t type decl = @@ -90,18 +84,13 @@ module Type : sig | Variant of constr list val dyn_of_decl : decl -> Dyn.t - val fun_ : t Arg.t list -> t -> t (* This is for lists where the keys are equal to strings *) val assoc_list : key:t -> data:t -> t - val pp_decl : name:string -> kind:Kind.t -> decl -> unit Pp.t - val pp : t -> kind:Kind.t -> unit Pp.t - val field : t -> name:string -> field - val constr : t list -> name:string -> constr (** Simplified sum types*) @@ -111,29 +100,17 @@ module Type : sig val poly_enum : string list -> t val list : t -> t - val module_t : string -> t - val t : t - val string : t - val name : string -> t - val int : t - val bool : t - val alpha : t - val json : t - val json_object : t - val unit : t - val void : t - val array : t -> t (** Fold and map over a type expression. @@ -144,44 +121,27 @@ module Type : sig this to give child nodes context *) class virtual ['env, 'm] mapreduce : object ('self) method virtual empty : 'm - method virtual plus : 'm -> 'm -> 'm (** doesn't really to be here, but putting it here avoids passing [empty] and [plus] to a general purpose [fold_left_map]*) - method private fold_left_map : - 'a. f:('a -> 'a * 'm) -> 'a list -> 'a list * 'm + method private fold_left_map : 'a. f:('a -> 'a * 'm) -> 'a list -> 'a list * 'm method alias : 'env -> t -> decl * 'm - method app : 'env -> t -> t list -> t * 'm - method assoc : 'env -> t -> t -> t * 'm - method constr : 'env -> constr -> constr * 'm - method field : 'env -> field -> field * 'm - method list : 'env -> t -> t * 'm - method path : 'env -> Path.t -> t * 'm - method optional : 'env -> t -> t * 'm - method poly_variant : 'env -> constr list -> t * 'm - method prim : 'env -> prim -> t * 'm - method record : 'env -> field list -> decl * 'm - method t : 'env -> t -> t * 'm - method decl : 'env -> decl -> decl * 'm - method tuple : 'env -> t list -> t * 'm - method var : 'env -> string -> t * 'm - method variant : 'env -> constr list -> decl * 'm end end @@ -212,14 +172,14 @@ module Expr : sig | Constr of 'e constr and pat = - | Wildcard (** [_ -> ] *) + | Wildcard (** [_ -> ] *) | Pat of pat prim and 'e record_ = (string * 'e) list and 'e constr = - { tag : string (** the tag in a tagged union *) - ; poly : bool (** polymorphic variant? *) + { tag : string (** the tag in a tagged union *) + ; poly : bool (** polymorphic variant? *) ; args : 'e list } @@ -231,9 +191,9 @@ module Expr : sig (** toplevel declartion (without the name) *) type toplevel = { pat : (string Arg.t * Type.t) list - (** paterns and their types. types should be optional but they really - help the error messages if the generated code is incorrect *) - ; type_ : Type.t (** useful to annotate the return types *) + (** paterns and their types. types should be optional but they really + help the error messages if the generated code is incorrect *) + ; type_ : Type.t (** useful to annotate the return types *) ; body : t } end @@ -263,6 +223,5 @@ module Module : sig | Value of Expr.toplevel val pp_sig : sig_ t -> unit Pp.t - val pp_impl : impl t -> unit Pp.t end diff --git a/lsp/bin/ocaml/ml_create.ml b/lsp/bin/ocaml/ml_create.ml index 6613bf2bc..c11f266c7 100644 --- a/lsp/bin/ocaml/ml_create.ml +++ b/lsp/bin/ocaml/ml_create.ml @@ -4,21 +4,23 @@ let f_name name = if name = "t" then "create" else sprintf "create_%s" name let need_unit = List.exists ~f:(fun (f : Ml.Type.field) -> - match f.typ with - | Optional _ -> true - | _ -> false) + match f.typ with + | Optional _ -> true + | _ -> false) +;; let intf { Named.name; data = fields } = let type_ = let need_unit = need_unit fields in let fields : Ml.Type.t Ml.Arg.t list = List.map fields ~f:(fun (field : Ml.Type.field) -> - match field.typ with - | Optional t -> Ml.Arg.Optional (field.name, t) - | t -> Labeled (field.name, t)) + match field.typ with + | Optional t -> Ml.Arg.Optional (field.name, t) + | t -> Labeled (field.name, t)) in let args : Ml.Type.t Ml.Arg.t list = - if need_unit then + if need_unit + then (* Gross hack because I was too lazy to allow patterns in toplevel exprs *) fields @ [ Ml.Arg.Unnamed Ml.Type.unit ] @@ -28,13 +30,14 @@ let intf { Named.name; data = fields } = in let f_name = f_name name in { Named.name = f_name; data = type_ } +;; let impl { Named.name; data = fields } = let make = let fields = List.map fields ~f:(fun (field : Ml.Type.field) -> - let open Ml.Expr in - (field.name, Create (Ident field.name))) + let open Ml.Expr in + field.name, Create (Ident field.name)) in Ml.Expr.Create (Record fields) in @@ -42,19 +45,21 @@ let impl { Named.name; data = fields } = let need_unit = need_unit fields in let fields = List.map fields ~f:(fun (field : Ml.Type.field) -> - match field.typ with - | Optional t -> (Ml.Arg.Optional (field.name, field.name), t) - | t -> (Ml.Arg.Labeled (field.name, field.name), t)) + match field.typ with + | Optional t -> Ml.Arg.Optional (field.name, field.name), t + | t -> Ml.Arg.Labeled (field.name, field.name), t) in - if need_unit then + if need_unit + then (* Gross hack because I was too lazy to allow patterns in toplevel exprs *) - fields @ [ (Unnamed "()", Ml.Type.unit) ] + fields @ [ Unnamed "()", Ml.Type.unit ] else fields in let body = { Ml.Expr.pat; type_ = Ml.Type.name name; body = make } in let f_name = f_name name in { Named.name = f_name; data = body } +;; let impl_of_type (t : Ml.Type.decl Named.t) = match (t.data : Ml.Type.decl) with @@ -62,6 +67,7 @@ let impl_of_type (t : Ml.Type.decl Named.t) = let create = impl { t with data = fields } in [ { create with data = Ml.Module.Value create.data } ] | _ -> [] +;; let intf_of_type (t : Ml.Type.decl Named.t) : Ml.Module.sig_ Named.t list = match (t.data : Ml.Type.decl) with @@ -69,3 +75,4 @@ let intf_of_type (t : Ml.Type.decl Named.t) : Ml.Module.sig_ Named.t list = let create = intf { t with data = fields } in [ { create with data = Ml.Module.Value create.data } ] | _ -> [] +;; diff --git a/lsp/bin/ocaml/ml_create.mli b/lsp/bin/ocaml/ml_create.mli index c3e6abcc8..630776028 100644 --- a/lsp/bin/ocaml/ml_create.mli +++ b/lsp/bin/ocaml/ml_create.mli @@ -1,4 +1,3 @@ (* Generate create functions with optional/labeled arguments *) val intf_of_type : Ml.Type.decl Named.t -> Ml.Module.sig_ Named.t list - val impl_of_type : Ml.Type.decl Named.t -> Ml.Module.impl Named.t list diff --git a/lsp/bin/ocaml/ml_kind.ml b/lsp/bin/ocaml/ml_kind.ml index b2beadd3e..d37d8c7fa 100644 --- a/lsp/bin/ocaml/ml_kind.ml +++ b/lsp/bin/ocaml/ml_kind.ml @@ -12,14 +12,17 @@ type kind = let get { intf; impl } = function | Impl -> impl | Intf -> intf +;; let make_both a = { intf = a; impl = a } let iter { intf; impl } ~f = f intf; f impl +;; let map { intf; impl } ~f = { intf = f intf; impl = f impl } let both (type a b) (x : a t) (y : b t) : (a * b) t = - { intf = (x.intf, y.intf); impl = (x.impl, y.impl) } + { intf = x.intf, y.intf; impl = x.impl, y.impl } +;; diff --git a/lsp/bin/ocaml/ocaml.ml b/lsp/bin/ocaml/ocaml.ml index 999d2d475..fe20955fc 100644 --- a/lsp/bin/ocaml/ocaml.ml +++ b/lsp/bin/ocaml/ocaml.ml @@ -29,10 +29,12 @@ let skipped_ts_decls = ; "NotebookDocumentSyncRegistrationOptions" ; "URI" ] +;; (* XXX this is temporary until we support the [supportsCustomValues] field *) let with_custom_values = [ "FoldingRangeKind"; "CodeActionKind"; "PositionEncodingKind"; "WatchKind" ] +;; module Expanded = struct (** The expanded form is still working with typescript types. However, all @@ -59,6 +61,7 @@ module Expanded = struct | List (Record d) | Record d -> record d | Sum [ _; Record d ] -> record d | _ -> None + ;; class discovered_types = object @@ -71,13 +74,14 @@ module Expanded = struct let init = match f.data with | Pattern _ -> init - | Single { optional = _; typ } -> ( - match new_binding_of_typ typ with - | None -> init - | Some data -> - let new_record = { f with data } in - if List.mem ~equal:Poly.equal init new_record then init - else new_record :: init) + | Single { optional = _; typ } -> + (match new_binding_of_typ typ with + | None -> init + | Some data -> + let new_record = { f with data } in + if List.mem ~equal:Poly.equal init new_record + then init + else new_record :: init) in super#field f ~init end @@ -88,10 +92,10 @@ module Expanded = struct match r.data with | Enum_anon _ -> assert false | Interface i -> Interface i - | Type typ -> ( - match new_binding_of_typ typ with - | Some data -> data - | None -> Alias typ) + | Type typ -> + (match new_binding_of_typ typ with + | Some data -> data + | None -> Alias typ) in { data; name = "t" } in @@ -100,10 +104,12 @@ module Expanded = struct | Enum_anon _ -> assert false | Type typ -> (new discovered_types)#typ typ ~init | Interface intf -> (new discovered_types)#typ (Record intf.fields) ~init + ;; let of_ts (r : Resolved.t) : t = let name = Ml.Module.Name.of_string (String.capitalize_ascii r.name) in { Ml.Module.name; bindings = bindings r } + ;; end module Json = Json_gen @@ -114,7 +120,6 @@ module Module : sig type t = (Module.sig_ Module.t, Module.impl Module.t) Kind.pair val add_private_values : t -> Expr.toplevel Named.t list -> t - val type_decls : Module.Name.t -> Type.decl Named.t list Kind.Map.t -> t (** Use Json.Nullable_option or Json.Assoc.t where appropriate *) @@ -129,30 +134,29 @@ end = struct type t = (Module.sig_ Module.t, Module.impl Module.t) Ml.Kind.pair - let type_decls name (type_decls : Ml.Type.decl Named.t list Ml.Kind.Map.t) : t - = + let type_decls name (type_decls : Ml.Type.decl Named.t list Ml.Kind.Map.t) : t = let module_ bindings = { Ml.Module.name; bindings } in let intf : Module.sig_ Module.t = List.map type_decls.intf ~f:(fun (td : Ml.Type.decl Named.t) -> - { td with - Named.data = (Ml.Module.Type_decl td.data : Ml.Module.sig_) - }) + { td with Named.data = (Ml.Module.Type_decl td.data : Ml.Module.sig_) }) |> module_ in let impl = List.map type_decls.impl ~f:(fun (td : Ml.Type.decl Named.t) -> - { td with Named.data = Ml.Module.Type_decl td.data }) + { td with Named.data = Ml.Module.Type_decl td.data }) |> module_ in { Ml.Kind.intf; impl } + ;; let add_private_values (t : t) bindings : t = let bindings = List.map bindings ~f:(fun (v : _ Named.t) -> - { v with Named.data = Ml.Module.Value v.data }) + { v with Named.data = Ml.Module.Value v.data }) in let impl = { t.impl with bindings = t.impl.bindings @ bindings } in { t with impl } + ;; let json_assoc_t = Ml.Path.Dot (Dot (Ident "Json", "Assoc"), "t") @@ -161,20 +165,19 @@ end = struct let open Ml.Type in object (self) inherit [unit, unit] Ml.Type.mapreduce as super - method empty = () - method plus () () = () method! field x f = let f = - if Ml.is_kw f.name then + if Ml.is_kw f.name + then ( let attrs = match kind with | Impl -> ("key", [ sprintf "%S" f.name ]) :: f.attrs | Intf -> f.attrs in - { f with name = f.name ^ "_"; attrs } + { f with name = f.name ^ "_"; attrs }) else f in super#field x f @@ -183,31 +186,29 @@ end = struct end in fun kind t -> (map kind)#decl () t |> fst + ;; let use_json_conv_types = let map = let open Ml.Type in object (self) inherit [unit, unit] Ml.Type.mapreduce as super - method empty = () - method plus () () = () method! optional x t = - if t = Json_gen.json_t then super#optional x t - else - let opt = - Ml.Path.Dot (Dot (Ident "Json", "Nullable_option"), "t") - in - self#t x (App (Path opt, [ t ])) + if t = Json_gen.json_t + then super#optional x t + else ( + let opt = Ml.Path.Dot (Dot (Ident "Json", "Nullable_option"), "t") in + self#t x (App (Path opt, [ t ]))) method! field x f = let f = match f.typ with | Optional t -> - if t = Json_gen.json_t then - { f with attrs = ("yojson.option", []) :: f.attrs } + if t = Json_gen.json_t + then { f with attrs = ("yojson.option", []) :: f.attrs } else { f with attrs = @@ -226,36 +227,35 @@ end = struct let impl = let bindings = List.map t.impl.bindings ~f:(fun (x : _ Named.t) -> - let data = - match (x.data : Module.impl) with - | Type_decl decl -> Ml.Module.Type_decl (map#decl () decl |> fst) - | x -> x - in - { x with data }) + let data = + match (x.data : Module.impl) with + | Type_decl decl -> Ml.Module.Type_decl (map#decl () decl |> fst) + | x -> x + in + { x with data }) in { t.impl with bindings } in { t with impl } + ;; let pp (t : t) ~kind = match (kind : Ml.Kind.t) with | Intf -> Ml.Module.pp_sig t.intf | Impl -> Ml.Module.pp_impl t.impl + ;; let pp t = { Ml.Kind.intf = pp t ~kind:Intf; impl = pp t ~kind:Impl } end let enum_module ~allow_other ({ Named.name; data = constrs } as t) = - let json_bindings = - Json_gen.Enum.conv ~allow_other ~poly:false { t with name = "t" } - in + let json_bindings = Json_gen.Enum.conv ~allow_other ~poly:false { t with name = "t" } in let t = let data = + let constrs = List.map constrs ~f:(fun (name, _) -> Ml.Type.constr ~name []) in let constrs = - List.map constrs ~f:(fun (name, _) -> Ml.Type.constr ~name []) - in - let constrs = - if allow_other then + if allow_other + then (* [String] is a hack. It could be a differnt type, but it isn't in practice *) constrs @ [ Ml.Type.constr ~name:"Other" [ Ml.Type.Prim String ] ] @@ -268,6 +268,7 @@ let enum_module ~allow_other ({ Named.name; data = constrs } as t) = let type_decls = Ml.Kind.Map.make_both [ t ] in let module_ = Module.type_decls (Ml.Module.Name.of_string name) type_decls in Module.add_private_values module_ json_bindings +;; module Entities = struct type t = (Ident.t * Resolved.t) list @@ -275,20 +276,22 @@ module Entities = struct let find db e : _ Named.t = match List.assoc db e with | Some s -> s - | None -> - Code_error.raise "Entities.find: unable to find" [ ("e", Ident.to_dyn e) ] + | None -> Code_error.raise "Entities.find: unable to find" [ "e", Ident.to_dyn e ] + ;; let of_map map ts = - List.map ts ~f:(fun (r : Resolved.t) -> (String.Map.find_exn map r.name, r)) + List.map ts ~f:(fun (r : Resolved.t) -> String.Map.find_exn map r.name, r) + ;; let rev_find (db : t) (resolved : Resolved.t) : Ident.t = match List.filter_map db ~f:(fun (id, r) -> - if r.name = resolved.name then Some id else None) + if r.name = resolved.name then Some id else None) with | [] -> Code_error.raise "rev_find: resolved not found" [] | [ x ] -> x | _ :: _ -> Code_error.raise "re_vind: duplicate entries" [] + ;; end module Mapper : sig @@ -303,15 +306,14 @@ module Mapper : sig (** Map a TS record into an OCaml record. Literal valued fields such as kind: 'foo' are extracted into a separate list *) - val record_ : - Entities.t + val record_ + : Entities.t -> Resolved.field list Named.t -> Ml.Type.decl Named.t * literal_field list (** Extract all untagged unions in field position. These will be turned into polymorphic variants using a naming scheme for the tags. *) - val extract_poly_vars : - Ml.Type.decl -> Ml.Type.decl * Ml.Type.constr list Named.t list + val extract_poly_vars : Ml.Type.decl -> Ml.Type.decl * Ml.Type.constr list Named.t list end = struct type literal_field = { field_name : string @@ -325,8 +327,8 @@ end = struct [ Prim.Null; String; Bool; Number; Object; List ] |> List.map ~f:(fun s -> Resolved.Ident s) in - fun set -> - List.for_all constrs ~f:(fun e -> List.mem set e ~equal:Poly.equal) + fun set -> List.for_all constrs ~f:(fun e -> List.mem set e ~equal:Poly.equal) + ;; let id = Type.name "Jsonrpc.Id.t" @@ -336,6 +338,7 @@ end = struct [ Prim.String; Number ] |> List.map ~f:(fun s -> Resolved.Ident s) |> sort in fun cs -> List.equal ( = ) constrs (sort cs) + ;; (* Any type that includes null needs to be extracted to be converted to an option *) @@ -350,12 +353,12 @@ end = struct | [] -> `No_null_present | _ :: _ :: _ -> assert false | [ _ ] -> `Null_removed non_nulls + ;; let make_typ db { Named.name; data = t } = let rec type_ topmost_field_name (t : Resolved.typ) = match t with - | Ident Uinteger -> - Type.int (* XXX shall we use a dedicated uinteger eventually? *) + | Ident Uinteger -> Type.int (* XXX shall we use a dedicated uinteger eventually? *) | Ident Number -> Type.int | Ident String -> Type.string | Ident Bool -> Type.bool @@ -371,22 +374,22 @@ end = struct | Ident (Resolved r) -> let entity = Entities.find db r in Type.module_t entity.name - | List (Ident (Uinteger | Number)) when topmost_field_name = Some "data" - -> Type.array Type.int + | List (Ident (Uinteger | Number)) when topmost_field_name = Some "data" -> + Type.array Type.int | List t -> Type.list (type_ topmost_field_name t) | Tuple ts -> Type.Tuple (List.map ~f:(type_ topmost_field_name) ts) | Sum s -> sum topmost_field_name s | App _ | Literal _ -> Type.void | Record r -> record r and sum topmost_field_name s = - if is_same_as_json s then Type.json - else + if is_same_as_json s + then Type.json + else ( match remove_null s with - | `No_null_present -> - if is_same_as_id s then id else poly topmost_field_name s + | `No_null_present -> if is_same_as_id s then id else poly topmost_field_name s | `Null_removed [ s ] -> Type.Optional (type_ topmost_field_name s) | `Null_removed [] -> assert false - | `Null_removed cs -> Type.Optional (sum topmost_field_name cs) + | `Null_removed cs -> Type.Optional (sum topmost_field_name cs)) and simplify_record (fields : Resolved.field list) = (* A record with only a pattern field is simplified to an association list *) @@ -407,29 +410,28 @@ end = struct try Poly_variant (List.map s ~f:(fun t -> - let name, constrs = - match (t : Resolved.typ) with - | Ident Self | Ident Null -> assert false - | Ident String -> ("String", [ type_ t ]) - | Ident Number -> ("Int", [ type_ t ]) - | Ident Object -> ("Assoc", [ type_ t ]) - | Ident Bool -> ("Bool", [ type_ t ]) - | List _ | Ident List -> ("List", [ type_ t ]) - | Ident (Resolved r) -> ((Entities.find db r).name, [ type_ t ]) - | Tuple [ Ident Uinteger; Ident Uinteger ] -> - ("Offset", [ type_ t ]) - | Literal (String x) -> (x, []) - | Record _ -> - let topmost_field_name = - Option.value_exn topmost_field_name - in - (topmost_field_name, [ type_ t ]) - | _ -> raise Exit - in - Type.constr ~name constrs)) - with Exit -> Type.unit + let name, constrs = + match (t : Resolved.typ) with + | Ident Self | Ident Null -> assert false + | Ident String -> "String", [ type_ t ] + | Ident Number -> "Int", [ type_ t ] + | Ident Object -> "Assoc", [ type_ t ] + | Ident Bool -> "Bool", [ type_ t ] + | List _ | Ident List -> "List", [ type_ t ] + | Ident (Resolved r) -> (Entities.find db r).name, [ type_ t ] + | Tuple [ Ident Uinteger; Ident Uinteger ] -> "Offset", [ type_ t ] + | Literal (String x) -> x, [] + | Record _ -> + let topmost_field_name = Option.value_exn topmost_field_name in + topmost_field_name, [ type_ t ] + | _ -> raise Exit + in + Type.constr ~name constrs)) + with + | Exit -> Type.unit in type_ (Some name) t + ;; let make_field db (field : Resolved.field) = match field.data with @@ -449,6 +451,7 @@ end = struct let typ = make_typ db { Named.name = field.name; data = typ } in let typ = if optional then Type.Optional typ else typ in Left (Ml.Type.field typ ~name:field.name) + ;; let record_ db { Named.name; data = (fields : Resolved.field list) } = let data, literals = @@ -456,13 +459,14 @@ end = struct | [ { Named.name; data = Pattern { pat; typ } } ] -> let key = make_typ db { Named.name; data = pat } in let data = make_typ db { Named.name; data = typ } in - (Type.Alias (Type.assoc_list ~key ~data), []) - | [] -> (Type.Alias Type.json_object, []) + Type.Alias (Type.assoc_list ~key ~data), [] + | [] -> Type.Alias Type.json_object, [] | _ -> let fields, literals = List.partition_map fields ~f:(make_field db) in - (Type.Record fields, literals) + Type.Record fields, literals in - ({ Named.name; data }, literals) + { Named.name; data }, literals + ;; let extract_poly_vars s = let extract = @@ -488,10 +492,11 @@ end = struct let name = name ^ "_pvar" in let replacement = Ml.Type.name name in let constrs, m = self#fold_left_map ~f:(self#constr env) constrs in - (replacement, self#plus m [ { Named.name; data = constrs } ]) + replacement, self#plus m [ { Named.name; data = constrs } ] end in extract#decl None s + ;; end module Gen : sig @@ -505,23 +510,26 @@ end = struct { Named.name; data = Type.Alias typ } in [ main_type ] + ;; let record db ({ Named.name = _; data = _ } as t) = let main_type, literals = Mapper.record_ db t in Some (main_type, literals) + ;; let poly_enum { Named.name; data = _ } : Type.decl Named.t list = [ { Named.name; data = Type.Alias Type.unit } ] + ;; let poly_enum_conv (t : _ Named.t) = if List.for_all t.data ~f:(fun (c : Ml.Type.constr) -> List.is_empty c.args) then (* This is equivalent to an enum *) - List.map t.data ~f:(fun (c : Ml.Type.constr) -> - (c.name, Literal.String c.name)) + List.map t.data ~f:(fun (c : Ml.Type.constr) -> c.name, Literal.String c.name) |> Named.set_data t |> Json_gen.Enum.conv ~allow_other:false ~poly:true else [ Json_gen.Poly_variant.of_json t; Json_gen.Poly_variant.to_json t ] + ;; (* This is the more complex case *) @@ -533,81 +541,73 @@ end = struct in let add_else = List.map ~f:(fun x -> `Type x) in List.concat_map bindings ~f:(fun (r : Expanded.binding Named.t) -> - match r.data with - | Record data -> record db { r with data } |> add_record - | Interface data -> - record db { r with data = data.fields } |> add_record - | Poly_enum data -> poly_enum { r with data } |> add_else - | Alias data -> type_ db { r with data } |> add_else) + match r.data with + | Record data -> record db { r with data } |> add_record + | Interface data -> record db { r with data = data.fields } |> add_record + | Poly_enum data -> poly_enum { r with data } |> add_else + | Alias data -> type_ db { r with data } |> add_else) in let intf : Ml.Module.sig_ Named.t list = List.map type_decls ~f:(function - | `Record (t, _) -> t - | `Type t -> t) + | `Record (t, _) -> t + | `Type t -> t) |> List.concat_map ~f:(fun (td : Ml.Type.decl Named.t) -> - let td = - { td with data = Module.rename_invalid_fields Intf td.data } - in - [ { td with - Named.data = (Ml.Module.Type_decl td.data : Ml.Module.sig_) - } - ] - @ Ml_create.intf_of_type td) + let td = { td with data = Module.rename_invalid_fields Intf td.data } in + [ { td with Named.data = (Ml.Module.Type_decl td.data : Ml.Module.sig_) } ] + @ Ml_create.intf_of_type td) in let impl : Ml.Module.impl Named.t list = (* TODO we should make sure to handle duplicate variants extracted *) List.concat_map type_decls ~f:(fun d -> - let d, literal_wrapper = - match d with - | `Record (l, [ lw ]) -> (l, Some lw) - | `Record (l, []) -> (l, None) - | `Record (_, _ :: _) -> - assert false - (* we don't support multiple literals in a single record for - now *) - | `Type l -> (l, None) - in - let typ_, poly_vars = Mapper.extract_poly_vars (Named.data d) in - let poly_vars_and_convs = - List.concat_map poly_vars ~f:(fun pv -> - let decl = - Named.map pv ~f:(fun decl -> - Ml.Module.Type_decl (Alias (Poly_variant decl))) - in - let json_conv = - poly_enum_conv pv - |> List.map ~f:(Named.map ~f:(fun v -> Ml.Module.Value v)) - in - decl :: json_conv) - in - let typ_ = { d with data = typ_ } in - let literal_wrapper = - match literal_wrapper with - | None -> [] - | Some { field_name; literal_value } -> - Json_gen.make_literal_wrapper_conv - ~field_name - ~literal_value - ~type_name:typ_.name - in - let typ_ = - { typ_ with data = Module.rename_invalid_fields Impl typ_.data } - in - let json_convs_for_t = - match d.data with - | Alias (Poly_variant data) -> - poly_enum_conv { d with Named.data } - |> List.map ~f:(Named.map ~f:(fun v -> Ml.Module.Value v)) - | _ -> [] - in - poly_vars_and_convs - @ [ { typ_ with data = Ml.Module.Type_decl typ_.data } ] - @ json_convs_for_t - @ Ml_create.impl_of_type typ_ - @ literal_wrapper) + let d, literal_wrapper = + match d with + | `Record (l, [ lw ]) -> l, Some lw + | `Record (l, []) -> l, None + | `Record (_, _ :: _) -> + assert false + (* we don't support multiple literals in a single record for + now *) + | `Type l -> l, None + in + let typ_, poly_vars = Mapper.extract_poly_vars (Named.data d) in + let poly_vars_and_convs = + List.concat_map poly_vars ~f:(fun pv -> + let decl = + Named.map pv ~f:(fun decl -> + Ml.Module.Type_decl (Alias (Poly_variant decl))) + in + let json_conv = + poly_enum_conv pv |> List.map ~f:(Named.map ~f:(fun v -> Ml.Module.Value v)) + in + decl :: json_conv) + in + let typ_ = { d with data = typ_ } in + let literal_wrapper = + match literal_wrapper with + | None -> [] + | Some { field_name; literal_value } -> + Json_gen.make_literal_wrapper_conv + ~field_name + ~literal_value + ~type_name:typ_.name + in + let typ_ = { typ_ with data = Module.rename_invalid_fields Impl typ_.data } in + let json_convs_for_t = + match d.data with + | Alias (Poly_variant data) -> + poly_enum_conv { d with Named.data } + |> List.map ~f:(Named.map ~f:(fun v -> Ml.Module.Value v)) + | _ -> [] + in + poly_vars_and_convs + @ [ { typ_ with data = Ml.Module.Type_decl typ_.data } ] + @ json_convs_for_t + @ Ml_create.impl_of_type typ_ + @ literal_wrapper) in let module_ bindings = { Ml.Module.name; bindings } in { Ml.Kind.intf = module_ intf; impl = module_ impl } + ;; end (* extract all resovled identifiers *) @@ -633,47 +633,49 @@ let resolve_typescript (ts : Unresolved.t list) = with | Error cycle -> let cycle = List.map cycle ~f:(fun (x : Resolved.t) -> x.name) in - Code_error.raise "Unexpected cycle" [ ("cycle", Dyn.(list string) cycle) ] - | Ok ts -> (db, ts) + Code_error.raise "Unexpected cycle" [ "cycle", Dyn.(list string) cycle ] + | Ok ts -> db, ts +;; let of_resolved_typescript db (ts : Resolved.t list) = let simple_enums, everything_else = List.filter_partition_map ts ~f:(fun (t : Resolved.t) -> - if List.mem skipped_ts_decls t.name ~equal:String.equal then Skip - else - match t.data with - | Enum_anon data -> Left { t with data } - | Interface _ | Type _ -> Right t) + if List.mem skipped_ts_decls t.name ~equal:String.equal + then Skip + else ( + match t.data with + | Enum_anon data -> Left { t with data } + | Interface _ | Type _ -> Right t)) in let simple_enums = List.map simple_enums ~f:(fun (t : _ Named.t) -> - (* "open" enums need an `Other constructor *) - let allow_other = - List.mem ~equal:String.equal with_custom_values t.name - in - let data = - List.filter_map t.data ~f:(fun (constr, v) -> - match (v : Ts_types.Enum.case) with - | Literal l -> Some (constr, l) - | Alias _ -> - (* TODO we don't handle these for now *) - None) - in - enum_module ~allow_other { t with data }) + (* "open" enums need an `Other constructor *) + let allow_other = List.mem ~equal:String.equal with_custom_values t.name in + let data = + List.filter_map t.data ~f:(fun (constr, v) -> + match (v : Ts_types.Enum.case) with + | Literal l -> Some (constr, l) + | Alias _ -> + (* TODO we don't handle these for now *) + None) + in + enum_module ~allow_other { t with data }) in let everything_else = List.map everything_else ~f:(fun (t : _ Named.t) -> - let mod_ = Expanded.of_ts t in - Gen.module_ db mod_) + let mod_ = Expanded.of_ts t in + Gen.module_ db mod_) in simple_enums @ everything_else |> List.map ~f:(fun (decl : _ Ml.Kind.pair) -> - let decl = - let intf = Json_gen.add_json_conv_for_t decl.intf in - { decl with intf } - in - Module.use_json_conv_types decl) + let decl = + let intf = Json_gen.add_json_conv_for_t decl.intf in + { decl with intf } + in + Module.use_json_conv_types decl) +;; let of_typescript ts = let db, ts = resolve_typescript ts in of_resolved_typescript db ts +;; diff --git a/lsp/bin/ocaml/w.ml b/lsp/bin/ocaml/w.ml index bbf963268..626ceb74b 100644 --- a/lsp/bin/ocaml/w.ml +++ b/lsp/bin/ocaml/w.ml @@ -3,46 +3,37 @@ open Pp.O open Pp type t = unit Pp.t - type w = t (* This module contains all the writing primitives *) let ident = verbatim - let i = verbatim - let quoted s = i (sprintf "%S" s) let surround delim a = let start, finish = match delim with - | `Paren -> (i "(", i ")") - | `Curly -> (i "{", i "}") - | `Square -> (i "[", i "]") + | `Paren -> i "(", i ")" + | `Curly -> i "{", i "}" + | `Square -> i "[", i "]" in Pp.concat [ start; a; finish ] +;; module Json = struct - let invalid_pat name = - (ident "json", Pp.textf "Json.error \"invalid %s\" json" name) - + let invalid_pat name = ident "json", Pp.textf "Json.error \"invalid %s\" json" name let typ = "Json.t" module Literal = struct let str n = sprintf "`String %S" n - let int i = sprintf "`Int (%d)" i - let null = "`Null" - let bool b = sprintf "`Bool %b" b end let str = sprintf "`String %s" - let int = sprintf "`Int %s" - let bool = sprintf "`Bool %s" end @@ -51,8 +42,9 @@ module Gen = struct let sep = Pp.concat [ Pp.verbatim ";"; Pp.newline ] in Pp.text "{" ++ Pp.concat_map ~sep fields ~f:(fun (name, f) -> - Pp.concat [ Pp.textf "%s %s " name delim; f ]) + Pp.concat [ Pp.textf "%s %s " name delim; f ]) ++ Pp.verbatim "}" + ;; let clause ~delim l r = Pp.concat [ l; Pp.verbatim (sprintf " %s " delim); r ] end @@ -73,24 +65,17 @@ module Attr = struct in Pp.concat [ i kind; i name; Pp.space; Pp.concat ~sep:Pp.space payload ] |> surround `Square + ;; end module Type = struct let string = i "string" - let int = i "int" - let name = i - let bool = i "bool" - - let gen_decl kw name body = - Pp.concat [ Pp.textf "%s %s =" kw name; Pp.newline; body ] - + let gen_decl kw name body = Pp.concat [ Pp.textf "%s %s =" kw name; Pp.newline; body ] let and_ name body = gen_decl "and" name body - let decl name body = gen_decl "type" name body - let record fields = Gen.record ~delim:":" fields let field_attrs ~field ~attrs = @@ -99,6 +84,7 @@ module Type = struct | attrs -> let attrs = Pp.concat_map attrs ~sep:Pp.space ~f:(Attr.pp `Field) in Pp.concat [ field; Pp.space; attrs ] + ;; let var typ = Pp.textf "'%s" typ @@ -111,23 +97,24 @@ module Type = struct Pp.concat [ Pp.verbatim "("; Pp.concat ~sep xs; Pp.verbatim ")" ] in Pp.concat [ args; Pp.space; typ ] + ;; let tuple fields = let sep = i "*" in i "(" ++ Pp.concat ~sep fields ++ i ")" + ;; let rec_decls xs = match xs with | [] -> Pp.concat [] | (name, body) :: xs -> - decl name body ++ newline - ++ Pp.concat_map xs ~sep:Pp.newline ~f:(fun (name, body) -> - and_ name body) + decl name body + ++ newline + ++ Pp.concat_map xs ~sep:Pp.newline ~f:(fun (name, body) -> and_ name body) + ;; let deriving td ~record = - let fields = - if record then space ++ i "[@@yojson.allow_extra_fields]" else space - in + let fields = if record then space ++ i "[@@yojson.allow_extra_fields]" else space in Pp.concat [ td ; Pp.newline @@ -136,34 +123,32 @@ module Type = struct ; space ; Pp.text "[@@@end]" ] + ;; let opt_attr = ident "option [@yojson.option]" - let opt_field f = Pp.seq f opt_attr - let default f def = Pp.concat [ f; ident "[@default "; ident def; ident "]" ] - let key name = concat [ ident "[@key "; quoted name; ident "]" ] let gen_variant ~poly constrs = let sep = Pp.concat [ Pp.newline; i "| " ] in Pp.concat_map constrs ~sep ~f:(fun (name, arg) -> - let name = - let name = String.capitalize_ascii name in - if poly then "`" ^ name else name + let name = + let name = String.capitalize_ascii name in + if poly then "`" ^ name else name + in + match arg with + | [] -> i name + | xs -> + let xs = + match xs with + | [ x ] -> x + | xs -> tuple xs in - match arg with - | [] -> i name - | xs -> - let xs = - match xs with - | [ x ] -> x - | xs -> tuple xs - in - Gen.clause ~delim:"of" (ident name) xs) + Gen.clause ~delim:"of" (ident name) xs) + ;; let poly constrs = concat [ i "["; gen_variant ~poly:true constrs; i "]" ] - let variant constrs = gen_variant ~poly:false constrs end @@ -176,6 +161,7 @@ let gen_module kw name body = ; verbatim "end" ; newline ] +;; module Sig = struct let module_ name body = gen_module ": sig" name body @@ -188,22 +174,17 @@ module Sig = struct let substs = let sep = Pp.text " and " in Pp.concat_map ~sep substs ~f:(fun (l, r) -> - Pp.concat - [ Pp.text "type" - ; Pp.space - ; l - ; Pp.space - ; Pp.verbatim ":=" - ; Pp.space - ; r - ]) + Pp.concat + [ Pp.text "type"; Pp.space; l; Pp.space; Pp.verbatim ":="; Pp.space; r ]) in Pp.concat [ inc_; Pp.space; Pp.text "with"; Pp.space; substs ] + ;; let val_ name b = let sep = Pp.concat [ space; i "->"; space ] in let b = Pp.concat ~sep b in Pp.concat [ textf "val %s : " name; b; Pp.newline ] + ;; let assoc k v = Pp.concat [ Type.tuple [ k; v ]; Pp.space; i "list" ] end @@ -211,9 +192,8 @@ end let warnings codes = seq (textf "[@@@warning %S]" codes) newline let opens names = - Pp.concat_map names ~f:(fun name -> - Pp.concat [ textf "open! %s" name; newline ]) + Pp.concat_map names ~f:(fun name -> Pp.concat [ textf "open! %s" name; newline ]) +;; let module_ name body = gen_module "= struct" name body - let record fields = Gen.record ~delim:"=" fields diff --git a/lsp/bin/ocaml/w.mli b/lsp/bin/ocaml/w.mli index 91a171af4..b5ae1ebf2 100644 --- a/lsp/bin/ocaml/w.mli +++ b/lsp/bin/ocaml/w.mli @@ -1,30 +1,23 @@ (** Helpers to generate OCaml code. Consider merging with ML *) type t = unit Pp.t - type w = t val surround : [ `Curly | `Paren | `Square ] -> 'a Pp.t -> 'a Pp.t module Json : sig val invalid_pat : string -> w * w - val typ : string module Literal : sig val str : string -> string - val int : int -> string - val null : string - val bool : bool -> string end val str : string -> string - val int : string -> string - val bool : string -> string end @@ -36,58 +29,34 @@ end module Type : sig val string : w - val int : w - val bool : w - val name : string -> w - val and_ : string -> w -> w - val decl : string -> w -> w - val record : (string * w) list -> w - val field_attrs : field:w -> attrs:Attr.t list -> w - val rec_decls : (string * w) list -> w - val var : string -> w - val poly : (string * w list) list -> w - val app : w -> w list -> w - val tuple : w list -> w - val deriving : w -> record:bool -> w - val opt_attr : w - val opt_field : w -> w - val default : w -> string -> w - val key : string -> w - val variant : (string * w list) list -> w end module Sig : sig val module_ : string -> w -> w - val include_ : string -> (w * w) list -> w - val val_ : string -> w list -> w - val assoc : w -> w -> w end val warnings : string -> w - val module_ : string -> w -> w - val opens : string list -> w - val record : (string * w) list -> w diff --git a/lsp/bin/test_metamodel.ml b/lsp/bin/test_metamodel.ml index df52ea5f5..931412a1a 100644 --- a/lsp/bin/test_metamodel.ml +++ b/lsp/bin/test_metamodel.ml @@ -8,3 +8,4 @@ let () = let json = Yojson.Safe.from_string s in let (_ : Metamodel.t) = Metamodel.t json in close_in read +;; diff --git a/lsp/bin/typescript/ts_types.ml b/lsp/bin/typescript/ts_types.ml index e4767a064..c454410ed 100644 --- a/lsp/bin/typescript/ts_types.ml +++ b/lsp/bin/typescript/ts_types.ml @@ -12,6 +12,7 @@ module Literal = struct | String s -> sprintf "%S" s | Int i -> string_of_int i | Float f -> string_of_float f + ;; let to_dyn : t -> Dyn.t = let open Dyn in @@ -19,6 +20,7 @@ module Literal = struct | String s -> string s | Int i -> int i | Float f -> float f + ;; end module Enum = struct @@ -31,12 +33,14 @@ module Enum = struct function | Literal l -> variant "Literal" [ Literal.to_dyn l ] | Alias l -> variant "Alias" [ string l ] + ;; type t = (string * case) list let to_dyn t = let open Dyn in list (fun (name, case) -> pair string dyn_of_case (name, case)) t + ;; end module type S = sig @@ -74,41 +78,31 @@ module type S = sig and t = decl Named.t val to_dyn : t -> Dyn.t - val dyn_of_typ : typ -> Dyn.t - val dyn_of_field : field -> Dyn.t class map : object method typ : typ -> typ - method sum : typ list -> typ - method interface : interface -> interface - method enum_anon : Enum.t -> Enum.t - method field : field -> field - method t : t -> t end class ['a] fold : object method field : field -> init:'a -> 'a - method ident : ident -> init:'a -> 'a - method t : t -> init:'a -> 'a - method typ : typ -> init:'a -> 'a end end module Make (Ident : sig - type t + type t - val to_dyn : t -> Dyn.t -end) = + val to_dyn : t -> Dyn.t + end) = struct type field_def = | Single of @@ -155,15 +149,16 @@ struct let open Dyn in function | Single { optional; typ } -> - record [ ("optional", bool optional); ("typ", dyn_of_typ typ) ] + record [ "optional", bool optional; "typ", dyn_of_typ typ ] | Pattern { pat : typ; typ : typ } -> - record [ ("pat", dyn_of_typ pat); ("typ", dyn_of_typ typ) ] + record [ "pat", dyn_of_typ pat; "typ", dyn_of_typ typ ] and dyn_of_field f = Named.to_dyn field_def_of_dyn f let dyn_of_interface { fields } = let open Dyn in - record [ ("fields", (list dyn_of_field) fields) ] + record [ "fields", (list dyn_of_field) fields ] + ;; let dyn_of_decl = let open Dyn in @@ -171,6 +166,7 @@ struct | Interface i -> variant "Interface" [ dyn_of_interface i ] | Type t -> variant "Type" [ dyn_of_typ t ] | Enum_anon t -> variant "Enum_anon" [ Enum.to_dyn t ] + ;; let to_dyn t = Named.to_dyn dyn_of_decl t @@ -202,8 +198,7 @@ struct | List t -> self#typ t ~init | Tuple typs | Sum typs -> List.fold_left typs ~init ~f:(fun init f -> self#typ f ~init) - | Record fs -> - List.fold_left fs ~init ~f:(fun init f -> self#field f ~init) + | Record fs -> List.fold_left fs ~init ~f:(fun init f -> self#field f ~init) end class map = @@ -258,15 +253,12 @@ module Unresolved = struct include Make (String) let enum ~name ~constrs : Enum.t Named.t = { Named.name; data = constrs } - - let interface ~name ~fields : interface Named.t = - { Named.name; data = { fields } } - - let pattern_field ~name ~pat ~typ = - { Named.name; data = Pattern { pat; typ } } + let interface ~name ~fields : interface Named.t = { Named.name; data = { fields } } + let pattern_field ~name ~pat ~typ = { Named.name; data = Pattern { pat; typ } } let named_field ?(optional = false) typ name = { Named.name; data = Single { optional; typ } } + ;; end module Ident = struct @@ -280,7 +272,8 @@ module Ident = struct let to_dyn { id; name } = let open Dyn in - record [ ("id", Id.to_dyn id); ("name", String name) ] + record [ "id", Id.to_dyn id; "name", String name ] + ;; let compare t { id; name = _ } = Id.compare t.id id end @@ -322,6 +315,7 @@ module Prim = struct | Self -> variant "Self" [] | Uri -> variant "Uri" [] | Resolved r -> variant "Resolved" [ Ident.to_dyn r ] + ;; let of_string s ~resolve = match String.lowercase_ascii s with @@ -337,6 +331,7 @@ module Prim = struct | "lspobject" -> Object | "uri" -> Uri | _ -> resolve s + ;; end module Resolved = Make (Prim) @@ -344,7 +339,6 @@ module Resolved = Make (Prim) let subst unresolved = object val params = String.Map.empty - val inside = None (* Resolve self references. *) @@ -355,29 +349,29 @@ let subst unresolved = | Some [] -> assert false | Some (x :: _) -> `Resolved x | None -> - if inside = Some n then `Self - else `Unresolved (String.Map.find_exn unresolved n) + if inside = Some n then `Self else `Unresolved (String.Map.find_exn unresolved n) method push x y = let params = String.Map.update params x ~f:(function - | None -> Some [ y ] - | Some [] -> assert false - | Some (y' :: xs) -> if y = y' then Some xs else Some (y :: y' :: xs)) + | None -> Some [ y ] + | Some [] -> assert false + | Some (y' :: xs) -> if y = y' then Some xs else Some (y :: y' :: xs)) in {} method pop x = let params = String.Map.update params x ~f:(function - | None -> - ignore (String.Map.find_exn params x); - None - | Some [] -> assert false - | Some (_ :: xs) -> Some xs) + | None -> + ignore (String.Map.find_exn params x); + None + | Some [] -> assert false + | Some (_ :: xs) -> Some xs) in {} end +;; let rec resolve_all ts ~(names : Ident.t String.Map.t) : Resolved.t list = let names = subst names in @@ -394,10 +388,10 @@ and resolve (t : Unresolved.t) ~names : Resolved.t = and resolve_ident i ~names : Prim.t = Prim.of_string i ~resolve:(fun s -> - match names#resolve s with - | `Resolved s -> s - | `Self -> Self - | `Unresolved s -> Resolved s) + match names#resolve s with + | `Resolved s -> s + | `Self -> Self + | `Unresolved s -> Resolved s) and resolve_type (t : Unresolved.typ) ~names : Resolved.typ = match t with @@ -426,3 +420,4 @@ and resolve_field f ~names : Resolved.field = Pattern { pat; typ } in { f with Named.data } +;; diff --git a/lsp/bin/typescript/ts_types.mli b/lsp/bin/typescript/ts_types.mli index 4a52879bc..aa33961b9 100644 --- a/lsp/bin/typescript/ts_types.mli +++ b/lsp/bin/typescript/ts_types.mli @@ -7,7 +7,6 @@ module Literal : sig | Float of float val to_maybe_quoted_string : t -> string - val to_dyn : t -> Dyn.t end @@ -57,32 +56,22 @@ module type S = sig and t = decl Named.t val to_dyn : t -> Dyn.t - val dyn_of_typ : typ -> Dyn.t - val dyn_of_field : field -> Dyn.t class map : object method enum_anon : Enum.t -> Enum.t - method field : field -> field - method interface : interface -> interface - method sum : typ list -> typ - method t : t -> t - method typ : typ -> typ end class ['a] fold : object method field : field -> init:'a -> 'a - method ident : ident -> init:'a -> 'a - method t : t -> init:'a -> 'a - method typ : typ -> init:'a -> 'a end end @@ -91,11 +80,8 @@ module Unresolved : sig include S with type ident := String.t val enum : name:string -> constrs:Enum.t -> Enum.t Named.t - val interface : name:string -> fields:field list -> interface Named.t - val pattern_field : name:string -> pat:typ -> typ:typ -> field_def Named.t - val named_field : ?optional:bool -> typ -> string -> field_def Named.t end @@ -108,12 +94,11 @@ module Ident : sig } val to_dyn : t -> Dyn.t - val make : string -> t module Top_closure : sig - val top_closure : - key:('a -> t) + val top_closure + : key:('a -> t) -> deps:('a -> 'a list) -> 'a list -> ('a list, 'a list) result @@ -135,11 +120,9 @@ module Prim : sig | Resolved of Ident.t val to_dyn : t -> Dyn.t - val of_string : string -> resolve:(string -> t) -> t end module Resolved : S with type ident := Prim.t -val resolve_all : - Unresolved.t list -> names:Ident.t String.Map.t -> Resolved.t list +val resolve_all : Unresolved.t list -> names:Ident.t String.Map.t -> Resolved.t list diff --git a/lsp/bin/typescript/typescript.ml b/lsp/bin/typescript/typescript.ml index 980195ca4..c8f7847cc 100644 --- a/lsp/bin/typescript/typescript.ml +++ b/lsp/bin/typescript/typescript.ml @@ -3,23 +3,26 @@ open Ts_types let name_table (defns : Unresolved.t list) = List.map defns ~f:(fun (def : _ Named.t) -> - (def.name, (def, Ts_types.Ident.make def.name))) + def.name, (def, Ts_types.Ident.make def.name)) |> String.Map.of_list_reducei ~f:(fun name (v1, id1) (v2, id2) -> - let open Unresolved in - match (v1.Named.data, v2.data) with - | Enum_anon _, _ -> (v1, id1) - | _, Enum_anon _ -> (v2, id2) - | _, _ -> - if v1 = v2 then (v1, id1) - else - let open Dyn in - Code_error.raise "definition conflict" [ ("name", string name) ]) + let open Unresolved in + match v1.Named.data, v2.data with + | Enum_anon _, _ -> v1, id1 + | _, Enum_anon _ -> v2, id2 + | _, _ -> + if v1 = v2 + then v1, id1 + else + let open Dyn in + Code_error.raise "definition conflict" [ "name", string name ]) +;; let resolve_all (defns : Unresolved.t list) = let names = name_table defns in let defns = String.Map.values names |> List.map ~f:fst in let names = String.Map.map ~f:snd names in - (Ts_types.resolve_all defns ~names, names) + Ts_types.resolve_all defns ~names, names +;; module Unresolved = Ts_types.Unresolved open Unresolved @@ -28,15 +31,18 @@ open Metamodel let rename = function | "_InitializeParams" -> "InitializedParams_" | s -> s +;; let reference s = match rename s with | "LSPAny" -> "Json" | s -> s +;; let named ~name s = let name = rename name in Named.make ~name s +;; let baseType (baseType : Metamodel.baseType) : Ts_types.Unresolved.typ = match baseType with @@ -49,6 +55,7 @@ let baseType (baseType : Metamodel.baseType) : Ts_types.Unresolved.typ = | String -> Ident "string" | Boolean -> Ident "boolean" | Null -> Ident "null" +;; let rec typ (type_ : Metamodel.type_) : Ts_types.Unresolved.typ = match type_ with @@ -81,38 +88,41 @@ and literal (l : Metamodel.literalType) : Ts_types.Unresolved.typ = | Integer i -> Literal (Int i) | Record fields -> Record (List.map ~f:field fields) -and field { Metamodel.name; optional; doc = _; type_ } : - Ts_types.Unresolved.field = - let field : Ts_types.Unresolved.field_def = - Single { optional; typ = typ type_ } - in +and field { Metamodel.name; optional; doc = _; type_ } : Ts_types.Unresolved.field = + let field : Ts_types.Unresolved.field_def = Single { optional; typ = typ type_ } in named ~name field +;; let structure - ({ doc = _; extends = _; mixins = _; name; properties } : - Metamodel.structure) : Ts_types.Unresolved.t = + ({ doc = _; extends = _; mixins = _; name; properties } : Metamodel.structure) + : Ts_types.Unresolved.t + = let interface : Ts_types.Unresolved.interface = let fields = List.map properties ~f:field in { fields } in named ~name (Interface interface) +;; let typeAlias ({ name; type_; doc = _ } : Metamodel.typeAlias) = named ~name (Type (typ type_)) +;; let enumeration { doc = _; name; supportsCustomValues = _; type_ = _; values } = named ~name @@ Enum_anon (List.map values ~f:(fun ({ name; value; doc = _ } : enumerationEntry) -> - let case : Enum.case = - match value with - | `Int i -> Literal (Int i) - | `String s -> Literal (String s) - in - (name, case))) + let case : Enum.case = + match value with + | `Int i -> Literal (Int i) + | `String s -> Literal (String s) + in + name, case)) +;; let of_metamodel (m : Metamodel.t) : Ts_types.Unresolved.t list = let structures = List.map m.structures ~f:structure in let type_aliases = List.map m.typeAliases ~f:typeAlias in let enumerations = List.map m.enumerations ~f:enumeration in List.concat [ structures; type_aliases; enumerations ] +;; diff --git a/lsp/bin/typescript/typescript.mli b/lsp/bin/typescript/typescript.mli index ff8827510..5f69c4042 100644 --- a/lsp/bin/typescript/typescript.mli +++ b/lsp/bin/typescript/typescript.mli @@ -2,6 +2,6 @@ open Import val of_metamodel : Metamodel.t -> Ts_types.Unresolved.t list -val resolve_all : - Ts_types.Unresolved.t list +val resolve_all + : Ts_types.Unresolved.t list -> Ts_types.Resolved.t list * Ts_types.Ident.t String.Map.t diff --git a/lsp/src/array_view.ml b/lsp/src/array_view.ml index bf7358bb4..c46054592 100644 --- a/lsp/src/array_view.ml +++ b/lsp/src/array_view.ml @@ -6,7 +6,8 @@ type 'a t = let make ?len arr ~pos = let arr_len = Array.length arr in - if pos < 0 || pos > Array.length arr then + if pos < 0 || pos > Array.length arr + then invalid_arg (Printf.sprintf "Array_view.make: expected pos to be in [0, %d] but received %d" @@ -14,58 +15,62 @@ let make ?len arr ~pos = pos); let length = Option.value len ~default:(arr_len - pos) in let view_last_idx = pos + length in - if view_last_idx > arr_len then + if view_last_idx > arr_len + then invalid_arg (Printf.sprintf - "Array_view.make: view's last idx = %d occurs after the array length \ - = %d" + "Array_view.make: view's last idx = %d occurs after the array length = %d" view_last_idx arr_len); { arr; start = pos; end_excl = pos + length } +;; let offset_index t i = let ix = t.start + i in if ix < t.end_excl then ix else invalid_arg "subarray index out of bounds" +;; let get t i = t.arr.(offset_index t i) - let set t i x = t.arr.(offset_index t i) <- x - let length t = t.end_excl - t.start - let is_empty t = length t = 0 let common_suffix_len ai aj = - if length ai = 0 || length aj = 0 then 0 - else + if length ai = 0 || length aj = 0 + then 0 + else ( let i = ref (length ai - 1) in let j = ref (length aj - 1) in while !i >= 0 && !j >= 0 && get ai !i = get aj !j do decr i; decr j done; - length ai - !i - 1 + length ai - !i - 1) +;; let fold_left = let rec loop arr acc f j i = if Int.equal i j then acc else loop arr (f acc arr.(i)) f j (i + 1) in fun t ~init ~f -> loop t.arr init f t.end_excl t.start +;; let iteri t ~f = for i = 0 to t.end_excl - t.start - 1 do f i t.arr.(t.start + i) done +;; let sub t ~pos ~len = assert (len <= length t); let pos = t.start + pos in make t.arr ~pos ~len +;; let blit t arr ~pos = let len = t.end_excl - t.start in ArrayLabels.blit ~src:t.arr ~src_pos:t.start ~dst:arr ~dst_pos:pos ~len +;; let copy t = Array.init (t.end_excl - t.start) (fun i -> t.arr.(t.start + i)) - let backing_array_pos t p = t.start + p diff --git a/lsp/src/array_view.mli b/lsp/src/array_view.mli index e69f95887..cbc758c4c 100644 --- a/lsp/src/array_view.mli +++ b/lsp/src/array_view.mli @@ -12,23 +12,13 @@ type 'a t val make : ?len:int -> 'a array -> pos:int -> 'a t val get : 'a t -> int -> 'a - val set : 'a t -> int -> 'a -> unit - val is_empty : 'a t -> bool - val length : 'a t -> int - val common_suffix_len : 'a t -> 'a t -> int - val fold_left : 'a t -> init:'acc -> f:('acc -> 'a -> 'acc) -> 'acc - val iteri : 'a t -> f:(int -> 'a -> unit) -> unit - val sub : 'a t -> pos:int -> len:int -> 'a t - val blit : 'a t -> 'a array -> pos:int -> unit - val copy : 'a t -> 'a array - val backing_array_pos : _ t -> int -> int diff --git a/lsp/src/cancel_request.ml b/lsp/src/cancel_request.ml index 97aec9aa8..85232c703 100644 --- a/lsp/src/cancel_request.ml +++ b/lsp/src/cancel_request.ml @@ -6,5 +6,6 @@ let t_of_yojson json = match json with | `Assoc fields -> Json.field_exn fields "id" Jsonrpc.Id.t_of_yojson | _ -> Json.error "invalid id" json +;; -let yojson_of_t id = `Assoc [ ("id", Jsonrpc.Id.yojson_of_t id) ] +let yojson_of_t id = `Assoc [ "id", Jsonrpc.Id.yojson_of_t id ] diff --git a/lsp/src/cli.ml b/lsp/src/cli.ml index ec64103ca..803d9cf86 100644 --- a/lsp/src/cli.ml +++ b/lsp/src/cli.ml @@ -22,21 +22,17 @@ module Arg = struct | Some _ -> raise @@ Arg.Bad "port is already set once" | None -> t.port <- Some p) , description ) + ;; let create () = let t = - { pipe = None - ; port = None - ; stdio = false - ; spec = [] - ; clientProcessId = None - } + { pipe = None; port = None; stdio = false; spec = []; clientProcessId = None } in let spec = - [ ("--pipe", Arg.String (fun p -> t.pipe <- Some p), "set pipe path") + [ "--pipe", Arg.String (fun p -> t.pipe <- Some p), "set pipe path" ; port t ~name:"--socket" ~description:"set the port" ; port t ~name:"--port" ~description:"synonym for --socket" - ; ("--stdio", Arg.Unit (fun () -> t.stdio <- true), "set stdio") + ; "--stdio", Arg.Unit (fun () -> t.stdio <- true), "set stdio" ; ( "--node-ipc" , Arg.Unit (fun () -> raise @@ Arg.Bad "node-ipc isn't supported") , "not supported" ) @@ -47,18 +43,20 @@ module Arg = struct in t.spec <- spec; t + ;; let spec t = t.spec - let clientProcessId t = t.clientProcessId - let channel { pipe; port; stdio; spec = _; clientProcessId = _ } : - (Channel.t, string) result = - match (pipe, port, stdio) with + let channel { pipe; port; stdio; spec = _; clientProcessId = _ } + : (Channel.t, string) result + = + match pipe, port, stdio with | None, None, _ -> Ok Stdio | Some p, None, false -> Ok (Pipe p) | None, Some s, false -> Ok (Socket s) | _, _, _ -> Error "invalid arguments" + ;; end let args ?channel ?clientProcessId () = @@ -72,3 +70,4 @@ let args ?channel ?clientProcessId () = | Some Stdio -> "--stdio" :: args | Some (Pipe pipe) -> "--pipe" :: pipe :: args | Some (Socket port) -> "--socket" :: string_of_int port :: args +;; diff --git a/lsp/src/cli.mli b/lsp/src/cli.mli index a80db7025..ac5e70746 100644 --- a/lsp/src/cli.mli +++ b/lsp/src/cli.mli @@ -5,8 +5,8 @@ module Channel : sig type t = | Stdio - | Pipe of string (** A path to the unix domain socket or windows pipe *) - | Socket of int (** A tcp connection on localhost with the port number *) + | Pipe of string (** A path to the unix domain socket or windows pipe *) + | Socket of int (** A tcp connection on localhost with the port number *) end module Arg : sig diff --git a/lsp/src/client_notification.ml b/lsp/src/client_notification.ml index 6dbe566b6..4fd84c3b5 100644 --- a/lsp/src/client_notification.ml +++ b/lsp/src/client_notification.ml @@ -40,26 +40,20 @@ let method_ = function | WorkDoneProgressCancel _ -> "window/workDoneProgress/cancel" | WorkDoneProgress _ -> Progress.method_ | UnknownNotification n -> n.method_ +;; let yojson_of_t = function - | TextDocumentDidOpen params -> - Some (DidOpenTextDocumentParams.yojson_of_t params) - | TextDocumentDidChange params -> - Some (DidChangeTextDocumentParams.yojson_of_t params) - | TextDocumentDidClose params -> - Some (DidCloseTextDocumentParams.yojson_of_t params) + | TextDocumentDidOpen params -> Some (DidOpenTextDocumentParams.yojson_of_t params) + | TextDocumentDidChange params -> Some (DidChangeTextDocumentParams.yojson_of_t params) + | TextDocumentDidClose params -> Some (DidCloseTextDocumentParams.yojson_of_t params) | Exit -> None | Initialized -> None | ChangeWorkspaceFolders params -> Some (DidChangeWorkspaceFoldersParams.yojson_of_t params) - | ChangeConfiguration params -> - Some (DidChangeConfigurationParams.yojson_of_t params) - | WillSaveTextDocument params -> - Some (WillSaveTextDocumentParams.yojson_of_t params) - | DidSaveTextDocument params -> - Some (DidSaveTextDocumentParams.yojson_of_t params) - | DidChangeWatchedFiles params -> - Some (DidChangeWatchedFilesParams.yojson_of_t params) + | ChangeConfiguration params -> Some (DidChangeConfigurationParams.yojson_of_t params) + | WillSaveTextDocument params -> Some (WillSaveTextDocumentParams.yojson_of_t params) + | DidSaveTextDocument params -> Some (DidSaveTextDocumentParams.yojson_of_t params) + | DidChangeWatchedFiles params -> Some (DidChangeWatchedFilesParams.yojson_of_t params) | DidCreateFiles params -> Some (CreateFilesParams.yojson_of_t params) | DidDeleteFiles params -> Some (DeleteFilesParams.yojson_of_t params) | DidRenameFiles params -> Some (RenameFilesParams.yojson_of_t params) @@ -70,25 +64,20 @@ let yojson_of_t = function | WorkDoneProgress params -> Some ((ProgressParams.yojson_of_t Progress.yojson_of_t) params) | UnknownNotification n -> (n.params :> Json.t option) +;; let of_jsonrpc (r : Jsonrpc.Notification.t) = let open Result.O in let params = r.params in match r.method_ with | "textDocument/didOpen" -> - let+ params = - Json.message_params params DidOpenTextDocumentParams.t_of_yojson - in + let+ params = Json.message_params params DidOpenTextDocumentParams.t_of_yojson in TextDocumentDidOpen params | "textDocument/didChange" -> - let+ params = - Json.message_params params DidChangeTextDocumentParams.t_of_yojson - in + let+ params = Json.message_params params DidChangeTextDocumentParams.t_of_yojson in TextDocumentDidChange params | "textDocument/didClose" -> - let+ params = - Json.message_params params DidCloseTextDocumentParams.t_of_yojson - in + let+ params = Json.message_params params DidCloseTextDocumentParams.t_of_yojson in TextDocumentDidClose params | "exit" -> Ok Exit | "initialized" -> Ok Initialized @@ -98,24 +87,16 @@ let of_jsonrpc (r : Jsonrpc.Notification.t) = in ChangeWorkspaceFolders params | "workspace/didChangeConfiguration" -> - let+ params = - Json.message_params params DidChangeConfigurationParams.t_of_yojson - in + let+ params = Json.message_params params DidChangeConfigurationParams.t_of_yojson in ChangeConfiguration params | "textDocument/willSave" -> - let+ params = - Json.message_params params WillSaveTextDocumentParams.t_of_yojson - in + let+ params = Json.message_params params WillSaveTextDocumentParams.t_of_yojson in WillSaveTextDocument params | "textDocument/didSave" -> - let+ params = - Json.message_params params DidSaveTextDocumentParams.t_of_yojson - in + let+ params = Json.message_params params DidSaveTextDocumentParams.t_of_yojson in DidSaveTextDocument params | "workspace/didChangeWatchedFiles" -> - let+ params = - Json.message_params params DidChangeWatchedFilesParams.t_of_yojson - in + let+ params = Json.message_params params DidChangeWatchedFilesParams.t_of_yojson in DidChangeWatchedFiles params | "workspace/didCreateFiles" -> let+ params = Json.message_params params CreateFilesParams.t_of_yojson in @@ -130,23 +111,21 @@ let of_jsonrpc (r : Jsonrpc.Notification.t) = let+ params = Json.message_params params Cancel_request.t_of_yojson in CancelRequest params | "window/workDoneProgress/cancel" -> - let+ params = - Json.message_params params WorkDoneProgressCancelParams.t_of_yojson - in + let+ params = Json.message_params params WorkDoneProgressCancelParams.t_of_yojson in WorkDoneProgressCancel params | "$/setTrace" -> let+ params = Json.message_params params SetTraceParams.t_of_yojson in SetTrace params | m when m = Progress.method_ -> let+ params = - Json.message_params - params - (ProgressParams.t_of_yojson Progress.t_of_yojson) + Json.message_params params (ProgressParams.t_of_yojson Progress.t_of_yojson) in WorkDoneProgress params | _ -> Ok (UnknownNotification r) +;; let to_jsonrpc t = let method_ = method_ t in let params = yojson_of_t t |> Option.map Jsonrpc.Structured.t_of_yojson in { Jsonrpc.Notification.params; method_ } +;; diff --git a/lsp/src/client_notification.mli b/lsp/src/client_notification.mli index 6651b0432..b7f7dd63b 100644 --- a/lsp/src/client_notification.mli +++ b/lsp/src/client_notification.mli @@ -22,5 +22,4 @@ type t = | UnknownNotification of Jsonrpc.Notification.t val of_jsonrpc : Jsonrpc.Notification.t -> (t, string) result - val to_jsonrpc : t -> Jsonrpc.Notification.t diff --git a/lsp/src/client_request.ml b/lsp/src/client_request.ml index d101d2a04..a5fa385ca 100644 --- a/lsp/src/client_request.ml +++ b/lsp/src/client_request.ml @@ -7,18 +7,12 @@ type _ t = | Initialize : InitializeParams.t -> InitializeResult.t t | TextDocumentHover : HoverParams.t -> Hover.t option t | TextDocumentDefinition : DefinitionParams.t -> Locations.t option t - | TextDocumentDeclaration : - TextDocumentPositionParams.t - -> Locations.t option t + | TextDocumentDeclaration : TextDocumentPositionParams.t -> Locations.t option t | TextDocumentTypeDefinition : TypeDefinitionParams.t -> Locations.t option t | TextDocumentImplementation : ImplementationParams.t -> Locations.t option t | TextDocumentCompletion : CompletionParams.t - -> [ `CompletionList of CompletionList.t - | `List of CompletionItem.t list - ] - option - t + -> [ `CompletionList of CompletionList.t | `List of CompletionItem.t list ] option t | TextDocumentCodeLens : CodeLensParams.t -> CodeLens.t list t | InlayHint : InlayHintParams.t -> InlayHint.t list option t | TextDocumentCodeLensResolve : CodeLens.t -> CodeLens.t t @@ -38,22 +32,16 @@ type _ t = -> [ `DocumentSymbol of DocumentSymbol.t list | `SymbolInformation of SymbolInformation.t list ] - option - t - | WorkspaceSymbol : - WorkspaceSymbolParams.t - -> SymbolInformation.t list option t + option + t + | WorkspaceSymbol : WorkspaceSymbolParams.t -> SymbolInformation.t list option t | DebugEcho : DebugEcho.Params.t -> DebugEcho.Result.t t | DebugTextDocumentGet : DebugTextDocumentGet.Params.t -> DebugTextDocumentGet.Result.t t | TextDocumentReferences : ReferenceParams.t -> Location.t list option t - | TextDocumentHighlight : - DocumentHighlightParams.t - -> DocumentHighlight.t list option t - | TextDocumentFoldingRange : - FoldingRangeParams.t - -> FoldingRange.t list option t + | TextDocumentHighlight : DocumentHighlightParams.t -> DocumentHighlight.t list option t + | TextDocumentFoldingRange : FoldingRangeParams.t -> FoldingRange.t list option t | SignatureHelp : SignatureHelpParams.t -> SignatureHelp.t t | CodeAction : CodeActionParams.t -> CodeActionResult.t t | CodeActionResolve : CodeAction.t -> CodeAction.t t @@ -61,9 +49,7 @@ type _ t = | WillSaveWaitUntilTextDocument : WillSaveTextDocumentParams.t -> TextEdit.t list option t - | TextDocumentFormatting : - DocumentFormattingParams.t - -> TextEdit.t list option t + | TextDocumentFormatting : DocumentFormattingParams.t -> TextEdit.t list option t | TextDocumentOnTypeFormatting : DocumentOnTypeFormattingParams.t -> TextEdit.t list option t @@ -79,14 +65,10 @@ type _ t = -> [ `SemanticTokens of SemanticTokens.t | `SemanticTokensDelta of SemanticTokensDelta.t ] - option - t - | SemanticTokensRange : - SemanticTokensRangeParams.t - -> SemanticTokens.t option t - | LinkedEditingRange : - LinkedEditingRangeParams.t - -> LinkedEditingRanges.t option t + option + t + | SemanticTokensRange : SemanticTokensRangeParams.t -> SemanticTokens.t option t + | LinkedEditingRange : LinkedEditingRangeParams.t -> LinkedEditingRanges.t option t | CallHierarchyIncomingCalls : CallHierarchyIncomingCallsParams.t -> CallHierarchyIncomingCall.t list option t @@ -108,6 +90,7 @@ let yojson_of_DocumentSymbol ds : Json.t = | `DocumentSymbol ds -> Json.To.list DocumentSymbol.yojson_of_t ds | `SymbolInformation si -> Json.To.list SymbolInformation.yojson_of_t si) ds +;; let yojson_of_Completion ds : Json.t = Json.Option.yojson_of_t @@ -115,6 +98,7 @@ let yojson_of_Completion ds : Json.t = | `CompletionList cs -> CompletionList.yojson_of_t cs | `List xs -> `List (List.map xs ~f:CompletionItem.yojson_of_t)) ds +;; let yojson_of_SemanticTokensDelta ds : Json.t = Json.Option.yojson_of_t @@ -122,15 +106,15 @@ let yojson_of_SemanticTokensDelta ds : Json.t = | `SemanticTokens st -> SemanticTokens.yojson_of_t st | `SemanticTokensDelta st -> SemanticTokensDelta.yojson_of_t st) ds +;; let yojson_of_result (type a) (req : a t) (result : a) = - match (req, result) with + match req, result with | Shutdown, () -> `Null | Initialize _, result -> InitializeResult.yojson_of_t result | TextDocumentDeclaration _, result -> Json.Conv.yojson_of_option Locations.yojson_of_t result - | TextDocumentHover _, result -> - Json.Option.yojson_of_t Hover.yojson_of_t result + | TextDocumentHover _, result -> Json.Option.yojson_of_t Hover.yojson_of_t result | TextDocumentDefinition _, result -> Json.Option.yojson_of_t Locations.yojson_of_t result | TextDocumentTypeDefinition _, result -> @@ -149,8 +133,7 @@ let yojson_of_result (type a) (req : a t) (result : a) = | TextDocumentRename _, result -> WorkspaceEdit.yojson_of_t result | DocumentSymbol _, result -> yojson_of_DocumentSymbol result | DebugEcho _, result -> DebugEcho.Result.yojson_of_t result - | DebugTextDocumentGet _, result -> - DebugTextDocumentGet.Result.yojson_of_t result + | DebugTextDocumentGet _, result -> DebugTextDocumentGet.Result.yojson_of_t result | TextDocumentReferences _, result -> Json.Option.yojson_of_t (Json.To.list Location.yojson_of_t) result | TextDocumentHighlight _, result -> @@ -176,10 +159,8 @@ let yojson_of_result (type a) (req : a t) (result : a) = Json.Option.yojson_of_t (Json.To.list SymbolInformation.yojson_of_t) result | TextDocumentColorPresentation _, result -> Json.To.list ColorPresentation.yojson_of_t result - | TextDocumentColor _, result -> - Json.To.list ColorInformation.yojson_of_t result - | SelectionRange _, result -> - Json.yojson_of_list SelectionRange.yojson_of_t result + | TextDocumentColor _, result -> Json.To.list ColorInformation.yojson_of_t result + | SelectionRange _, result -> Json.yojson_of_list SelectionRange.yojson_of_t result | SemanticTokensFull _, result -> Json.Option.yojson_of_t SemanticTokens.yojson_of_t result | SemanticTokensDelta _, result -> yojson_of_SemanticTokensDelta result @@ -188,23 +169,17 @@ let yojson_of_result (type a) (req : a t) (result : a) = | LinkedEditingRange _, result -> Json.Option.yojson_of_t LinkedEditingRanges.yojson_of_t result | CallHierarchyIncomingCalls _, result -> - Json.Option.yojson_of_t - (Json.To.list CallHierarchyIncomingCall.yojson_of_t) - result + Json.Option.yojson_of_t (Json.To.list CallHierarchyIncomingCall.yojson_of_t) result | CallHierarchyOutgoingCalls _, result -> - Json.Option.yojson_of_t - (Json.To.list CallHierarchyOutgoingCall.yojson_of_t) - result - | WillCreateFiles _, result -> - Json.Option.yojson_of_t WorkspaceEdit.yojson_of_t result - | WillDeleteFiles _, result -> - Json.Option.yojson_of_t WorkspaceEdit.yojson_of_t result - | WillRenameFiles _, result -> - Json.Option.yojson_of_t WorkspaceEdit.yojson_of_t result + Json.Option.yojson_of_t (Json.To.list CallHierarchyOutgoingCall.yojson_of_t) result + | WillCreateFiles _, result -> Json.Option.yojson_of_t WorkspaceEdit.yojson_of_t result + | WillDeleteFiles _, result -> Json.Option.yojson_of_t WorkspaceEdit.yojson_of_t result + | WillRenameFiles _, result -> Json.Option.yojson_of_t WorkspaceEdit.yojson_of_t result | ExecuteCommand _, result -> result | InlayHint _, result -> Json.Option.yojson_of_t (Json.To.list InlayHint.yojson_of_t) result | UnknownRequest _, resp -> resp +;; type packed = E : 'r t -> packed @@ -346,6 +321,7 @@ let of_jsonrpc (r : Jsonrpc.Request.t) = let+ params = parse WillSaveTextDocumentParams.t_of_yojson in E (WillSaveWaitUntilTextDocument params) | meth -> Ok (E (UnknownRequest { meth; params = r.params })) +;; let method_ (type a) (t : a t) = match t with @@ -395,6 +371,7 @@ let method_ (type a) (t : a t) = | WillSaveWaitUntilTextDocument _ -> "textDocument/willSaveWaitUntil" | InlayHint _ -> "textDocument/inlayHint" | UnknownRequest { meth; _ } -> meth +;; let params = let ret x = Some (Jsonrpc.Structured.t_of_yojson x) in @@ -407,33 +384,26 @@ let params = | DocumentSymbol params -> ret (DocumentSymbolParams.yojson_of_t params) | TextDocumentHover params -> ret (HoverParams.yojson_of_t params) | TextDocumentDefinition params -> ret (DefinitionParams.yojson_of_t params) - | TextDocumentTypeDefinition params -> - ret (TypeDefinitionParams.yojson_of_t params) - | TextDocumentImplementation params -> - ret (ImplementationParams.yojson_of_t params) + | TextDocumentTypeDefinition params -> ret (TypeDefinitionParams.yojson_of_t params) + | TextDocumentImplementation params -> ret (ImplementationParams.yojson_of_t params) | TextDocumentReferences params -> ret (ReferenceParams.yojson_of_t params) | TextDocumentCodeLens params -> ret (CodeLensParams.yojson_of_t params) | TextDocumentPrepareCallHierarchy params -> ret (CallHierarchyPrepareParams.yojson_of_t params) - | TextDocumentPrepareRename params -> - ret (PrepareRenameParams.yojson_of_t params) + | TextDocumentPrepareRename params -> ret (PrepareRenameParams.yojson_of_t params) | TextDocumentRangeFormatting params -> ret (DocumentRangeFormattingParams.yojson_of_t params) | TextDocumentRename params -> ret (RenameParams.yojson_of_t params) - | TextDocumentHighlight params -> - ret (DocumentHighlightParams.yojson_of_t params) - | TextDocumentFoldingRange params -> - ret (FoldingRangeParams.yojson_of_t params) + | TextDocumentHighlight params -> ret (DocumentHighlightParams.yojson_of_t params) + | TextDocumentFoldingRange params -> ret (FoldingRangeParams.yojson_of_t params) | SignatureHelp params -> ret (SignatureHelpParams.yojson_of_t params) | CodeAction params -> ret (CodeActionParams.yojson_of_t params) | CodeActionResolve params -> ret (CodeAction.yojson_of_t params) | DebugEcho params -> ret (DebugEcho.Params.yojson_of_t params) - | DebugTextDocumentGet params -> - ret (DebugTextDocumentGet.Params.yojson_of_t params) + | DebugTextDocumentGet params -> ret (DebugTextDocumentGet.Params.yojson_of_t params) | TextDocumentOnTypeFormatting params -> ret (DocumentOnTypeFormattingParams.yojson_of_t params) - | TextDocumentFormatting params -> - ret (DocumentFormattingParams.yojson_of_t params) + | TextDocumentFormatting params -> ret (DocumentFormattingParams.yojson_of_t params) | TextDocumentLink params -> ret (DocumentLinkParams.yojson_of_t params) | TextDocumentLinkResolve params -> ret (DocumentLink.yojson_of_t params) | WorkspaceSymbol params -> ret (WorkspaceSymbolParams.yojson_of_t params) @@ -445,12 +415,9 @@ let params = | SelectionRange params -> ret (SelectionRangeParams.yojson_of_t params) | ExecuteCommand params -> ret (ExecuteCommandParams.yojson_of_t params) | SemanticTokensFull params -> ret (SemanticTokensParams.yojson_of_t params) - | SemanticTokensDelta params -> - ret (SemanticTokensDeltaParams.yojson_of_t params) - | SemanticTokensRange params -> - ret (SemanticTokensRangeParams.yojson_of_t params) - | LinkedEditingRange params -> - ret (LinkedEditingRangeParams.yojson_of_t params) + | SemanticTokensDelta params -> ret (SemanticTokensDeltaParams.yojson_of_t params) + | SemanticTokensRange params -> ret (SemanticTokensRangeParams.yojson_of_t params) + | LinkedEditingRange params -> ret (LinkedEditingRangeParams.yojson_of_t params) | CallHierarchyIncomingCalls params -> ret (CallHierarchyIncomingCallsParams.yojson_of_t params) | CallHierarchyOutgoingCalls params -> @@ -464,11 +431,13 @@ let params = ret (WillSaveTextDocumentParams.yojson_of_t params) | InlayHint params -> ret (InlayHintParams.yojson_of_t params) | UnknownRequest { params; _ } -> params +;; let to_jsonrpc_request t ~id = let method_ = method_ t in let params = params t in Jsonrpc.Request.create ~id ~method_ ?params () +;; let response_of_json (type a) (t : a t) (json : Json.t) : a = let open Json.Conv in @@ -496,20 +465,16 @@ let response_of_json (type a) (t : a t) (json : Json.t) : a = | TextDocumentRangeFormatting _ -> option_of_yojson (list_of_yojson TextEdit.t_of_yojson) json | TextDocumentRename _ -> WorkspaceEdit.t_of_yojson json - | TextDocumentLink _ -> - option_of_yojson (list_of_yojson DocumentLink.t_of_yojson) json + | TextDocumentLink _ -> option_of_yojson (list_of_yojson DocumentLink.t_of_yojson) json | TextDocumentLinkResolve _ -> DocumentLink.t_of_yojson json - | TextDocumentMoniker _ -> - option_of_yojson (list_of_yojson Moniker.t_of_yojson) json + | TextDocumentMoniker _ -> option_of_yojson (list_of_yojson Moniker.t_of_yojson) json | DocumentSymbol _ -> option_of_yojson (Json.Of.untagged_union "document_symbols" - [ (fun json -> - `DocumentSymbol (list_of_yojson DocumentSymbol.t_of_yojson json)) + [ (fun json -> `DocumentSymbol (list_of_yojson DocumentSymbol.t_of_yojson json)) ; (fun json -> - `SymbolInformation - (list_of_yojson SymbolInformation.t_of_yojson json)) + `SymbolInformation (list_of_yojson SymbolInformation.t_of_yojson json)) ]) json | WorkspaceSymbol _ -> @@ -532,8 +497,7 @@ let response_of_json (type a) (t : a t) (json : Json.t) : a = option_of_yojson (list_of_yojson TextEdit.t_of_yojson) json | TextDocumentOnTypeFormatting _ -> option_of_yojson (list_of_yojson TextEdit.t_of_yojson) json - | TextDocumentColorPresentation _ -> - list_of_yojson ColorPresentation.t_of_yojson json + | TextDocumentColorPresentation _ -> list_of_yojson ColorPresentation.t_of_yojson json | TextDocumentColor _ -> list_of_yojson ColorInformation.t_of_yojson json | SelectionRange _ -> list_of_yojson SelectionRange.t_of_yojson json | ExecuteCommand _ -> json @@ -543,13 +507,11 @@ let response_of_json (type a) (t : a t) (json : Json.t) : a = (Json.Of.untagged_union "semantic_tokens" [ (fun json -> `SemanticTokens (SemanticTokens.t_of_yojson json)) - ; (fun json -> - `SemanticTokensDelta (SemanticTokensDelta.t_of_yojson json)) + ; (fun json -> `SemanticTokensDelta (SemanticTokensDelta.t_of_yojson json)) ]) json | SemanticTokensRange _ -> option_of_yojson SemanticTokens.t_of_yojson json - | LinkedEditingRange _ -> - option_of_yojson LinkedEditingRanges.t_of_yojson json + | LinkedEditingRange _ -> option_of_yojson LinkedEditingRanges.t_of_yojson json | CallHierarchyIncomingCalls _ -> option_of_yojson (list_of_yojson CallHierarchyIncomingCall.t_of_yojson) json | CallHierarchyOutgoingCalls _ -> @@ -559,6 +521,7 @@ let response_of_json (type a) (t : a t) (json : Json.t) : a = | WillRenameFiles _ -> option_of_yojson WorkspaceEdit.t_of_yojson json | InlayHint _ -> option_of_yojson (list_of_yojson InlayHint.t_of_yojson) json | UnknownRequest _ -> json +;; let text_document (type a) (t : a t) f : TextDocumentIdentifier.t option = match t with @@ -608,3 +571,4 @@ let text_document (type a) (t : a t) f : TextDocumentIdentifier.t option = | WillDeleteFiles _ -> None | WillRenameFiles _ -> None | UnknownRequest { meth; params } -> f ~meth ~params +;; diff --git a/lsp/src/client_request.mli b/lsp/src/client_request.mli index 4dd1d5b23..456b209c0 100644 --- a/lsp/src/client_request.mli +++ b/lsp/src/client_request.mli @@ -7,18 +7,12 @@ type _ t = | Initialize : InitializeParams.t -> InitializeResult.t t | TextDocumentHover : HoverParams.t -> Hover.t option t | TextDocumentDefinition : DefinitionParams.t -> Locations.t option t - | TextDocumentDeclaration : - TextDocumentPositionParams.t - -> Locations.t option t + | TextDocumentDeclaration : TextDocumentPositionParams.t -> Locations.t option t | TextDocumentTypeDefinition : TypeDefinitionParams.t -> Locations.t option t | TextDocumentImplementation : ImplementationParams.t -> Locations.t option t | TextDocumentCompletion : CompletionParams.t - -> [ `CompletionList of CompletionList.t - | `List of CompletionItem.t list - ] - option - t + -> [ `CompletionList of CompletionList.t | `List of CompletionItem.t list ] option t | TextDocumentCodeLens : CodeLensParams.t -> CodeLens.t list t | InlayHint : InlayHintParams.t -> InlayHint.t list option t | TextDocumentCodeLensResolve : CodeLens.t -> CodeLens.t t @@ -38,22 +32,16 @@ type _ t = -> [ `DocumentSymbol of DocumentSymbol.t list | `SymbolInformation of SymbolInformation.t list ] - option - t - | WorkspaceSymbol : - WorkspaceSymbolParams.t - -> SymbolInformation.t list option t + option + t + | WorkspaceSymbol : WorkspaceSymbolParams.t -> SymbolInformation.t list option t | DebugEcho : DebugEcho.Params.t -> DebugEcho.Result.t t | DebugTextDocumentGet : DebugTextDocumentGet.Params.t -> DebugTextDocumentGet.Result.t t | TextDocumentReferences : ReferenceParams.t -> Location.t list option t - | TextDocumentHighlight : - DocumentHighlightParams.t - -> DocumentHighlight.t list option t - | TextDocumentFoldingRange : - FoldingRangeParams.t - -> FoldingRange.t list option t + | TextDocumentHighlight : DocumentHighlightParams.t -> DocumentHighlight.t list option t + | TextDocumentFoldingRange : FoldingRangeParams.t -> FoldingRange.t list option t | SignatureHelp : SignatureHelpParams.t -> SignatureHelp.t t | CodeAction : CodeActionParams.t -> CodeActionResult.t t | CodeActionResolve : CodeAction.t -> CodeAction.t t @@ -61,9 +49,7 @@ type _ t = | WillSaveWaitUntilTextDocument : WillSaveTextDocumentParams.t -> TextEdit.t list option t - | TextDocumentFormatting : - DocumentFormattingParams.t - -> TextEdit.t list option t + | TextDocumentFormatting : DocumentFormattingParams.t -> TextEdit.t list option t | TextDocumentOnTypeFormatting : DocumentOnTypeFormattingParams.t -> TextEdit.t list option t @@ -79,14 +65,10 @@ type _ t = -> [ `SemanticTokens of SemanticTokens.t | `SemanticTokensDelta of SemanticTokensDelta.t ] - option - t - | SemanticTokensRange : - SemanticTokensRangeParams.t - -> SemanticTokens.t option t - | LinkedEditingRange : - LinkedEditingRangeParams.t - -> LinkedEditingRanges.t option t + option + t + | SemanticTokensRange : SemanticTokensRangeParams.t -> SemanticTokens.t option t + | LinkedEditingRange : LinkedEditingRangeParams.t -> LinkedEditingRanges.t option t | CallHierarchyIncomingCalls : CallHierarchyIncomingCallsParams.t -> CallHierarchyIncomingCall.t list option t @@ -107,14 +89,12 @@ val yojson_of_result : 'a t -> 'a -> Json.t type packed = E : 'r t -> packed val of_jsonrpc : Jsonrpc.Request.t -> (packed, string) Result.t - val to_jsonrpc_request : _ t -> id:Jsonrpc.Id.t -> Jsonrpc.Request.t - val response_of_json : 'a t -> Json.t -> 'a -val text_document : - _ t - -> ( meth:string +val text_document + : _ t + -> (meth:string -> params:Jsonrpc.Structured.t option -> TextDocumentIdentifier.t option) -> TextDocumentIdentifier.t option diff --git a/lsp/src/diff.ml b/lsp/src/diff.ml index cc338ce0f..7639c1fe0 100644 --- a/lsp/src/diff.ml +++ b/lsp/src/diff.ml @@ -14,56 +14,48 @@ module Simple_diff = struct let line_map old_lines new_lines = let _, map = - Array.fold_left - old_lines - ~init:(0, Substring.Map.empty) - ~f:(fun (i, m) line -> - ( i + 1 - , Substring.Map.update m ~key:line ~f:(function - | None -> Some [ i ] - | Some xs -> Some (i :: xs)) )) + Array.fold_left old_lines ~init:(0, Substring.Map.empty) ~f:(fun (i, m) line -> + ( i + 1 + , Substring.Map.update m ~key:line ~f:(function + | None -> Some [ i ] + | Some xs -> Some (i :: xs)) )) in Array.map new_lines ~f:(fun x -> - Substring.Map.find_opt x map |> Option.value ~default:[]) + Substring.Map.find_opt x map |> Option.value ~default:[]) + ;; let longest_subsequence (map : int list array) old_lines new_lines = let overlap = ref Int.Map.empty in - let sub_start_old = ref 0 in let sub_start_new = ref 0 in let sub_length = ref 0 in - let old_lines_pos = Array_view.backing_array_pos old_lines 0 in let old_len = Array_view.length old_lines in Array_view.iteri new_lines ~f:(fun inew _v -> - let overlap' = ref Int.Map.empty in - (* where does the new line appear in the old text *) - let old_indices = map.(Array_view.backing_array_pos new_lines inew) in - List.iter old_indices ~f:(fun iold -> - let iold = iold - old_lines_pos in - if iold >= 0 && iold < old_len then ( - let o = - 1 - + (Int.Map.find_opt (iold - 1) !overlap - |> Option.value ~default:0) - in - overlap' := Int.Map.add !overlap' ~key:iold ~data:o; - - if o > !sub_length then ( - sub_length := o; - sub_start_old := iold - o + 1; - sub_start_new := inew - o + 1))); - - overlap := !overlap'); - - (!sub_start_new, !sub_start_old, !sub_length) + let overlap' = ref Int.Map.empty in + (* where does the new line appear in the old text *) + let old_indices = map.(Array_view.backing_array_pos new_lines inew) in + List.iter old_indices ~f:(fun iold -> + let iold = iold - old_lines_pos in + if iold >= 0 && iold < old_len + then ( + let o = 1 + (Int.Map.find_opt (iold - 1) !overlap |> Option.value ~default:0) in + overlap' := Int.Map.add !overlap' ~key:iold ~data:o; + if o > !sub_length + then ( + sub_length := o; + sub_start_old := iold - o + 1; + sub_start_new := inew - o + 1))); + overlap := !overlap'); + !sub_start_new, !sub_start_old, !sub_length + ;; let get_diff old_lines new_lines = let old_lines = Array.of_list old_lines in let new_lines = Array.of_list new_lines in let map = line_map old_lines new_lines in let rec get_diff' old_lines new_lines = - match (Array_view.is_empty old_lines, Array_view.is_empty new_lines) with + match Array_view.is_empty old_lines, Array_view.is_empty new_lines with | true, true -> [] | false, true -> [ Deleted { lines = Array_view.length old_lines } ] | true, false -> [ Added new_lines ] @@ -71,15 +63,11 @@ module Simple_diff = struct let sub_start_new, sub_start_old, sub_length = longest_subsequence map old_lines new_lines in - if sub_length = 0 then - [ Deleted { lines = Array_view.length old_lines }; Added new_lines ] - else - let old_lines_presubseq = - Array_view.sub ~pos:0 ~len:sub_start_old old_lines - in - let new_lines_presubseq = - Array_view.sub ~pos:0 ~len:sub_start_new new_lines - in + if sub_length = 0 + then [ Deleted { lines = Array_view.length old_lines }; Added new_lines ] + else ( + let old_lines_presubseq = Array_view.sub ~pos:0 ~len:sub_start_old old_lines in + let new_lines_presubseq = Array_view.sub ~pos:0 ~len:sub_start_new new_lines in let old_lines_postsubseq = let start_index = sub_start_old + sub_length in let len = Array_view.length old_lines - start_index in @@ -94,10 +82,11 @@ module Simple_diff = struct [ get_diff' old_lines_presubseq new_lines_presubseq ; [ Equal { lines = sub_length } ] ; get_diff' old_lines_postsubseq new_lines_postsubseq - ] + ]) in let make a = Array_view.make ~pos:0 a in get_diff' (make old_lines) (make new_lines) + ;; end type edit = @@ -111,9 +100,9 @@ type edit = let text_edit ~line edit = let deleted_lines, added_lines = match edit with - | Insert adds -> (0, Some adds) - | Replace { deleted; added } -> (deleted, Some added) - | Delete { lines } -> (lines, None) + | Insert adds -> 0, Some adds + | Replace { deleted; added } -> deleted, Some added + | Delete { lines } -> lines, None in let start = { Position.character = 0; line } in let end_ = { Position.character = 0; line = line + deleted_lines } in @@ -124,18 +113,21 @@ let text_edit ~line edit = | Some adds -> Substring.concat adds in { TextEdit.newText; range } +;; let split_lines = let rec loop acc s len i = - if i >= len then acc - else + if i >= len + then acc + else ( match String.index_from_opt s i '\n' with | None -> Substring.of_slice s ~pos:i ~len:(len - i) :: acc | Some j -> let acc = Substring.of_slice s ~pos:i ~len:(j - i + 1) :: acc in - loop acc s len (j + 1) + loop acc s len (j + 1)) in fun s -> List.rev @@ loop [] s (String.length s) 0 +;; let edit ~from:orig ~to_:formatted : TextEdit.t list = let line, prev_deleted_lines, edits_rev = @@ -147,28 +139,27 @@ let edit ~from:orig ~to_:formatted : TextEdit.t list = ~f:(fun (line, prev_deleted_lines, edits_rev) edit -> match (edit : Simple_diff.diff) with | Deleted { lines = deleted_lines } -> - (line, deleted_lines + prev_deleted_lines, edits_rev) + line, deleted_lines + prev_deleted_lines, edits_rev | Added added_lines -> let edit = text_edit ~line - (if prev_deleted_lines > 0 then - Replace - { deleted = prev_deleted_lines; added = added_lines } + (if prev_deleted_lines > 0 + then Replace { deleted = prev_deleted_lines; added = added_lines } else Insert added_lines) in - (line + prev_deleted_lines, 0, edit :: edits_rev) + line + prev_deleted_lines, 0, edit :: edits_rev | Equal { lines } -> let edits_rev = - if prev_deleted_lines > 0 then - text_edit ~line (Delete { lines = prev_deleted_lines }) - :: edits_rev + if prev_deleted_lines > 0 + then text_edit ~line (Delete { lines = prev_deleted_lines }) :: edits_rev else edits_rev in - (line + prev_deleted_lines + lines, 0, edits_rev)) + line + prev_deleted_lines + lines, 0, edits_rev) in List.rev @@ - if prev_deleted_lines > 0 then - text_edit ~line (Delete { lines = prev_deleted_lines }) :: edits_rev + if prev_deleted_lines > 0 + then text_edit ~line (Delete { lines = prev_deleted_lines }) :: edits_rev else edits_rev +;; diff --git a/lsp/src/extension.ml b/lsp/src/extension.ml index 1c27cbc1c..dcfe4ea21 100644 --- a/lsp/src/extension.ml +++ b/lsp/src/extension.ml @@ -10,62 +10,59 @@ module DebugEcho = struct let t_of_yojson = (let _tp_loc = "lsp/src/extension.ml.DebugEcho.T.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let message_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := - field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> - if - Ppx_yojson_conv_lib.( ! ) - Ppx_yojson_conv_lib.Yojson_conv.record_check_extra_fields - then extra := field_name :: Ppx_yojson_conv_lib.( ! ) extra - else ()); + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> + if Ppx_yojson_conv_lib.( ! ) + Ppx_yojson_conv_lib.Yojson_conv.record_check_extra_fields + then extra := field_name :: Ppx_yojson_conv_lib.( ! ) extra + else ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.Some message_value -> - { message = message_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) message_field) - Ppx_yojson_conv_lib.Option.None - , "message" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.Some message_value -> + { message = message_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) message_field) + Ppx_yojson_conv_lib.Option.None + , "message" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -78,7 +75,8 @@ module DebugEcho = struct ("message", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -98,10 +96,12 @@ module DebugTextDocumentGet = struct let yojson_of_t = function | None -> `Null | Some s -> `String s + ;; let t_of_yojson = function | `Null -> None | `String s -> Some s | json -> Json.error "DebugTextDocumentGet" json + ;; end end diff --git a/lsp/src/header.ml b/lsp/src/header.ml index 630003f98..5ab76f996 100644 --- a/lsp/src/header.ml +++ b/lsp/src/header.ml @@ -4,13 +4,11 @@ type t = } let content_type t = t.content_type - let content_length t = t.content_length module Private = struct module Key = struct let content_length = "Content-Length" - let content_type = "Content-Type" end end @@ -32,8 +30,10 @@ let to_string { content_length; content_type } = line Key.content_type content_type; add crlf; Buffer.contents b +;; let default_content_type = "application/vscode-jsonrpc; charset=utf-8" let create ?(content_type = default_content_type) ~content_length () = { content_length; content_type } +;; diff --git a/lsp/src/header.mli b/lsp/src/header.mli index a7efed410..d1052ca1c 100644 --- a/lsp/src/header.mli +++ b/lsp/src/header.mli @@ -3,17 +3,13 @@ open! Import type t val content_length : t -> int - val content_type : t -> string - val create : ?content_type:string -> content_length:int -> unit -> t - val to_string : t -> string module Private : sig module Key : sig val content_length : string - val content_type : string end end diff --git a/lsp/src/import.ml b/lsp/src/import.ml index f35d0c121..9b3159b7e 100644 --- a/lsp/src/import.ml +++ b/lsp/src/import.ml @@ -18,25 +18,25 @@ module String = struct include StringLabels let index = index_opt - let is_empty s = length s = 0 let rec check_prefix s ~prefix len i = i = len || (s.[i] = prefix.[i] && check_prefix s ~prefix len (i + 1)) + ;; let lsplit2 s ~on = match index s on with | None -> None - | Some i -> - Some (sub s ~pos:0 ~len:i, sub s ~pos:(i + 1) ~len:(length s - i - 1)) + | Some i -> Some (sub s ~pos:0 ~len:i, sub s ~pos:(i + 1) ~len:(length s - i - 1)) + ;; let is_prefix s ~prefix = let len = length s in let prefix_len = length prefix in len >= prefix_len && check_prefix s ~prefix prefix_len 0 + ;; - let add_prefix_if_not_exists s ~prefix = - if is_prefix s ~prefix then s else prefix ^ s + let add_prefix_if_not_exists s ~prefix = if is_prefix s ~prefix then s else prefix ^ s let next_occurrence ~pattern text from = let plen = String.length pattern in @@ -44,16 +44,19 @@ module String = struct let i = ref from and j = ref 0 in while !i <= last && !j < plen do - if text.[!i + !j] <> pattern.[!j] then ( + if text.[!i + !j] <> pattern.[!j] + then ( incr i; j := 0) else incr j done; if !j < plen then raise Not_found else !i + ;; let replace_all ~pattern ~with_ text = - if pattern = "" then text - else + if pattern = "" + then text + else ( match next_occurrence ~pattern text 0 with | exception Not_found -> text | j0 -> @@ -68,7 +71,8 @@ module String = struct | j' -> aux i' j' in aux 0 j0; - Buffer.contents buffer + Buffer.contents buffer) + ;; module Map = MoreLabels.Map.Make (String) end @@ -82,27 +86,22 @@ module Json = struct type t = Ppx_yojson_conv_lib.Yojson.Safe.t let to_string t = Yojson.Safe.to_string t - let of_string s = Yojson.Safe.from_string s - let yojson_of_t x = x - let t_of_yojson x = x - let error = Ppx_yojson_conv_lib.Yojson_conv.of_yojson_error - let yojson_of_list = Ppx_yojson_conv_lib.Yojson_conv.yojson_of_list module Jsonable = Ppx_yojson_conv_lib.Yojsonable let bool b = `Bool b - let field fields name conv = List.assoc_opt name fields |> Option.map conv let field_exn fields name conv = match field fields name conv with | Some f -> f | None -> error ("missing field: " ^ name) (`Assoc fields) + ;; module Conv = struct include Ppx_yojson_conv_lib.Yojson_conv @@ -112,13 +111,13 @@ module Json = struct let ( <|> ) c1 c2 json = match c1 json with | s -> s - | (exception Jsonrpc.Json.Of_json (_, _)) - | (exception Conv.Of_yojson_error (_, _)) -> c2 json + | (exception Jsonrpc.Json.Of_json (_, _)) | (exception Conv.Of_yojson_error (_, _)) + -> c2 json + ;; end module Object = struct type json = t - type nonrec t = (string * t) list let yojson_of_t t : json = `Assoc t @@ -127,6 +126,7 @@ module Json = struct match t with | `Assoc t -> t | json -> error "object expected" json + ;; end module Option = struct @@ -135,10 +135,12 @@ module Json = struct let yojson_of_t f = function | None -> `Null | Some x -> f x + ;; let t_of_yojson f = function | `Null -> None | json -> Some (f json) + ;; end module Of = struct @@ -146,49 +148,61 @@ module Json = struct let pair f g json = match json with - | `List [ x; y ] -> (f x, g y) + | `List [ x; y ] -> f x, g y | json -> error "pair" json + ;; let int_pair = let int = Ppx_yojson_conv_lib.Yojson_conv.int_of_yojson in pair int int + ;; let untagged_union (type a) name (xs : (t -> a) list) (json : t) : a = match List.find_map xs ~f:(fun conv -> - try Some (conv json) - with Ppx_yojson_conv_lib.Yojson_conv.Of_yojson_error (_, _) -> - None) + try Some (conv json) with + | Ppx_yojson_conv_lib.Yojson_conv.Of_yojson_error (_, _) -> None) with | None -> error name json | Some x -> x - - let literal_field (type a) (name : string) (k : string) (v : string) - (f : t -> a) (json : t) : a = + ;; + + let literal_field + (type a) + (name : string) + (k : string) + (v : string) + (f : t -> a) + (json : t) + : a + = match json with - | `Assoc xs -> ( + | `Assoc xs -> let ks, xs = List.partition_map xs ~f:(fun (k', v') -> - if k = k' then - if `String v = v' then Left k - else error (sprintf "%s: incorrect key %s" name k) json - else Right (k', v')) + if k = k' + then + if `String v = v' + then Left k + else error (sprintf "%s: incorrect key %s" name k) json + else Right (k', v')) in - match ks with - | [] -> error (sprintf "%s: key %s not found" name k) json - | [ _ ] -> f (`Assoc xs) - | _ :: _ -> error (sprintf "%s: multiple keys %s" name k) json) + (match ks with + | [] -> error (sprintf "%s: key %s not found" name k) json + | [ _ ] -> f (`Assoc xs) + | _ :: _ -> error (sprintf "%s: multiple keys %s" name k) json) | _ -> error (sprintf "%s: not a record (key: %s)" name k) json + ;; end module To = struct let list f xs = `List (List.map ~f xs) - let literal_field (type a) (k : string) (v : string) (f : a -> t) (t : a) : - t = + let literal_field (type a) (k : string) (v : string) (f : a -> t) (t : a) : t = match f t with | `Assoc xs -> `Assoc ((k, `String v) :: xs) | _ -> invalid_arg "To.literal_field" + ;; let int_pair (x, y) = `List [ `Int x; `Int y ] end @@ -199,10 +213,12 @@ module Json = struct let t_of_yojson f = function | `Null -> None | json -> Some (f json) + ;; let yojson_of_t f = function | None -> assert false | Some s -> f s + ;; end module Assoc = struct @@ -214,38 +230,42 @@ module Json = struct | `String s -> s | json -> error "Json.Assoc.yojson_of_t not a string key" json in - `Assoc (List.map xs ~f:(fun (k, v) -> (f k, g v))) + `Assoc (List.map xs ~f:(fun (k, v) -> f k, g v)) + ;; let t_of_yojson f g json = let f s = f (`String s) in match json with - | `Assoc xs -> List.map xs ~f:(fun (k, v) -> (f k, g v)) + | `Assoc xs -> List.map xs ~f:(fun (k, v) -> f k, g v) | _ -> error "Json.Assoc.t_of_yojson: not an object" json + ;; end module Void = struct type t let t_of_yojson = error "Void.t" - let yojson_of_t (_ : t) = assert false end let read_json_params f v = match f (Jsonrpc.Structured.yojson_of_t v) with | r -> Ok r - | exception Ppx_yojson_conv_lib.Yojson_conv.Of_yojson_error (Failure msg, _) - -> Error msg + | exception Ppx_yojson_conv_lib.Yojson_conv.Of_yojson_error (Failure msg, _) -> + Error msg + ;; let require_params json = match json with | None -> Error "params are required" | Some params -> Ok params + ;; let message_params params f = match require_params params with | Error e -> Error e | Ok x -> read_json_params f x + ;; end let sprintf = Printf.sprintf diff --git a/lsp/src/io.ml b/lsp/src/io.ml index a5c48657c..f4d17a336 100644 --- a/lsp/src/io.ml +++ b/lsp/src/io.ml @@ -4,12 +4,14 @@ exception Error of string let () = Printexc.register_printer (function - | Error msg -> Some ("Error: " ^ msg) - | _ -> None) + | Error msg -> Some ("Error: " ^ msg) + | _ -> None) +;; let caseless_equal a b = - if a == b then true - else + if a == b + then true + else ( let len = String.length a in len = String.length b && @@ -21,37 +23,32 @@ let caseless_equal a b = if Char.lowercase_ascii c1 <> Char.lowercase_ascii c2 then stop := true; incr idx done; - not !stop - -let content_type_lowercase = - String.lowercase_ascii Header.Private.Key.content_type - -let content_length_lowercase = - String.lowercase_ascii Header.Private.Key.content_length - -module Make (Io : sig - type 'a t - - val return : 'a -> 'a t - - val raise : exn -> 'a t - - module O : sig - val ( let+ ) : 'a t -> ('a -> 'b) -> 'b t - - val ( let* ) : 'a t -> ('a -> 'b t) -> 'b t - end -end) (Chan : sig - type input - - type output - - val read_line : input -> string option Io.t - - val read_exactly : input -> int -> string option Io.t - - val write : output -> string list -> unit Io.t -end) = + not !stop) +;; + +let content_type_lowercase = String.lowercase_ascii Header.Private.Key.content_type +let content_length_lowercase = String.lowercase_ascii Header.Private.Key.content_length + +module Make + (Io : sig + type 'a t + + val return : 'a -> 'a t + val raise : exn -> 'a t + + module O : sig + val ( let+ ) : 'a t -> ('a -> 'b) -> 'b t + val ( let* ) : 'a t -> ('a -> 'b t) -> 'b t + end + end) + (Chan : sig + type input + type output + + val read_line : input -> string option Io.t + val read_exactly : input -> int -> string option Io.t + val write : output -> string list -> unit Io.t + end) = struct open Io.O @@ -62,24 +59,23 @@ struct match line with | None -> Io.return None | Some "" | Some "\r" -> Io.return (Some (content_length, content_type)) - | Some line -> ( - match String.lsplit2 ~on:':' line with - | None -> loop chan content_length content_type - | Some (k, v) -> - let k = String.trim k in - if - caseless_equal k content_length_lowercase - && content_length = init_content_length - then - let content_length = int_of_string_opt (String.trim v) in - match content_length with - | None -> Io.raise (Error "Content-Length is invalid") - | Some content_length -> loop chan content_length content_type - else if caseless_equal k content_type_lowercase && content_type = None - then - let content_type = String.trim v in - loop chan content_length (Some content_type) - else loop chan content_length content_type) + | Some line -> + (match String.lsplit2 ~on:':' line with + | None -> loop chan content_length content_type + | Some (k, v) -> + let k = String.trim k in + if caseless_equal k content_length_lowercase + && content_length = init_content_length + then ( + let content_length = int_of_string_opt (String.trim v) in + match content_length with + | None -> Io.raise (Error "Content-Length is invalid") + | Some content_length -> loop chan content_length content_type) + else if caseless_equal k content_type_lowercase && content_type = None + then ( + let content_type = String.trim v in + loop chan content_length (Some content_type)) + else loop chan content_length content_type) in fun chan -> let open Io.O in @@ -88,24 +84,26 @@ struct | None -> Io.return None | Some (content_length, content_type) -> let+ () = - if content_length = init_content_length then - Io.raise (Error "content length absent") + if content_length = init_content_length + then Io.raise (Error "content length absent") else Io.return () in Some (Header.create ?content_type ~content_length ()) + ;; let read chan = let* header = read_header chan in match header with | None -> Io.return None - | Some header -> ( + | Some header -> let len = Header.content_length header in let* buf = Chan.read_exactly chan len in - match buf with - | None -> Io.raise (Error "unable to read json") - | Some buf -> - let json = Json.of_string buf in - Io.return (Some (Jsonrpc.Packet.t_of_yojson json))) + (match buf with + | None -> Io.raise (Error "unable to read json") + | Some buf -> + let json = Json.of_string buf in + Io.return (Some (Jsonrpc.Packet.t_of_yojson json))) + ;; let write chan packet = let json = Jsonrpc.Packet.yojson_of_t packet in @@ -113,4 +111,5 @@ struct let content_length = String.length data in let header = Header.create ~content_length () in Chan.write chan [ Header.to_string header; data ] + ;; end diff --git a/lsp/src/io.mli b/lsp/src/io.mli index 8e17d66d3..50b5fe5d8 100644 --- a/lsp/src/io.mli +++ b/lsp/src/io.mli @@ -2,30 +2,26 @@ exception Error of string -module Make (Io : sig - type 'a t - - val return : 'a -> 'a t - - val raise : exn -> 'a t - - module O : sig - val ( let+ ) : 'a t -> ('a -> 'b) -> 'b t - - val ( let* ) : 'a t -> ('a -> 'b t) -> 'b t - end -end) (Chan : sig - type input - - type output - - val read_line : input -> string option Io.t - - val read_exactly : input -> int -> string option Io.t - - val write : output -> string list -> unit Io.t -end) : sig +module Make + (Io : sig + type 'a t + + val return : 'a -> 'a t + val raise : exn -> 'a t + + module O : sig + val ( let+ ) : 'a t -> ('a -> 'b) -> 'b t + val ( let* ) : 'a t -> ('a -> 'b t) -> 'b t + end + end) + (Chan : sig + type input + type output + + val read_line : input -> string option Io.t + val read_exactly : input -> int -> string option Io.t + val write : output -> string list -> unit Io.t + end) : sig val read : Chan.input -> Jsonrpc.Packet.t option Io.t - val write : Chan.output -> Jsonrpc.Packet.t -> unit Io.t end diff --git a/lsp/src/position.ml b/lsp/src/position.ml index c0b0fa475..b9d1b9585 100644 --- a/lsp/src/position.ml +++ b/lsp/src/position.ml @@ -1,10 +1,10 @@ include Types.Position let zero = create ~line:0 ~character:0 - let is_zero (t : t) = t.line = zero.line && t.character = zero.character let compare t { line; character } = match Int.compare t.line line with | 0 -> Int.compare t.character character | n -> n +;; diff --git a/lsp/src/progress.ml b/lsp/src/progress.ml index 4088911a8..ecbf5ccfd 100644 --- a/lsp/src/progress.ml +++ b/lsp/src/progress.ml @@ -10,6 +10,7 @@ let yojson_of_t = function | Begin b -> WorkDoneProgressBegin.yojson_of_t b | Report r -> WorkDoneProgressReport.yojson_of_t r | End e -> WorkDoneProgressEnd.yojson_of_t e +;; let t_of_yojson json = Json.Of.untagged_union @@ -19,5 +20,6 @@ let t_of_yojson json = ; (fun j -> End (WorkDoneProgressEnd.t_of_yojson j)) ] json +;; let method_ = "$/progress" diff --git a/lsp/src/progress.mli b/lsp/src/progress.mli index 5fc199afa..bb07c2965 100644 --- a/lsp/src/progress.mli +++ b/lsp/src/progress.mli @@ -7,7 +7,5 @@ type t = | End of WorkDoneProgressEnd.t val yojson_of_t : t -> Json.t - val t_of_yojson : Json.t -> t - val method_ : string diff --git a/lsp/src/server_notification.ml b/lsp/src/server_notification.ml index fa0926b76..b75fe82e4 100644 --- a/lsp/src/server_notification.ml +++ b/lsp/src/server_notification.ml @@ -20,18 +20,19 @@ let method_ = function | CancelRequest _ -> Cancel_request.meth_ | WorkDoneProgress _ -> Progress.method_ | UnknownNotification n -> n.method_ +;; let yojson_of_t = function | LogMessage params -> Some (LogMessageParams.yojson_of_t params) | LogTrace params -> Some (LogTraceParams.yojson_of_t params) | ShowMessage params -> Some (ShowMessageParams.yojson_of_t params) - | PublishDiagnostics params -> - Some (PublishDiagnosticsParams.yojson_of_t params) + | PublishDiagnostics params -> Some (PublishDiagnosticsParams.yojson_of_t params) | TelemetryNotification params -> Some params | CancelRequest params -> Some (Cancel_request.yojson_of_t params) | WorkDoneProgress params -> Some ((ProgressParams.yojson_of_t Progress.yojson_of_t) params) | UnknownNotification n -> (n.params :> Json.t option) +;; let to_jsonrpc t = let method_ = method_ t in @@ -41,6 +42,7 @@ let to_jsonrpc t = | Some s -> Some (Jsonrpc.Structured.t_of_yojson s) in { Jsonrpc.Notification.params; method_ } +;; let of_jsonrpc (r : Jsonrpc.Notification.t) = let open Result.O in @@ -50,9 +52,7 @@ let of_jsonrpc (r : Jsonrpc.Notification.t) = let+ params = Json.message_params params ShowMessageParams.t_of_yojson in ShowMessage params | "textDocument/publishDiagnostics" -> - let+ params = - Json.message_params params PublishDiagnosticsParams.t_of_yojson - in + let+ params = Json.message_params params PublishDiagnosticsParams.t_of_yojson in PublishDiagnostics params | "window/logMessage" -> let+ params = Json.message_params params LogMessageParams.t_of_yojson in @@ -62,12 +62,11 @@ let of_jsonrpc (r : Jsonrpc.Notification.t) = TelemetryNotification params | m when m = Progress.method_ -> let+ params = - Json.message_params - params - (ProgressParams.t_of_yojson Progress.t_of_yojson) + Json.message_params params (ProgressParams.t_of_yojson Progress.t_of_yojson) in WorkDoneProgress params | m when m = Cancel_request.meth_ -> let+ params = Json.message_params params Cancel_request.t_of_yojson in CancelRequest params | _ -> Ok (UnknownNotification r) +;; diff --git a/lsp/src/server_notification.mli b/lsp/src/server_notification.mli index 2cdacd68d..fd814f703 100644 --- a/lsp/src/server_notification.mli +++ b/lsp/src/server_notification.mli @@ -12,5 +12,4 @@ type t = | UnknownNotification of Jsonrpc.Notification.t val to_jsonrpc : t -> Jsonrpc.Notification.t - val of_jsonrpc : Jsonrpc.Notification.t -> (t, string) Result.t diff --git a/lsp/src/server_request.ml b/lsp/src/server_request.ml index 9189027be..7125bed01 100644 --- a/lsp/src/server_request.ml +++ b/lsp/src/server_request.ml @@ -2,16 +2,12 @@ open Import open Types type _ t = - | WorkspaceApplyEdit : - ApplyWorkspaceEditParams.t - -> ApplyWorkspaceEditResult.t t + | WorkspaceApplyEdit : ApplyWorkspaceEditParams.t -> ApplyWorkspaceEditResult.t t | WorkspaceFolders : WorkspaceFolder.t list t | WorkspaceConfiguration : ConfigurationParams.t -> Json.t list t | ClientRegisterCapability : RegistrationParams.t -> unit t | ClientUnregisterCapability : UnregistrationParams.t -> unit t - | ShowMessageRequest : - ShowMessageRequestParams.t - -> MessageActionItem.t option t + | ShowMessageRequest : ShowMessageRequestParams.t -> MessageActionItem.t option t | ShowDocumentRequest : ShowDocumentParams.t -> ShowDocumentResult.t t | WorkDoneProgressCreate : WorkDoneProgressCreateParams.t -> unit t | CodeLensRefresh : unit t @@ -41,22 +37,18 @@ let method_ (type a) (t : a t) = | WorkspaceInlayHintRefresh -> "workspace/inlayHint/refresh" | WorkspaceInlineValueRefresh -> "workspace/inlineValue/refresh" | UnknownRequest (r, _) -> r +;; let params = let ret x = Some (Jsonrpc.Structured.t_of_yojson x) in fun (type a) (t : a t) -> match t with - | WorkspaceApplyEdit params -> - ret (ApplyWorkspaceEditParams.yojson_of_t params) + | WorkspaceApplyEdit params -> ret (ApplyWorkspaceEditParams.yojson_of_t params) | WorkspaceFolders -> None - | WorkspaceConfiguration params -> - ret (ConfigurationParams.yojson_of_t params) - | ClientRegisterCapability params -> - ret (RegistrationParams.yojson_of_t params) - | ClientUnregisterCapability params -> - ret (UnregistrationParams.yojson_of_t params) - | ShowMessageRequest params -> - ret (ShowMessageRequestParams.yojson_of_t params) + | WorkspaceConfiguration params -> ret (ConfigurationParams.yojson_of_t params) + | ClientRegisterCapability params -> ret (RegistrationParams.yojson_of_t params) + | ClientUnregisterCapability params -> ret (UnregistrationParams.yojson_of_t params) + | ShowMessageRequest params -> ret (ShowMessageRequestParams.yojson_of_t params) | ShowDocumentRequest params -> ret (ShowDocumentParams.yojson_of_t params) | WorkDoneProgressCreate params -> ret (WorkDoneProgressCreateParams.yojson_of_t params) @@ -67,11 +59,13 @@ let params = | WorkspaceInlineValueRefresh | WorkspaceDiagnosticRefresh -> None | UnknownRequest (_, params) -> params +;; let to_jsonrpc_request t ~id = let method_ = method_ t in let params = params t in Jsonrpc.Request.create ~id ~method_ ?params () +;; let of_jsonrpc (r : Jsonrpc.Request.t) : (packed, string) Result.t = let open Result.O in @@ -105,18 +99,17 @@ let of_jsonrpc (r : Jsonrpc.Request.t) : (packed, string) Result.t = | "workspace/inlayHint/refresh" -> Ok (E WorkspaceInlayHintRefresh) | "workspace/inlineValue/refresh" -> Ok (E WorkspaceInlineValueRefresh) | m -> Ok (E (UnknownRequest (m, r.params))) +;; let yojson_of_result (type a) (t : a t) (r : a) : Json.t = - match (t, r) with + match t, r with | WorkspaceApplyEdit _, r -> ApplyWorkspaceEditResult.yojson_of_t r - | WorkspaceFolders, r -> - Json.Conv.yojson_of_list WorkspaceFolder.yojson_of_t r + | WorkspaceFolders, r -> Json.Conv.yojson_of_list WorkspaceFolder.yojson_of_t r | WorkspaceConfiguration _, r -> Json.Conv.yojson_of_list (fun x -> x) r | ClientRegisterCapability _, () -> `Null | ClientUnregisterCapability _, () -> `Null | WorkDoneProgressCreate _, () -> `Null - | ShowMessageRequest _, r -> - Json.Conv.yojson_of_option MessageActionItem.yojson_of_t r + | ShowMessageRequest _, r -> Json.Conv.yojson_of_option MessageActionItem.yojson_of_t r | ShowDocumentRequest _, r -> ShowDocumentResult.yojson_of_t r | CodeLensRefresh, _ -> `Null | SemanticTokensRefresh, _ -> `Null @@ -125,6 +118,7 @@ let yojson_of_result (type a) (t : a t) (r : a) : Json.t = | WorkspaceInlayHintRefresh, _ -> `Null | WorkspaceInlineValueRefresh, _ -> `Null | UnknownRequest (_, _), json -> json +;; let response_of_json (type a) (t : a t) (json : Json.t) : a = let open Json.Conv in @@ -144,3 +138,4 @@ let response_of_json (type a) (t : a t) (json : Json.t) : a = | WorkspaceInlayHintRefresh -> unit_of_yojson json | WorkspaceInlineValueRefresh -> unit_of_yojson json | UnknownRequest (_, _) -> json +;; diff --git a/lsp/src/server_request.mli b/lsp/src/server_request.mli index 1c189813e..93bdfcc0e 100644 --- a/lsp/src/server_request.mli +++ b/lsp/src/server_request.mli @@ -2,16 +2,12 @@ open Import open Types type _ t = - | WorkspaceApplyEdit : - ApplyWorkspaceEditParams.t - -> ApplyWorkspaceEditResult.t t + | WorkspaceApplyEdit : ApplyWorkspaceEditParams.t -> ApplyWorkspaceEditResult.t t | WorkspaceFolders : WorkspaceFolder.t list t | WorkspaceConfiguration : ConfigurationParams.t -> Json.t list t | ClientRegisterCapability : RegistrationParams.t -> unit t | ClientUnregisterCapability : UnregistrationParams.t -> unit t - | ShowMessageRequest : - ShowMessageRequestParams.t - -> MessageActionItem.t option t + | ShowMessageRequest : ShowMessageRequestParams.t -> MessageActionItem.t option t | ShowDocumentRequest : ShowDocumentParams.t -> ShowDocumentResult.t t | WorkDoneProgressCreate : WorkDoneProgressCreateParams.t -> unit t | CodeLensRefresh : unit t @@ -25,9 +21,6 @@ type _ t = type packed = E : 'r t -> packed val yojson_of_result : 'a t -> 'a -> Json.t - val to_jsonrpc_request : _ t -> id:Jsonrpc.Id.t -> Jsonrpc.Request.t - val of_jsonrpc : Jsonrpc.Request.t -> (packed, string) Result.t - val response_of_json : 'a t -> Json.t -> 'a diff --git a/lsp/src/snippet.ml b/lsp/src/snippet.ml index 725620799..8107b2c08 100644 --- a/lsp/src/snippet.ml +++ b/lsp/src/snippet.ml @@ -22,6 +22,7 @@ module Var = struct | TM_FILENAME_BASE -> "TM_FILENAME_BASE" | TM_DIRECTORY -> "TM_DIRECTORY" | TM_FILEPATH -> "TM_FILEPATH" + ;; end type variable_transform = @@ -31,34 +32,31 @@ type variable_transform = } type t = - | Tabstop of - int option * [ `Placeholder of t | `Choice of string list | `None ] - | Variable of - Var.t * [ `Placeholder of t | `Transform of variable_transform | `None ] + | Tabstop of int option * [ `Placeholder of t | `Choice of string list | `None ] + | Variable of Var.t * [ `Placeholder of t | `Transform of variable_transform | `None ] | Text of string | Concat of t * t let tabstop index = Tabstop (Some index, `None) - let placeholder ?index content = Tabstop (index, `Placeholder content) let choice ?index values = match values with | [] -> invalid_arg "choice must have non empty values" | _ -> Tabstop (index, `Choice values) +;; let variable ?(opt = `None) var = Variable (var, opt) let variable_transform ~regex ?regex_options ~format_string () = { regex; regex_options; format_string } +;; let text str = Text str module O = struct let ( ^^ ) lhs rhs = Concat (lhs, rhs) - let ( @+ ) lhs_str rhs = Concat (Text lhs_str, rhs) - let ( +@ ) lhs rhs_str = Concat (lhs, Text rhs_str) end @@ -66,12 +64,13 @@ let concat ?sep ts = let rec go = function | [] -> text "" | [ x ] -> x - | x :: rest -> ( - match sep with - | None -> Concat (x, go rest) - | Some s -> Concat (x, Concat (s, go rest))) + | x :: rest -> + (match sep with + | None -> Concat (x, go rest) + | Some s -> Concat (x, Concat (s, go rest))) in go ts +;; let escape ?(in_choice = false) str = let str = @@ -80,11 +79,13 @@ let escape ?(in_choice = false) str = |> String.replace_all ~pattern:"}" ~with_:"\\}" |> String.replace_all ~pattern:"\\" ~with_:"\\\\" in - if not in_choice then str + if not in_choice + then str else str |> String.replace_all ~pattern:"," ~with_:"\\," |> String.replace_all ~pattern:"|" ~with_:"\\|" +;; module Int_map = MoreLabels.Map.Make (Int) @@ -97,15 +98,15 @@ let pp_impl add_string (snippet : t) : unit = match i_opt with | None -> add_string (f n); - (n + 1, m) - | Some i -> ( - match Int_map.find_opt i m with - | Some j -> - add_string (f j); - (n, m) - | None -> - add_string (f n); - (n + 1, Int_map.add m ~key:i ~data:n)) + n + 1, m + | Some i -> + (match Int_map.find_opt i m with + | Some j -> + add_string (f j); + n, m + | None -> + add_string (f n); + n + 1, Int_map.add m ~key:i ~data:n) in let rec go ctx = function | Text s -> @@ -119,39 +120,38 @@ let pp_impl add_string (snippet : t) : unit = ctx | Tabstop (i, `Choice values) -> with_ctx ctx i (fun i -> - sprintf - "${%d|%s|}" - i - (values - |> List.map ~f:(escape ~in_choice:true) - |> String.concat ~sep:",")) - | Variable (var, opt) -> ( - let var = Var.to_string var in - match opt with - | `None -> - add_string (sprintf "$%s" var); - ctx - | `Placeholder s -> - add_string (sprintf "${%s:" var); - let ctx = go ctx s in - add_string "}"; - ctx - | `Transform t -> sprintf - "${%s/%s/%s/%s}" - var - t.regex - t.format_string - (Option.value ~default:"" t.regex_options) - |> add_string; - ctx) + "${%d|%s|}" + i + (values |> List.map ~f:(escape ~in_choice:true) |> String.concat ~sep:",")) + | Variable (var, opt) -> + let var = Var.to_string var in + (match opt with + | `None -> + add_string (sprintf "$%s" var); + ctx + | `Placeholder s -> + add_string (sprintf "${%s:" var); + let ctx = go ctx s in + add_string "}"; + ctx + | `Transform t -> + sprintf + "${%s/%s/%s/%s}" + var + t.regex + t.format_string + (Option.value ~default:"" t.regex_options) + |> add_string; + ctx) in go (1, Int_map.empty) snippet |> ignore +;; let to_string t = let buf = Buffer.create 0 in pp_impl (Buffer.add_string buf) t; Buffer.contents buf +;; -let pp (chan : Format.formatter) (t : t) : unit = - pp_impl (Format.pp_print_string chan) t +let pp (chan : Format.formatter) (t : t) : unit = pp_impl (Format.pp_print_string chan) t diff --git a/lsp/src/snippet.mli b/lsp/src/snippet.mli index 39a770a3d..4fb9ac546 100644 --- a/lsp/src/snippet.mli +++ b/lsp/src/snippet.mli @@ -22,18 +22,16 @@ type variable_transform = type t val tabstop : int -> t - val placeholder : ?index:int -> t -> t - val choice : ?index:int -> string list -> t -val variable : - ?opt:[ `Placeholder of t | `Transform of variable_transform | `None ] +val variable + : ?opt:[ `Placeholder of t | `Transform of variable_transform | `None ] -> Var.t -> t -val variable_transform : - regex:string +val variable_transform + : regex:string -> ?regex_options:string -> format_string:string -> unit @@ -43,14 +41,10 @@ val text : string -> t module O : sig val ( ^^ ) : t -> t -> t - val ( @+ ) : string -> t -> t - val ( +@ ) : t -> string -> t end val concat : ?sep:t -> t list -> t - val to_string : t -> string - val pp : Format.formatter -> t -> unit diff --git a/lsp/src/string_zipper.ml b/lsp/src/string_zipper.ml index 1bb25afe6..2704a968d 100644 --- a/lsp/src/string_zipper.ml +++ b/lsp/src/string_zipper.ml @@ -9,21 +9,21 @@ exception Invalid_utf of invalid_utf let () = Printexc.register_printer (function - | Invalid_utf (Malformed s) -> Some (sprintf "malformed %S" s) - | Invalid_utf Insufficient_input -> Some "insufficient input" - | _ -> None) + | Invalid_utf (Malformed s) -> Some (sprintf "malformed %S" s) + | Invalid_utf Insufficient_input -> Some "insufficient input" + | _ -> None) +;; module T = struct type t = { left : Substring.t list - ; rel_pos : int (** the cursor's position inside [current] *) - ; abs_pos : int (** the total length of strings in [left] *) + ; rel_pos : int (** the cursor's position inside [current] *) + ; abs_pos : int (** the total length of strings in [left] *) ; current : Substring.t - (** [current] needed to prevent fragmentation of the substring. E.g. - so that moving inside the substring doesn't create unnecessary - splits *) - ; line : int - (** the number of '\n' characters traversed past the current position *) + (** [current] needed to prevent fragmentation of the substring. E.g. + so that moving inside the substring doesn't create unnecessary + splits *) + ; line : int (** the number of '\n' characters traversed past the current position *) ; right : Substring.t list } end @@ -38,6 +38,7 @@ let of_string s = ; right = [] ; line = 0 } +;; let offset t = t.abs_pos + t.rel_pos @@ -47,6 +48,7 @@ let length = let init = Substring.length current in let init = List.fold_left ~init ~f left in List.fold_left ~init ~f right +;; let to_string_and_pos t = let dst = Bytes.make (length t) '\000' in @@ -59,16 +61,19 @@ let to_string_and_pos t = let final_pos = t.rel_pos + !dst_pos in f t.current; List.iter t.right ~f; - (Bytes.unsafe_to_string dst, final_pos, t.line) + Bytes.unsafe_to_string dst, final_pos, t.line +;; let to_string t = let s, _, _ = to_string_and_pos t in s +;; let squash t = let str, rel_pos, line = to_string_and_pos t in let current = Substring.of_string str in - ({ abs_pos = 0; left = []; right = []; rel_pos; line; current }, str) + { abs_pos = 0; left = []; right = []; rel_pos; line; current }, str +;; let empty = of_string "" @@ -77,54 +82,57 @@ let to_string_debug t = List.rev_append t.left (left :: Substring.of_string "|" :: right :: t.right) |> List.map ~f:Substring.to_string |> String.concat ~sep:"" +;; let cons sub list = if Substring.length sub = 0 then list else sub :: list let is_end t = let res = Substring.length t.current = t.rel_pos in - (if res then - match t.right with - | [] -> () - | _ :: _ -> - invalid_arg - (sprintf "invalid state: current = %S" (Substring.to_string t.current))); + if res + then ( + match t.right with + | [] -> () + | _ :: _ -> + invalid_arg (sprintf "invalid state: current = %S" (Substring.to_string t.current))); res +;; let is_begin t = match t.left with | [] -> t.rel_pos = 0 | _ :: _ -> false +;; let insert t (x : string) = - if String.length x = 0 then t - else + if String.length x = 0 + then t + else ( let current = Substring.of_string x in - if t.rel_pos = 0 then { t with current; right = cons t.current t.right } - else if t.rel_pos = Substring.length t.current then + if t.rel_pos = 0 + then { t with current; right = cons t.current t.right } + else if t.rel_pos = Substring.length t.current + then ( let abs_pos = t.rel_pos + Substring.length t.current in - { t with current; rel_pos = 0; left = cons t.current t.left; abs_pos } - else + { t with current; rel_pos = 0; left = cons t.current t.left; abs_pos }) + else ( let l, r = Substring.split_at t.current t.rel_pos in let abs_pos = t.abs_pos + Substring.length l in - { t with - current - ; rel_pos = 0 - ; left = l :: t.left - ; right = r :: t.right - ; abs_pos - } + { t with current; rel_pos = 0; left = l :: t.left; right = r :: t.right; abs_pos })) +;; let advance_char t = - if is_end t then t - else + if is_end t + then t + else ( let line = match Substring.get_exn t.current t.rel_pos with | '\n' -> t.line + 1 | _ -> t.line in let rel_pos = t.rel_pos + 1 in - if rel_pos < Substring.length t.current then { t with rel_pos; line } - else + if rel_pos < Substring.length t.current + then { t with rel_pos; line } + else ( match t.right with | [] -> { t with rel_pos; line } | current :: right -> @@ -134,111 +142,111 @@ let advance_char t = ; line ; right ; rel_pos = 0 - } + })) +;; let rec find_next_nl t = - if is_end t then t - else + if is_end t + then t + else ( match Substring.index_from t.current ~pos:t.rel_pos '\n' with | Some rel_pos -> { t with rel_pos } - | None -> ( - match t.right with - | [] -> { t with rel_pos = Substring.length t.current } - | current :: right -> - let abs_pos = t.abs_pos + Substring.length t.current in - { t with - current - ; left = t.current :: t.left - ; right - ; rel_pos = 0 - ; abs_pos - } - |> find_next_nl) + | None -> + (match t.right with + | [] -> { t with rel_pos = Substring.length t.current } + | current :: right -> + let abs_pos = t.abs_pos + Substring.length t.current in + { t with current; left = t.current :: t.left; right; rel_pos = 0; abs_pos } + |> find_next_nl)) +;; let rec goto_line_forward t n = - if n = 0 then t - else if is_end t then t - else + if n = 0 + then t + else if is_end t + then t + else ( let t = find_next_nl t in let t = advance_char t in - goto_line_forward t (n - 1) + goto_line_forward t (n - 1)) +;; (* put the cursor left of the previous newline *) let rec prev_newline t = - if is_begin t then t - else + if is_begin t + then t + else ( match Substring.rindex_from t.current ~pos:t.rel_pos '\n' with | Some rel_pos -> { t with rel_pos; line = t.line - 1 } - | None -> ( - match t.left with - | [] -> { t with rel_pos = 0 } - | current :: left -> - prev_newline - { t with - current - ; left - ; rel_pos = Substring.length current - ; abs_pos = t.abs_pos + Substring.length t.current - ; right = t.current :: t.right - }) + | None -> + (match t.left with + | [] -> { t with rel_pos = 0 } + | current :: left -> + prev_newline + { t with + current + ; left + ; rel_pos = Substring.length current + ; abs_pos = t.abs_pos + Substring.length t.current + ; right = t.current :: t.right + })) +;; let beginning_of_line t = let line = t.line in let t = prev_newline t in if is_begin t && t.line = line then t else advance_char t +;; let rec goto_line_backward t = function | 0 -> beginning_of_line t | n -> goto_line_backward (prev_newline t) (n - 1) +;; let goto_line t n = - if t.line = n then beginning_of_line t - else if t.line > n then goto_line_backward t (t.line - n) + if t.line = n + then beginning_of_line t + else if t.line > n + then goto_line_backward t (t.line - n) else goto_line_forward t (n - t.line) +;; let newline = Uchar.of_char '\n' - let nln = `ASCII newline module Advance (Char : sig - val units_of_char : Uchar.t -> int -end) : sig + val units_of_char : Uchar.t -> int + end) : sig val advance : t -> code_units:int -> t end = struct let feed_current_chunk dec t = Substring.Uutf.src t.current ~pos:t.rel_pos dec let finish_chunk (t : t) consumed = let rel_pos = t.rel_pos + consumed in - if rel_pos < Substring.length t.current then { t with rel_pos } + if rel_pos < Substring.length t.current + then { t with rel_pos } else ( assert (rel_pos = Substring.length t.current); match t.right with | [] -> { t with rel_pos } | current :: right -> let abs_pos = t.abs_pos + Substring.length t.current in - { t with - current - ; left = t.current :: t.left - ; right - ; abs_pos - ; rel_pos = 0 - }) + { t with current; left = t.current :: t.left; right; abs_pos; rel_pos = 0 }) + ;; let rec loop dec (t : t) byte_count_ex_this_chunk (remaining : int) : t = - if remaining = 0 then - finish_chunk t (Uutf.decoder_byte_count dec - byte_count_ex_this_chunk) - else + if remaining = 0 + then finish_chunk t (Uutf.decoder_byte_count dec - byte_count_ex_this_chunk) + else ( match Uutf.decode dec with | `Malformed e -> raise (Invalid_utf (Malformed e)) | `End | `Await -> next_chunk dec t remaining | `Uchar u -> - if Uchar.equal u newline then - finish_chunk - t - (Uutf.decoder_byte_count dec - byte_count_ex_this_chunk - 1) - else + if Uchar.equal u newline + then finish_chunk t (Uutf.decoder_byte_count dec - byte_count_ex_this_chunk - 1) + else ( let remaining = remaining - Char.units_of_char u in - loop dec t byte_count_ex_this_chunk remaining + loop dec t byte_count_ex_this_chunk remaining)) and next_chunk dec (t : t) remaining = match t.right with @@ -246,78 +254,78 @@ end = struct | current :: right -> let t = let abs_pos = t.abs_pos + Substring.length t.current in - { t with - left = t.current :: t.left - ; current - ; abs_pos - ; right - ; rel_pos = 0 - } + { t with left = t.current :: t.left; current; abs_pos; right; rel_pos = 0 } in feed_current_chunk dec t; loop dec t (Uutf.decoder_byte_count dec) remaining + ;; let advance t ~code_units = - if code_units = 0 then t - else + if code_units = 0 + then t + else ( let dec = Uutf.decoder ~nln ~encoding:`UTF_8 `Manual in feed_current_chunk dec t; - loop dec t 0 code_units + loop dec t 0 code_units) + ;; end let advance_utf16 = let module Char = struct let units_of_char u = Uchar.utf_16_byte_length u / 2 - end in + end + in let module F = Advance (Char) in F.advance +;; let advance_utf8 = let module Char = struct let units_of_char = Uchar.utf_8_byte_length - end in + end + in let module F = Advance (Char) in F.advance +;; let drop_until from until = - if is_end from then from - else + if is_end from + then from + else ( let right = cons (Substring.drop until.current until.rel_pos) until.right in let left = cons (Substring.take from.current from.rel_pos) from.left in match right with | current :: right -> let abs_pos = from.abs_pos + Substring.length from.current in { from with right; left; abs_pos; current; rel_pos = 0 } - | [] -> ( - match left with - | [] -> empty - | current :: left -> - let rel_pos = Substring.length current in - let abs_pos = from.abs_pos + rel_pos in - { from with right; left; current; rel_pos; abs_pos }) + | [] -> + (match left with + | [] -> empty + | current :: left -> + let rel_pos = Substring.length current in + let abs_pos = from.abs_pos + rel_pos in + { from with right; left; current; rel_pos; abs_pos })) +;; let add_buffer_between b start stop = let rec loop bufs = function | 0 -> () - | remaining -> ( - match bufs with - | [] -> - invalid_arg - (sprintf "add_buffer_between: not enough remaining (%d)" remaining) - | current :: bufs -> - let to_read = min remaining (Substring.length current) in - let current = Substring.take current to_read in - Substring.add_buffer current b; - loop bufs (remaining - Substring.length current)) - in - let remaining = - stop.abs_pos + stop.rel_pos - (start.abs_pos + start.rel_pos) + | remaining -> + (match bufs with + | [] -> + invalid_arg (sprintf "add_buffer_between: not enough remaining (%d)" remaining) + | current :: bufs -> + let to_read = min remaining (Substring.length current) in + let current = Substring.take current to_read in + Substring.add_buffer current b; + loop bufs (remaining - Substring.length current)) in + let remaining = stop.abs_pos + stop.rel_pos - (start.abs_pos + start.rel_pos) in let bufs = cons (Substring.drop start.current start.rel_pos) start.right in loop bufs remaining +;; -let rec goto_end t = - if is_end t then t else find_next_nl t |> advance_char |> goto_end +let rec goto_end t = if is_end t then t else find_next_nl t |> advance_char |> goto_end let goto_position t (position : Position.t) encoding = let advance = @@ -327,6 +335,7 @@ let goto_position t (position : Position.t) encoding = in let t = goto_line t position.line in advance t ~code_units:position.character +;; let apply_change t (range : Range.t) encoding ~replacement = let advance = @@ -339,13 +348,15 @@ let apply_change t (range : Range.t) encoding ~replacement = let t' = let delta_line = range.end_.line - range.start.line in let delta_character = - if delta_line = 0 then range.end_.character - range.start.character + if delta_line = 0 + then range.end_.character - range.start.character else range.end_.character in let t = if delta_line = 0 then t else goto_line t range.end_.line in advance t ~code_units:delta_character in insert (drop_until t t') replacement +;; module Private = struct include T diff --git a/lsp/src/string_zipper.mli b/lsp/src/string_zipper.mli index 019661253..8f490b81f 100644 --- a/lsp/src/string_zipper.mli +++ b/lsp/src/string_zipper.mli @@ -7,29 +7,18 @@ type invalid_utf = exception Invalid_utf of invalid_utf val of_string : string -> t - val squash : t -> t * string - val to_string : t -> string - val to_string_debug : t -> string (* [insert t s] right of the current position *) val insert : t -> string -> t - val goto_line : t -> int -> t - val goto_position : t -> Position.t -> [ `UTF16 | `UTF8 ] -> t - val add_buffer_between : Buffer.t -> t -> t -> unit - val goto_end : t -> t - val drop_until : t -> t -> t - -val apply_change : - t -> Types.Range.t -> [ `UTF16 | `UTF8 ] -> replacement:string -> t - +val apply_change : t -> Types.Range.t -> [ `UTF16 | `UTF8 ] -> replacement:string -> t val offset : t -> int module Private : sig diff --git a/lsp/src/substring.ml b/lsp/src/substring.ml index a276c7a05..d4876f61c 100644 --- a/lsp/src/substring.ml +++ b/lsp/src/substring.ml @@ -12,6 +12,7 @@ let of_slice base ~pos ~len = assert (pos >= 0 && pos + len <= String.length base); assert (len >= 0); { base; pos; len } +;; let of_string base = { base; len = String.length base; pos = 0 } @@ -27,7 +28,9 @@ let compare t { pos; len; base } = | i -> raise_notrace (Result i) done; t.len - len - with Result r -> r + with + | Result r -> r +;; let concat arr = let len = Array_view.fold_left ~f:(fun acc a -> acc + a.len) ~init:0 arr in @@ -39,75 +42,85 @@ let concat arr = dst_pos := !dst_pos + len done; Bytes.unsafe_to_string dst +;; let drop t len = - if len = t.len then empty - else if len = 0 then t + if len = t.len + then empty + else if len = 0 + then t else ( assert (len > 0); let len = min len t.len in let pos = t.pos + len in let len = t.len - len in { t with pos; len }) +;; let take t len = - if len = t.len then t - else if len = 0 then empty + if len = t.len + then t + else if len = 0 + then empty else ( assert (len > 0); let len = min t.len len in { t with len }) +;; let to_string { base; len; pos } = String.sub base ~pos ~len - let add_buffer { base; len; pos } buf = Buffer.add_substring buf base pos len - -let split_at t n = (take t n, drop t n) +let split_at t n = take t n, drop t n let rsplit_at t n = let n = t.len - n in split_at t n +;; let index_from = let rec loop s pos len c = - if pos >= len then None - else if s.[pos] = c then Some pos - else loop s (pos + 1) len c + if pos >= len then None else if s.[pos] = c then Some pos else loop s (pos + 1) len c in fun t ~pos c -> - if pos < 0 || pos >= t.len then - invalid_arg "Substring.index_from: out of bounds"; + if pos < 0 || pos >= t.len then invalid_arg "Substring.index_from: out of bounds"; match loop t.base (t.pos + pos) (t.pos + t.len) c with | None -> None | Some pos -> Some (pos - t.pos) +;; let rindex_from = let rec loop s pos outside c = - if pos <= outside then None - else if s.[pos] = c then Some pos + if pos <= outside + then None + else if s.[pos] = c + then Some pos else loop s (pos - 1) outside c in fun t ~pos c -> - if pos < 0 || pos > t.len then - invalid_arg "Substring.rindex_from: out of bounds"; + if pos < 0 || pos > t.len then invalid_arg "Substring.rindex_from: out of bounds"; match loop t.base (t.pos + pos - 1) (t.pos - 1) c with | None -> None | Some c -> Some (c - t.pos) +;; let get_exn t i = - if i < t.len then t.base.[t.pos + i] - else invalid_arg "Substring.get: out of bounds" + if i < t.len then t.base.[t.pos + i] else invalid_arg "Substring.get: out of bounds" +;; let rindex = let rec loop s pos outside c = - if pos <= outside then None - else if s.[pos] = c then Some pos + if pos <= outside + then None + else if s.[pos] = c + then Some pos else loop s (pos - 1) outside c in fun t c -> loop t.base (t.len + t.pos - 1) (t.pos - 1) c +;; let blit t ~dst ~dst_pos = Bytes.blit_string ~src:t.base ~src_pos:t.pos ~len:t.len ~dst ~dst_pos +;; type move = { newlines : int @@ -116,51 +129,55 @@ type move = let move_right = let rec loop base ~newlines ~pos ~outside = - if pos = outside then (newlines, pos) - else if base.[pos] = '\n' then - loop base ~newlines:(newlines + 1) ~pos:(pos + 1) ~outside + if pos = outside + then newlines, pos + else if base.[pos] = '\n' + then loop base ~newlines:(newlines + 1) ~pos:(pos + 1) ~outside else loop base ~newlines ~pos:(pos + 1) ~outside in fun t ~pos ~len -> - if pos = t.len then { newlines = 0; consumed = 0 } + if pos = t.len + then { newlines = 0; consumed = 0 } else ( assert (len >= 0); assert (pos >= 0 && pos <= t.len); let real_pos = t.pos + pos in let outside = real_pos + min (t.len - pos) len in - let newlines, final_pos = - loop t.base ~newlines:0 ~pos:real_pos ~outside - in + let newlines, final_pos = loop t.base ~newlines:0 ~pos:real_pos ~outside in { newlines; consumed = final_pos - real_pos }) +;; let move_left = let rec loop base ~newlines ~pos ~outside = - if pos = outside then (newlines, pos) - else if base.[pos] = '\n' then - loop base ~newlines:(newlines + 1) ~pos:(pos - 1) ~outside + if pos = outside + then newlines, pos + else if base.[pos] = '\n' + then loop base ~newlines:(newlines + 1) ~pos:(pos - 1) ~outside else loop base ~newlines ~pos:(pos - 1) ~outside in fun t ~pos ~len -> - if pos = 0 then { newlines = 0; consumed = 0 } + if pos = 0 + then { newlines = 0; consumed = 0 } else ( assert (pos >= 0 && pos <= t.len); let real_pos = t.pos + pos - 1 in let outside = max (t.pos - 1) (real_pos - len) in - let newlines, final_pos = - loop t.base ~newlines:0 ~pos:real_pos ~outside - in + let newlines, final_pos = loop t.base ~newlines:0 ~pos:real_pos ~outside in { newlines; consumed = real_pos - final_pos }) +;; module Map = MoreLabels.Map.Make (struct - type nonrec t = t + type nonrec t = t - let compare = compare -end) + let compare = compare + end) module Uutf = struct let src t ~pos decoder = let len = t.len - pos in - if len > 0 then + if len > 0 + then ( let pos = t.pos + pos in - Uutf.Manual.src decoder (Bytes.unsafe_of_string t.base) pos len + Uutf.Manual.src decoder (Bytes.unsafe_of_string t.base) pos len) + ;; end diff --git a/lsp/src/substring.mli b/lsp/src/substring.mli index 9efbff4ef..2f18afcdb 100644 --- a/lsp/src/substring.mli +++ b/lsp/src/substring.mli @@ -1,33 +1,19 @@ type t val of_slice : string -> pos:int -> len:int -> t - val of_string : string -> t - val compare : t -> t -> int - val concat : t Array_view.t -> string - val take : t -> int -> t - val drop : t -> int -> t - val to_string : t -> string - val length : t -> int - val add_buffer : t -> Buffer.t -> unit - val split_at : t -> int -> t * t - val rsplit_at : t -> int -> t * t - val index_from : t -> pos:int -> char -> int option - val rindex : t -> char -> int option - val rindex_from : t -> pos:int -> char -> int option - val get_exn : t -> int -> char type move = @@ -36,9 +22,7 @@ type move = } val move_left : t -> pos:int -> len:int -> move - val move_right : t -> pos:int -> len:int -> move - val blit : t -> dst:bytes -> dst_pos:int -> unit module Uutf : sig diff --git a/lsp/src/text_document.ml b/lsp/src/text_document.ml index a81290aeb..efd562429 100644 --- a/lsp/src/text_document.ml +++ b/lsp/src/text_document.ml @@ -28,24 +28,25 @@ type t = let position_encoding t = t.position_encoding -let make ~position_encoding - { DidOpenTextDocumentParams.textDocument = - { TextDocumentItem.languageId; text; uri; version } - } = +let make + ~position_encoding + { DidOpenTextDocumentParams.textDocument = + { TextDocumentItem.languageId; text; uri; version } + } + = let zipper = String_zipper.of_string text in { text = Some text; position_encoding; zipper; uri; version; languageId } +;; let documentUri (t : t) = t.uri - let version (t : t) = t.version - let languageId (t : t) = t.languageId let apply_change encoding sz (change : TextDocumentContentChangeEvent.t) = match change.range with | None -> String_zipper.of_string change.text - | Some range -> - String_zipper.apply_change sz range encoding ~replacement:change.text + | Some range -> String_zipper.apply_change sz range encoding ~replacement:change.text +;; let apply_content_changes ?version t changes = let zipper = @@ -57,6 +58,7 @@ let apply_content_changes ?version t changes = | Some version -> version in { t with zipper; text = None; version } +;; let text t = match t.text with @@ -66,14 +68,16 @@ let text t = t.text <- Some text; t.zipper <- zipper; text +;; module Edit_map = Map.Make (Position) let add_edit map (change : TextEdit.t) = (* TODO check non overlapping property *) Edit_map.update map ~key:change.range.start ~f:(function - | None -> Some [ change ] - | Some changes -> Some (change :: changes)) + | None -> Some [ change ] + | Some changes -> Some (change :: changes)) +;; let apply_changes zipper encoding changes = let simplified = List.fold_left changes ~init:Edit_map.empty ~f:add_edit in @@ -82,21 +86,22 @@ let apply_changes zipper encoding changes = let zipper = String_zipper.goto_position zipper !pos encoding in let zipper = ref zipper in Edit_map.iter simplified ~f:(fun ~key:start ~data -> - (* guaranteed by the non overlapping property we aren't yet checking *) - assert (Position.compare start !pos >= 0); - zipper := String_zipper.goto_position !zipper !pos encoding; - let zipper' = String_zipper.goto_position !zipper start encoding in - String_zipper.add_buffer_between b !zipper zipper'; - zipper := zipper'; - List.rev data - |> List.iter ~f:(fun { TextEdit.newText; range } -> - assert (Position.compare range.end_ !pos >= 0); - pos := range.end_; - Buffer.add_string b newText)); + (* guaranteed by the non overlapping property we aren't yet checking *) + assert (Position.compare start !pos >= 0); + zipper := String_zipper.goto_position !zipper !pos encoding; + let zipper' = String_zipper.goto_position !zipper start encoding in + String_zipper.add_buffer_between b !zipper zipper'; + zipper := zipper'; + List.rev data + |> List.iter ~f:(fun { TextEdit.newText; range } -> + assert (Position.compare range.end_ !pos >= 0); + pos := range.end_; + Buffer.add_string b newText)); let zipper = String_zipper.goto_position !zipper !pos encoding in let zipper' = String_zipper.goto_end zipper in String_zipper.add_buffer_between b zipper zipper'; Buffer.contents b +;; let set_version t ~version = { t with version } @@ -104,18 +109,16 @@ let apply_text_document_edits t (edits : TextEdit.t list) = let text = apply_changes t.zipper t.position_encoding edits in let zipper = String_zipper.of_string text in { t with text = Some text; zipper } +;; let absolute_position t pos = - String_zipper.goto_position t.zipper pos t.position_encoding - |> String_zipper.offset + String_zipper.goto_position t.zipper pos t.position_encoding |> String_zipper.offset +;; let absolute_range t (range : Range.t) = - let zipper = - String_zipper.goto_position t.zipper range.start t.position_encoding - in + let zipper = String_zipper.goto_position t.zipper range.start t.position_encoding in let start = String_zipper.offset zipper in - let zipper = - String_zipper.goto_position zipper range.end_ t.position_encoding - in + let zipper = String_zipper.goto_position zipper range.end_ t.position_encoding in let stop = String_zipper.offset zipper in - (start, stop) + start, stop +;; diff --git a/lsp/src/text_document.mli b/lsp/src/text_document.mli index 871b75911..2ee794599 100644 --- a/lsp/src/text_document.mli +++ b/lsp/src/text_document.mli @@ -8,15 +8,10 @@ type encoding := ] val make : position_encoding:encoding -> DidOpenTextDocumentParams.t -> t - val languageId : t -> string - val documentUri : t -> Uri0.t - val position_encoding : t -> encoding - val version : t -> int - val text : t -> string type invalid_utf = @@ -25,8 +20,11 @@ type invalid_utf = exception Invalid_utf of invalid_utf -val apply_content_changes : - ?version:int -> t -> TextDocumentContentChangeEvent.t list -> t +val apply_content_changes + : ?version:int + -> t + -> TextDocumentContentChangeEvent.t list + -> t val set_version : t -> version:int -> t diff --git a/lsp/src/types.ml b/lsp/src/types.ml index 510a1f0c4..6bd9109c6 100644 --- a/lsp/src/types.ml +++ b/lsp/src/types.ml @@ -5,13 +5,9 @@ module NotebookDocumentSyncOptions = struct type t = unit [@@deriving_inline yojson] let _ = fun (_ : t) -> () - let t_of_yojson = (unit_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - let _ = t_of_yojson - let yojson_of_t = (yojson_of_unit : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - let _ = yojson_of_t [@@@end] @@ -21,13 +17,9 @@ module NotebookDocumentSyncRegistrationOptions = struct type t = unit [@@deriving_inline yojson] let _ = fun (_ : t) -> () - let t_of_yojson = (unit_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - let _ = t_of_yojson - let yojson_of_t = (yojson_of_unit : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - let _ = yojson_of_t [@@@end] @@ -37,13 +29,9 @@ module NotebookDocumentFilter = struct type t = unit [@@deriving_inline yojson] let _ = fun (_ : t) -> () - let t_of_yojson = (unit_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - let _ = t_of_yojson - let yojson_of_t = (yojson_of_unit : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - let _ = yojson_of_t [@@@end] @@ -58,19 +46,18 @@ module MarkedString = struct let yojson_of_t { value; language } = match language with | None -> `String value - | Some language -> - `Assoc [ ("value", `String value); ("language", `String language) ] + | Some language -> `Assoc [ "value", `String value; "language", `String language ] + ;; let t_of_yojson json = match json with | `String value -> { value; language = None } | `Assoc fields -> let value = Json.field_exn fields "value" Json.Conv.string_of_yojson in - let language = - Json.field_exn fields "language" Json.Conv.string_of_yojson - in + let language = Json.field_exn fields "language" Json.Conv.string_of_yojson in { value; language = Some language } | _ -> Json.error "invalid MarkedString" json + ;; end module DocumentUri = Uri0 @@ -86,6 +73,7 @@ module ProgressToken = struct | `String j -> `String j | `Int i -> `Int i | _ -> Json.error "invalid ProgressToken" json + ;; let yojson_of_t (t : t) : Json.t = (t :> Json.t) end @@ -99,14 +87,13 @@ module ProgressParams = struct let _ = fun (_ : 'a t) -> () - let t_of_yojson : - 'a. - (Ppx_yojson_conv_lib.Yojson.Safe.t -> 'a) - -> Ppx_yojson_conv_lib.Yojson.Safe.t - -> 'a t = + let t_of_yojson + : 'a. + (Ppx_yojson_conv_lib.Yojson.Safe.t -> 'a) -> Ppx_yojson_conv_lib.Yojson.Safe.t -> 'a t + = let _tp_loc = "lsp/src/types.ml.ProgressParams.t" in fun _of_a -> function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let token_field = ref Ppx_yojson_conv_lib.Option.None and value_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -114,74 +101,70 @@ module ProgressParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "token" -> ( - match Ppx_yojson_conv_lib.( ! ) token_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = ProgressToken.t_of_yojson _field_yojson in - token_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates - ) - | "value" -> ( - match Ppx_yojson_conv_lib.( ! ) value_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = _of_a _field_yojson in - value_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates - ) - | _ -> ()); + | "token" -> + (match Ppx_yojson_conv_lib.( ! ) token_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = ProgressToken.t_of_yojson _field_yojson in + token_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "value" -> + (match Ppx_yojson_conv_lib.( ! ) value_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = _of_a _field_yojson in + value_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) token_field - , Ppx_yojson_conv_lib.( ! ) value_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some token_value - , Ppx_yojson_conv_lib.Option.Some value_value ) -> - { token = token_value; value = value_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) token_field) - Ppx_yojson_conv_lib.Option.None - , "token" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) value_field) - Ppx_yojson_conv_lib.Option.None - , "value" ) - ]))) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) token_field + , Ppx_yojson_conv_lib.( ! ) value_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some token_value + , Ppx_yojson_conv_lib.Option.Some value_value ) -> + { token = token_value; value = value_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) token_field) + Ppx_yojson_conv_lib.Option.None + , "token" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) value_field) + Ppx_yojson_conv_lib.Option.None + , "value" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + ;; let _ = t_of_yojson - let yojson_of_t : - 'a. - ('a -> Ppx_yojson_conv_lib.Yojson.Safe.t) - -> 'a t - -> Ppx_yojson_conv_lib.Yojson.Safe.t = - fun _of_a -> function + let yojson_of_t + : 'a. + ('a -> Ppx_yojson_conv_lib.Yojson.Safe.t) -> 'a t -> Ppx_yojson_conv_lib.Yojson.Safe.t + = + fun _of_a -> function | { token = v_token; value = v_value } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = @@ -193,6 +176,7 @@ module ProgressParams = struct ("token", arg) :: bnds in `Assoc bnds + ;; let _ = yojson_of_t @@ -214,7 +198,7 @@ module TextDocumentFilter = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentFilter.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let language_field = ref Ppx_yojson_conv_lib.Option.None and scheme_field = ref Ppx_yojson_conv_lib.Option.None and pattern_field = ref Ppx_yojson_conv_lib.Option.None @@ -223,80 +207,79 @@ module TextDocumentFilter = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "language" -> ( - match Ppx_yojson_conv_lib.( ! ) language_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = option_of_yojson string_of_yojson _field_yojson in - language_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "scheme" -> ( - match Ppx_yojson_conv_lib.( ! ) scheme_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = option_of_yojson string_of_yojson _field_yojson in - scheme_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "pattern" -> ( - match Ppx_yojson_conv_lib.( ! ) pattern_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = option_of_yojson string_of_yojson _field_yojson in - pattern_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "language" -> + (match Ppx_yojson_conv_lib.( ! ) language_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = option_of_yojson string_of_yojson _field_yojson in + language_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "scheme" -> + (match Ppx_yojson_conv_lib.( ! ) scheme_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = option_of_yojson string_of_yojson _field_yojson in + scheme_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "pattern" -> + (match Ppx_yojson_conv_lib.( ! ) pattern_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = option_of_yojson string_of_yojson _field_yojson in + pattern_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) language_field - , Ppx_yojson_conv_lib.( ! ) scheme_field - , Ppx_yojson_conv_lib.( ! ) pattern_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some language_value - , Ppx_yojson_conv_lib.Option.Some scheme_value - , Ppx_yojson_conv_lib.Option.Some pattern_value ) -> - { language = language_value - ; scheme = scheme_value - ; pattern = pattern_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) language_field) - Ppx_yojson_conv_lib.Option.None - , "language" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) scheme_field) - Ppx_yojson_conv_lib.Option.None - , "scheme" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) pattern_field) - Ppx_yojson_conv_lib.Option.None - , "pattern" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) language_field + , Ppx_yojson_conv_lib.( ! ) scheme_field + , Ppx_yojson_conv_lib.( ! ) pattern_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some language_value + , Ppx_yojson_conv_lib.Option.Some scheme_value + , Ppx_yojson_conv_lib.Option.Some pattern_value ) -> + { language = language_value + ; scheme = scheme_value + ; pattern = pattern_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) language_field) + Ppx_yojson_conv_lib.Option.None + , "language" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) scheme_field) + Ppx_yojson_conv_lib.Option.None + , "scheme" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) pattern_field) + Ppx_yojson_conv_lib.Option.None + , "pattern" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -317,7 +300,8 @@ module TextDocumentFilter = struct ("language", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -333,11 +317,13 @@ module SymbolTag = struct let yojson_of_t (t : t) : Json.t = match t with | Deprecated -> `Int 1 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> Deprecated | _ -> Json.error "Invalid value. Expected one of:\n1" json + ;; end module SymbolKind = struct @@ -397,6 +383,7 @@ module SymbolKind = struct | Event -> `Int 24 | Operator -> `Int 25 | TypeParameter -> `Int 26 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -429,10 +416,10 @@ module SymbolKind = struct | _ -> Json.error "Invalid value.\n\ - Expected one of: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, \ - 16, 17,\n\ + Expected one of: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n\ 18, 19, 20, 21, 22, 23, 24, 25, 26" json + ;; end module ResourceOperationKind = struct @@ -446,6 +433,7 @@ module ResourceOperationKind = struct | Create -> `String "create" | Rename -> `String "rename" | Delete -> `String "delete" + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -456,6 +444,7 @@ module ResourceOperationKind = struct Json.error "Invalid value. Expected one of:\n\"create\", \"rename\", \"delete\"" json + ;; end module FailureHandlingKind = struct @@ -471,6 +460,7 @@ module FailureHandlingKind = struct | Transactional -> `String "transactional" | TextOnlyTransactional -> `String "textOnlyTransactional" | Undo -> `String "undo" + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -483,6 +473,7 @@ module FailureHandlingKind = struct "Invalid value. Expected one of: \"abort\", \"transactional\",\n\ \"textOnlyTransactional\", \"undo\"" json + ;; end module MarkupKind = struct @@ -494,15 +485,14 @@ module MarkupKind = struct match t with | PlainText -> `String "plaintext" | Markdown -> `String "markdown" + ;; let t_of_yojson (json : Json.t) : t = match json with | `String "plaintext" -> PlainText | `String "markdown" -> Markdown - | _ -> - Json.error - "Invalid value. Expected one of: \"plaintext\", \"markdown\"" - json + | _ -> Json.error "Invalid value. Expected one of: \"plaintext\", \"markdown\"" json + ;; end module TokenFormat = struct @@ -511,11 +501,13 @@ module TokenFormat = struct let yojson_of_t (t : t) : Json.t = match t with | Relative -> `String "relative" + ;; let t_of_yojson (json : Json.t) : t = match json with | `String "relative" -> Relative | _ -> Json.error "Invalid value.\nExpected one of: \"relative\"" json + ;; end module PrepareSupportDefaultBehavior = struct @@ -524,11 +516,13 @@ module PrepareSupportDefaultBehavior = struct let yojson_of_t (t : t) : Json.t = match t with | Identifier -> `Int 1 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> Identifier | _ -> Json.error "Invalid value. Expected one of:\n1" json + ;; end module DiagnosticTag = struct @@ -540,12 +534,14 @@ module DiagnosticTag = struct match t with | Unnecessary -> `Int 1 | Deprecated -> `Int 2 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> Unnecessary | `Int 2 -> Deprecated | _ -> Json.error "Invalid value. Expected one of: 1, 2" json + ;; end module FoldingRangeKind = struct @@ -561,6 +557,7 @@ module FoldingRangeKind = struct | Imports -> `String "imports" | Region -> `String "region" | Other s -> `String s + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -572,6 +569,7 @@ module FoldingRangeKind = struct Json.error "Invalid\nvalue. Expected one of: \"comment\", \"imports\", \"region\"" json + ;; end module InsertTextMode = struct @@ -583,12 +581,14 @@ module InsertTextMode = struct match t with | AsIs -> `Int 1 | AdjustIndentation -> `Int 2 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> AsIs | `Int 2 -> AdjustIndentation | _ -> Json.error "Invalid value. Expected one of: 1, 2" json + ;; end module CompletionItemKind = struct @@ -646,6 +646,7 @@ module CompletionItemKind = struct | Event -> `Int 23 | Operator -> `Int 24 | TypeParameter -> `Int 25 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -677,10 +678,10 @@ module CompletionItemKind = struct | _ -> Json.error "Invalid value. Expected one of: 1, 2, 3,\n\ - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, \ - 23, 24,\n\ + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n\ 25" json + ;; end module CompletionItemTag = struct @@ -689,11 +690,13 @@ module CompletionItemTag = struct let yojson_of_t (t : t) : Json.t = match t with | Deprecated -> `Int 1 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> Deprecated | _ -> Json.error "Invalid value. Expected one of:\n1" json + ;; end module CodeActionKind = struct @@ -721,6 +724,7 @@ module CodeActionKind = struct | SourceOrganizeImports -> `String "source.organizeImports" | SourceFixAll -> `String "source.fixAll" | Other s -> `String s + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -741,6 +745,7 @@ module CodeActionKind = struct \"refactor.rewrite\", \"source\", \"source.organizeImports\",\n\ \"source.fixAll\"" json + ;; end module PositionEncodingKind = struct @@ -756,6 +761,7 @@ module PositionEncodingKind = struct | UTF16 -> `String "utf-16" | UTF32 -> `String "utf-32" | Other s -> `String s + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -764,9 +770,8 @@ module PositionEncodingKind = struct | `String "utf-32" -> UTF32 | `String s -> Other s | _ -> - Json.error - "Invalid\nvalue. Expected one of: \"utf-8\", \"utf-16\", \"utf-32\"" - json + Json.error "Invalid\nvalue. Expected one of: \"utf-8\", \"utf-16\", \"utf-32\"" json + ;; end module DiagnosticSeverity = struct @@ -782,6 +787,7 @@ module DiagnosticSeverity = struct | Warning -> `Int 2 | Information -> `Int 3 | Hint -> `Int 4 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -790,6 +796,7 @@ module DiagnosticSeverity = struct | `Int 3 -> Information | `Int 4 -> Hint | _ -> Json.error "Invalid value. Expected one of: 1, 2, 3, 4" json + ;; end module CodeActionTriggerKind = struct @@ -801,12 +808,14 @@ module CodeActionTriggerKind = struct match t with | Invoked -> `Int 1 | Automatic -> `Int 2 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> Invoked | `Int 2 -> Automatic | _ -> Json.error "Invalid\nvalue. Expected one of: 1, 2" json + ;; end module CompletionTriggerKind = struct @@ -820,6 +829,7 @@ module CompletionTriggerKind = struct | Invoked -> `Int 1 | TriggerCharacter -> `Int 2 | TriggerForIncompleteCompletions -> `Int 3 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -827,6 +837,7 @@ module CompletionTriggerKind = struct | `Int 2 -> TriggerCharacter | `Int 3 -> TriggerForIncompleteCompletions | _ -> Json.error "Invalid value. Expected\none of: 1, 2, 3" json + ;; end module InsertTextFormat = struct @@ -838,12 +849,14 @@ module InsertTextFormat = struct match t with | PlainText -> `Int 1 | Snippet -> `Int 2 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> PlainText | `Int 2 -> Snippet | _ -> Json.error "Invalid\nvalue. Expected one of: 1, 2" json + ;; end module NotebookCellKind = struct @@ -855,12 +868,14 @@ module NotebookCellKind = struct match t with | Markup -> `Int 1 | Code -> `Int 2 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> Markup | `Int 2 -> Code | _ -> Json.error "Invalid value.\nExpected one of: 1, 2" json + ;; end module FileChangeType = struct @@ -874,6 +889,7 @@ module FileChangeType = struct | Created -> `Int 1 | Changed -> `Int 2 | Deleted -> `Int 3 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -881,6 +897,7 @@ module FileChangeType = struct | `Int 2 -> Changed | `Int 3 -> Deleted | _ -> Json.error "Invalid value. Expected one of: 1, 2, 3" json + ;; end module WatchKind = struct @@ -896,6 +913,7 @@ module WatchKind = struct | Change -> `Int 2 | Delete -> `Int 4 | Other s -> `String s + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -904,6 +922,7 @@ module WatchKind = struct | `Int 4 -> Delete | `String s -> Other s | _ -> Json.error "Invalid value. Expected one of: 1, 2,\n4" json + ;; end module DocumentDiagnosticReportKind = struct @@ -915,13 +934,14 @@ module DocumentDiagnosticReportKind = struct match t with | Full -> `String "full" | Unchanged -> `String "unchanged" + ;; let t_of_yojson (json : Json.t) : t = match json with | `String "full" -> Full | `String "unchanged" -> Unchanged - | _ -> - Json.error "Invalid value. Expected one of: \"full\", \"unchanged\"" json + | _ -> Json.error "Invalid value. Expected one of: \"full\", \"unchanged\"" json + ;; end module DocumentHighlightKind = struct @@ -935,6 +955,7 @@ module DocumentHighlightKind = struct | Text -> `Int 1 | Read -> `Int 2 | Write -> `Int 3 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -942,6 +963,7 @@ module DocumentHighlightKind = struct | `Int 2 -> Read | `Int 3 -> Write | _ -> Json.error "Invalid value. Expected one of: 1, 2, 3" json + ;; end module FileOperationPatternKind = struct @@ -953,13 +975,14 @@ module FileOperationPatternKind = struct match t with | File -> `String "file" | Folder -> `String "folder" + ;; let t_of_yojson (json : Json.t) : t = match json with | `String "file" -> File | `String "folder" -> Folder - | _ -> - Json.error "Invalid value. Expected one of: \"file\", \"folder\"" json + | _ -> Json.error "Invalid value. Expected one of: \"file\", \"folder\"" json + ;; end module TraceValues = struct @@ -975,6 +998,7 @@ module TraceValues = struct | Off -> `String "off" | Messages -> `String "messages" | Verbose -> `String "verbose" + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -984,9 +1008,9 @@ module TraceValues = struct | `String "verbose" -> Verbose | _ -> Json.error - "Invalid value. Expected one of: \"compact\", \"off\",\n\ - \"messages\", \"verbose\"" + "Invalid value. Expected one of: \"compact\", \"off\",\n\"messages\", \"verbose\"" json + ;; end module TextDocumentSyncKind = struct @@ -1000,6 +1024,7 @@ module TextDocumentSyncKind = struct | None -> `Int 0 | Full -> `Int 1 | Incremental -> `Int 2 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -1007,6 +1032,7 @@ module TextDocumentSyncKind = struct | `Int 1 -> Full | `Int 2 -> Incremental | _ -> Json.error "Invalid value. Expected one of: 0, 1, 2" json + ;; end module InlayHintKind = struct @@ -1018,12 +1044,14 @@ module InlayHintKind = struct match t with | Type -> `Int 1 | Parameter -> `Int 2 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 1 -> Type | `Int 2 -> Parameter | _ -> Json.error "Invalid\nvalue. Expected one of: 1, 2" json + ;; end module InlineCompletionTriggerKind = struct @@ -1035,12 +1063,14 @@ module InlineCompletionTriggerKind = struct match t with | Invoked -> `Int 0 | Automatic -> `Int 1 + ;; let t_of_yojson (json : Json.t) : t = match json with | `Int 0 -> Invoked | `Int 1 -> Automatic | _ -> Json.error "Invalid\nvalue. Expected one of: 0, 1" json + ;; end module MessageType = struct @@ -1058,6 +1088,7 @@ module MessageType = struct | Info -> `Int 3 | Log -> `Int 4 | Debug -> `Int 5 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -1067,6 +1098,7 @@ module MessageType = struct | `Int 4 -> Log | `Int 5 -> Debug | _ -> Json.error "Invalid value. Expected one of:\n1, 2, 3, 4, 5" json + ;; end module UniquenessLevel = struct @@ -1084,6 +1116,7 @@ module UniquenessLevel = struct | Group -> `String "group" | Scheme -> `String "scheme" | Global -> `String "global" + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -1098,6 +1131,7 @@ module UniquenessLevel = struct Expected one of: \"document\", \"project\", \"group\", \"scheme\",\n\ \"global\"" json + ;; end module MonikerKind = struct @@ -1111,6 +1145,7 @@ module MonikerKind = struct | Import -> `String "import" | Export -> `String "export" | Local -> `String "local" + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -1118,9 +1153,8 @@ module MonikerKind = struct | `String "export" -> Export | `String "local" -> Local | _ -> - Json.error - "Invalid value. Expected one of:\n\"import\", \"export\", \"local\"" - json + Json.error "Invalid value. Expected one of:\n\"import\", \"export\", \"local\"" json + ;; end module SemanticTokenModifiers = struct @@ -1148,6 +1182,7 @@ module SemanticTokenModifiers = struct | Modification -> `String "modification" | Documentation -> `String "documentation" | DefaultLibrary -> `String "defaultLibrary" + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -1164,12 +1199,11 @@ module SemanticTokenModifiers = struct | _ -> Json.error "Invalid value.\n\ - Expected one of: \"declaration\", \"definition\", \"readonly\", \ - \"static\",\n\ - \"deprecated\", \"abstract\", \"async\", \"modification\", \ - \"documentation\",\n\ + Expected one of: \"declaration\", \"definition\", \"readonly\", \"static\",\n\ + \"deprecated\", \"abstract\", \"async\", \"modification\", \"documentation\",\n\ \"defaultLibrary\"" json + ;; end module SemanticTokenTypes = struct @@ -1223,6 +1257,7 @@ module SemanticTokenTypes = struct | Regexp -> `String "regexp" | Operator -> `String "operator" | Decorator -> `String "decorator" + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -1252,13 +1287,12 @@ module SemanticTokenTypes = struct | _ -> Json.error "Invalid value. Expected one of: \"namespace\",\n\ - \"type\", \"class\", \"enum\", \"interface\", \"struct\", \ - \"typeParameter\",\n\ + \"type\", \"class\", \"enum\", \"interface\", \"struct\", \"typeParameter\",\n\ \"parameter\", \"variable\", \"property\", \"enumMember\", \"event\",\n\ - \"function\", \"method\", \"macro\", \"keyword\", \"modifier\", \ - \"comment\",\n\ + \"function\", \"method\", \"macro\", \"keyword\", \"modifier\", \"comment\",\n\ \"string\", \"number\", \"regexp\", \"operator\", \"decorator\"" json + ;; end module SignatureHelpTriggerKind = struct @@ -1272,6 +1306,7 @@ module SignatureHelpTriggerKind = struct | Invoked -> `Int 1 | TriggerCharacter -> `Int 2 | ContentChange -> `Int 3 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -1279,6 +1314,7 @@ module SignatureHelpTriggerKind = struct | `Int 2 -> TriggerCharacter | `Int 3 -> ContentChange | _ -> Json.error "Invalid value. Expected one of: 1, 2, 3" json + ;; end module TextDocumentSaveReason = struct @@ -1292,6 +1328,7 @@ module TextDocumentSaveReason = struct | Manual -> `Int 1 | AfterDelay -> `Int 2 | FocusOut -> `Int 3 + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -1299,6 +1336,7 @@ module TextDocumentSaveReason = struct | `Int 2 -> AfterDelay | `Int 3 -> FocusOut | _ -> Json.error "Invalid value. Expected one of: 1, 2, 3" json + ;; end module Position = struct @@ -1313,7 +1351,7 @@ module Position = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Position.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let character_field = ref Ppx_yojson_conv_lib.Option.None and line_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -1321,64 +1359,63 @@ module Position = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "character" -> ( - match Ppx_yojson_conv_lib.( ! ) character_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - character_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "line" -> ( - match Ppx_yojson_conv_lib.( ! ) line_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - line_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "character" -> + (match Ppx_yojson_conv_lib.( ! ) character_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + character_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "line" -> + (match Ppx_yojson_conv_lib.( ! ) line_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + line_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) character_field - , Ppx_yojson_conv_lib.( ! ) line_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some character_value - , Ppx_yojson_conv_lib.Option.Some line_value ) -> - { character = character_value; line = line_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) character_field) - Ppx_yojson_conv_lib.Option.None - , "character" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) line_field) - Ppx_yojson_conv_lib.Option.None - , "line" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) character_field + , Ppx_yojson_conv_lib.( ! ) line_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some character_value + , Ppx_yojson_conv_lib.Option.Some line_value ) -> + { character = character_value; line = line_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) character_field) + Ppx_yojson_conv_lib.Option.None + , "character" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) line_field) + Ppx_yojson_conv_lib.Option.None + , "line" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -1395,7 +1432,8 @@ module Position = struct ("character", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -1416,7 +1454,7 @@ module Range = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Range.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let end__field = ref Ppx_yojson_conv_lib.Option.None and start_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -1424,64 +1462,63 @@ module Range = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "end" -> ( - match Ppx_yojson_conv_lib.( ! ) end__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - end__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "start" -> ( - match Ppx_yojson_conv_lib.( ! ) start_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - start_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "end" -> + (match Ppx_yojson_conv_lib.( ! ) end__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + end__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "start" -> + (match Ppx_yojson_conv_lib.( ! ) start_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + start_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) end__field - , Ppx_yojson_conv_lib.( ! ) start_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some end__value - , Ppx_yojson_conv_lib.Option.Some start_value ) -> - { end_ = end__value; start = start_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) end__field) - Ppx_yojson_conv_lib.Option.None - , "end_" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) start_field) - Ppx_yojson_conv_lib.Option.None - , "start" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) end__field + , Ppx_yojson_conv_lib.( ! ) start_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some end__value + , Ppx_yojson_conv_lib.Option.Some start_value ) -> + { end_ = end__value; start = start_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) end__field) + Ppx_yojson_conv_lib.Option.None + , "end_" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) start_field) + Ppx_yojson_conv_lib.Option.None + , "start" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -1498,7 +1535,8 @@ module Range = struct ("end", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -1511,13 +1549,9 @@ module ChangeAnnotationIdentifier = struct type t = string [@@deriving_inline yojson] let _ = fun (_ : t) -> () - let t_of_yojson = (string_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - let _ = t_of_yojson - let yojson_of_t = (yojson_of_string : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - let _ = yojson_of_t [@@@end] @@ -1536,7 +1570,7 @@ module AnnotatedTextEdit = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.AnnotatedTextEdit.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let annotationId_field = ref Ppx_yojson_conv_lib.Option.None and newText_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None @@ -1545,89 +1579,85 @@ module AnnotatedTextEdit = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "annotationId" -> ( - match Ppx_yojson_conv_lib.( ! ) annotationId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - ChangeAnnotationIdentifier.t_of_yojson _field_yojson - in - annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "newText" -> ( - match Ppx_yojson_conv_lib.( ! ) newText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - newText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) annotationId_field - , Ppx_yojson_conv_lib.( ! ) newText_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some annotationId_value - , Ppx_yojson_conv_lib.Option.Some newText_value - , Ppx_yojson_conv_lib.Option.Some range_value ) -> - { annotationId = annotationId_value - ; newText = newText_value - ; range = range_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) annotationId_field) - Ppx_yojson_conv_lib.Option.None - , "annotationId" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) newText_field) - Ppx_yojson_conv_lib.Option.None - , "newText" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { annotationId = v_annotationId; newText = v_newText; range = v_range } - -> + | "annotationId" -> + (match Ppx_yojson_conv_lib.( ! ) annotationId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = ChangeAnnotationIdentifier.t_of_yojson _field_yojson in + annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "newText" -> + (match Ppx_yojson_conv_lib.( ! ) newText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + newText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) annotationId_field + , Ppx_yojson_conv_lib.( ! ) newText_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some annotationId_value + , Ppx_yojson_conv_lib.Option.Some newText_value + , Ppx_yojson_conv_lib.Option.Some range_value ) -> + { annotationId = annotationId_value + ; newText = newText_value + ; range = range_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) annotationId_field) + Ppx_yojson_conv_lib.Option.None + , "annotationId" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) newText_field) + Ppx_yojson_conv_lib.Option.None + , "newText" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { annotationId = v_annotationId; newText = v_newText; range = v_range } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = let arg = Range.yojson_of_t v_range in @@ -1642,23 +1672,28 @@ module AnnotatedTextEdit = struct ("annotationId", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(annotationId : ChangeAnnotationIdentifier.t) ~(newText : string) - ~(range : Range.t) : t = + let create + ~(annotationId : ChangeAnnotationIdentifier.t) + ~(newText : string) + ~(range : Range.t) + : t + = { annotationId; newText; range } + ;; end module DeleteFileOptions = struct type t = { ignoreIfNotExists : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; recursive : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; recursive : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -1667,7 +1702,7 @@ module DeleteFileOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DeleteFileOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let ignoreIfNotExists_field = ref Ppx_yojson_conv_lib.Option.None and recursive_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -1675,61 +1710,60 @@ module DeleteFileOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "ignoreIfNotExists" -> ( - match Ppx_yojson_conv_lib.( ! ) ignoreIfNotExists_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - ignoreIfNotExists_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "recursive" -> ( - match Ppx_yojson_conv_lib.( ! ) recursive_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - recursive_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "ignoreIfNotExists" -> + (match Ppx_yojson_conv_lib.( ! ) ignoreIfNotExists_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + ignoreIfNotExists_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "recursive" -> + (match Ppx_yojson_conv_lib.( ! ) recursive_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + recursive_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ignoreIfNotExists_value, recursive_value = - ( Ppx_yojson_conv_lib.( ! ) ignoreIfNotExists_field - , Ppx_yojson_conv_lib.( ! ) recursive_field ) - in - { ignoreIfNotExists = - (match ignoreIfNotExists_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; recursive = - (match recursive_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ignoreIfNotExists_value, recursive_value = + ( Ppx_yojson_conv_lib.( ! ) ignoreIfNotExists_field + , Ppx_yojson_conv_lib.( ! ) recursive_field ) + in + { ignoreIfNotExists = + (match ignoreIfNotExists_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; recursive = + (match recursive_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -1738,42 +1772,43 @@ module DeleteFileOptions = struct | { ignoreIfNotExists = v_ignoreIfNotExists; recursive = v_recursive } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_recursive then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_recursive - in - let bnd = ("recursive", arg) in - bnd :: bnds + if None = v_recursive + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_recursive in + let bnd = "recursive", arg in + bnd :: bnds) in let bnds = - if None = v_ignoreIfNotExists then bnds - else + if None = v_ignoreIfNotExists + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_ignoreIfNotExists + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_ignoreIfNotExists in - let bnd = ("ignoreIfNotExists", arg) in - bnd :: bnds + let bnd = "ignoreIfNotExists", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(ignoreIfNotExists : bool option) ?(recursive : bool option) - (() : unit) : t = + let create ?(ignoreIfNotExists : bool option) ?(recursive : bool option) (() : unit) : t + = { ignoreIfNotExists; recursive } + ;; end module DeleteFile = struct type t = { annotationId : ChangeAnnotationIdentifier.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; options : DeleteFileOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; uri : DocumentUri.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -1783,7 +1818,7 @@ module DeleteFile = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DeleteFile.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let annotationId_field = ref Ppx_yojson_conv_lib.Option.None and options_field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None @@ -1792,86 +1827,85 @@ module DeleteFile = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "annotationId" -> ( - match Ppx_yojson_conv_lib.( ! ) annotationId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ChangeAnnotationIdentifier.t_of_yojson - _field_yojson - in - annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "options" -> ( - match Ppx_yojson_conv_lib.( ! ) options_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DeleteFileOptions.t_of_yojson - _field_yojson - in - options_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) annotationId_field - , Ppx_yojson_conv_lib.( ! ) options_field - , Ppx_yojson_conv_lib.( ! ) uri_field ) - with - | ( annotationId_value - , options_value - , Ppx_yojson_conv_lib.Option.Some uri_value ) -> - { annotationId = - (match annotationId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; options = - (match options_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; uri = uri_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "annotationId" -> + (match Ppx_yojson_conv_lib.( ! ) annotationId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ChangeAnnotationIdentifier.t_of_yojson + _field_yojson + in + annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "options" -> + (match Ppx_yojson_conv_lib.( ! ) options_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DeleteFileOptions.t_of_yojson + _field_yojson + in + options_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) annotationId_field + , Ppx_yojson_conv_lib.( ! ) options_field + , Ppx_yojson_conv_lib.( ! ) uri_field ) + with + | ( annotationId_value + , options_value + , Ppx_yojson_conv_lib.Option.Some uri_value ) -> + { annotationId = + (match annotationId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; options = + (match options_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; uri = uri_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -1884,51 +1918,56 @@ module DeleteFile = struct ("uri", arg) :: bnds in let bnds = - if None = v_options then bnds - else + if None = v_options + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t DeleteFileOptions.yojson_of_t) - v_options + (Json.Nullable_option.yojson_of_t DeleteFileOptions.yojson_of_t) v_options in - let bnd = ("options", arg) in - bnd :: bnds + let bnd = "options", arg in + bnd :: bnds) in let bnds = - if None = v_annotationId then bnds - else + if None = v_annotationId + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - ChangeAnnotationIdentifier.yojson_of_t) + (Json.Nullable_option.yojson_of_t ChangeAnnotationIdentifier.yojson_of_t) v_annotationId in - let bnd = ("annotationId", arg) in - bnd :: bnds + let bnd = "annotationId", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(annotationId : ChangeAnnotationIdentifier.t option) - ?(options : DeleteFileOptions.t option) ~(uri : DocumentUri.t) (() : unit) - : t = + let create + ?(annotationId : ChangeAnnotationIdentifier.t option) + ?(options : DeleteFileOptions.t option) + ~(uri : DocumentUri.t) + (() : unit) + : t + = { annotationId; options; uri } + ;; - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "delete" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "delete" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "delete" t_of_yojson json + ;; end module RenameFileOptions = struct type t = { ignoreIfExists : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; overwrite : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; overwrite : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -1937,7 +1976,7 @@ module RenameFileOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RenameFileOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let ignoreIfExists_field = ref Ppx_yojson_conv_lib.Option.None and overwrite_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -1945,61 +1984,60 @@ module RenameFileOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "ignoreIfExists" -> ( - match Ppx_yojson_conv_lib.( ! ) ignoreIfExists_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - ignoreIfExists_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "overwrite" -> ( - match Ppx_yojson_conv_lib.( ! ) overwrite_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - overwrite_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "ignoreIfExists" -> + (match Ppx_yojson_conv_lib.( ! ) ignoreIfExists_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + ignoreIfExists_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "overwrite" -> + (match Ppx_yojson_conv_lib.( ! ) overwrite_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + overwrite_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ignoreIfExists_value, overwrite_value = - ( Ppx_yojson_conv_lib.( ! ) ignoreIfExists_field - , Ppx_yojson_conv_lib.( ! ) overwrite_field ) - in - { ignoreIfExists = - (match ignoreIfExists_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; overwrite = - (match overwrite_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ignoreIfExists_value, overwrite_value = + ( Ppx_yojson_conv_lib.( ! ) ignoreIfExists_field + , Ppx_yojson_conv_lib.( ! ) overwrite_field ) + in + { ignoreIfExists = + (match ignoreIfExists_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; overwrite = + (match overwrite_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -2008,43 +2046,42 @@ module RenameFileOptions = struct | { ignoreIfExists = v_ignoreIfExists; overwrite = v_overwrite } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_overwrite then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_overwrite - in - let bnd = ("overwrite", arg) in - bnd :: bnds + if None = v_overwrite + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_overwrite in + let bnd = "overwrite", arg in + bnd :: bnds) in let bnds = - if None = v_ignoreIfExists then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_ignoreIfExists - in - let bnd = ("ignoreIfExists", arg) in - bnd :: bnds + if None = v_ignoreIfExists + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_ignoreIfExists in + let bnd = "ignoreIfExists", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(ignoreIfExists : bool option) ?(overwrite : bool option) - (() : unit) : t = + let create ?(ignoreIfExists : bool option) ?(overwrite : bool option) (() : unit) : t = { ignoreIfExists; overwrite } + ;; end module RenameFile = struct type t = { annotationId : ChangeAnnotationIdentifier.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; newUri : DocumentUri.t ; oldUri : DocumentUri.t ; options : RenameFileOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -2053,7 +2090,7 @@ module RenameFile = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RenameFile.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let annotationId_field = ref Ppx_yojson_conv_lib.Option.None and newUri_field = ref Ppx_yojson_conv_lib.Option.None and oldUri_field = ref Ppx_yojson_conv_lib.Option.None @@ -2063,100 +2100,99 @@ module RenameFile = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "annotationId" -> ( - match Ppx_yojson_conv_lib.( ! ) annotationId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ChangeAnnotationIdentifier.t_of_yojson - _field_yojson - in - annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "newUri" -> ( - match Ppx_yojson_conv_lib.( ! ) newUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - newUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "oldUri" -> ( - match Ppx_yojson_conv_lib.( ! ) oldUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - oldUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "options" -> ( - match Ppx_yojson_conv_lib.( ! ) options_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - RenameFileOptions.t_of_yojson - _field_yojson - in - options_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) annotationId_field - , Ppx_yojson_conv_lib.( ! ) newUri_field - , Ppx_yojson_conv_lib.( ! ) oldUri_field - , Ppx_yojson_conv_lib.( ! ) options_field ) - with - | ( annotationId_value - , Ppx_yojson_conv_lib.Option.Some newUri_value - , Ppx_yojson_conv_lib.Option.Some oldUri_value - , options_value ) -> - { annotationId = - (match annotationId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; newUri = newUri_value - ; oldUri = oldUri_value - ; options = - (match options_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) newUri_field) - Ppx_yojson_conv_lib.Option.None - , "newUri" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) oldUri_field) - Ppx_yojson_conv_lib.Option.None - , "oldUri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "annotationId" -> + (match Ppx_yojson_conv_lib.( ! ) annotationId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ChangeAnnotationIdentifier.t_of_yojson + _field_yojson + in + annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "newUri" -> + (match Ppx_yojson_conv_lib.( ! ) newUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + newUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "oldUri" -> + (match Ppx_yojson_conv_lib.( ! ) oldUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + oldUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "options" -> + (match Ppx_yojson_conv_lib.( ! ) options_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + RenameFileOptions.t_of_yojson + _field_yojson + in + options_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) annotationId_field + , Ppx_yojson_conv_lib.( ! ) newUri_field + , Ppx_yojson_conv_lib.( ! ) oldUri_field + , Ppx_yojson_conv_lib.( ! ) options_field ) + with + | ( annotationId_value + , Ppx_yojson_conv_lib.Option.Some newUri_value + , Ppx_yojson_conv_lib.Option.Some oldUri_value + , options_value ) -> + { annotationId = + (match annotationId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; newUri = newUri_value + ; oldUri = oldUri_value + ; options = + (match options_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) newUri_field) + Ppx_yojson_conv_lib.Option.None + , "newUri" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) oldUri_field) + Ppx_yojson_conv_lib.Option.None + , "oldUri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -2169,14 +2205,14 @@ module RenameFile = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_options then bnds - else + if None = v_options + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t RenameFileOptions.yojson_of_t) - v_options + (Json.Nullable_option.yojson_of_t RenameFileOptions.yojson_of_t) v_options in - let bnd = ("options", arg) in - bnd :: bnds + let bnd = "options", arg in + bnd :: bnds) in let bnds = let arg = DocumentUri.yojson_of_t v_oldUri in @@ -2187,41 +2223,47 @@ module RenameFile = struct ("newUri", arg) :: bnds in let bnds = - if None = v_annotationId then bnds - else + if None = v_annotationId + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - ChangeAnnotationIdentifier.yojson_of_t) + (Json.Nullable_option.yojson_of_t ChangeAnnotationIdentifier.yojson_of_t) v_annotationId in - let bnd = ("annotationId", arg) in - bnd :: bnds + let bnd = "annotationId", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(annotationId : ChangeAnnotationIdentifier.t option) - ~(newUri : DocumentUri.t) ~(oldUri : DocumentUri.t) - ?(options : RenameFileOptions.t option) (() : unit) : t = + let create + ?(annotationId : ChangeAnnotationIdentifier.t option) + ~(newUri : DocumentUri.t) + ~(oldUri : DocumentUri.t) + ?(options : RenameFileOptions.t option) + (() : unit) + : t + = { annotationId; newUri; oldUri; options } + ;; - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "rename" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "rename" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "rename" t_of_yojson json + ;; end module CreateFileOptions = struct type t = { ignoreIfExists : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; overwrite : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; overwrite : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -2230,7 +2272,7 @@ module CreateFileOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CreateFileOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let ignoreIfExists_field = ref Ppx_yojson_conv_lib.Option.None and overwrite_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -2238,61 +2280,60 @@ module CreateFileOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "ignoreIfExists" -> ( - match Ppx_yojson_conv_lib.( ! ) ignoreIfExists_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - ignoreIfExists_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "overwrite" -> ( - match Ppx_yojson_conv_lib.( ! ) overwrite_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - overwrite_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "ignoreIfExists" -> + (match Ppx_yojson_conv_lib.( ! ) ignoreIfExists_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + ignoreIfExists_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "overwrite" -> + (match Ppx_yojson_conv_lib.( ! ) overwrite_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + overwrite_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ignoreIfExists_value, overwrite_value = - ( Ppx_yojson_conv_lib.( ! ) ignoreIfExists_field - , Ppx_yojson_conv_lib.( ! ) overwrite_field ) - in - { ignoreIfExists = - (match ignoreIfExists_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; overwrite = - (match overwrite_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ignoreIfExists_value, overwrite_value = + ( Ppx_yojson_conv_lib.( ! ) ignoreIfExists_field + , Ppx_yojson_conv_lib.( ! ) overwrite_field ) + in + { ignoreIfExists = + (match ignoreIfExists_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; overwrite = + (match overwrite_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -2301,41 +2342,40 @@ module CreateFileOptions = struct | { ignoreIfExists = v_ignoreIfExists; overwrite = v_overwrite } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_overwrite then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_overwrite - in - let bnd = ("overwrite", arg) in - bnd :: bnds + if None = v_overwrite + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_overwrite in + let bnd = "overwrite", arg in + bnd :: bnds) in let bnds = - if None = v_ignoreIfExists then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_ignoreIfExists - in - let bnd = ("ignoreIfExists", arg) in - bnd :: bnds + if None = v_ignoreIfExists + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_ignoreIfExists in + let bnd = "ignoreIfExists", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(ignoreIfExists : bool option) ?(overwrite : bool option) - (() : unit) : t = + let create ?(ignoreIfExists : bool option) ?(overwrite : bool option) (() : unit) : t = { ignoreIfExists; overwrite } + ;; end module CreateFile = struct type t = { annotationId : ChangeAnnotationIdentifier.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; options : CreateFileOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; uri : DocumentUri.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -2345,7 +2385,7 @@ module CreateFile = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CreateFile.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let annotationId_field = ref Ppx_yojson_conv_lib.Option.None and options_field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None @@ -2354,86 +2394,85 @@ module CreateFile = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "annotationId" -> ( - match Ppx_yojson_conv_lib.( ! ) annotationId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ChangeAnnotationIdentifier.t_of_yojson - _field_yojson - in - annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "options" -> ( - match Ppx_yojson_conv_lib.( ! ) options_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CreateFileOptions.t_of_yojson - _field_yojson - in - options_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) annotationId_field - , Ppx_yojson_conv_lib.( ! ) options_field - , Ppx_yojson_conv_lib.( ! ) uri_field ) - with - | ( annotationId_value - , options_value - , Ppx_yojson_conv_lib.Option.Some uri_value ) -> - { annotationId = - (match annotationId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; options = - (match options_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; uri = uri_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "annotationId" -> + (match Ppx_yojson_conv_lib.( ! ) annotationId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ChangeAnnotationIdentifier.t_of_yojson + _field_yojson + in + annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "options" -> + (match Ppx_yojson_conv_lib.( ! ) options_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CreateFileOptions.t_of_yojson + _field_yojson + in + options_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) annotationId_field + , Ppx_yojson_conv_lib.( ! ) options_field + , Ppx_yojson_conv_lib.( ! ) uri_field ) + with + | ( annotationId_value + , options_value + , Ppx_yojson_conv_lib.Option.Some uri_value ) -> + { annotationId = + (match annotationId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; options = + (match options_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; uri = uri_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -2446,61 +2485,64 @@ module CreateFile = struct ("uri", arg) :: bnds in let bnds = - if None = v_options then bnds - else + if None = v_options + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t CreateFileOptions.yojson_of_t) - v_options + (Json.Nullable_option.yojson_of_t CreateFileOptions.yojson_of_t) v_options in - let bnd = ("options", arg) in - bnd :: bnds + let bnd = "options", arg in + bnd :: bnds) in let bnds = - if None = v_annotationId then bnds - else + if None = v_annotationId + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - ChangeAnnotationIdentifier.yojson_of_t) + (Json.Nullable_option.yojson_of_t ChangeAnnotationIdentifier.yojson_of_t) v_annotationId in - let bnd = ("annotationId", arg) in - bnd :: bnds + let bnd = "annotationId", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(annotationId : ChangeAnnotationIdentifier.t option) - ?(options : CreateFileOptions.t option) ~(uri : DocumentUri.t) (() : unit) - : t = + let create + ?(annotationId : ChangeAnnotationIdentifier.t option) + ?(options : CreateFileOptions.t option) + ~(uri : DocumentUri.t) + (() : unit) + : t + = { annotationId; options; uri } + ;; - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "create" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "create" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "create" t_of_yojson json + ;; end module OptionalVersionedTextDocumentIdentifier = struct type t = { uri : DocumentUri.t - ; version : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.OptionalVersionedTextDocumentIdentifier.t" - in + (let _tp_loc = "lsp/src/types.ml.OptionalVersionedTextDocumentIdentifier.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let uri_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -2508,66 +2550,65 @@ module OptionalVersionedTextDocumentIdentifier = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | Ppx_yojson_conv_lib.Option.Some uri_value, version_value -> - { uri = uri_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) uri_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | Ppx_yojson_conv_lib.Option.Some uri_value, version_value -> + { uri = uri_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -2576,20 +2617,20 @@ module OptionalVersionedTextDocumentIdentifier = struct | { uri = v_uri; version = v_version } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = DocumentUri.yojson_of_t v_uri in ("uri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -2597,6 +2638,7 @@ module OptionalVersionedTextDocumentIdentifier = struct let create ~(uri : DocumentUri.t) ?(version : int option) (() : unit) : t = { uri; version } + ;; end module TextEdit = struct @@ -2611,7 +2653,7 @@ module TextEdit = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextEdit.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let newText_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -2619,64 +2661,63 @@ module TextEdit = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "newText" -> ( - match Ppx_yojson_conv_lib.( ! ) newText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - newText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "newText" -> + (match Ppx_yojson_conv_lib.( ! ) newText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + newText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) newText_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some newText_value - , Ppx_yojson_conv_lib.Option.Some range_value ) -> - { newText = newText_value; range = range_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) newText_field) - Ppx_yojson_conv_lib.Option.None - , "newText" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) newText_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some newText_value + , Ppx_yojson_conv_lib.Option.Some range_value ) -> + { newText = newText_value; range = range_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) newText_field) + Ppx_yojson_conv_lib.Option.None + , "newText" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -2693,7 +2734,8 @@ module TextEdit = struct ("newText", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -2715,11 +2757,13 @@ module TextDocumentEdit = struct ; (fun json -> `AnnotatedTextEdit (AnnotatedTextEdit.t_of_yojson json)) ] json + ;; let yojson_of_edits_pvar (edits_pvar : edits_pvar) : Json.t = match edits_pvar with | `TextEdit s -> TextEdit.yojson_of_t s | `AnnotatedTextEdit s -> AnnotatedTextEdit.yojson_of_t s + ;; type t = { edits : edits_pvar list @@ -2732,7 +2776,7 @@ module TextDocumentEdit = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentEdit.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let edits_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -2740,67 +2784,65 @@ module TextDocumentEdit = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "edits" -> ( - match Ppx_yojson_conv_lib.( ! ) edits_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson edits_pvar_of_yojson _field_yojson in - edits_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - OptionalVersionedTextDocumentIdentifier.t_of_yojson - _field_yojson - in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "edits" -> + (match Ppx_yojson_conv_lib.( ! ) edits_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson edits_pvar_of_yojson _field_yojson in + edits_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + OptionalVersionedTextDocumentIdentifier.t_of_yojson _field_yojson + in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) edits_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some edits_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> - { edits = edits_value; textDocument = textDocument_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) edits_field) - Ppx_yojson_conv_lib.Option.None - , "edits" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) edits_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some edits_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> + { edits = edits_value; textDocument = textDocument_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) edits_field) + Ppx_yojson_conv_lib.Option.None + , "edits" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -2809,9 +2851,7 @@ module TextDocumentEdit = struct | { edits = v_edits; textDocument = v_textDocument } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - let arg = - OptionalVersionedTextDocumentIdentifier.yojson_of_t v_textDocument - in + let arg = OptionalVersionedTextDocumentIdentifier.yojson_of_t v_textDocument in ("textDocument", arg) :: bnds in let bnds = @@ -2819,24 +2859,29 @@ module TextDocumentEdit = struct ("edits", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(edits : edits_pvar list) - ~(textDocument : OptionalVersionedTextDocumentIdentifier.t) : t = + let create + ~(edits : edits_pvar list) + ~(textDocument : OptionalVersionedTextDocumentIdentifier.t) + : t + = { edits; textDocument } + ;; end module ChangeAnnotation = struct type t = { description : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; label : string ; needsConfirmation : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -2845,7 +2890,7 @@ module ChangeAnnotation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ChangeAnnotation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let description_field = ref Ppx_yojson_conv_lib.Option.None and label_field = ref Ppx_yojson_conv_lib.Option.None and needsConfirmation_field = ref Ppx_yojson_conv_lib.Option.None @@ -2854,125 +2899,130 @@ module ChangeAnnotation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "description" -> ( - match Ppx_yojson_conv_lib.( ! ) description_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - description_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "needsConfirmation" -> ( - match Ppx_yojson_conv_lib.( ! ) needsConfirmation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - needsConfirmation_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) description_field - , Ppx_yojson_conv_lib.( ! ) label_field - , Ppx_yojson_conv_lib.( ! ) needsConfirmation_field ) - with - | ( description_value - , Ppx_yojson_conv_lib.Option.Some label_value - , needsConfirmation_value ) -> - { description = - (match description_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; label = label_value - ; needsConfirmation = - (match needsConfirmation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) label_field) - Ppx_yojson_conv_lib.Option.None - , "label" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { description = v_description + | "description" -> + (match Ppx_yojson_conv_lib.( ! ) description_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + description_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "needsConfirmation" -> + (match Ppx_yojson_conv_lib.( ! ) needsConfirmation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + needsConfirmation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) description_field + , Ppx_yojson_conv_lib.( ! ) label_field + , Ppx_yojson_conv_lib.( ! ) needsConfirmation_field ) + with + | ( description_value + , Ppx_yojson_conv_lib.Option.Some label_value + , needsConfirmation_value ) -> + { description = + (match description_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; label = label_value + ; needsConfirmation = + (match needsConfirmation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) label_field) + Ppx_yojson_conv_lib.Option.None + , "label" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { description = v_description ; label = v_label ; needsConfirmation = v_needsConfirmation } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_needsConfirmation then bnds - else + if None = v_needsConfirmation + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_needsConfirmation + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_needsConfirmation in - let bnd = ("needsConfirmation", arg) in - bnd :: bnds + let bnd = "needsConfirmation", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_label in ("label", arg) :: bnds in let bnds = - if None = v_description then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_description - in - let bnd = ("description", arg) in - bnd :: bnds + if None = v_description + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_description in + let bnd = "description", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(description : string option) ~(label : string) - ?(needsConfirmation : bool option) (() : unit) : t = + let create + ?(description : string option) + ~(label : string) + ?(needsConfirmation : bool option) + (() : unit) + : t + = { description; label; needsConfirmation } + ;; end module WorkspaceEdit = struct @@ -2992,25 +3042,27 @@ module WorkspaceEdit = struct ; (fun json -> `DeleteFile (DeleteFile.t_of_yojson json)) ] json + ;; - let yojson_of_documentChanges_pvar - (documentChanges_pvar : documentChanges_pvar) : Json.t = + let yojson_of_documentChanges_pvar (documentChanges_pvar : documentChanges_pvar) + : Json.t + = match documentChanges_pvar with | `TextDocumentEdit s -> TextDocumentEdit.yojson_of_t s | `CreateFile s -> CreateFile.yojson_of_t s | `RenameFile s -> RenameFile.yojson_of_t s | `DeleteFile s -> DeleteFile.yojson_of_t s + ;; type t = { changeAnnotations : (ChangeAnnotationIdentifier.t, ChangeAnnotation.t) Json.Assoc.t - Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; changes : - (DocumentUri.t, TextEdit.t list) Json.Assoc.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] + ; changes : (DocumentUri.t, TextEdit.t list) Json.Assoc.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; documentChanges : documentChanges_pvar list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -3019,7 +3071,7 @@ module WorkspaceEdit = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceEdit.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let changeAnnotations_field = ref Ppx_yojson_conv_lib.Option.None and changes_field = ref Ppx_yojson_conv_lib.Option.None and documentChanges_field = ref Ppx_yojson_conv_lib.Option.None @@ -3028,85 +3080,84 @@ module WorkspaceEdit = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "changeAnnotations" -> ( - match Ppx_yojson_conv_lib.( ! ) changeAnnotations_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Assoc.t_of_yojson - ChangeAnnotationIdentifier.t_of_yojson - ChangeAnnotation.t_of_yojson) - _field_yojson - in - changeAnnotations_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "changes" -> ( - match Ppx_yojson_conv_lib.( ! ) changes_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Assoc.t_of_yojson - DocumentUri.t_of_yojson - (list_of_yojson TextEdit.t_of_yojson)) - _field_yojson - in - changes_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentChanges" -> ( - match Ppx_yojson_conv_lib.( ! ) documentChanges_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson documentChanges_pvar_of_yojson) - _field_yojson - in - documentChanges_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let changeAnnotations_value, changes_value, documentChanges_value = - ( Ppx_yojson_conv_lib.( ! ) changeAnnotations_field - , Ppx_yojson_conv_lib.( ! ) changes_field - , Ppx_yojson_conv_lib.( ! ) documentChanges_field ) - in - { changeAnnotations = - (match changeAnnotations_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; changes = - (match changes_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentChanges = - (match documentChanges_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "changeAnnotations" -> + (match Ppx_yojson_conv_lib.( ! ) changeAnnotations_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Assoc.t_of_yojson + ChangeAnnotationIdentifier.t_of_yojson + ChangeAnnotation.t_of_yojson) + _field_yojson + in + changeAnnotations_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "changes" -> + (match Ppx_yojson_conv_lib.( ! ) changes_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Assoc.t_of_yojson + DocumentUri.t_of_yojson + (list_of_yojson TextEdit.t_of_yojson)) + _field_yojson + in + changes_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentChanges" -> + (match Ppx_yojson_conv_lib.( ! ) documentChanges_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson documentChanges_pvar_of_yojson) + _field_yojson + in + documentChanges_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let changeAnnotations_value, changes_value, documentChanges_value = + ( Ppx_yojson_conv_lib.( ! ) changeAnnotations_field + , Ppx_yojson_conv_lib.( ! ) changes_field + , Ppx_yojson_conv_lib.( ! ) documentChanges_field ) + in + { changeAnnotations = + (match changeAnnotations_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; changes = + (match changes_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentChanges = + (match documentChanges_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -3118,19 +3169,21 @@ module WorkspaceEdit = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_documentChanges then bnds - else + if None = v_documentChanges + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_documentChanges_pvar)) v_documentChanges in - let bnd = ("documentChanges", arg) in - bnd :: bnds + let bnd = "documentChanges", arg in + bnd :: bnds) in let bnds = - if None = v_changes then bnds - else + if None = v_changes + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Assoc.yojson_of_t @@ -3138,12 +3191,13 @@ module WorkspaceEdit = struct (yojson_of_list TextEdit.yojson_of_t))) v_changes in - let bnd = ("changes", arg) in - bnd :: bnds + let bnd = "changes", arg in + bnd :: bnds) in let bnds = - if None = v_changeAnnotations then bnds - else + if None = v_changeAnnotations + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Assoc.yojson_of_t @@ -3151,29 +3205,33 @@ module WorkspaceEdit = struct ChangeAnnotation.yojson_of_t)) v_changeAnnotations in - let bnd = ("changeAnnotations", arg) in - bnd :: bnds + let bnd = "changeAnnotations", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] let create - ?(changeAnnotations : - (ChangeAnnotationIdentifier.t, ChangeAnnotation.t) Json.Assoc.t option) - ?(changes : (DocumentUri.t, TextEdit.t list) Json.Assoc.t option) - ?(documentChanges : documentChanges_pvar list option) (() : unit) : t = + ?(changeAnnotations : + (ChangeAnnotationIdentifier.t, ChangeAnnotation.t) Json.Assoc.t option) + ?(changes : (DocumentUri.t, TextEdit.t list) Json.Assoc.t option) + ?(documentChanges : documentChanges_pvar list option) + (() : unit) + : t + = { changeAnnotations; changes; documentChanges } + ;; end module ApplyWorkspaceEditParams = struct type t = { edit : WorkspaceEdit.t - ; label : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; label : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -3182,7 +3240,7 @@ module ApplyWorkspaceEditParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ApplyWorkspaceEditParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let edit_field = ref Ppx_yojson_conv_lib.Option.None and label_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -3190,66 +3248,65 @@ module ApplyWorkspaceEditParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "edit" -> ( - match Ppx_yojson_conv_lib.( ! ) edit_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = WorkspaceEdit.t_of_yojson _field_yojson in - edit_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "edit" -> + (match Ppx_yojson_conv_lib.( ! ) edit_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = WorkspaceEdit.t_of_yojson _field_yojson in + edit_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) edit_field - , Ppx_yojson_conv_lib.( ! ) label_field ) - with - | Ppx_yojson_conv_lib.Option.Some edit_value, label_value -> - { edit = edit_value - ; label = - (match label_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) edit_field) - Ppx_yojson_conv_lib.Option.None - , "edit" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) edit_field + , Ppx_yojson_conv_lib.( ! ) label_field ) + with + | Ppx_yojson_conv_lib.Option.Some edit_value, label_value -> + { edit = edit_value + ; label = + (match label_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) edit_field) + Ppx_yojson_conv_lib.Option.None + , "edit" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -3258,37 +3315,37 @@ module ApplyWorkspaceEditParams = struct | { edit = v_edit; label = v_label } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_label then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_label - in - let bnd = ("label", arg) in - bnd :: bnds + if None = v_label + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_label in + let bnd = "label", arg in + bnd :: bnds) in let bnds = let arg = WorkspaceEdit.yojson_of_t v_edit in ("edit", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(edit : WorkspaceEdit.t) ?(label : string option) (() : unit) : t - = + let create ~(edit : WorkspaceEdit.t) ?(label : string option) (() : unit) : t = { edit; label } + ;; end module ApplyWorkspaceEditResult = struct type t = { applied : bool ; failedChange : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; failureReason : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -3297,7 +3354,7 @@ module ApplyWorkspaceEditResult = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ApplyWorkspaceEditResult.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let applied_field = ref Ppx_yojson_conv_lib.Option.None and failedChange_field = ref Ppx_yojson_conv_lib.Option.None and failureReason_field = ref Ppx_yojson_conv_lib.Option.None @@ -3306,82 +3363,81 @@ module ApplyWorkspaceEditResult = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "applied" -> ( - match Ppx_yojson_conv_lib.( ! ) applied_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - applied_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "failedChange" -> ( - match Ppx_yojson_conv_lib.( ! ) failedChange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - failedChange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "failureReason" -> ( - match Ppx_yojson_conv_lib.( ! ) failureReason_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - failureReason_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) applied_field - , Ppx_yojson_conv_lib.( ! ) failedChange_field - , Ppx_yojson_conv_lib.( ! ) failureReason_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some applied_value - , failedChange_value - , failureReason_value ) -> - { applied = applied_value - ; failedChange = - (match failedChange_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; failureReason = - (match failureReason_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) applied_field) - Ppx_yojson_conv_lib.Option.None - , "applied" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "applied" -> + (match Ppx_yojson_conv_lib.( ! ) applied_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + applied_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "failedChange" -> + (match Ppx_yojson_conv_lib.( ! ) failedChange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + failedChange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "failureReason" -> + (match Ppx_yojson_conv_lib.( ! ) failureReason_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + failureReason_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) applied_field + , Ppx_yojson_conv_lib.( ! ) failedChange_field + , Ppx_yojson_conv_lib.( ! ) failureReason_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some applied_value + , failedChange_value + , failureReason_value ) -> + { applied = applied_value + ; failedChange = + (match failedChange_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; failureReason = + (match failureReason_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) applied_field) + Ppx_yojson_conv_lib.Option.None + , "applied" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -3393,47 +3449,54 @@ module ApplyWorkspaceEditResult = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_failureReason then bnds - else + if None = v_failureReason + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_failureReason in - let bnd = ("failureReason", arg) in - bnd :: bnds + let bnd = "failureReason", arg in + bnd :: bnds) in let bnds = - if None = v_failedChange then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_failedChange - in - let bnd = ("failedChange", arg) in - bnd :: bnds + if None = v_failedChange + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_failedChange in + let bnd = "failedChange", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_bool v_applied in ("applied", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(applied : bool) ?(failedChange : int option) - ?(failureReason : string option) (() : unit) : t = + let create + ~(applied : bool) + ?(failedChange : int option) + ?(failureReason : string option) + (() : unit) + : t + = { applied; failedChange; failureReason } + ;; end module BaseSymbolInformation = struct type t = { containerName : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; kind : SymbolKind.t ; name : string ; tags : SymbolTag.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -3442,7 +3505,7 @@ module BaseSymbolInformation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.BaseSymbolInformation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let containerName_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None and name_field = ref Ppx_yojson_conv_lib.Option.None @@ -3452,119 +3515,114 @@ module BaseSymbolInformation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "containerName" -> ( - match Ppx_yojson_conv_lib.( ! ) containerName_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - containerName_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = SymbolKind.t_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tags" -> ( - match Ppx_yojson_conv_lib.( ! ) tags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson SymbolTag.t_of_yojson) - _field_yojson - in - tags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) containerName_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) tags_field ) - with - | ( containerName_value - , Ppx_yojson_conv_lib.Option.Some kind_value - , Ppx_yojson_conv_lib.Option.Some name_value - , tags_value ) -> - { containerName = - (match containerName_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = kind_value - ; name = name_value - ; tags = - (match tags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { containerName = v_containerName - ; kind = v_kind - ; name = v_name - ; tags = v_tags - } -> - let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in - let bnds = - if None = v_tags then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list SymbolTag.yojson_of_t)) + | "containerName" -> + (match Ppx_yojson_conv_lib.( ! ) containerName_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + containerName_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SymbolKind.t_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tags" -> + (match Ppx_yojson_conv_lib.( ! ) tags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson SymbolTag.t_of_yojson) + _field_yojson + in + tags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) containerName_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) tags_field ) + with + | ( containerName_value + , Ppx_yojson_conv_lib.Option.Some kind_value + , Ppx_yojson_conv_lib.Option.Some name_value + , tags_value ) -> + { containerName = + (match containerName_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = kind_value + ; name = name_value + ; tags = + (match tags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { containerName = v_containerName; kind = v_kind; name = v_name; tags = v_tags } -> + let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in + let bnds = + if None = v_tags + then bnds + else ( + let arg = + (Json.Nullable_option.yojson_of_t (yojson_of_list SymbolTag.yojson_of_t)) v_tags in - let bnd = ("tags", arg) in - bnd :: bnds + let bnd = "tags", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_name in @@ -3575,30 +3633,39 @@ module BaseSymbolInformation = struct ("kind", arg) :: bnds in let bnds = - if None = v_containerName then bnds - else + if None = v_containerName + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_containerName in - let bnd = ("containerName", arg) in - bnd :: bnds + let bnd = "containerName", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(containerName : string option) ~(kind : SymbolKind.t) - ~(name : string) ?(tags : SymbolTag.t list option) (() : unit) : t = + let create + ?(containerName : string option) + ~(kind : SymbolKind.t) + ~(name : string) + ?(tags : SymbolTag.t list option) + (() : unit) + : t + = { containerName; kind; name; tags } + ;; end module CallHierarchyClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -3607,55 +3674,53 @@ module CallHierarchyClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -3664,17 +3729,18 @@ module CallHierarchyClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -3682,19 +3748,19 @@ module CallHierarchyClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module CallHierarchyItem = struct type t = { data : Json.t option [@yojson.option] - ; detail : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; detail : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; kind : SymbolKind.t ; name : string ; range : Range.t ; selectionRange : Range.t ; tags : SymbolTag.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; uri : DocumentUri.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -3704,7 +3770,7 @@ module CallHierarchyItem = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyItem.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let data_field = ref Ppx_yojson_conv_lib.Option.None and detail_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None @@ -3718,150 +3784,149 @@ module CallHierarchyItem = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "detail" -> ( - match Ppx_yojson_conv_lib.( ! ) detail_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - detail_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = SymbolKind.t_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "selectionRange" -> ( - match Ppx_yojson_conv_lib.( ! ) selectionRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - selectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tags" -> ( - match Ppx_yojson_conv_lib.( ! ) tags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson SymbolTag.t_of_yojson) - _field_yojson - in - tags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) detail_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) selectionRange_field - , Ppx_yojson_conv_lib.( ! ) tags_field - , Ppx_yojson_conv_lib.( ! ) uri_field ) - with - | ( data_value - , detail_value - , Ppx_yojson_conv_lib.Option.Some kind_value - , Ppx_yojson_conv_lib.Option.Some name_value - , Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some selectionRange_value - , tags_value - , Ppx_yojson_conv_lib.Option.Some uri_value ) -> - { data = data_value - ; detail = - (match detail_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = kind_value - ; name = name_value - ; range = range_value - ; selectionRange = selectionRange_value - ; tags = - (match tags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; uri = uri_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) selectionRange_field) - Ppx_yojson_conv_lib.Option.None - , "selectionRange" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "detail" -> + (match Ppx_yojson_conv_lib.( ! ) detail_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + detail_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SymbolKind.t_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "selectionRange" -> + (match Ppx_yojson_conv_lib.( ! ) selectionRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + selectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tags" -> + (match Ppx_yojson_conv_lib.( ! ) tags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson SymbolTag.t_of_yojson) + _field_yojson + in + tags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) detail_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) selectionRange_field + , Ppx_yojson_conv_lib.( ! ) tags_field + , Ppx_yojson_conv_lib.( ! ) uri_field ) + with + | ( data_value + , detail_value + , Ppx_yojson_conv_lib.Option.Some kind_value + , Ppx_yojson_conv_lib.Option.Some name_value + , Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some selectionRange_value + , tags_value + , Ppx_yojson_conv_lib.Option.Some uri_value ) -> + { data = data_value + ; detail = + (match detail_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = kind_value + ; name = name_value + ; range = range_value + ; selectionRange = selectionRange_value + ; tags = + (match tags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; uri = uri_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) selectionRange_field) + Ppx_yojson_conv_lib.Option.None + , "selectionRange" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -3882,15 +3947,15 @@ module CallHierarchyItem = struct ("uri", arg) :: bnds in let bnds = - if None = v_tags then bnds - else + if None = v_tags + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list SymbolTag.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list SymbolTag.yojson_of_t)) v_tags in - let bnd = ("tags", arg) in - bnd :: bnds + let bnd = "tags", arg in + bnd :: bnds) in let bnds = let arg = Range.yojson_of_t v_selectionRange in @@ -3909,34 +3974,43 @@ module CallHierarchyItem = struct ("kind", arg) :: bnds in let bnds = - if None = v_detail then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail - in - let bnd = ("detail", arg) in - bnd :: bnds + if None = v_detail + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail in + let bnd = "detail", arg in + bnd :: bnds) in let bnds = match v_data with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(data : Json.t option) ?(detail : string option) - ~(kind : SymbolKind.t) ~(name : string) ~(range : Range.t) - ~(selectionRange : Range.t) ?(tags : SymbolTag.t list option) - ~(uri : DocumentUri.t) (() : unit) : t = + let create + ?(data : Json.t option) + ?(detail : string option) + ~(kind : SymbolKind.t) + ~(name : string) + ~(range : Range.t) + ~(selectionRange : Range.t) + ?(tags : SymbolTag.t list option) + ~(uri : DocumentUri.t) + (() : unit) + : t + = { data; detail; kind; name; range; selectionRange; tags; uri } + ;; end module CallHierarchyIncomingCall = struct @@ -3951,7 +4025,7 @@ module CallHierarchyIncomingCall = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyIncomingCall.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let from_field = ref Ppx_yojson_conv_lib.Option.None and fromRanges_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -3959,64 +4033,63 @@ module CallHierarchyIncomingCall = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "from" -> ( - match Ppx_yojson_conv_lib.( ! ) from_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = CallHierarchyItem.t_of_yojson _field_yojson in - from_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "fromRanges" -> ( - match Ppx_yojson_conv_lib.( ! ) fromRanges_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson Range.t_of_yojson _field_yojson in - fromRanges_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "from" -> + (match Ppx_yojson_conv_lib.( ! ) from_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = CallHierarchyItem.t_of_yojson _field_yojson in + from_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "fromRanges" -> + (match Ppx_yojson_conv_lib.( ! ) fromRanges_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Range.t_of_yojson _field_yojson in + fromRanges_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) from_field - , Ppx_yojson_conv_lib.( ! ) fromRanges_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some from_value - , Ppx_yojson_conv_lib.Option.Some fromRanges_value ) -> - { from = from_value; fromRanges = fromRanges_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) from_field) - Ppx_yojson_conv_lib.Option.None - , "from" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) fromRanges_field) - Ppx_yojson_conv_lib.Option.None - , "fromRanges" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) from_field + , Ppx_yojson_conv_lib.( ! ) fromRanges_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some from_value + , Ppx_yojson_conv_lib.Option.Some fromRanges_value ) -> + { from = from_value; fromRanges = fromRanges_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) from_field) + Ppx_yojson_conv_lib.Option.None + , "from" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) fromRanges_field) + Ppx_yojson_conv_lib.Option.None + , "fromRanges" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -4033,7 +4106,8 @@ module CallHierarchyIncomingCall = struct ("from", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -4041,15 +4115,16 @@ module CallHierarchyIncomingCall = struct let create ~(from : CallHierarchyItem.t) ~(fromRanges : Range.t list) : t = { from; fromRanges } + ;; end module CallHierarchyIncomingCallsParams = struct type t = { item : CallHierarchyItem.t ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -4058,7 +4133,7 @@ module CallHierarchyIncomingCallsParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyIncomingCallsParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let item_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -4067,87 +4142,85 @@ module CallHierarchyIncomingCallsParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "item" -> ( - match Ppx_yojson_conv_lib.( ! ) item_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = CallHierarchyItem.t_of_yojson _field_yojson in - item_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) item_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some item_value - , partialResultToken_value - , workDoneToken_value ) -> - { item = item_value - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "item" -> + (match Ppx_yojson_conv_lib.( ! ) item_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = CallHierarchyItem.t_of_yojson _field_yojson in + item_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) item_field) - Ppx_yojson_conv_lib.Option.None - , "item" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) item_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some item_value + , partialResultToken_value + , workDoneToken_value ) -> + { item = item_value + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) item_field) + Ppx_yojson_conv_lib.Option.None + , "item" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -4159,46 +4232,53 @@ module CallHierarchyIncomingCallsParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = let arg = CallHierarchyItem.yojson_of_t v_item in ("item", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(item : CallHierarchyItem.t) - ?(partialResultToken : ProgressToken.t option) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(item : CallHierarchyItem.t) + ?(partialResultToken : ProgressToken.t option) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { item; partialResultToken; workDoneToken } + ;; end module CallHierarchyOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -4207,54 +4287,53 @@ module CallHierarchyOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -4263,24 +4342,24 @@ module CallHierarchyOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module CallHierarchyOutgoingCall = struct @@ -4295,7 +4374,7 @@ module CallHierarchyOutgoingCall = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyOutgoingCall.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let fromRanges_field = ref Ppx_yojson_conv_lib.Option.None and to__field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -4303,64 +4382,63 @@ module CallHierarchyOutgoingCall = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "fromRanges" -> ( - match Ppx_yojson_conv_lib.( ! ) fromRanges_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson Range.t_of_yojson _field_yojson in - fromRanges_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "to" -> ( - match Ppx_yojson_conv_lib.( ! ) to__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = CallHierarchyItem.t_of_yojson _field_yojson in - to__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "fromRanges" -> + (match Ppx_yojson_conv_lib.( ! ) fromRanges_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Range.t_of_yojson _field_yojson in + fromRanges_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "to" -> + (match Ppx_yojson_conv_lib.( ! ) to__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = CallHierarchyItem.t_of_yojson _field_yojson in + to__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) fromRanges_field - , Ppx_yojson_conv_lib.( ! ) to__field ) - with - | ( Ppx_yojson_conv_lib.Option.Some fromRanges_value - , Ppx_yojson_conv_lib.Option.Some to__value ) -> - { fromRanges = fromRanges_value; to_ = to__value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) fromRanges_field) - Ppx_yojson_conv_lib.Option.None - , "fromRanges" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) to__field) - Ppx_yojson_conv_lib.Option.None - , "to_" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) fromRanges_field + , Ppx_yojson_conv_lib.( ! ) to__field ) + with + | ( Ppx_yojson_conv_lib.Option.Some fromRanges_value + , Ppx_yojson_conv_lib.Option.Some to__value ) -> + { fromRanges = fromRanges_value; to_ = to__value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) fromRanges_field) + Ppx_yojson_conv_lib.Option.None + , "fromRanges" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) to__field) + Ppx_yojson_conv_lib.Option.None + , "to_" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -4377,7 +4455,8 @@ module CallHierarchyOutgoingCall = struct ("fromRanges", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -4385,15 +4464,16 @@ module CallHierarchyOutgoingCall = struct let create ~(fromRanges : Range.t list) ~(to_ : CallHierarchyItem.t) : t = { fromRanges; to_ } + ;; end module CallHierarchyOutgoingCallsParams = struct type t = { item : CallHierarchyItem.t ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -4402,7 +4482,7 @@ module CallHierarchyOutgoingCallsParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyOutgoingCallsParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let item_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -4411,87 +4491,85 @@ module CallHierarchyOutgoingCallsParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "item" -> ( - match Ppx_yojson_conv_lib.( ! ) item_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = CallHierarchyItem.t_of_yojson _field_yojson in - item_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) item_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some item_value - , partialResultToken_value - , workDoneToken_value ) -> - { item = item_value - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "item" -> + (match Ppx_yojson_conv_lib.( ! ) item_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = CallHierarchyItem.t_of_yojson _field_yojson in + item_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) item_field) - Ppx_yojson_conv_lib.Option.None - , "item" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) item_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some item_value + , partialResultToken_value + , workDoneToken_value ) -> + { item = item_value + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) item_field) + Ppx_yojson_conv_lib.Option.None + , "item" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -4503,40 +4581,47 @@ module CallHierarchyOutgoingCallsParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = let arg = CallHierarchyItem.yojson_of_t v_item in ("item", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(item : CallHierarchyItem.t) - ?(partialResultToken : ProgressToken.t option) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(item : CallHierarchyItem.t) + ?(partialResultToken : ProgressToken.t option) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { item; partialResultToken; workDoneToken } + ;; end module TextDocumentIdentifier = struct @@ -4548,55 +4633,54 @@ module TextDocumentIdentifier = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentIdentifier.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let uri_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.Some uri_value -> { uri = uri_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.Some uri_value -> { uri = uri_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -4609,7 +4693,8 @@ module TextDocumentIdentifier = struct ("uri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -4623,7 +4708,7 @@ module CallHierarchyPrepareParams = struct { position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -4632,7 +4717,7 @@ module CallHierarchyPrepareParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyPrepareParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -4641,83 +4726,82 @@ module CallHierarchyPrepareParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -4729,14 +4813,14 @@ module CallHierarchyPrepareParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -4747,15 +4831,22 @@ module CallHierarchyPrepareParams = struct ("position", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { position; textDocument; workDoneToken } + ;; end module NotebookCellTextDocumentFilter = struct @@ -4770,19 +4861,20 @@ module NotebookCellTextDocumentFilter = struct | _ -> Json.Of.untagged_union "notebook_pvar" - [ (fun json -> - `NotebookDocumentFilter (NotebookDocumentFilter.t_of_yojson json)) + [ (fun json -> `NotebookDocumentFilter (NotebookDocumentFilter.t_of_yojson json)) ] json + ;; let yojson_of_notebook_pvar (notebook_pvar : notebook_pvar) : Json.t = match notebook_pvar with | `String j -> `String j | `NotebookDocumentFilter s -> NotebookDocumentFilter.yojson_of_t s + ;; type t = { language : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; notebook : notebook_pvar } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -4792,7 +4884,7 @@ module NotebookCellTextDocumentFilter = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookCellTextDocumentFilter.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let language_field = ref Ppx_yojson_conv_lib.Option.None and notebook_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -4800,66 +4892,65 @@ module NotebookCellTextDocumentFilter = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "language" -> ( - match Ppx_yojson_conv_lib.( ! ) language_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - language_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "notebook" -> ( - match Ppx_yojson_conv_lib.( ! ) notebook_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = notebook_pvar_of_yojson _field_yojson in - notebook_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "language" -> + (match Ppx_yojson_conv_lib.( ! ) language_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + language_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "notebook" -> + (match Ppx_yojson_conv_lib.( ! ) notebook_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = notebook_pvar_of_yojson _field_yojson in + notebook_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) language_field - , Ppx_yojson_conv_lib.( ! ) notebook_field ) - with - | language_value, Ppx_yojson_conv_lib.Option.Some notebook_value -> - { language = - (match language_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; notebook = notebook_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) notebook_field) - Ppx_yojson_conv_lib.Option.None - , "notebook" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) language_field + , Ppx_yojson_conv_lib.( ! ) notebook_field ) + with + | language_value, Ppx_yojson_conv_lib.Option.Some notebook_value -> + { language = + (match language_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; notebook = notebook_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) notebook_field) + Ppx_yojson_conv_lib.Option.None + , "notebook" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -4872,24 +4963,24 @@ module NotebookCellTextDocumentFilter = struct ("notebook", arg) :: bnds in let bnds = - if None = v_language then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_language - in - let bnd = ("language", arg) in - bnd :: bnds + if None = v_language + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_language in + let bnd = "language", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(language : string option) ~(notebook : notebook_pvar) (() : unit) - : t = + let create ?(language : string option) ~(notebook : notebook_pvar) (() : unit) : t = { language; notebook } + ;; end module DocumentFilter = struct @@ -4907,12 +4998,13 @@ module DocumentFilter = struct (NotebookCellTextDocumentFilter.t_of_yojson json)) ] json + ;; let yojson_of_t (t : t) : Json.t = match t with | `TextDocumentFilter s -> TextDocumentFilter.yojson_of_t s - | `NotebookCellTextDocumentFilter s -> - NotebookCellTextDocumentFilter.yojson_of_t s + | `NotebookCellTextDocumentFilter s -> NotebookCellTextDocumentFilter.yojson_of_t s + ;; end module DocumentSelector = struct @@ -4923,13 +5015,15 @@ module DocumentSelector = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentSelector.t" in fun t -> list_of_yojson DocumentFilter.t_of_yojson t - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (fun v -> yojson_of_list DocumentFilter.yojson_of_t v - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -4939,11 +5033,10 @@ end module CallHierarchyRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -4952,7 +5045,7 @@ module CallHierarchyRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CallHierarchyRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -4961,77 +5054,76 @@ module CallHierarchyRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -5043,102 +5135,109 @@ module CallHierarchyRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module CancelParams = struct - type t = { id : Jsonrpc.Id.t } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { id : Jsonrpc.Id.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CancelParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let id_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Jsonrpc.Id.t_of_yojson _field_yojson in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Jsonrpc.Id.t_of_yojson _field_yojson in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.Some id_value -> { id = id_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) id_field) - Ppx_yojson_conv_lib.Option.None - , "id" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.Some id_value -> { id = id_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) id_field) + Ppx_yojson_conv_lib.Option.None + , "id" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -5151,7 +5250,8 @@ module CancelParams = struct ("id", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -5163,7 +5263,7 @@ end module WorkspaceEditClientCapabilities = struct type changeAnnotationSupport = { groupsOnLabel : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -5174,54 +5274,51 @@ module WorkspaceEditClientCapabilities = struct "lsp/src/types.ml.WorkspaceEditClientCapabilities.changeAnnotationSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let groupsOnLabel_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "groupsOnLabel" -> ( - match Ppx_yojson_conv_lib.( ! ) groupsOnLabel_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - groupsOnLabel_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "groupsOnLabel" -> + (match Ppx_yojson_conv_lib.( ! ) groupsOnLabel_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + groupsOnLabel_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let groupsOnLabel_value = - Ppx_yojson_conv_lib.( ! ) groupsOnLabel_field - in - { groupsOnLabel = - (match groupsOnLabel_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> changeAnnotationSupport) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let groupsOnLabel_value = Ppx_yojson_conv_lib.( ! ) groupsOnLabel_field in + { groupsOnLabel = + (match groupsOnLabel_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> changeAnnotationSupport) + ;; let _ = changeAnnotationSupport_of_yojson @@ -5230,36 +5327,38 @@ module WorkspaceEditClientCapabilities = struct | { groupsOnLabel = v_groupsOnLabel } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_groupsOnLabel then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_groupsOnLabel - in - let bnd = ("groupsOnLabel", arg) in - bnd :: bnds + if None = v_groupsOnLabel + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_groupsOnLabel in + let bnd = "groupsOnLabel", arg in + bnd :: bnds) in `Assoc bnds - : changeAnnotationSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : changeAnnotationSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_changeAnnotationSupport [@@@end] let create_changeAnnotationSupport ?(groupsOnLabel : bool option) (() : unit) - : changeAnnotationSupport = + : changeAnnotationSupport + = { groupsOnLabel } + ;; type t = { changeAnnotationSupport : changeAnnotationSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; documentChanges : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; failureHandling : FailureHandlingKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; normalizesLineEndings : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resourceOperations : ResourceOperationKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -5268,7 +5367,7 @@ module WorkspaceEditClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceEditClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let changeAnnotationSupport_field = ref Ppx_yojson_conv_lib.Option.None and documentChanges_field = ref Ppx_yojson_conv_lib.Option.None and failureHandling_field = ref Ppx_yojson_conv_lib.Option.None @@ -5279,116 +5378,113 @@ module WorkspaceEditClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "changeAnnotationSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) changeAnnotationSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - changeAnnotationSupport_of_yojson - _field_yojson - in - changeAnnotationSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentChanges" -> ( - match Ppx_yojson_conv_lib.( ! ) documentChanges_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - documentChanges_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "failureHandling" -> ( - match Ppx_yojson_conv_lib.( ! ) failureHandling_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FailureHandlingKind.t_of_yojson - _field_yojson - in - failureHandling_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "normalizesLineEndings" -> ( - match Ppx_yojson_conv_lib.( ! ) normalizesLineEndings_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - normalizesLineEndings_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resourceOperations" -> ( - match Ppx_yojson_conv_lib.( ! ) resourceOperations_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson ResourceOperationKind.t_of_yojson) - _field_yojson - in - resourceOperations_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( changeAnnotationSupport_value - , documentChanges_value - , failureHandling_value - , normalizesLineEndings_value - , resourceOperations_value ) = - ( Ppx_yojson_conv_lib.( ! ) changeAnnotationSupport_field - , Ppx_yojson_conv_lib.( ! ) documentChanges_field - , Ppx_yojson_conv_lib.( ! ) failureHandling_field - , Ppx_yojson_conv_lib.( ! ) normalizesLineEndings_field - , Ppx_yojson_conv_lib.( ! ) resourceOperations_field ) - in - { changeAnnotationSupport = - (match changeAnnotationSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentChanges = - (match documentChanges_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; failureHandling = - (match failureHandling_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; normalizesLineEndings = - (match normalizesLineEndings_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resourceOperations = - (match resourceOperations_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "changeAnnotationSupport" -> + (match Ppx_yojson_conv_lib.( ! ) changeAnnotationSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + changeAnnotationSupport_of_yojson + _field_yojson + in + changeAnnotationSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentChanges" -> + (match Ppx_yojson_conv_lib.( ! ) documentChanges_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + documentChanges_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "failureHandling" -> + (match Ppx_yojson_conv_lib.( ! ) failureHandling_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FailureHandlingKind.t_of_yojson + _field_yojson + in + failureHandling_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "normalizesLineEndings" -> + (match Ppx_yojson_conv_lib.( ! ) normalizesLineEndings_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + normalizesLineEndings_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resourceOperations" -> + (match Ppx_yojson_conv_lib.( ! ) resourceOperations_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson ResourceOperationKind.t_of_yojson) + _field_yojson + in + resourceOperations_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( changeAnnotationSupport_value + , documentChanges_value + , failureHandling_value + , normalizesLineEndings_value + , resourceOperations_value ) + = + ( Ppx_yojson_conv_lib.( ! ) changeAnnotationSupport_field + , Ppx_yojson_conv_lib.( ! ) documentChanges_field + , Ppx_yojson_conv_lib.( ! ) failureHandling_field + , Ppx_yojson_conv_lib.( ! ) normalizesLineEndings_field + , Ppx_yojson_conv_lib.( ! ) resourceOperations_field ) + in + { changeAnnotationSupport = + (match changeAnnotationSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentChanges = + (match documentChanges_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; failureHandling = + (match failureHandling_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; normalizesLineEndings = + (match normalizesLineEndings_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resourceOperations = + (match resourceOperations_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -5402,75 +5498,83 @@ module WorkspaceEditClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_resourceOperations then bnds - else + if None = v_resourceOperations + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list ResourceOperationKind.yojson_of_t)) v_resourceOperations in - let bnd = ("resourceOperations", arg) in - bnd :: bnds + let bnd = "resourceOperations", arg in + bnd :: bnds) in let bnds = - if None = v_normalizesLineEndings then bnds - else + if None = v_normalizesLineEndings + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_normalizesLineEndings + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_normalizesLineEndings in - let bnd = ("normalizesLineEndings", arg) in - bnd :: bnds + let bnd = "normalizesLineEndings", arg in + bnd :: bnds) in let bnds = - if None = v_failureHandling then bnds - else + if None = v_failureHandling + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FailureHandlingKind.yojson_of_t) v_failureHandling in - let bnd = ("failureHandling", arg) in - bnd :: bnds + let bnd = "failureHandling", arg in + bnd :: bnds) in let bnds = - if None = v_documentChanges then bnds - else + if None = v_documentChanges + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_documentChanges in - let bnd = ("documentChanges", arg) in - bnd :: bnds + let bnd = "documentChanges", arg in + bnd :: bnds) in let bnds = - if None = v_changeAnnotationSupport then bnds - else + if None = v_changeAnnotationSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_changeAnnotationSupport) + (Json.Nullable_option.yojson_of_t yojson_of_changeAnnotationSupport) v_changeAnnotationSupport in - let bnd = ("changeAnnotationSupport", arg) in - bnd :: bnds + let bnd = "changeAnnotationSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(changeAnnotationSupport : changeAnnotationSupport option) - ?(documentChanges : bool option) - ?(failureHandling : FailureHandlingKind.t option) - ?(normalizesLineEndings : bool option) - ?(resourceOperations : ResourceOperationKind.t list option) (() : unit) : - t = + let create + ?(changeAnnotationSupport : changeAnnotationSupport option) + ?(documentChanges : bool option) + ?(failureHandling : FailureHandlingKind.t option) + ?(normalizesLineEndings : bool option) + ?(resourceOperations : ResourceOperationKind.t list option) + (() : unit) + : t + = { changeAnnotationSupport ; documentChanges ; failureHandling ; normalizesLineEndings ; resourceOperations } + ;; end module WorkspaceSymbolClientCapabilities = struct @@ -5480,62 +5584,57 @@ module WorkspaceSymbolClientCapabilities = struct let _ = fun (_ : tagSupport) -> () let tagSupport_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.WorkspaceSymbolClientCapabilities.tagSupport" - in + (let _tp_loc = "lsp/src/types.ml.WorkspaceSymbolClientCapabilities.tagSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson SymbolTag.t_of_yojson _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson SymbolTag.t_of_yojson _field_yojson in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.Some valueSet_value -> - { valueSet = valueSet_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) valueSet_field) - Ppx_yojson_conv_lib.Option.None - , "valueSet" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> tagSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.Some valueSet_value -> + { valueSet = valueSet_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) valueSet_field) + Ppx_yojson_conv_lib.Option.None + , "valueSet" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> tagSupport) + ;; let _ = tagSupport_of_yojson @@ -5548,76 +5647,73 @@ module WorkspaceSymbolClientCapabilities = struct ("valueSet", arg) :: bnds in `Assoc bnds - : tagSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : tagSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_tagSupport [@@@end] - let create_tagSupport ~(valueSet : SymbolTag.t list) : tagSupport = - { valueSet } + let create_tagSupport ~(valueSet : SymbolTag.t list) : tagSupport = { valueSet } type symbolKind = { valueSet : SymbolKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : symbolKind) -> () let symbolKind_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.WorkspaceSymbolClientCapabilities.symbolKind" - in + (let _tp_loc = "lsp/src/types.ml.WorkspaceSymbolClientCapabilities.symbolKind" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson SymbolKind.t_of_yojson) - _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson SymbolKind.t_of_yojson) + _field_yojson + in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let valueSet_value = Ppx_yojson_conv_lib.( ! ) valueSet_field in - { valueSet = - (match valueSet_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> symbolKind) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let valueSet_value = Ppx_yojson_conv_lib.( ! ) valueSet_field in + { valueSet = + (match valueSet_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> symbolKind) + ;; let _ = symbolKind_of_yojson @@ -5626,26 +5722,27 @@ module WorkspaceSymbolClientCapabilities = struct | { valueSet = v_valueSet } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_valueSet then bnds - else + if None = v_valueSet + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list SymbolKind.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list SymbolKind.yojson_of_t)) v_valueSet in - let bnd = ("valueSet", arg) in - bnd :: bnds + let bnd = "valueSet", arg in + bnd :: bnds) in `Assoc bnds - : symbolKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : symbolKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_symbolKind [@@@end] - let create_symbolKind ?(valueSet : SymbolKind.t list option) (() : unit) : - symbolKind = + let create_symbolKind ?(valueSet : SymbolKind.t list option) (() : unit) : symbolKind = { valueSet } + ;; type resolveSupport = { properties : string list } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -5653,60 +5750,57 @@ module WorkspaceSymbolClientCapabilities = struct let _ = fun (_ : resolveSupport) -> () let resolveSupport_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.WorkspaceSymbolClientCapabilities.resolveSupport" - in + (let _tp_loc = "lsp/src/types.ml.WorkspaceSymbolClientCapabilities.resolveSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let properties_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "properties" -> ( - match Ppx_yojson_conv_lib.( ! ) properties_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - properties_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "properties" -> + (match Ppx_yojson_conv_lib.( ! ) properties_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + properties_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) properties_field with - | Ppx_yojson_conv_lib.Option.Some properties_value -> - { properties = properties_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) properties_field) - Ppx_yojson_conv_lib.Option.None - , "properties" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> resolveSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) properties_field with + | Ppx_yojson_conv_lib.Option.Some properties_value -> + { properties = properties_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) properties_field) + Ppx_yojson_conv_lib.Option.None + , "properties" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> resolveSupport) + ;; let _ = resolveSupport_of_yojson @@ -5719,24 +5813,24 @@ module WorkspaceSymbolClientCapabilities = struct ("properties", arg) :: bnds in `Assoc bnds - : resolveSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : resolveSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_resolveSupport [@@@end] - let create_resolveSupport ~(properties : string list) : resolveSupport = - { properties } + let create_resolveSupport ~(properties : string list) : resolveSupport = { properties } type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveSupport : resolveSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; symbolKind : symbolKind Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tagSupport : tagSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -5745,7 +5839,7 @@ module WorkspaceSymbolClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceSymbolClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and resolveSupport_field = ref Ppx_yojson_conv_lib.Option.None and symbolKind_field = ref Ppx_yojson_conv_lib.Option.None @@ -5755,99 +5849,92 @@ module WorkspaceSymbolClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - resolveSupport_of_yojson - _field_yojson - in - resolveSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "symbolKind" -> ( - match Ppx_yojson_conv_lib.( ! ) symbolKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - symbolKind_of_yojson - _field_yojson - in - symbolKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tagSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) tagSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - tagSupport_of_yojson - _field_yojson - in - tagSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( dynamicRegistration_value - , resolveSupport_value - , symbolKind_value - , tagSupport_value ) = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) resolveSupport_field - , Ppx_yojson_conv_lib.( ! ) symbolKind_field - , Ppx_yojson_conv_lib.( ! ) tagSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveSupport = - (match resolveSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; symbolKind = - (match symbolKind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tagSupport = - (match tagSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveSupport" -> + (match Ppx_yojson_conv_lib.( ! ) resolveSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson resolveSupport_of_yojson _field_yojson + in + resolveSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "symbolKind" -> + (match Ppx_yojson_conv_lib.( ! ) symbolKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson symbolKind_of_yojson _field_yojson + in + symbolKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tagSupport" -> + (match Ppx_yojson_conv_lib.( ! ) tagSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson tagSupport_of_yojson _field_yojson + in + tagSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( dynamicRegistration_value + , resolveSupport_value + , symbolKind_value + , tagSupport_value ) + = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) resolveSupport_field + , Ppx_yojson_conv_lib.( ! ) symbolKind_field + , Ppx_yojson_conv_lib.( ! ) tagSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveSupport = + (match resolveSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; symbolKind = + (match symbolKind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tagSupport = + (match tagSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -5860,121 +5947,122 @@ module WorkspaceSymbolClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_tagSupport then bnds - else + if None = v_tagSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_tagSupport) - v_tagSupport + (Json.Nullable_option.yojson_of_t yojson_of_tagSupport) v_tagSupport in - let bnd = ("tagSupport", arg) in - bnd :: bnds + let bnd = "tagSupport", arg in + bnd :: bnds) in let bnds = - if None = v_symbolKind then bnds - else + if None = v_symbolKind + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_symbolKind) - v_symbolKind + (Json.Nullable_option.yojson_of_t yojson_of_symbolKind) v_symbolKind in - let bnd = ("symbolKind", arg) in - bnd :: bnds + let bnd = "symbolKind", arg in + bnd :: bnds) in let bnds = - if None = v_resolveSupport then bnds - else + if None = v_resolveSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_resolveSupport) - v_resolveSupport + (Json.Nullable_option.yojson_of_t yojson_of_resolveSupport) v_resolveSupport in - let bnd = ("resolveSupport", arg) in - bnd :: bnds + let bnd = "resolveSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(resolveSupport : resolveSupport option) - ?(symbolKind : symbolKind option) ?(tagSupport : tagSupport option) - (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(resolveSupport : resolveSupport option) + ?(symbolKind : symbolKind option) + ?(tagSupport : tagSupport option) + (() : unit) + : t + = { dynamicRegistration; resolveSupport; symbolKind; tagSupport } + ;; end module SemanticTokensWorkspaceClientCapabilities = struct type t = { refreshSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.SemanticTokensWorkspaceClientCapabilities.t" - in + (let _tp_loc = "lsp/src/types.ml.SemanticTokensWorkspaceClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let refreshSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "refreshSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "refreshSupport" -> + (match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let refreshSupport_value = - Ppx_yojson_conv_lib.( ! ) refreshSupport_field - in - { refreshSupport = - (match refreshSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let refreshSupport_value = Ppx_yojson_conv_lib.( ! ) refreshSupport_field in + { refreshSupport = + (match refreshSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -5983,87 +6071,81 @@ module SemanticTokensWorkspaceClientCapabilities = struct | { refreshSupport = v_refreshSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_refreshSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport - in - let bnd = ("refreshSupport", arg) in - bnd :: bnds + if None = v_refreshSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport in + let bnd = "refreshSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(refreshSupport : bool option) (() : unit) : t = - { refreshSupport } + let create ?(refreshSupport : bool option) (() : unit) : t = { refreshSupport } end module InlineValueWorkspaceClientCapabilities = struct type t = { refreshSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.InlineValueWorkspaceClientCapabilities.t" - in + (let _tp_loc = "lsp/src/types.ml.InlineValueWorkspaceClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let refreshSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "refreshSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "refreshSupport" -> + (match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let refreshSupport_value = - Ppx_yojson_conv_lib.( ! ) refreshSupport_field - in - { refreshSupport = - (match refreshSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let refreshSupport_value = Ppx_yojson_conv_lib.( ! ) refreshSupport_field in + { refreshSupport = + (match refreshSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6072,29 +6154,28 @@ module InlineValueWorkspaceClientCapabilities = struct | { refreshSupport = v_refreshSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_refreshSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport - in - let bnd = ("refreshSupport", arg) in - bnd :: bnds + if None = v_refreshSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport in + let bnd = "refreshSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(refreshSupport : bool option) (() : unit) : t = - { refreshSupport } + let create ?(refreshSupport : bool option) (() : unit) : t = { refreshSupport } end module InlayHintWorkspaceClientCapabilities = struct type t = { refreshSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -6103,54 +6184,51 @@ module InlayHintWorkspaceClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlayHintWorkspaceClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let refreshSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "refreshSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "refreshSupport" -> + (match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let refreshSupport_value = - Ppx_yojson_conv_lib.( ! ) refreshSupport_field - in - { refreshSupport = - (match refreshSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let refreshSupport_value = Ppx_yojson_conv_lib.( ! ) refreshSupport_field in + { refreshSupport = + (match refreshSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6159,87 +6237,81 @@ module InlayHintWorkspaceClientCapabilities = struct | { refreshSupport = v_refreshSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_refreshSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport - in - let bnd = ("refreshSupport", arg) in - bnd :: bnds + if None = v_refreshSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport in + let bnd = "refreshSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(refreshSupport : bool option) (() : unit) : t = - { refreshSupport } + let create ?(refreshSupport : bool option) (() : unit) : t = { refreshSupport } end module FoldingRangeWorkspaceClientCapabilities = struct type t = { refreshSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.FoldingRangeWorkspaceClientCapabilities.t" - in + (let _tp_loc = "lsp/src/types.ml.FoldingRangeWorkspaceClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let refreshSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "refreshSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "refreshSupport" -> + (match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let refreshSupport_value = - Ppx_yojson_conv_lib.( ! ) refreshSupport_field - in - { refreshSupport = - (match refreshSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let refreshSupport_value = Ppx_yojson_conv_lib.( ! ) refreshSupport_field in + { refreshSupport = + (match refreshSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6248,41 +6320,37 @@ module FoldingRangeWorkspaceClientCapabilities = struct | { refreshSupport = v_refreshSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_refreshSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport - in - let bnd = ("refreshSupport", arg) in - bnd :: bnds + if None = v_refreshSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport in + let bnd = "refreshSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(refreshSupport : bool option) (() : unit) : t = - { refreshSupport } + let create ?(refreshSupport : bool option) (() : unit) : t = { refreshSupport } end module FileOperationClientCapabilities = struct type t = - { didCreate : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; didDelete : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; didRename : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { didCreate : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; didDelete : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; didRename : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; willCreate : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; willDelete : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; willRename : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -6291,7 +6359,7 @@ module FileOperationClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileOperationClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let didCreate_field = ref Ppx_yojson_conv_lib.Option.None and didDelete_field = ref Ppx_yojson_conv_lib.Option.None and didRename_field = ref Ppx_yojson_conv_lib.Option.None @@ -6304,138 +6372,137 @@ module FileOperationClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "didCreate" -> ( - match Ppx_yojson_conv_lib.( ! ) didCreate_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - didCreate_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "didDelete" -> ( - match Ppx_yojson_conv_lib.( ! ) didDelete_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - didDelete_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "didRename" -> ( - match Ppx_yojson_conv_lib.( ! ) didRename_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - didRename_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willCreate" -> ( - match Ppx_yojson_conv_lib.( ! ) willCreate_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - willCreate_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willDelete" -> ( - match Ppx_yojson_conv_lib.( ! ) willDelete_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - willDelete_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willRename" -> ( - match Ppx_yojson_conv_lib.( ! ) willRename_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - willRename_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( didCreate_value - , didDelete_value - , didRename_value - , dynamicRegistration_value - , willCreate_value - , willDelete_value - , willRename_value ) = - ( Ppx_yojson_conv_lib.( ! ) didCreate_field - , Ppx_yojson_conv_lib.( ! ) didDelete_field - , Ppx_yojson_conv_lib.( ! ) didRename_field - , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) willCreate_field - , Ppx_yojson_conv_lib.( ! ) willDelete_field - , Ppx_yojson_conv_lib.( ! ) willRename_field ) - in - { didCreate = - (match didCreate_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; didDelete = - (match didDelete_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; didRename = - (match didRename_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willCreate = - (match willCreate_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willDelete = - (match willDelete_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willRename = - (match willRename_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "didCreate" -> + (match Ppx_yojson_conv_lib.( ! ) didCreate_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + didCreate_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "didDelete" -> + (match Ppx_yojson_conv_lib.( ! ) didDelete_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + didDelete_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "didRename" -> + (match Ppx_yojson_conv_lib.( ! ) didRename_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + didRename_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willCreate" -> + (match Ppx_yojson_conv_lib.( ! ) willCreate_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + willCreate_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willDelete" -> + (match Ppx_yojson_conv_lib.( ! ) willDelete_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + willDelete_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willRename" -> + (match Ppx_yojson_conv_lib.( ! ) willRename_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + willRename_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( didCreate_value + , didDelete_value + , didRename_value + , dynamicRegistration_value + , willCreate_value + , willDelete_value + , willRename_value ) + = + ( Ppx_yojson_conv_lib.( ! ) didCreate_field + , Ppx_yojson_conv_lib.( ! ) didDelete_field + , Ppx_yojson_conv_lib.( ! ) didRename_field + , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) willCreate_field + , Ppx_yojson_conv_lib.( ! ) willDelete_field + , Ppx_yojson_conv_lib.( ! ) willRename_field ) + in + { didCreate = + (match didCreate_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; didDelete = + (match didDelete_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; didRename = + (match didRename_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willCreate = + (match willCreate_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willDelete = + (match willDelete_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willRename = + (match willRename_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6451,80 +6518,82 @@ module FileOperationClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_willRename then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willRename - in - let bnd = ("willRename", arg) in - bnd :: bnds + if None = v_willRename + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willRename in + let bnd = "willRename", arg in + bnd :: bnds) in let bnds = - if None = v_willDelete then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willDelete - in - let bnd = ("willDelete", arg) in - bnd :: bnds + if None = v_willDelete + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willDelete in + let bnd = "willDelete", arg in + bnd :: bnds) in let bnds = - if None = v_willCreate then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willCreate - in - let bnd = ("willCreate", arg) in - bnd :: bnds + if None = v_willCreate + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willCreate in + let bnd = "willCreate", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in let bnds = - if None = v_didRename then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_didRename - in - let bnd = ("didRename", arg) in - bnd :: bnds + if None = v_didRename + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_didRename in + let bnd = "didRename", arg in + bnd :: bnds) in let bnds = - if None = v_didDelete then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_didDelete - in - let bnd = ("didDelete", arg) in - bnd :: bnds + if None = v_didDelete + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_didDelete in + let bnd = "didDelete", arg in + bnd :: bnds) in let bnds = - if None = v_didCreate then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_didCreate - in - let bnd = ("didCreate", arg) in - bnd :: bnds + if None = v_didCreate + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_didCreate in + let bnd = "didCreate", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(didCreate : bool option) ?(didDelete : bool option) - ?(didRename : bool option) ?(dynamicRegistration : bool option) - ?(willCreate : bool option) ?(willDelete : bool option) - ?(willRename : bool option) (() : unit) : t = + let create + ?(didCreate : bool option) + ?(didDelete : bool option) + ?(didRename : bool option) + ?(dynamicRegistration : bool option) + ?(willCreate : bool option) + ?(willDelete : bool option) + ?(willRename : bool option) + (() : unit) + : t + = { didCreate ; didDelete ; didRename @@ -6533,12 +6602,13 @@ module FileOperationClientCapabilities = struct ; willDelete ; willRename } + ;; end module ExecuteCommandClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -6547,55 +6617,53 @@ module ExecuteCommandClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ExecuteCommandClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6604,17 +6672,18 @@ module ExecuteCommandClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -6622,25 +6691,24 @@ module ExecuteCommandClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module DidChangeWatchedFilesClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; relativePatternSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DidChangeWatchedFilesClientCapabilities.t" - in + (let _tp_loc = "lsp/src/types.ml.DidChangeWatchedFilesClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and relativePatternSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -6648,63 +6716,60 @@ module DidChangeWatchedFilesClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "relativePatternSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) relativePatternSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - relativePatternSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "relativePatternSupport" -> + (match Ppx_yojson_conv_lib.( ! ) relativePatternSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + relativePatternSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, relativePatternSupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) relativePatternSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; relativePatternSupport = - (match relativePatternSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, relativePatternSupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) relativePatternSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; relativePatternSupport = + (match relativePatternSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6715,100 +6780,102 @@ module DidChangeWatchedFilesClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_relativePatternSupport then bnds - else + if None = v_relativePatternSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_relativePatternSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_relativePatternSupport in - let bnd = ("relativePatternSupport", arg) in - bnd :: bnds + let bnd = "relativePatternSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(relativePatternSupport : bool option) (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(relativePatternSupport : bool option) + (() : unit) + : t + = { dynamicRegistration; relativePatternSupport } + ;; end module DidChangeConfigurationClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DidChangeConfigurationClientCapabilities.t" - in + (let _tp_loc = "lsp/src/types.ml.DidChangeConfigurationClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6817,17 +6884,18 @@ module DidChangeConfigurationClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -6835,12 +6903,13 @@ module DidChangeConfigurationClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module DiagnosticWorkspaceClientCapabilities = struct type t = { refreshSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -6849,54 +6918,51 @@ module DiagnosticWorkspaceClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DiagnosticWorkspaceClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let refreshSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "refreshSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "refreshSupport" -> + (match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let refreshSupport_value = - Ppx_yojson_conv_lib.( ! ) refreshSupport_field - in - { refreshSupport = - (match refreshSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let refreshSupport_value = Ppx_yojson_conv_lib.( ! ) refreshSupport_field in + { refreshSupport = + (match refreshSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6905,29 +6971,28 @@ module DiagnosticWorkspaceClientCapabilities = struct | { refreshSupport = v_refreshSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_refreshSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport - in - let bnd = ("refreshSupport", arg) in - bnd :: bnds + if None = v_refreshSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport in + let bnd = "refreshSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(refreshSupport : bool option) (() : unit) : t = - { refreshSupport } + let create ?(refreshSupport : bool option) (() : unit) : t = { refreshSupport } end module CodeLensWorkspaceClientCapabilities = struct type t = { refreshSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -6936,54 +7001,51 @@ module CodeLensWorkspaceClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeLensWorkspaceClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let refreshSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "refreshSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "refreshSupport" -> + (match Ppx_yojson_conv_lib.( ! ) refreshSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + refreshSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let refreshSupport_value = - Ppx_yojson_conv_lib.( ! ) refreshSupport_field - in - { refreshSupport = - (match refreshSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let refreshSupport_value = Ppx_yojson_conv_lib.( ! ) refreshSupport_field in + { refreshSupport = + (match refreshSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -6992,63 +7054,57 @@ module CodeLensWorkspaceClientCapabilities = struct | { refreshSupport = v_refreshSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_refreshSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport - in - let bnd = ("refreshSupport", arg) in - bnd :: bnds + if None = v_refreshSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_refreshSupport in + let bnd = "refreshSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(refreshSupport : bool option) (() : unit) : t = - { refreshSupport } + let create ?(refreshSupport : bool option) (() : unit) : t = { refreshSupport } end module WorkspaceClientCapabilities = struct type t = - { applyEdit : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { applyEdit : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; codeLens : CodeLensWorkspaceClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; configuration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; diagnostics : - DiagnosticWorkspaceClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; diagnostics : DiagnosticWorkspaceClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; didChangeConfiguration : DidChangeConfigurationClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; didChangeWatchedFiles : DidChangeWatchedFilesClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; executeCommand : ExecuteCommandClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; fileOperations : FileOperationClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; foldingRange : - FoldingRangeWorkspaceClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; foldingRange : FoldingRangeWorkspaceClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; inlayHint : InlayHintWorkspaceClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; inlineValue : - InlineValueWorkspaceClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; semanticTokens : - SemanticTokensWorkspaceClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; inlineValue : InlineValueWorkspaceClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] + ; semanticTokens : SemanticTokensWorkspaceClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; symbol : WorkspaceSymbolClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workspaceEdit : WorkspaceEditClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workspaceFolders : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -7057,7 +7113,7 @@ module WorkspaceClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let applyEdit_field = ref Ppx_yojson_conv_lib.Option.None and codeLens_field = ref Ppx_yojson_conv_lib.Option.None and configuration_field = ref Ppx_yojson_conv_lib.Option.None @@ -7078,283 +7134,281 @@ module WorkspaceClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "applyEdit" -> ( - match Ppx_yojson_conv_lib.( ! ) applyEdit_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - applyEdit_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "codeLens" -> ( - match Ppx_yojson_conv_lib.( ! ) codeLens_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CodeLensWorkspaceClientCapabilities.t_of_yojson - _field_yojson - in - codeLens_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "configuration" -> ( - match Ppx_yojson_conv_lib.( ! ) configuration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - configuration_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "diagnostics" -> ( - match Ppx_yojson_conv_lib.( ! ) diagnostics_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DiagnosticWorkspaceClientCapabilities.t_of_yojson - _field_yojson - in - diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "didChangeConfiguration" -> ( - match Ppx_yojson_conv_lib.( ! ) didChangeConfiguration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DidChangeConfigurationClientCapabilities.t_of_yojson - _field_yojson - in - didChangeConfiguration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "didChangeWatchedFiles" -> ( - match Ppx_yojson_conv_lib.( ! ) didChangeWatchedFiles_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DidChangeWatchedFilesClientCapabilities.t_of_yojson - _field_yojson - in - didChangeWatchedFiles_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "executeCommand" -> ( - match Ppx_yojson_conv_lib.( ! ) executeCommand_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ExecuteCommandClientCapabilities.t_of_yojson - _field_yojson - in - executeCommand_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "fileOperations" -> ( - match Ppx_yojson_conv_lib.( ! ) fileOperations_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationClientCapabilities.t_of_yojson - _field_yojson - in - fileOperations_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "foldingRange" -> ( - match Ppx_yojson_conv_lib.( ! ) foldingRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FoldingRangeWorkspaceClientCapabilities.t_of_yojson - _field_yojson - in - foldingRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlayHint" -> ( - match Ppx_yojson_conv_lib.( ! ) inlayHint_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InlayHintWorkspaceClientCapabilities.t_of_yojson - _field_yojson - in - inlayHint_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlineValue" -> ( - match Ppx_yojson_conv_lib.( ! ) inlineValue_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InlineValueWorkspaceClientCapabilities.t_of_yojson - _field_yojson - in - inlineValue_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "semanticTokens" -> ( - match Ppx_yojson_conv_lib.( ! ) semanticTokens_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SemanticTokensWorkspaceClientCapabilities.t_of_yojson - _field_yojson - in - semanticTokens_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "symbol" -> ( - match Ppx_yojson_conv_lib.( ! ) symbol_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - WorkspaceSymbolClientCapabilities.t_of_yojson - _field_yojson - in - symbol_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workspaceEdit" -> ( - match Ppx_yojson_conv_lib.( ! ) workspaceEdit_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - WorkspaceEditClientCapabilities.t_of_yojson - _field_yojson - in - workspaceEdit_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workspaceFolders" -> ( - match Ppx_yojson_conv_lib.( ! ) workspaceFolders_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workspaceFolders_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( applyEdit_value - , codeLens_value - , configuration_value - , diagnostics_value - , didChangeConfiguration_value - , didChangeWatchedFiles_value - , executeCommand_value - , fileOperations_value - , foldingRange_value - , inlayHint_value - , inlineValue_value - , semanticTokens_value - , symbol_value - , workspaceEdit_value - , workspaceFolders_value ) = - ( Ppx_yojson_conv_lib.( ! ) applyEdit_field - , Ppx_yojson_conv_lib.( ! ) codeLens_field - , Ppx_yojson_conv_lib.( ! ) configuration_field - , Ppx_yojson_conv_lib.( ! ) diagnostics_field - , Ppx_yojson_conv_lib.( ! ) didChangeConfiguration_field - , Ppx_yojson_conv_lib.( ! ) didChangeWatchedFiles_field - , Ppx_yojson_conv_lib.( ! ) executeCommand_field - , Ppx_yojson_conv_lib.( ! ) fileOperations_field - , Ppx_yojson_conv_lib.( ! ) foldingRange_field - , Ppx_yojson_conv_lib.( ! ) inlayHint_field - , Ppx_yojson_conv_lib.( ! ) inlineValue_field - , Ppx_yojson_conv_lib.( ! ) semanticTokens_field - , Ppx_yojson_conv_lib.( ! ) symbol_field - , Ppx_yojson_conv_lib.( ! ) workspaceEdit_field - , Ppx_yojson_conv_lib.( ! ) workspaceFolders_field ) - in - { applyEdit = - (match applyEdit_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; codeLens = - (match codeLens_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; configuration = - (match configuration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; diagnostics = - (match diagnostics_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; didChangeConfiguration = - (match didChangeConfiguration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; didChangeWatchedFiles = - (match didChangeWatchedFiles_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; executeCommand = - (match executeCommand_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; fileOperations = - (match fileOperations_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; foldingRange = - (match foldingRange_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlayHint = - (match inlayHint_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlineValue = - (match inlineValue_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; semanticTokens = - (match semanticTokens_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; symbol = - (match symbol_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workspaceEdit = - (match workspaceEdit_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workspaceFolders = - (match workspaceFolders_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "applyEdit" -> + (match Ppx_yojson_conv_lib.( ! ) applyEdit_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + applyEdit_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "codeLens" -> + (match Ppx_yojson_conv_lib.( ! ) codeLens_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CodeLensWorkspaceClientCapabilities.t_of_yojson + _field_yojson + in + codeLens_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "configuration" -> + (match Ppx_yojson_conv_lib.( ! ) configuration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + configuration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "diagnostics" -> + (match Ppx_yojson_conv_lib.( ! ) diagnostics_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DiagnosticWorkspaceClientCapabilities.t_of_yojson + _field_yojson + in + diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "didChangeConfiguration" -> + (match Ppx_yojson_conv_lib.( ! ) didChangeConfiguration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DidChangeConfigurationClientCapabilities.t_of_yojson + _field_yojson + in + didChangeConfiguration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "didChangeWatchedFiles" -> + (match Ppx_yojson_conv_lib.( ! ) didChangeWatchedFiles_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DidChangeWatchedFilesClientCapabilities.t_of_yojson + _field_yojson + in + didChangeWatchedFiles_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "executeCommand" -> + (match Ppx_yojson_conv_lib.( ! ) executeCommand_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ExecuteCommandClientCapabilities.t_of_yojson + _field_yojson + in + executeCommand_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "fileOperations" -> + (match Ppx_yojson_conv_lib.( ! ) fileOperations_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationClientCapabilities.t_of_yojson + _field_yojson + in + fileOperations_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "foldingRange" -> + (match Ppx_yojson_conv_lib.( ! ) foldingRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FoldingRangeWorkspaceClientCapabilities.t_of_yojson + _field_yojson + in + foldingRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlayHint" -> + (match Ppx_yojson_conv_lib.( ! ) inlayHint_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InlayHintWorkspaceClientCapabilities.t_of_yojson + _field_yojson + in + inlayHint_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlineValue" -> + (match Ppx_yojson_conv_lib.( ! ) inlineValue_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InlineValueWorkspaceClientCapabilities.t_of_yojson + _field_yojson + in + inlineValue_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "semanticTokens" -> + (match Ppx_yojson_conv_lib.( ! ) semanticTokens_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SemanticTokensWorkspaceClientCapabilities.t_of_yojson + _field_yojson + in + semanticTokens_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "symbol" -> + (match Ppx_yojson_conv_lib.( ! ) symbol_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + WorkspaceSymbolClientCapabilities.t_of_yojson + _field_yojson + in + symbol_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workspaceEdit" -> + (match Ppx_yojson_conv_lib.( ! ) workspaceEdit_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + WorkspaceEditClientCapabilities.t_of_yojson + _field_yojson + in + workspaceEdit_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workspaceFolders" -> + (match Ppx_yojson_conv_lib.( ! ) workspaceFolders_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workspaceFolders_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( applyEdit_value + , codeLens_value + , configuration_value + , diagnostics_value + , didChangeConfiguration_value + , didChangeWatchedFiles_value + , executeCommand_value + , fileOperations_value + , foldingRange_value + , inlayHint_value + , inlineValue_value + , semanticTokens_value + , symbol_value + , workspaceEdit_value + , workspaceFolders_value ) + = + ( Ppx_yojson_conv_lib.( ! ) applyEdit_field + , Ppx_yojson_conv_lib.( ! ) codeLens_field + , Ppx_yojson_conv_lib.( ! ) configuration_field + , Ppx_yojson_conv_lib.( ! ) diagnostics_field + , Ppx_yojson_conv_lib.( ! ) didChangeConfiguration_field + , Ppx_yojson_conv_lib.( ! ) didChangeWatchedFiles_field + , Ppx_yojson_conv_lib.( ! ) executeCommand_field + , Ppx_yojson_conv_lib.( ! ) fileOperations_field + , Ppx_yojson_conv_lib.( ! ) foldingRange_field + , Ppx_yojson_conv_lib.( ! ) inlayHint_field + , Ppx_yojson_conv_lib.( ! ) inlineValue_field + , Ppx_yojson_conv_lib.( ! ) semanticTokens_field + , Ppx_yojson_conv_lib.( ! ) symbol_field + , Ppx_yojson_conv_lib.( ! ) workspaceEdit_field + , Ppx_yojson_conv_lib.( ! ) workspaceFolders_field ) + in + { applyEdit = + (match applyEdit_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; codeLens = + (match codeLens_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; configuration = + (match configuration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; diagnostics = + (match diagnostics_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; didChangeConfiguration = + (match didChangeConfiguration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; didChangeWatchedFiles = + (match didChangeWatchedFiles_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; executeCommand = + (match executeCommand_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; fileOperations = + (match fileOperations_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; foldingRange = + (match foldingRange_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlayHint = + (match inlayHint_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlineValue = + (match inlineValue_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; semanticTokens = + (match semanticTokens_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; symbol = + (match symbol_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workspaceEdit = + (match workspaceEdit_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workspaceFolders = + (match workspaceFolders_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -7378,189 +7432,202 @@ module WorkspaceClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workspaceFolders then bnds - else + if None = v_workspaceFolders + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workspaceFolders + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workspaceFolders in - let bnd = ("workspaceFolders", arg) in - bnd :: bnds + let bnd = "workspaceFolders", arg in + bnd :: bnds) in let bnds = - if None = v_workspaceEdit then bnds - else + if None = v_workspaceEdit + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t WorkspaceEditClientCapabilities.yojson_of_t) v_workspaceEdit in - let bnd = ("workspaceEdit", arg) in - bnd :: bnds + let bnd = "workspaceEdit", arg in + bnd :: bnds) in let bnds = - if None = v_symbol then bnds - else + if None = v_symbol + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t WorkspaceSymbolClientCapabilities.yojson_of_t) v_symbol in - let bnd = ("symbol", arg) in - bnd :: bnds + let bnd = "symbol", arg in + bnd :: bnds) in let bnds = - if None = v_semanticTokens then bnds - else + if None = v_semanticTokens + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t SemanticTokensWorkspaceClientCapabilities.yojson_of_t) v_semanticTokens in - let bnd = ("semanticTokens", arg) in - bnd :: bnds + let bnd = "semanticTokens", arg in + bnd :: bnds) in let bnds = - if None = v_inlineValue then bnds - else + if None = v_inlineValue + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InlineValueWorkspaceClientCapabilities.yojson_of_t) v_inlineValue in - let bnd = ("inlineValue", arg) in - bnd :: bnds + let bnd = "inlineValue", arg in + bnd :: bnds) in let bnds = - if None = v_inlayHint then bnds - else + if None = v_inlayHint + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InlayHintWorkspaceClientCapabilities.yojson_of_t) v_inlayHint in - let bnd = ("inlayHint", arg) in - bnd :: bnds + let bnd = "inlayHint", arg in + bnd :: bnds) in let bnds = - if None = v_foldingRange then bnds - else + if None = v_foldingRange + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FoldingRangeWorkspaceClientCapabilities.yojson_of_t) v_foldingRange in - let bnd = ("foldingRange", arg) in - bnd :: bnds + let bnd = "foldingRange", arg in + bnd :: bnds) in let bnds = - if None = v_fileOperations then bnds - else + if None = v_fileOperations + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FileOperationClientCapabilities.yojson_of_t) v_fileOperations in - let bnd = ("fileOperations", arg) in - bnd :: bnds + let bnd = "fileOperations", arg in + bnd :: bnds) in let bnds = - if None = v_executeCommand then bnds - else + if None = v_executeCommand + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ExecuteCommandClientCapabilities.yojson_of_t) v_executeCommand in - let bnd = ("executeCommand", arg) in - bnd :: bnds + let bnd = "executeCommand", arg in + bnd :: bnds) in let bnds = - if None = v_didChangeWatchedFiles then bnds - else + if None = v_didChangeWatchedFiles + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DidChangeWatchedFilesClientCapabilities.yojson_of_t) v_didChangeWatchedFiles in - let bnd = ("didChangeWatchedFiles", arg) in - bnd :: bnds + let bnd = "didChangeWatchedFiles", arg in + bnd :: bnds) in let bnds = - if None = v_didChangeConfiguration then bnds - else + if None = v_didChangeConfiguration + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DidChangeConfigurationClientCapabilities.yojson_of_t) v_didChangeConfiguration in - let bnd = ("didChangeConfiguration", arg) in - bnd :: bnds + let bnd = "didChangeConfiguration", arg in + bnd :: bnds) in let bnds = - if None = v_diagnostics then bnds - else + if None = v_diagnostics + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DiagnosticWorkspaceClientCapabilities.yojson_of_t) v_diagnostics in - let bnd = ("diagnostics", arg) in - bnd :: bnds + let bnd = "diagnostics", arg in + bnd :: bnds) in let bnds = - if None = v_configuration then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_configuration - in - let bnd = ("configuration", arg) in - bnd :: bnds + if None = v_configuration + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_configuration in + let bnd = "configuration", arg in + bnd :: bnds) in let bnds = - if None = v_codeLens then bnds - else + if None = v_codeLens + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t CodeLensWorkspaceClientCapabilities.yojson_of_t) v_codeLens in - let bnd = ("codeLens", arg) in - bnd :: bnds + let bnd = "codeLens", arg in + bnd :: bnds) in let bnds = - if None = v_applyEdit then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_applyEdit - in - let bnd = ("applyEdit", arg) in - bnd :: bnds + if None = v_applyEdit + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_applyEdit in + let bnd = "applyEdit", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(applyEdit : bool option) - ?(codeLens : CodeLensWorkspaceClientCapabilities.t option) - ?(configuration : bool option) - ?(diagnostics : DiagnosticWorkspaceClientCapabilities.t option) - ?(didChangeConfiguration : - DidChangeConfigurationClientCapabilities.t option) - ?(didChangeWatchedFiles : - DidChangeWatchedFilesClientCapabilities.t option) - ?(executeCommand : ExecuteCommandClientCapabilities.t option) - ?(fileOperations : FileOperationClientCapabilities.t option) - ?(foldingRange : FoldingRangeWorkspaceClientCapabilities.t option) - ?(inlayHint : InlayHintWorkspaceClientCapabilities.t option) - ?(inlineValue : InlineValueWorkspaceClientCapabilities.t option) - ?(semanticTokens : SemanticTokensWorkspaceClientCapabilities.t option) - ?(symbol : WorkspaceSymbolClientCapabilities.t option) - ?(workspaceEdit : WorkspaceEditClientCapabilities.t option) - ?(workspaceFolders : bool option) (() : unit) : t = + let create + ?(applyEdit : bool option) + ?(codeLens : CodeLensWorkspaceClientCapabilities.t option) + ?(configuration : bool option) + ?(diagnostics : DiagnosticWorkspaceClientCapabilities.t option) + ?(didChangeConfiguration : DidChangeConfigurationClientCapabilities.t option) + ?(didChangeWatchedFiles : DidChangeWatchedFilesClientCapabilities.t option) + ?(executeCommand : ExecuteCommandClientCapabilities.t option) + ?(fileOperations : FileOperationClientCapabilities.t option) + ?(foldingRange : FoldingRangeWorkspaceClientCapabilities.t option) + ?(inlayHint : InlayHintWorkspaceClientCapabilities.t option) + ?(inlineValue : InlineValueWorkspaceClientCapabilities.t option) + ?(semanticTokens : SemanticTokensWorkspaceClientCapabilities.t option) + ?(symbol : WorkspaceSymbolClientCapabilities.t option) + ?(workspaceEdit : WorkspaceEditClientCapabilities.t option) + ?(workspaceFolders : bool option) + (() : unit) + : t + = { applyEdit ; codeLens ; configuration @@ -7577,12 +7644,13 @@ module WorkspaceClientCapabilities = struct ; workspaceEdit ; workspaceFolders } + ;; end module ShowMessageRequestClientCapabilities = struct type messageActionItem = { additionalPropertiesSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -7593,58 +7661,54 @@ module ShowMessageRequestClientCapabilities = struct "lsp/src/types.ml.ShowMessageRequestClientCapabilities.messageActionItem" in function - | `Assoc field_yojsons as yojson -> ( - let additionalPropertiesSupport_field = - ref Ppx_yojson_conv_lib.Option.None + | `Assoc field_yojsons as yojson -> + let additionalPropertiesSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "additionalPropertiesSupport" -> ( - match + | "additionalPropertiesSupport" -> + (match Ppx_yojson_conv_lib.( ! ) additionalPropertiesSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + additionalPropertiesSupport_field + := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let additionalPropertiesSupport_value = Ppx_yojson_conv_lib.( ! ) additionalPropertiesSupport_field - with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - additionalPropertiesSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let additionalPropertiesSupport_value = - Ppx_yojson_conv_lib.( ! ) additionalPropertiesSupport_field - in - { additionalPropertiesSupport = - (match additionalPropertiesSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + in + { additionalPropertiesSupport = + (match additionalPropertiesSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> messageActionItem) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> messageActionItem) + ;; let _ = messageActionItem_of_yojson @@ -7653,29 +7717,33 @@ module ShowMessageRequestClientCapabilities = struct | { additionalPropertiesSupport = v_additionalPropertiesSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_additionalPropertiesSupport then bnds - else + if None = v_additionalPropertiesSupport + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_additionalPropertiesSupport in - let bnd = ("additionalPropertiesSupport", arg) in - bnd :: bnds + let bnd = "additionalPropertiesSupport", arg in + bnd :: bnds) in `Assoc bnds - : messageActionItem -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : messageActionItem -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_messageActionItem [@@@end] - let create_messageActionItem ?(additionalPropertiesSupport : bool option) - (() : unit) : messageActionItem = + let create_messageActionItem ?(additionalPropertiesSupport : bool option) (() : unit) + : messageActionItem + = { additionalPropertiesSupport } + ;; type t = { messageActionItem : messageActionItem Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -7684,56 +7752,55 @@ module ShowMessageRequestClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ShowMessageRequestClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let messageActionItem_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "messageActionItem" -> ( - match Ppx_yojson_conv_lib.( ! ) messageActionItem_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - messageActionItem_of_yojson - _field_yojson - in - messageActionItem_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "messageActionItem" -> + (match Ppx_yojson_conv_lib.( ! ) messageActionItem_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + messageActionItem_of_yojson + _field_yojson + in + messageActionItem_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let messageActionItem_value = - Ppx_yojson_conv_lib.( ! ) messageActionItem_field - in - { messageActionItem = - (match messageActionItem_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let messageActionItem_value = + Ppx_yojson_conv_lib.( ! ) messageActionItem_field + in + { messageActionItem = + (match messageActionItem_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -7742,17 +7809,19 @@ module ShowMessageRequestClientCapabilities = struct | { messageActionItem = v_messageActionItem } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_messageActionItem then bnds - else + if None = v_messageActionItem + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_messageActionItem) v_messageActionItem in - let bnd = ("messageActionItem", arg) in - bnd :: bnds + let bnd = "messageActionItem", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -7760,67 +7829,66 @@ module ShowMessageRequestClientCapabilities = struct let create ?(messageActionItem : messageActionItem option) (() : unit) : t = { messageActionItem } + ;; end module ShowDocumentClientCapabilities = struct - type t = { support : bool } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { support : bool } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ShowDocumentClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let support_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "support" -> ( - match Ppx_yojson_conv_lib.( ! ) support_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - support_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "support" -> + (match Ppx_yojson_conv_lib.( ! ) support_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + support_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) support_field with - | Ppx_yojson_conv_lib.Option.Some support_value -> - { support = support_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) support_field) - Ppx_yojson_conv_lib.Option.None - , "support" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) support_field with + | Ppx_yojson_conv_lib.Option.Some support_value -> + { support = support_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) support_field) + Ppx_yojson_conv_lib.Option.None + , "support" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -7833,7 +7901,8 @@ module ShowDocumentClientCapabilities = struct ("support", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -7845,12 +7914,11 @@ end module WindowClientCapabilities = struct type t = { showDocument : ShowDocumentClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; showMessage : - ShowMessageRequestClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; showMessage : ShowMessageRequestClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -7859,7 +7927,7 @@ module WindowClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WindowClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let showDocument_field = ref Ppx_yojson_conv_lib.Option.None and showMessage_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -7868,79 +7936,78 @@ module WindowClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "showDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) showDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ShowDocumentClientCapabilities.t_of_yojson - _field_yojson - in - showDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "showMessage" -> ( - match Ppx_yojson_conv_lib.( ! ) showMessage_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ShowMessageRequestClientCapabilities.t_of_yojson - _field_yojson - in - showMessage_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let showDocument_value, showMessage_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) showDocument_field - , Ppx_yojson_conv_lib.( ! ) showMessage_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { showDocument = - (match showDocument_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; showMessage = - (match showMessage_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "showDocument" -> + (match Ppx_yojson_conv_lib.( ! ) showDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ShowDocumentClientCapabilities.t_of_yojson + _field_yojson + in + showDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "showMessage" -> + (match Ppx_yojson_conv_lib.( ! ) showMessage_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ShowMessageRequestClientCapabilities.t_of_yojson + _field_yojson + in + showMessage_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let showDocument_value, showMessage_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) showDocument_field + , Ppx_yojson_conv_lib.( ! ) showMessage_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { showDocument = + (match showDocument_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; showMessage = + (match showMessage_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -7952,54 +8019,61 @@ module WindowClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_showMessage then bnds - else + if None = v_showMessage + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ShowMessageRequestClientCapabilities.yojson_of_t) v_showMessage in - let bnd = ("showMessage", arg) in - bnd :: bnds + let bnd = "showMessage", arg in + bnd :: bnds) in let bnds = - if None = v_showDocument then bnds - else + if None = v_showDocument + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - ShowDocumentClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t ShowDocumentClientCapabilities.yojson_of_t) v_showDocument in - let bnd = ("showDocument", arg) in - bnd :: bnds + let bnd = "showDocument", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(showDocument : ShowDocumentClientCapabilities.t option) - ?(showMessage : ShowMessageRequestClientCapabilities.t option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(showDocument : ShowDocumentClientCapabilities.t option) + ?(showMessage : ShowMessageRequestClientCapabilities.t option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { showDocument; showMessage; workDoneProgress } + ;; end module TypeHierarchyClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -8008,55 +8082,53 @@ module TypeHierarchyClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeHierarchyClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -8065,17 +8137,18 @@ module TypeHierarchyClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -8083,14 +8156,15 @@ module TypeHierarchyClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module TypeDefinitionClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; linkSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -8099,7 +8173,7 @@ module TypeDefinitionClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeDefinitionClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and linkSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -8107,112 +8181,108 @@ module TypeDefinitionClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "linkSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) linkSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - linkSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "linkSupport" -> + (match Ppx_yojson_conv_lib.( ! ) linkSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + linkSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, linkSupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) linkSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; linkSupport = - (match linkSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, linkSupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) linkSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; linkSupport = + (match linkSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { dynamicRegistration = v_dynamicRegistration - ; linkSupport = v_linkSupport - } -> + | { dynamicRegistration = v_dynamicRegistration; linkSupport = v_linkSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_linkSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_linkSupport - in - let bnd = ("linkSupport", arg) in - bnd :: bnds + if None = v_linkSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_linkSupport in + let bnd = "linkSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) ?(linkSupport : bool option) - (() : unit) : t = + let create ?(dynamicRegistration : bool option) ?(linkSupport : bool option) (() : unit) + : t + = { dynamicRegistration; linkSupport } + ;; end module TextDocumentSyncClientCapabilities = struct type t = - { didSave : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { didSave : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; willSave : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; willSave : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; willSaveWaitUntil : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -8221,7 +8291,7 @@ module TextDocumentSyncClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentSyncClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let didSave_field = ref Ppx_yojson_conv_lib.Option.None and dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and willSave_field = ref Ppx_yojson_conv_lib.Option.None @@ -8231,159 +8301,163 @@ module TextDocumentSyncClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "didSave" -> ( - match Ppx_yojson_conv_lib.( ! ) didSave_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - didSave_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willSave" -> ( - match Ppx_yojson_conv_lib.( ! ) willSave_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - willSave_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willSaveWaitUntil" -> ( - match Ppx_yojson_conv_lib.( ! ) willSaveWaitUntil_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - willSaveWaitUntil_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( didSave_value - , dynamicRegistration_value - , willSave_value - , willSaveWaitUntil_value ) = - ( Ppx_yojson_conv_lib.( ! ) didSave_field - , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) willSave_field - , Ppx_yojson_conv_lib.( ! ) willSaveWaitUntil_field ) - in - { didSave = - (match didSave_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willSave = - (match willSave_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willSaveWaitUntil = - (match willSaveWaitUntil_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { didSave = v_didSave - ; dynamicRegistration = v_dynamicRegistration - ; willSave = v_willSave + | "didSave" -> + (match Ppx_yojson_conv_lib.( ! ) didSave_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + didSave_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willSave" -> + (match Ppx_yojson_conv_lib.( ! ) willSave_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + willSave_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willSaveWaitUntil" -> + (match Ppx_yojson_conv_lib.( ! ) willSaveWaitUntil_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + willSaveWaitUntil_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( didSave_value + , dynamicRegistration_value + , willSave_value + , willSaveWaitUntil_value ) + = + ( Ppx_yojson_conv_lib.( ! ) didSave_field + , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) willSave_field + , Ppx_yojson_conv_lib.( ! ) willSaveWaitUntil_field ) + in + { didSave = + (match didSave_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willSave = + (match willSave_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willSaveWaitUntil = + (match willSaveWaitUntil_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { didSave = v_didSave + ; dynamicRegistration = v_dynamicRegistration + ; willSave = v_willSave ; willSaveWaitUntil = v_willSaveWaitUntil } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_willSaveWaitUntil then bnds - else + if None = v_willSaveWaitUntil + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_willSaveWaitUntil + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willSaveWaitUntil in - let bnd = ("willSaveWaitUntil", arg) in - bnd :: bnds + let bnd = "willSaveWaitUntil", arg in + bnd :: bnds) in let bnds = - if None = v_willSave then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willSave - in - let bnd = ("willSave", arg) in - bnd :: bnds + if None = v_willSave + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willSave in + let bnd = "willSave", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in let bnds = - if None = v_didSave then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_didSave - in - let bnd = ("didSave", arg) in - bnd :: bnds + if None = v_didSave + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_didSave in + let bnd = "didSave", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(didSave : bool option) ?(dynamicRegistration : bool option) - ?(willSave : bool option) ?(willSaveWaitUntil : bool option) (() : unit) : - t = + let create + ?(didSave : bool option) + ?(dynamicRegistration : bool option) + ?(willSave : bool option) + ?(willSaveWaitUntil : bool option) + (() : unit) + : t + = { didSave; dynamicRegistration; willSave; willSaveWaitUntil } + ;; end module SignatureHelpClientCapabilities = struct type parameterInformation = { labelOffsetSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -8394,55 +8468,53 @@ module SignatureHelpClientCapabilities = struct "lsp/src/types.ml.SignatureHelpClientCapabilities.parameterInformation" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let labelOffsetSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "labelOffsetSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) labelOffsetSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - labelOffsetSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "labelOffsetSupport" -> + (match Ppx_yojson_conv_lib.( ! ) labelOffsetSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + labelOffsetSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let labelOffsetSupport_value = - Ppx_yojson_conv_lib.( ! ) labelOffsetSupport_field - in - { labelOffsetSupport = - (match labelOffsetSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> parameterInformation) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let labelOffsetSupport_value = + Ppx_yojson_conv_lib.( ! ) labelOffsetSupport_field + in + { labelOffsetSupport = + (match labelOffsetSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> parameterInformation) + ;; let _ = parameterInformation_of_yojson @@ -8451,35 +8523,38 @@ module SignatureHelpClientCapabilities = struct | { labelOffsetSupport = v_labelOffsetSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_labelOffsetSupport then bnds - else + if None = v_labelOffsetSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_labelOffsetSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_labelOffsetSupport in - let bnd = ("labelOffsetSupport", arg) in - bnd :: bnds + let bnd = "labelOffsetSupport", arg in + bnd :: bnds) in `Assoc bnds - : parameterInformation -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : parameterInformation -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_parameterInformation [@@@end] - let create_parameterInformation ?(labelOffsetSupport : bool option) - (() : unit) : parameterInformation = + let create_parameterInformation ?(labelOffsetSupport : bool option) (() : unit) + : parameterInformation + = { labelOffsetSupport } + ;; type signatureInformation = { documentationFormat : MarkupKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; parameterInformation : parameterInformation Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; activeParameterSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; noActiveParameterSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -8490,7 +8565,7 @@ module SignatureHelpClientCapabilities = struct "lsp/src/types.ml.SignatureHelpClientCapabilities.signatureInformation" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentationFormat_field = ref Ppx_yojson_conv_lib.Option.None and parameterInformation_field = ref Ppx_yojson_conv_lib.Option.None and activeParameterSupport_field = ref Ppx_yojson_conv_lib.Option.None @@ -8500,100 +8575,96 @@ module SignatureHelpClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentationFormat" -> ( - match Ppx_yojson_conv_lib.( ! ) documentationFormat_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson MarkupKind.t_of_yojson) - _field_yojson - in - documentationFormat_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "parameterInformation" -> ( - match Ppx_yojson_conv_lib.( ! ) parameterInformation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - parameterInformation_of_yojson - _field_yojson - in - parameterInformation_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "activeParameterSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) activeParameterSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - activeParameterSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "noActiveParameterSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) noActiveParameterSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - noActiveParameterSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( documentationFormat_value - , parameterInformation_value - , activeParameterSupport_value - , noActiveParameterSupport_value ) = - ( Ppx_yojson_conv_lib.( ! ) documentationFormat_field - , Ppx_yojson_conv_lib.( ! ) parameterInformation_field - , Ppx_yojson_conv_lib.( ! ) activeParameterSupport_field - , Ppx_yojson_conv_lib.( ! ) noActiveParameterSupport_field ) - in - { documentationFormat = - (match documentationFormat_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; parameterInformation = - (match parameterInformation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; activeParameterSupport = - (match activeParameterSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; noActiveParameterSupport = - (match noActiveParameterSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> signatureInformation) + | "documentationFormat" -> + (match Ppx_yojson_conv_lib.( ! ) documentationFormat_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson MarkupKind.t_of_yojson) + _field_yojson + in + documentationFormat_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "parameterInformation" -> + (match Ppx_yojson_conv_lib.( ! ) parameterInformation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + parameterInformation_of_yojson + _field_yojson + in + parameterInformation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "activeParameterSupport" -> + (match Ppx_yojson_conv_lib.( ! ) activeParameterSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + activeParameterSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "noActiveParameterSupport" -> + (match Ppx_yojson_conv_lib.( ! ) noActiveParameterSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + noActiveParameterSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( documentationFormat_value + , parameterInformation_value + , activeParameterSupport_value + , noActiveParameterSupport_value ) + = + ( Ppx_yojson_conv_lib.( ! ) documentationFormat_field + , Ppx_yojson_conv_lib.( ! ) parameterInformation_field + , Ppx_yojson_conv_lib.( ! ) activeParameterSupport_field + , Ppx_yojson_conv_lib.( ! ) noActiveParameterSupport_field ) + in + { documentationFormat = + (match documentationFormat_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; parameterInformation = + (match parameterInformation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; activeParameterSupport = + (match activeParameterSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; noActiveParameterSupport = + (match noActiveParameterSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> signatureInformation) + ;; let _ = signatureInformation_of_yojson @@ -8606,72 +8677,77 @@ module SignatureHelpClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_noActiveParameterSupport then bnds - else + if None = v_noActiveParameterSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_noActiveParameterSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_noActiveParameterSupport in - let bnd = ("noActiveParameterSupport", arg) in - bnd :: bnds + let bnd = "noActiveParameterSupport", arg in + bnd :: bnds) in let bnds = - if None = v_activeParameterSupport then bnds - else + if None = v_activeParameterSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_activeParameterSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_activeParameterSupport in - let bnd = ("activeParameterSupport", arg) in - bnd :: bnds + let bnd = "activeParameterSupport", arg in + bnd :: bnds) in let bnds = - if None = v_parameterInformation then bnds - else + if None = v_parameterInformation + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_parameterInformation) v_parameterInformation in - let bnd = ("parameterInformation", arg) in - bnd :: bnds + let bnd = "parameterInformation", arg in + bnd :: bnds) in let bnds = - if None = v_documentationFormat then bnds - else + if None = v_documentationFormat + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list MarkupKind.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list MarkupKind.yojson_of_t)) v_documentationFormat in - let bnd = ("documentationFormat", arg) in - bnd :: bnds + let bnd = "documentationFormat", arg in + bnd :: bnds) in `Assoc bnds - : signatureInformation -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : signatureInformation -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_signatureInformation [@@@end] let create_signatureInformation - ?(documentationFormat : MarkupKind.t list option) - ?(parameterInformation : parameterInformation option) - ?(activeParameterSupport : bool option) - ?(noActiveParameterSupport : bool option) (() : unit) : - signatureInformation = + ?(documentationFormat : MarkupKind.t list option) + ?(parameterInformation : parameterInformation option) + ?(activeParameterSupport : bool option) + ?(noActiveParameterSupport : bool option) + (() : unit) + : signatureInformation + = { documentationFormat ; parameterInformation ; activeParameterSupport ; noActiveParameterSupport } + ;; type t = { contextSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; signatureInformation : signatureInformation Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -8680,7 +8756,7 @@ module SignatureHelpClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SignatureHelpClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let contextSupport_field = ref Ppx_yojson_conv_lib.Option.None and dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and signatureInformation_field = ref Ppx_yojson_conv_lib.Option.None @@ -8689,81 +8765,79 @@ module SignatureHelpClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "contextSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) contextSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - contextSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "signatureInformation" -> ( - match Ppx_yojson_conv_lib.( ! ) signatureInformation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - signatureInformation_of_yojson - _field_yojson - in - signatureInformation_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( contextSupport_value - , dynamicRegistration_value - , signatureInformation_value ) = - ( Ppx_yojson_conv_lib.( ! ) contextSupport_field - , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) signatureInformation_field ) - in - { contextSupport = - (match contextSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; signatureInformation = - (match signatureInformation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "contextSupport" -> + (match Ppx_yojson_conv_lib.( ! ) contextSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + contextSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "signatureInformation" -> + (match Ppx_yojson_conv_lib.( ! ) signatureInformation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + signatureInformation_of_yojson + _field_yojson + in + signatureInformation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( contextSupport_value + , dynamicRegistration_value + , signatureInformation_value ) + = + ( Ppx_yojson_conv_lib.( ! ) contextSupport_field + , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) signatureInformation_field ) + in + { contextSupport = + (match contextSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; signatureInformation = + (match signatureInformation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -8775,52 +8849,56 @@ module SignatureHelpClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_signatureInformation then bnds - else + if None = v_signatureInformation + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_signatureInformation) v_signatureInformation in - let bnd = ("signatureInformation", arg) in - bnd :: bnds + let bnd = "signatureInformation", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in let bnds = - if None = v_contextSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_contextSupport - in - let bnd = ("contextSupport", arg) in - bnd :: bnds + if None = v_contextSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_contextSupport in + let bnd = "contextSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(contextSupport : bool option) - ?(dynamicRegistration : bool option) - ?(signatureInformation : signatureInformation option) (() : unit) : t = + let create + ?(contextSupport : bool option) + ?(dynamicRegistration : bool option) + ?(signatureInformation : signatureInformation option) + (() : unit) + : t + = { contextSupport; dynamicRegistration; signatureInformation } + ;; end module SemanticTokensClientCapabilities = struct type full = - { delta : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - } + { delta : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : full) -> () @@ -8828,52 +8906,51 @@ module SemanticTokensClientCapabilities = struct let full_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensClientCapabilities.full" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let delta_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "delta" -> ( - match Ppx_yojson_conv_lib.( ! ) delta_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - delta_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "delta" -> + (match Ppx_yojson_conv_lib.( ! ) delta_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + delta_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let delta_value = Ppx_yojson_conv_lib.( ! ) delta_field in - { delta = - (match delta_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> full) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let delta_value = Ppx_yojson_conv_lib.( ! ) delta_field in + { delta = + (match delta_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> full) + ;; let _ = full_of_yojson @@ -8882,16 +8959,16 @@ module SemanticTokensClientCapabilities = struct | { delta = v_delta } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_delta then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_delta - in - let bnd = ("delta", arg) in - bnd :: bnds + if None = v_delta + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_delta in + let bnd = "delta", arg in + bnd :: bnds) in `Assoc bnds - : full -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : full -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_full @@ -8912,28 +8989,26 @@ module SemanticTokensClientCapabilities = struct "full_pvar" [ (fun json -> `Full (full_of_yojson json)) ] json + ;; let yojson_of_full_pvar (full_pvar : full_pvar) : Json.t = match full_pvar with | `Bool j -> `Bool j | `Full s -> yojson_of_full s + ;; type requests = - { range : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; full : full_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { range : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; full : full_pvar Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : requests) -> () let requests_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.SemanticTokensClientCapabilities.requests" - in + (let _tp_loc = "lsp/src/types.ml.SemanticTokensClientCapabilities.requests" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let range_field = ref Ppx_yojson_conv_lib.Option.None and full_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -8941,63 +9016,59 @@ module SemanticTokensClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "full" -> ( - match Ppx_yojson_conv_lib.( ! ) full_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - full_pvar_of_yojson - _field_yojson - in - full_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "full" -> + (match Ppx_yojson_conv_lib.( ! ) full_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson full_pvar_of_yojson _field_yojson + in + full_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let range_value, full_value = - ( Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) full_field ) - in - { range = - (match range_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; full = - (match full_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> requests) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let range_value, full_value = + Ppx_yojson_conv_lib.( ! ) range_field, Ppx_yojson_conv_lib.( ! ) full_field + in + { range = + (match range_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; full = + (match full_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> requests) + ;; let _ = requests_of_yojson @@ -9006,47 +9077,48 @@ module SemanticTokensClientCapabilities = struct | { range = v_range; full = v_full } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_full then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_full_pvar) v_full - in - let bnd = ("full", arg) in - bnd :: bnds + if None = v_full + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_full_pvar) v_full in + let bnd = "full", arg in + bnd :: bnds) in let bnds = - if None = v_range then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_range - in - let bnd = ("range", arg) in - bnd :: bnds + if None = v_range + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_range in + let bnd = "range", arg in + bnd :: bnds) in `Assoc bnds - : requests -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : requests -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_requests [@@@end] - let create_requests ?(range : bool option) ?(full : full_pvar option) - (() : unit) : requests = + let create_requests ?(range : bool option) ?(full : full_pvar option) (() : unit) + : requests + = { range; full } + ;; type t = { augmentsSyntaxTokens : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; formats : TokenFormat.t list ; multilineTokenSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; overlappingTokenSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; requests : requests ; serverCancelSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tokenModifiers : string list ; tokenTypes : string list } @@ -9057,7 +9129,7 @@ module SemanticTokensClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let augmentsSyntaxTokens_field = ref Ppx_yojson_conv_lib.Option.None and dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and formats_field = ref Ppx_yojson_conv_lib.Option.None @@ -9072,176 +9144,168 @@ module SemanticTokensClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "augmentsSyntaxTokens" -> ( - match Ppx_yojson_conv_lib.( ! ) augmentsSyntaxTokens_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - augmentsSyntaxTokens_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "formats" -> ( - match Ppx_yojson_conv_lib.( ! ) formats_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson TokenFormat.t_of_yojson _field_yojson - in - formats_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "multilineTokenSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) multilineTokenSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - multilineTokenSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "overlappingTokenSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) overlappingTokenSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - overlappingTokenSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "requests" -> ( - match Ppx_yojson_conv_lib.( ! ) requests_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = requests_of_yojson _field_yojson in - requests_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "serverCancelSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) serverCancelSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - serverCancelSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tokenModifiers" -> ( - match Ppx_yojson_conv_lib.( ! ) tokenModifiers_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - tokenModifiers_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tokenTypes" -> ( - match Ppx_yojson_conv_lib.( ! ) tokenTypes_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - tokenTypes_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) augmentsSyntaxTokens_field - , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) formats_field - , Ppx_yojson_conv_lib.( ! ) multilineTokenSupport_field - , Ppx_yojson_conv_lib.( ! ) overlappingTokenSupport_field - , Ppx_yojson_conv_lib.( ! ) requests_field - , Ppx_yojson_conv_lib.( ! ) serverCancelSupport_field - , Ppx_yojson_conv_lib.( ! ) tokenModifiers_field - , Ppx_yojson_conv_lib.( ! ) tokenTypes_field ) - with - | ( augmentsSyntaxTokens_value - , dynamicRegistration_value - , Ppx_yojson_conv_lib.Option.Some formats_value - , multilineTokenSupport_value - , overlappingTokenSupport_value - , Ppx_yojson_conv_lib.Option.Some requests_value - , serverCancelSupport_value - , Ppx_yojson_conv_lib.Option.Some tokenModifiers_value - , Ppx_yojson_conv_lib.Option.Some tokenTypes_value ) -> - { augmentsSyntaxTokens = - (match augmentsSyntaxTokens_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; formats = formats_value - ; multilineTokenSupport = - (match multilineTokenSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; overlappingTokenSupport = - (match overlappingTokenSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; requests = requests_value - ; serverCancelSupport = - (match serverCancelSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tokenModifiers = tokenModifiers_value - ; tokenTypes = tokenTypes_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) formats_field) - Ppx_yojson_conv_lib.Option.None - , "formats" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) requests_field) - Ppx_yojson_conv_lib.Option.None - , "requests" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) tokenModifiers_field) - Ppx_yojson_conv_lib.Option.None - , "tokenModifiers" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) tokenTypes_field) - Ppx_yojson_conv_lib.Option.None - , "tokenTypes" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "augmentsSyntaxTokens" -> + (match Ppx_yojson_conv_lib.( ! ) augmentsSyntaxTokens_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + augmentsSyntaxTokens_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "formats" -> + (match Ppx_yojson_conv_lib.( ! ) formats_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson TokenFormat.t_of_yojson _field_yojson in + formats_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "multilineTokenSupport" -> + (match Ppx_yojson_conv_lib.( ! ) multilineTokenSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + multilineTokenSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "overlappingTokenSupport" -> + (match Ppx_yojson_conv_lib.( ! ) overlappingTokenSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + overlappingTokenSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "requests" -> + (match Ppx_yojson_conv_lib.( ! ) requests_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = requests_of_yojson _field_yojson in + requests_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "serverCancelSupport" -> + (match Ppx_yojson_conv_lib.( ! ) serverCancelSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + serverCancelSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tokenModifiers" -> + (match Ppx_yojson_conv_lib.( ! ) tokenModifiers_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + tokenModifiers_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tokenTypes" -> + (match Ppx_yojson_conv_lib.( ! ) tokenTypes_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + tokenTypes_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) augmentsSyntaxTokens_field + , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) formats_field + , Ppx_yojson_conv_lib.( ! ) multilineTokenSupport_field + , Ppx_yojson_conv_lib.( ! ) overlappingTokenSupport_field + , Ppx_yojson_conv_lib.( ! ) requests_field + , Ppx_yojson_conv_lib.( ! ) serverCancelSupport_field + , Ppx_yojson_conv_lib.( ! ) tokenModifiers_field + , Ppx_yojson_conv_lib.( ! ) tokenTypes_field ) + with + | ( augmentsSyntaxTokens_value + , dynamicRegistration_value + , Ppx_yojson_conv_lib.Option.Some formats_value + , multilineTokenSupport_value + , overlappingTokenSupport_value + , Ppx_yojson_conv_lib.Option.Some requests_value + , serverCancelSupport_value + , Ppx_yojson_conv_lib.Option.Some tokenModifiers_value + , Ppx_yojson_conv_lib.Option.Some tokenTypes_value ) -> + { augmentsSyntaxTokens = + (match augmentsSyntaxTokens_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; formats = formats_value + ; multilineTokenSupport = + (match multilineTokenSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; overlappingTokenSupport = + (match overlappingTokenSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; requests = requests_value + ; serverCancelSupport = + (match serverCancelSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tokenModifiers = tokenModifiers_value + ; tokenTypes = tokenTypes_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) formats_field) + Ppx_yojson_conv_lib.Option.None + , "formats" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) requests_field) + Ppx_yojson_conv_lib.Option.None + , "requests" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) tokenModifiers_field) + Ppx_yojson_conv_lib.Option.None + , "tokenModifiers" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) tokenTypes_field) + Ppx_yojson_conv_lib.Option.None + , "tokenTypes" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -9267,76 +9331,84 @@ module SemanticTokensClientCapabilities = struct ("tokenModifiers", arg) :: bnds in let bnds = - if None = v_serverCancelSupport then bnds - else + if None = v_serverCancelSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_serverCancelSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_serverCancelSupport in - let bnd = ("serverCancelSupport", arg) in - bnd :: bnds + let bnd = "serverCancelSupport", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_requests v_requests in ("requests", arg) :: bnds in let bnds = - if None = v_overlappingTokenSupport then bnds - else + if None = v_overlappingTokenSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_overlappingTokenSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_overlappingTokenSupport in - let bnd = ("overlappingTokenSupport", arg) in - bnd :: bnds + let bnd = "overlappingTokenSupport", arg in + bnd :: bnds) in let bnds = - if None = v_multilineTokenSupport then bnds - else + if None = v_multilineTokenSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_multilineTokenSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_multilineTokenSupport in - let bnd = ("multilineTokenSupport", arg) in - bnd :: bnds + let bnd = "multilineTokenSupport", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list TokenFormat.yojson_of_t v_formats in ("formats", arg) :: bnds in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in let bnds = - if None = v_augmentsSyntaxTokens then bnds - else + if None = v_augmentsSyntaxTokens + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_augmentsSyntaxTokens + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_augmentsSyntaxTokens in - let bnd = ("augmentsSyntaxTokens", arg) in - bnd :: bnds + let bnd = "augmentsSyntaxTokens", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(augmentsSyntaxTokens : bool option) - ?(dynamicRegistration : bool option) ~(formats : TokenFormat.t list) - ?(multilineTokenSupport : bool option) - ?(overlappingTokenSupport : bool option) ~(requests : requests) - ?(serverCancelSupport : bool option) ~(tokenModifiers : string list) - ~(tokenTypes : string list) (() : unit) : t = + let create + ?(augmentsSyntaxTokens : bool option) + ?(dynamicRegistration : bool option) + ~(formats : TokenFormat.t list) + ?(multilineTokenSupport : bool option) + ?(overlappingTokenSupport : bool option) + ~(requests : requests) + ?(serverCancelSupport : bool option) + ~(tokenModifiers : string list) + ~(tokenTypes : string list) + (() : unit) + : t + = { augmentsSyntaxTokens ; dynamicRegistration ; formats @@ -9347,12 +9419,13 @@ module SemanticTokensClientCapabilities = struct ; tokenModifiers ; tokenTypes } + ;; end module SelectionRangeClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -9361,55 +9434,53 @@ module SelectionRangeClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SelectionRangeClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -9418,17 +9489,18 @@ module SelectionRangeClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -9436,19 +9508,20 @@ module SelectionRangeClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module RenameClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; honorsChangeAnnotations : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; prepareSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; prepareSupportDefaultBehavior : PrepareSupportDefaultBehavior.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -9457,110 +9530,105 @@ module RenameClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RenameClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and honorsChangeAnnotations_field = ref Ppx_yojson_conv_lib.Option.None and prepareSupport_field = ref Ppx_yojson_conv_lib.Option.None - and prepareSupportDefaultBehavior_field = - ref Ppx_yojson_conv_lib.Option.None - and duplicates = ref [] - and extra = ref [] in - let rec iter = function - | (field_name, _field_yojson) :: tail -> - (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "honorsChangeAnnotations" -> ( - match Ppx_yojson_conv_lib.( ! ) honorsChangeAnnotations_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - honorsChangeAnnotations_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "prepareSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) prepareSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - prepareSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "prepareSupportDefaultBehavior" -> ( - match - Ppx_yojson_conv_lib.( ! ) prepareSupportDefaultBehavior_field - with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - PrepareSupportDefaultBehavior.t_of_yojson - _field_yojson - in - prepareSupportDefaultBehavior_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( dynamicRegistration_value - , honorsChangeAnnotations_value - , prepareSupport_value - , prepareSupportDefaultBehavior_value ) = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) honorsChangeAnnotations_field - , Ppx_yojson_conv_lib.( ! ) prepareSupport_field - , Ppx_yojson_conv_lib.( ! ) prepareSupportDefaultBehavior_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; honorsChangeAnnotations = - (match honorsChangeAnnotations_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; prepareSupport = - (match prepareSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; prepareSupportDefaultBehavior = - (match prepareSupportDefaultBehavior_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + and prepareSupportDefaultBehavior_field = ref Ppx_yojson_conv_lib.Option.None + and duplicates = ref [] + and extra = ref [] in + let rec iter = function + | (field_name, _field_yojson) :: tail -> + (match field_name with + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "honorsChangeAnnotations" -> + (match Ppx_yojson_conv_lib.( ! ) honorsChangeAnnotations_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + honorsChangeAnnotations_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "prepareSupport" -> + (match Ppx_yojson_conv_lib.( ! ) prepareSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + prepareSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "prepareSupportDefaultBehavior" -> + (match Ppx_yojson_conv_lib.( ! ) prepareSupportDefaultBehavior_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + PrepareSupportDefaultBehavior.t_of_yojson + _field_yojson + in + prepareSupportDefaultBehavior_field + := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( dynamicRegistration_value + , honorsChangeAnnotations_value + , prepareSupport_value + , prepareSupportDefaultBehavior_value ) + = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) honorsChangeAnnotations_field + , Ppx_yojson_conv_lib.( ! ) prepareSupport_field + , Ppx_yojson_conv_lib.( ! ) prepareSupportDefaultBehavior_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; honorsChangeAnnotations = + (match honorsChangeAnnotations_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; prepareSupport = + (match prepareSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; prepareSupportDefaultBehavior = + (match prepareSupportDefaultBehavior_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -9573,67 +9641,72 @@ module RenameClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_prepareSupportDefaultBehavior then bnds - else + if None = v_prepareSupportDefaultBehavior + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - PrepareSupportDefaultBehavior.yojson_of_t) + (Json.Nullable_option.yojson_of_t PrepareSupportDefaultBehavior.yojson_of_t) v_prepareSupportDefaultBehavior in - let bnd = ("prepareSupportDefaultBehavior", arg) in - bnd :: bnds + let bnd = "prepareSupportDefaultBehavior", arg in + bnd :: bnds) in let bnds = - if None = v_prepareSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_prepareSupport - in - let bnd = ("prepareSupport", arg) in - bnd :: bnds + if None = v_prepareSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_prepareSupport in + let bnd = "prepareSupport", arg in + bnd :: bnds) in let bnds = - if None = v_honorsChangeAnnotations then bnds - else + if None = v_honorsChangeAnnotations + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_honorsChangeAnnotations + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_honorsChangeAnnotations in - let bnd = ("honorsChangeAnnotations", arg) in - bnd :: bnds + let bnd = "honorsChangeAnnotations", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(honorsChangeAnnotations : bool option) ?(prepareSupport : bool option) - ?(prepareSupportDefaultBehavior : PrepareSupportDefaultBehavior.t option) - (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(honorsChangeAnnotations : bool option) + ?(prepareSupport : bool option) + ?(prepareSupportDefaultBehavior : PrepareSupportDefaultBehavior.t option) + (() : unit) + : t + = { dynamicRegistration ; honorsChangeAnnotations ; prepareSupport ; prepareSupportDefaultBehavior } + ;; end module ReferenceClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -9642,55 +9715,53 @@ module ReferenceClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ReferenceClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -9699,17 +9770,18 @@ module ReferenceClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -9717,25 +9789,24 @@ module ReferenceClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module DocumentRangeFormattingClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; rangesSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DocumentRangeFormattingClientCapabilities.t" - in + (let _tp_loc = "lsp/src/types.ml.DocumentRangeFormattingClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and rangesSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -9743,100 +9814,101 @@ module DocumentRangeFormattingClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rangesSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) rangesSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - rangesSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rangesSupport" -> + (match Ppx_yojson_conv_lib.( ! ) rangesSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + rangesSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, rangesSupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) rangesSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rangesSupport = - (match rangesSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, rangesSupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) rangesSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rangesSupport = + (match rangesSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { dynamicRegistration = v_dynamicRegistration - ; rangesSupport = v_rangesSupport - } -> + | { dynamicRegistration = v_dynamicRegistration; rangesSupport = v_rangesSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_rangesSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_rangesSupport - in - let bnd = ("rangesSupport", arg) in - bnd :: bnds + if None = v_rangesSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_rangesSupport in + let bnd = "rangesSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) ?(rangesSupport : bool option) - (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(rangesSupport : bool option) + (() : unit) + : t + = { dynamicRegistration; rangesSupport } + ;; end module PublishDiagnosticsClientCapabilities = struct @@ -9846,62 +9918,57 @@ module PublishDiagnosticsClientCapabilities = struct let _ = fun (_ : tagSupport) -> () let tagSupport_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.PublishDiagnosticsClientCapabilities.tagSupport" - in + (let _tp_loc = "lsp/src/types.ml.PublishDiagnosticsClientCapabilities.tagSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson DiagnosticTag.t_of_yojson _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson DiagnosticTag.t_of_yojson _field_yojson in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.Some valueSet_value -> - { valueSet = valueSet_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) valueSet_field) - Ppx_yojson_conv_lib.Option.None - , "valueSet" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> tagSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.Some valueSet_value -> + { valueSet = valueSet_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) valueSet_field) + Ppx_yojson_conv_lib.Option.None + , "valueSet" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> tagSupport) + ;; let _ = tagSupport_of_yojson @@ -9914,26 +9981,26 @@ module PublishDiagnosticsClientCapabilities = struct ("valueSet", arg) :: bnds in `Assoc bnds - : tagSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : tagSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_tagSupport [@@@end] - let create_tagSupport ~(valueSet : DiagnosticTag.t list) : tagSupport = - { valueSet } + let create_tagSupport ~(valueSet : DiagnosticTag.t list) : tagSupport = { valueSet } type t = { codeDescriptionSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; dataSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; relatedInformation : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tagSupport : tagSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; versionSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -9942,7 +10009,7 @@ module PublishDiagnosticsClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.PublishDiagnosticsClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let codeDescriptionSupport_field = ref Ppx_yojson_conv_lib.Option.None and dataSupport_field = ref Ppx_yojson_conv_lib.Option.None and relatedInformation_field = ref Ppx_yojson_conv_lib.Option.None @@ -9953,111 +10020,107 @@ module PublishDiagnosticsClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "codeDescriptionSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) codeDescriptionSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - codeDescriptionSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dataSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) dataSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dataSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "relatedInformation" -> ( - match Ppx_yojson_conv_lib.( ! ) relatedInformation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - relatedInformation_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tagSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) tagSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - tagSupport_of_yojson - _field_yojson - in - tagSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "versionSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) versionSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - versionSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( codeDescriptionSupport_value - , dataSupport_value - , relatedInformation_value - , tagSupport_value - , versionSupport_value ) = - ( Ppx_yojson_conv_lib.( ! ) codeDescriptionSupport_field - , Ppx_yojson_conv_lib.( ! ) dataSupport_field - , Ppx_yojson_conv_lib.( ! ) relatedInformation_field - , Ppx_yojson_conv_lib.( ! ) tagSupport_field - , Ppx_yojson_conv_lib.( ! ) versionSupport_field ) - in - { codeDescriptionSupport = - (match codeDescriptionSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dataSupport = - (match dataSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; relatedInformation = - (match relatedInformation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tagSupport = - (match tagSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; versionSupport = - (match versionSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "codeDescriptionSupport" -> + (match Ppx_yojson_conv_lib.( ! ) codeDescriptionSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + codeDescriptionSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dataSupport" -> + (match Ppx_yojson_conv_lib.( ! ) dataSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dataSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "relatedInformation" -> + (match Ppx_yojson_conv_lib.( ! ) relatedInformation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + relatedInformation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tagSupport" -> + (match Ppx_yojson_conv_lib.( ! ) tagSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson tagSupport_of_yojson _field_yojson + in + tagSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "versionSupport" -> + (match Ppx_yojson_conv_lib.( ! ) versionSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + versionSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( codeDescriptionSupport_value + , dataSupport_value + , relatedInformation_value + , tagSupport_value + , versionSupport_value ) + = + ( Ppx_yojson_conv_lib.( ! ) codeDescriptionSupport_field + , Ppx_yojson_conv_lib.( ! ) dataSupport_field + , Ppx_yojson_conv_lib.( ! ) relatedInformation_field + , Ppx_yojson_conv_lib.( ! ) tagSupport_field + , Ppx_yojson_conv_lib.( ! ) versionSupport_field ) + in + { codeDescriptionSupport = + (match codeDescriptionSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dataSupport = + (match dataSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; relatedInformation = + (match relatedInformation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tagSupport = + (match tagSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; versionSupport = + (match versionSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -10071,135 +10134,136 @@ module PublishDiagnosticsClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_versionSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_versionSupport - in - let bnd = ("versionSupport", arg) in - bnd :: bnds + if None = v_versionSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_versionSupport in + let bnd = "versionSupport", arg in + bnd :: bnds) in let bnds = - if None = v_tagSupport then bnds - else + if None = v_tagSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_tagSupport) - v_tagSupport + (Json.Nullable_option.yojson_of_t yojson_of_tagSupport) v_tagSupport in - let bnd = ("tagSupport", arg) in - bnd :: bnds + let bnd = "tagSupport", arg in + bnd :: bnds) in let bnds = - if None = v_relatedInformation then bnds - else + if None = v_relatedInformation + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_relatedInformation + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_relatedInformation in - let bnd = ("relatedInformation", arg) in - bnd :: bnds + let bnd = "relatedInformation", arg in + bnd :: bnds) in let bnds = - if None = v_dataSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dataSupport - in - let bnd = ("dataSupport", arg) in - bnd :: bnds + if None = v_dataSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dataSupport in + let bnd = "dataSupport", arg in + bnd :: bnds) in let bnds = - if None = v_codeDescriptionSupport then bnds - else + if None = v_codeDescriptionSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_codeDescriptionSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_codeDescriptionSupport in - let bnd = ("codeDescriptionSupport", arg) in - bnd :: bnds + let bnd = "codeDescriptionSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(codeDescriptionSupport : bool option) - ?(dataSupport : bool option) ?(relatedInformation : bool option) - ?(tagSupport : tagSupport option) ?(versionSupport : bool option) - (() : unit) : t = + let create + ?(codeDescriptionSupport : bool option) + ?(dataSupport : bool option) + ?(relatedInformation : bool option) + ?(tagSupport : tagSupport option) + ?(versionSupport : bool option) + (() : unit) + : t + = { codeDescriptionSupport ; dataSupport ; relatedInformation ; tagSupport ; versionSupport } + ;; end module DocumentOnTypeFormattingClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DocumentOnTypeFormattingClientCapabilities.t" - in + (let _tp_loc = "lsp/src/types.ml.DocumentOnTypeFormattingClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -10208,17 +10272,18 @@ module DocumentOnTypeFormattingClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -10226,12 +10291,13 @@ module DocumentOnTypeFormattingClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module MonikerClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -10240,55 +10306,53 @@ module MonikerClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.MonikerClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -10297,17 +10361,18 @@ module MonikerClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -10315,12 +10380,13 @@ module MonikerClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module LinkedEditingRangeClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -10329,55 +10395,53 @@ module LinkedEditingRangeClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.LinkedEditingRangeClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -10386,17 +10450,18 @@ module LinkedEditingRangeClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -10404,12 +10469,13 @@ module LinkedEditingRangeClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module InlineValueClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -10418,55 +10484,53 @@ module InlineValueClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineValueClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -10475,17 +10539,18 @@ module InlineValueClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -10493,12 +10558,13 @@ module InlineValueClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module InlineCompletionClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -10507,55 +10573,53 @@ module InlineCompletionClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineCompletionClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -10564,17 +10628,18 @@ module InlineCompletionClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -10582,6 +10647,7 @@ module InlineCompletionClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module InlayHintClientCapabilities = struct @@ -10591,60 +10657,57 @@ module InlayHintClientCapabilities = struct let _ = fun (_ : resolveSupport) -> () let resolveSupport_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.InlayHintClientCapabilities.resolveSupport" - in + (let _tp_loc = "lsp/src/types.ml.InlayHintClientCapabilities.resolveSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let properties_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "properties" -> ( - match Ppx_yojson_conv_lib.( ! ) properties_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - properties_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "properties" -> + (match Ppx_yojson_conv_lib.( ! ) properties_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + properties_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) properties_field with - | Ppx_yojson_conv_lib.Option.Some properties_value -> - { properties = properties_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) properties_field) - Ppx_yojson_conv_lib.Option.None - , "properties" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> resolveSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) properties_field with + | Ppx_yojson_conv_lib.Option.Some properties_value -> + { properties = properties_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) properties_field) + Ppx_yojson_conv_lib.Option.None + , "properties" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> resolveSupport) + ;; let _ = resolveSupport_of_yojson @@ -10657,20 +10720,20 @@ module InlayHintClientCapabilities = struct ("properties", arg) :: bnds in `Assoc bnds - : resolveSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : resolveSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_resolveSupport [@@@end] - let create_resolveSupport ~(properties : string list) : resolveSupport = - { properties } + let create_resolveSupport ~(properties : string list) : resolveSupport = { properties } type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveSupport : resolveSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -10679,7 +10742,7 @@ module InlayHintClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlayHintClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and resolveSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -10687,111 +10750,112 @@ module InlayHintClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - resolveSupport_of_yojson - _field_yojson - in - resolveSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveSupport" -> + (match Ppx_yojson_conv_lib.( ! ) resolveSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson resolveSupport_of_yojson _field_yojson + in + resolveSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, resolveSupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) resolveSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveSupport = - (match resolveSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, resolveSupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) resolveSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveSupport = + (match resolveSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { dynamicRegistration = v_dynamicRegistration - ; resolveSupport = v_resolveSupport - } -> + | { dynamicRegistration = v_dynamicRegistration; resolveSupport = v_resolveSupport } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_resolveSupport then bnds - else + if None = v_resolveSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_resolveSupport) - v_resolveSupport + (Json.Nullable_option.yojson_of_t yojson_of_resolveSupport) v_resolveSupport in - let bnd = ("resolveSupport", arg) in - bnd :: bnds + let bnd = "resolveSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(resolveSupport : resolveSupport option) (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(resolveSupport : resolveSupport option) + (() : unit) + : t + = { dynamicRegistration; resolveSupport } + ;; end module ImplementationClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; linkSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -10800,7 +10864,7 @@ module ImplementationClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ImplementationClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and linkSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -10808,108 +10872,106 @@ module ImplementationClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "linkSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) linkSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - linkSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "linkSupport" -> + (match Ppx_yojson_conv_lib.( ! ) linkSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + linkSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, linkSupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) linkSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; linkSupport = - (match linkSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, linkSupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) linkSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; linkSupport = + (match linkSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { dynamicRegistration = v_dynamicRegistration - ; linkSupport = v_linkSupport - } -> + | { dynamicRegistration = v_dynamicRegistration; linkSupport = v_linkSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_linkSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_linkSupport - in - let bnd = ("linkSupport", arg) in - bnd :: bnds + if None = v_linkSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_linkSupport in + let bnd = "linkSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) ?(linkSupport : bool option) - (() : unit) : t = + let create ?(dynamicRegistration : bool option) ?(linkSupport : bool option) (() : unit) + : t + = { dynamicRegistration; linkSupport } + ;; end module HoverClientCapabilities = struct type t = { contentFormat : MarkupKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -10918,7 +10980,7 @@ module HoverClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.HoverClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let contentFormat_field = ref Ppx_yojson_conv_lib.Option.None and dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -10926,110 +10988,112 @@ module HoverClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "contentFormat" -> ( - match Ppx_yojson_conv_lib.( ! ) contentFormat_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson MarkupKind.t_of_yojson) - _field_yojson - in - contentFormat_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "contentFormat" -> + (match Ppx_yojson_conv_lib.( ! ) contentFormat_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson MarkupKind.t_of_yojson) + _field_yojson + in + contentFormat_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let contentFormat_value, dynamicRegistration_value = - ( Ppx_yojson_conv_lib.( ! ) contentFormat_field - , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field ) - in - { contentFormat = - (match contentFormat_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let contentFormat_value, dynamicRegistration_value = + ( Ppx_yojson_conv_lib.( ! ) contentFormat_field + , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field ) + in + { contentFormat = + (match contentFormat_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { contentFormat = v_contentFormat - ; dynamicRegistration = v_dynamicRegistration - } -> + | { contentFormat = v_contentFormat; dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in let bnds = - if None = v_contentFormat then bnds - else + if None = v_contentFormat + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list MarkupKind.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list MarkupKind.yojson_of_t)) v_contentFormat in - let bnd = ("contentFormat", arg) in - bnd :: bnds + let bnd = "contentFormat", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(contentFormat : MarkupKind.t list option) - ?(dynamicRegistration : bool option) (() : unit) : t = + let create + ?(contentFormat : MarkupKind.t list option) + ?(dynamicRegistration : bool option) + (() : unit) + : t + = { contentFormat; dynamicRegistration } + ;; end module DocumentFormattingClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -11038,55 +11102,53 @@ module DocumentFormattingClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentFormattingClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -11095,17 +11157,18 @@ module DocumentFormattingClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -11113,70 +11176,68 @@ module DocumentFormattingClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module FoldingRangeClientCapabilities = struct type foldingRangeKind = { valueSet : FoldingRangeKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : foldingRangeKind) -> () let foldingRangeKind_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.FoldingRangeClientCapabilities.foldingRangeKind" - in + (let _tp_loc = "lsp/src/types.ml.FoldingRangeClientCapabilities.foldingRangeKind" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson FoldingRangeKind.t_of_yojson) - _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson FoldingRangeKind.t_of_yojson) + _field_yojson + in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let valueSet_value = Ppx_yojson_conv_lib.( ! ) valueSet_field in - { valueSet = - (match valueSet_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> foldingRangeKind) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let valueSet_value = Ppx_yojson_conv_lib.( ! ) valueSet_field in + { valueSet = + (match valueSet_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> foldingRangeKind) + ;; let _ = foldingRangeKind_of_yojson @@ -11185,88 +11246,87 @@ module FoldingRangeClientCapabilities = struct | { valueSet = v_valueSet } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_valueSet then bnds - else + if None = v_valueSet + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list FoldingRangeKind.yojson_of_t)) v_valueSet in - let bnd = ("valueSet", arg) in - bnd :: bnds + let bnd = "valueSet", arg in + bnd :: bnds) in `Assoc bnds - : foldingRangeKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : foldingRangeKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_foldingRangeKind [@@@end] - let create_foldingRangeKind ?(valueSet : FoldingRangeKind.t list option) - (() : unit) : foldingRangeKind = + let create_foldingRangeKind ?(valueSet : FoldingRangeKind.t list option) (() : unit) + : foldingRangeKind + = { valueSet } + ;; type foldingRange = { collapsedText : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : foldingRange) -> () let foldingRange_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.FoldingRangeClientCapabilities.foldingRange" - in + (let _tp_loc = "lsp/src/types.ml.FoldingRangeClientCapabilities.foldingRange" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let collapsedText_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "collapsedText" -> ( - match Ppx_yojson_conv_lib.( ! ) collapsedText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - collapsedText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "collapsedText" -> + (match Ppx_yojson_conv_lib.( ! ) collapsedText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + collapsedText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let collapsedText_value = - Ppx_yojson_conv_lib.( ! ) collapsedText_field - in - { collapsedText = - (match collapsedText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let collapsedText_value = Ppx_yojson_conv_lib.( ! ) collapsedText_field in + { collapsedText = + (match collapsedText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> foldingRange) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> foldingRange) + ;; let _ = foldingRange_of_yojson @@ -11275,36 +11335,35 @@ module FoldingRangeClientCapabilities = struct | { collapsedText = v_collapsedText } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_collapsedText then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_collapsedText - in - let bnd = ("collapsedText", arg) in - bnd :: bnds + if None = v_collapsedText + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_collapsedText in + let bnd = "collapsedText", arg in + bnd :: bnds) in `Assoc bnds - : foldingRange -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : foldingRange -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_foldingRange [@@@end] - let create_foldingRange ?(collapsedText : bool option) (() : unit) : - foldingRange = + let create_foldingRange ?(collapsedText : bool option) (() : unit) : foldingRange = { collapsedText } + ;; type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; foldingRange : foldingRange Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; foldingRangeKind : foldingRangeKind Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; lineFoldingOnly : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; rangeLimit : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; rangeLimit : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -11313,7 +11372,7 @@ module FoldingRangeClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FoldingRangeClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and foldingRange_field = ref Ppx_yojson_conv_lib.Option.None and foldingRangeKind_field = ref Ppx_yojson_conv_lib.Option.None @@ -11324,112 +11383,109 @@ module FoldingRangeClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "foldingRange" -> ( - match Ppx_yojson_conv_lib.( ! ) foldingRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - foldingRange_of_yojson - _field_yojson - in - foldingRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "foldingRangeKind" -> ( - match Ppx_yojson_conv_lib.( ! ) foldingRangeKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - foldingRangeKind_of_yojson - _field_yojson - in - foldingRangeKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "lineFoldingOnly" -> ( - match Ppx_yojson_conv_lib.( ! ) lineFoldingOnly_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - lineFoldingOnly_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rangeLimit" -> ( - match Ppx_yojson_conv_lib.( ! ) rangeLimit_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - rangeLimit_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( dynamicRegistration_value - , foldingRange_value - , foldingRangeKind_value - , lineFoldingOnly_value - , rangeLimit_value ) = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) foldingRange_field - , Ppx_yojson_conv_lib.( ! ) foldingRangeKind_field - , Ppx_yojson_conv_lib.( ! ) lineFoldingOnly_field - , Ppx_yojson_conv_lib.( ! ) rangeLimit_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; foldingRange = - (match foldingRange_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; foldingRangeKind = - (match foldingRangeKind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; lineFoldingOnly = - (match lineFoldingOnly_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rangeLimit = - (match rangeLimit_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "foldingRange" -> + (match Ppx_yojson_conv_lib.( ! ) foldingRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson foldingRange_of_yojson _field_yojson + in + foldingRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "foldingRangeKind" -> + (match Ppx_yojson_conv_lib.( ! ) foldingRangeKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + foldingRangeKind_of_yojson + _field_yojson + in + foldingRangeKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "lineFoldingOnly" -> + (match Ppx_yojson_conv_lib.( ! ) lineFoldingOnly_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + lineFoldingOnly_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rangeLimit" -> + (match Ppx_yojson_conv_lib.( ! ) rangeLimit_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + rangeLimit_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( dynamicRegistration_value + , foldingRange_value + , foldingRangeKind_value + , lineFoldingOnly_value + , rangeLimit_value ) + = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) foldingRange_field + , Ppx_yojson_conv_lib.( ! ) foldingRangeKind_field + , Ppx_yojson_conv_lib.( ! ) lineFoldingOnly_field + , Ppx_yojson_conv_lib.( ! ) rangeLimit_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; foldingRange = + (match foldingRange_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; foldingRangeKind = + (match foldingRangeKind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; lineFoldingOnly = + (match lineFoldingOnly_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rangeLimit = + (match rangeLimit_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -11443,71 +11499,73 @@ module FoldingRangeClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_rangeLimit then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_rangeLimit - in - let bnd = ("rangeLimit", arg) in - bnd :: bnds + if None = v_rangeLimit + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_rangeLimit in + let bnd = "rangeLimit", arg in + bnd :: bnds) in let bnds = - if None = v_lineFoldingOnly then bnds - else + if None = v_lineFoldingOnly + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_lineFoldingOnly in - let bnd = ("lineFoldingOnly", arg) in - bnd :: bnds + let bnd = "lineFoldingOnly", arg in + bnd :: bnds) in let bnds = - if None = v_foldingRangeKind then bnds - else + if None = v_foldingRangeKind + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_foldingRangeKind) v_foldingRangeKind in - let bnd = ("foldingRangeKind", arg) in - bnd :: bnds + let bnd = "foldingRangeKind", arg in + bnd :: bnds) in let bnds = - if None = v_foldingRange then bnds - else + if None = v_foldingRange + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_foldingRange) - v_foldingRange + (Json.Nullable_option.yojson_of_t yojson_of_foldingRange) v_foldingRange in - let bnd = ("foldingRange", arg) in - bnd :: bnds + let bnd = "foldingRange", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(foldingRange : foldingRange option) - ?(foldingRangeKind : foldingRangeKind option) - ?(lineFoldingOnly : bool option) ?(rangeLimit : int option) (() : unit) : - t = - { dynamicRegistration - ; foldingRange - ; foldingRangeKind - ; lineFoldingOnly - ; rangeLimit - } + let create + ?(dynamicRegistration : bool option) + ?(foldingRange : foldingRange option) + ?(foldingRangeKind : foldingRangeKind option) + ?(lineFoldingOnly : bool option) + ?(rangeLimit : int option) + (() : unit) + : t + = + { dynamicRegistration; foldingRange; foldingRangeKind; lineFoldingOnly; rangeLimit } + ;; end module DocumentSymbolClientCapabilities = struct @@ -11517,62 +11575,57 @@ module DocumentSymbolClientCapabilities = struct let _ = fun (_ : tagSupport) -> () let tagSupport_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DocumentSymbolClientCapabilities.tagSupport" - in + (let _tp_loc = "lsp/src/types.ml.DocumentSymbolClientCapabilities.tagSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson SymbolTag.t_of_yojson _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson SymbolTag.t_of_yojson _field_yojson in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.Some valueSet_value -> - { valueSet = valueSet_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) valueSet_field) - Ppx_yojson_conv_lib.Option.None - , "valueSet" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> tagSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.Some valueSet_value -> + { valueSet = valueSet_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) valueSet_field) + Ppx_yojson_conv_lib.Option.None + , "valueSet" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> tagSupport) + ;; let _ = tagSupport_of_yojson @@ -11585,76 +11638,73 @@ module DocumentSymbolClientCapabilities = struct ("valueSet", arg) :: bnds in `Assoc bnds - : tagSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : tagSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_tagSupport [@@@end] - let create_tagSupport ~(valueSet : SymbolTag.t list) : tagSupport = - { valueSet } + let create_tagSupport ~(valueSet : SymbolTag.t list) : tagSupport = { valueSet } type symbolKind = { valueSet : SymbolKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : symbolKind) -> () let symbolKind_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DocumentSymbolClientCapabilities.symbolKind" - in + (let _tp_loc = "lsp/src/types.ml.DocumentSymbolClientCapabilities.symbolKind" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson SymbolKind.t_of_yojson) - _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson SymbolKind.t_of_yojson) + _field_yojson + in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let valueSet_value = Ppx_yojson_conv_lib.( ! ) valueSet_field in - { valueSet = - (match valueSet_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> symbolKind) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let valueSet_value = Ppx_yojson_conv_lib.( ! ) valueSet_field in + { valueSet = + (match valueSet_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> symbolKind) + ;; let _ = symbolKind_of_yojson @@ -11663,38 +11713,39 @@ module DocumentSymbolClientCapabilities = struct | { valueSet = v_valueSet } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_valueSet then bnds - else + if None = v_valueSet + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list SymbolKind.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list SymbolKind.yojson_of_t)) v_valueSet in - let bnd = ("valueSet", arg) in - bnd :: bnds + let bnd = "valueSet", arg in + bnd :: bnds) in `Assoc bnds - : symbolKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : symbolKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_symbolKind [@@@end] - let create_symbolKind ?(valueSet : SymbolKind.t list option) (() : unit) : - symbolKind = + let create_symbolKind ?(valueSet : SymbolKind.t list option) (() : unit) : symbolKind = { valueSet } + ;; type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; hierarchicalDocumentSymbolSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; labelSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; symbolKind : symbolKind Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tagSupport : tagSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -11703,10 +11754,9 @@ module DocumentSymbolClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentSymbolClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None - and hierarchicalDocumentSymbolSupport_field = - ref Ppx_yojson_conv_lib.Option.None + and hierarchicalDocumentSymbolSupport_field = ref Ppx_yojson_conv_lib.Option.None and labelSupport_field = ref Ppx_yojson_conv_lib.Option.None and symbolKind_field = ref Ppx_yojson_conv_lib.Option.None and tagSupport_field = ref Ppx_yojson_conv_lib.Option.None @@ -11715,115 +11765,110 @@ module DocumentSymbolClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "hierarchicalDocumentSymbolSupport" -> ( - match - Ppx_yojson_conv_lib.( ! ) hierarchicalDocumentSymbolSupport_field - with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - hierarchicalDocumentSymbolSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "labelSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) labelSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - labelSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "symbolKind" -> ( - match Ppx_yojson_conv_lib.( ! ) symbolKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - symbolKind_of_yojson - _field_yojson - in - symbolKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tagSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) tagSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - tagSupport_of_yojson - _field_yojson - in - tagSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( dynamicRegistration_value - , hierarchicalDocumentSymbolSupport_value - , labelSupport_value - , symbolKind_value - , tagSupport_value ) = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) hierarchicalDocumentSymbolSupport_field - , Ppx_yojson_conv_lib.( ! ) labelSupport_field - , Ppx_yojson_conv_lib.( ! ) symbolKind_field - , Ppx_yojson_conv_lib.( ! ) tagSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; hierarchicalDocumentSymbolSupport = - (match hierarchicalDocumentSymbolSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; labelSupport = - (match labelSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; symbolKind = - (match symbolKind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tagSupport = - (match tagSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "hierarchicalDocumentSymbolSupport" -> + (match + Ppx_yojson_conv_lib.( ! ) hierarchicalDocumentSymbolSupport_field + with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + hierarchicalDocumentSymbolSupport_field + := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "labelSupport" -> + (match Ppx_yojson_conv_lib.( ! ) labelSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + labelSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "symbolKind" -> + (match Ppx_yojson_conv_lib.( ! ) symbolKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson symbolKind_of_yojson _field_yojson + in + symbolKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tagSupport" -> + (match Ppx_yojson_conv_lib.( ! ) tagSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson tagSupport_of_yojson _field_yojson + in + tagSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( dynamicRegistration_value + , hierarchicalDocumentSymbolSupport_value + , labelSupport_value + , symbolKind_value + , tagSupport_value ) + = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) hierarchicalDocumentSymbolSupport_field + , Ppx_yojson_conv_lib.( ! ) labelSupport_field + , Ppx_yojson_conv_lib.( ! ) symbolKind_field + , Ppx_yojson_conv_lib.( ! ) tagSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; hierarchicalDocumentSymbolSupport = + (match hierarchicalDocumentSymbolSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; labelSupport = + (match labelSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; symbolKind = + (match symbolKind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tagSupport = + (match tagSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -11837,79 +11882,86 @@ module DocumentSymbolClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_tagSupport then bnds - else + if None = v_tagSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_tagSupport) - v_tagSupport + (Json.Nullable_option.yojson_of_t yojson_of_tagSupport) v_tagSupport in - let bnd = ("tagSupport", arg) in - bnd :: bnds + let bnd = "tagSupport", arg in + bnd :: bnds) in let bnds = - if None = v_symbolKind then bnds - else + if None = v_symbolKind + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_symbolKind) - v_symbolKind + (Json.Nullable_option.yojson_of_t yojson_of_symbolKind) v_symbolKind in - let bnd = ("symbolKind", arg) in - bnd :: bnds + let bnd = "symbolKind", arg in + bnd :: bnds) in let bnds = - if None = v_labelSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_labelSupport - in - let bnd = ("labelSupport", arg) in - bnd :: bnds + if None = v_labelSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_labelSupport in + let bnd = "labelSupport", arg in + bnd :: bnds) in let bnds = - if None = v_hierarchicalDocumentSymbolSupport then bnds - else + if None = v_hierarchicalDocumentSymbolSupport + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_hierarchicalDocumentSymbolSupport in - let bnd = ("hierarchicalDocumentSymbolSupport", arg) in - bnd :: bnds + let bnd = "hierarchicalDocumentSymbolSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(hierarchicalDocumentSymbolSupport : bool option) - ?(labelSupport : bool option) ?(symbolKind : symbolKind option) - ?(tagSupport : tagSupport option) (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(hierarchicalDocumentSymbolSupport : bool option) + ?(labelSupport : bool option) + ?(symbolKind : symbolKind option) + ?(tagSupport : tagSupport option) + (() : unit) + : t + = { dynamicRegistration ; hierarchicalDocumentSymbolSupport ; labelSupport ; symbolKind ; tagSupport } + ;; end module DocumentLinkClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tooltipSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -11918,7 +11970,7 @@ module DocumentLinkClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentLinkClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and tooltipSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -11926,106 +11978,108 @@ module DocumentLinkClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tooltipSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) tooltipSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - tooltipSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tooltipSupport" -> + (match Ppx_yojson_conv_lib.( ! ) tooltipSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + tooltipSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, tooltipSupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) tooltipSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tooltipSupport = - (match tooltipSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, tooltipSupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) tooltipSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tooltipSupport = + (match tooltipSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { dynamicRegistration = v_dynamicRegistration - ; tooltipSupport = v_tooltipSupport - } -> + | { dynamicRegistration = v_dynamicRegistration; tooltipSupport = v_tooltipSupport } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_tooltipSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_tooltipSupport - in - let bnd = ("tooltipSupport", arg) in - bnd :: bnds + if None = v_tooltipSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_tooltipSupport in + let bnd = "tooltipSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(tooltipSupport : bool option) (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(tooltipSupport : bool option) + (() : unit) + : t + = { dynamicRegistration; tooltipSupport } + ;; end module DocumentHighlightClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -12034,55 +12088,53 @@ module DocumentHighlightClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentHighlightClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -12091,17 +12143,18 @@ module DocumentHighlightClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -12109,16 +12162,17 @@ module DocumentHighlightClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module DiagnosticClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; markupMessageSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; relatedDocumentSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -12127,7 +12181,7 @@ module DiagnosticClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DiagnosticClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and markupMessageSupport_field = ref Ppx_yojson_conv_lib.Option.None and relatedDocumentSupport_field = ref Ppx_yojson_conv_lib.Option.None @@ -12136,80 +12190,77 @@ module DiagnosticClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "markupMessageSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) markupMessageSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - markupMessageSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "relatedDocumentSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) relatedDocumentSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - relatedDocumentSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( dynamicRegistration_value - , markupMessageSupport_value - , relatedDocumentSupport_value ) = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) markupMessageSupport_field - , Ppx_yojson_conv_lib.( ! ) relatedDocumentSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; markupMessageSupport = - (match markupMessageSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; relatedDocumentSupport = - (match relatedDocumentSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "markupMessageSupport" -> + (match Ppx_yojson_conv_lib.( ! ) markupMessageSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + markupMessageSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "relatedDocumentSupport" -> + (match Ppx_yojson_conv_lib.( ! ) relatedDocumentSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + relatedDocumentSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( dynamicRegistration_value + , markupMessageSupport_value + , relatedDocumentSupport_value ) + = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) markupMessageSupport_field + , Ppx_yojson_conv_lib.( ! ) relatedDocumentSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; markupMessageSupport = + (match markupMessageSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; relatedDocumentSupport = + (match relatedDocumentSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -12221,54 +12272,60 @@ module DiagnosticClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_relatedDocumentSupport then bnds - else + if None = v_relatedDocumentSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_relatedDocumentSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_relatedDocumentSupport in - let bnd = ("relatedDocumentSupport", arg) in - bnd :: bnds + let bnd = "relatedDocumentSupport", arg in + bnd :: bnds) in let bnds = - if None = v_markupMessageSupport then bnds - else + if None = v_markupMessageSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_markupMessageSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_markupMessageSupport in - let bnd = ("markupMessageSupport", arg) in - bnd :: bnds + let bnd = "markupMessageSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(markupMessageSupport : bool option) - ?(relatedDocumentSupport : bool option) (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(markupMessageSupport : bool option) + ?(relatedDocumentSupport : bool option) + (() : unit) + : t + = { dynamicRegistration; markupMessageSupport; relatedDocumentSupport } + ;; end module DefinitionClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; linkSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -12277,7 +12334,7 @@ module DefinitionClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DefinitionClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and linkSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -12285,108 +12342,106 @@ module DefinitionClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "linkSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) linkSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - linkSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "linkSupport" -> + (match Ppx_yojson_conv_lib.( ! ) linkSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + linkSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, linkSupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) linkSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; linkSupport = - (match linkSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, linkSupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) linkSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; linkSupport = + (match linkSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { dynamicRegistration = v_dynamicRegistration - ; linkSupport = v_linkSupport - } -> + | { dynamicRegistration = v_dynamicRegistration; linkSupport = v_linkSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_linkSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_linkSupport - in - let bnd = ("linkSupport", arg) in - bnd :: bnds + if None = v_linkSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_linkSupport in + let bnd = "linkSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) ?(linkSupport : bool option) - (() : unit) : t = + let create ?(dynamicRegistration : bool option) ?(linkSupport : bool option) (() : unit) + : t + = { dynamicRegistration; linkSupport } + ;; end module DeclarationClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; linkSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -12395,7 +12450,7 @@ module DeclarationClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DeclarationClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and linkSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -12403,166 +12458,159 @@ module DeclarationClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "linkSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) linkSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - linkSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "linkSupport" -> + (match Ppx_yojson_conv_lib.( ! ) linkSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + linkSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, linkSupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) linkSupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; linkSupport = - (match linkSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, linkSupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) linkSupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; linkSupport = + (match linkSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { dynamicRegistration = v_dynamicRegistration - ; linkSupport = v_linkSupport - } -> + | { dynamicRegistration = v_dynamicRegistration; linkSupport = v_linkSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_linkSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_linkSupport - in - let bnd = ("linkSupport", arg) in - bnd :: bnds + if None = v_linkSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_linkSupport in + let bnd = "linkSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) ?(linkSupport : bool option) - (() : unit) : t = + let create ?(dynamicRegistration : bool option) ?(linkSupport : bool option) (() : unit) + : t + = { dynamicRegistration; linkSupport } + ;; end module CompletionClientCapabilities = struct type completionList = { itemDefaults : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : completionList) -> () let completionList_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.CompletionClientCapabilities.completionList" - in + (let _tp_loc = "lsp/src/types.ml.CompletionClientCapabilities.completionList" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let itemDefaults_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "itemDefaults" -> ( - match Ppx_yojson_conv_lib.( ! ) itemDefaults_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - itemDefaults_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "itemDefaults" -> + (match Ppx_yojson_conv_lib.( ! ) itemDefaults_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + itemDefaults_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let itemDefaults_value = - Ppx_yojson_conv_lib.( ! ) itemDefaults_field - in - { itemDefaults = - (match itemDefaults_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let itemDefaults_value = Ppx_yojson_conv_lib.( ! ) itemDefaults_field in + { itemDefaults = + (match itemDefaults_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionList) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionList) + ;; let _ = completionList_of_yojson @@ -12571,88 +12619,88 @@ module CompletionClientCapabilities = struct | { itemDefaults = v_itemDefaults } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_itemDefaults then bnds - else + if None = v_itemDefaults + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_itemDefaults in - let bnd = ("itemDefaults", arg) in - bnd :: bnds + let bnd = "itemDefaults", arg in + bnd :: bnds) in `Assoc bnds - : completionList -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : completionList -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_completionList [@@@end] - let create_completionList ?(itemDefaults : string list option) (() : unit) : - completionList = + let create_completionList ?(itemDefaults : string list option) (() : unit) + : completionList + = { itemDefaults } + ;; type completionItemKind = { valueSet : CompletionItemKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : completionItemKind) -> () let completionItemKind_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.CompletionClientCapabilities.completionItemKind" - in + (let _tp_loc = "lsp/src/types.ml.CompletionClientCapabilities.completionItemKind" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson CompletionItemKind.t_of_yojson) - _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson CompletionItemKind.t_of_yojson) + _field_yojson + in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let valueSet_value = Ppx_yojson_conv_lib.( ! ) valueSet_field in - { valueSet = - (match valueSet_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionItemKind) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let valueSet_value = Ppx_yojson_conv_lib.( ! ) valueSet_field in + { valueSet = + (match valueSet_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionItemKind) + ;; let _ = completionItemKind_of_yojson @@ -12661,26 +12709,30 @@ module CompletionClientCapabilities = struct | { valueSet = v_valueSet } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_valueSet then bnds - else + if None = v_valueSet + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list CompletionItemKind.yojson_of_t)) v_valueSet in - let bnd = ("valueSet", arg) in - bnd :: bnds + let bnd = "valueSet", arg in + bnd :: bnds) in `Assoc bnds - : completionItemKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : completionItemKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_completionItemKind [@@@end] - let create_completionItemKind ?(valueSet : CompletionItemKind.t list option) - (() : unit) : completionItemKind = + let create_completionItemKind ?(valueSet : CompletionItemKind.t list option) (() : unit) + : completionItemKind + = { valueSet } + ;; type insertTextModeSupport = { valueSet : InsertTextMode.t list } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -12692,58 +12744,55 @@ module CompletionClientCapabilities = struct "lsp/src/types.ml.CompletionClientCapabilities.insertTextModeSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson InsertTextMode.t_of_yojson _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson InsertTextMode.t_of_yojson _field_yojson in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.Some valueSet_value -> - { valueSet = valueSet_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) valueSet_field) - Ppx_yojson_conv_lib.Option.None - , "valueSet" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> insertTextModeSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.Some valueSet_value -> + { valueSet = valueSet_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) valueSet_field) + Ppx_yojson_conv_lib.Option.None + , "valueSet" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> insertTextModeSupport) + ;; let _ = insertTextModeSupport_of_yojson @@ -12756,15 +12805,18 @@ module CompletionClientCapabilities = struct ("valueSet", arg) :: bnds in `Assoc bnds - : insertTextModeSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : insertTextModeSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_insertTextModeSupport [@@@end] - let create_insertTextModeSupport ~(valueSet : InsertTextMode.t list) : - insertTextModeSupport = + let create_insertTextModeSupport ~(valueSet : InsertTextMode.t list) + : insertTextModeSupport + = { valueSet } + ;; type resolveSupport = { properties : string list } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -12772,60 +12824,57 @@ module CompletionClientCapabilities = struct let _ = fun (_ : resolveSupport) -> () let resolveSupport_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.CompletionClientCapabilities.resolveSupport" - in + (let _tp_loc = "lsp/src/types.ml.CompletionClientCapabilities.resolveSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let properties_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "properties" -> ( - match Ppx_yojson_conv_lib.( ! ) properties_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - properties_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "properties" -> + (match Ppx_yojson_conv_lib.( ! ) properties_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + properties_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) properties_field with - | Ppx_yojson_conv_lib.Option.Some properties_value -> - { properties = properties_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) properties_field) - Ppx_yojson_conv_lib.Option.None - , "properties" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> resolveSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) properties_field with + | Ppx_yojson_conv_lib.Option.Some properties_value -> + { properties = properties_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) properties_field) + Ppx_yojson_conv_lib.Option.None + , "properties" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> resolveSupport) + ;; let _ = resolveSupport_of_yojson @@ -12838,14 +12887,14 @@ module CompletionClientCapabilities = struct ("properties", arg) :: bnds in `Assoc bnds - : resolveSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : resolveSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_resolveSupport [@@@end] - let create_resolveSupport ~(properties : string list) : resolveSupport = - { properties } + let create_resolveSupport ~(properties : string list) : resolveSupport = { properties } type tagSupport = { valueSet : CompletionItemTag.t list } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -12855,58 +12904,57 @@ module CompletionClientCapabilities = struct let tagSupport_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionClientCapabilities.tagSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson CompletionItemTag.t_of_yojson _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson CompletionItemTag.t_of_yojson _field_yojson + in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.Some valueSet_value -> - { valueSet = valueSet_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) valueSet_field) - Ppx_yojson_conv_lib.Option.None - , "valueSet" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> tagSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.Some valueSet_value -> + { valueSet = valueSet_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) valueSet_field) + Ppx_yojson_conv_lib.Option.None + , "valueSet" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> tagSupport) + ;; let _ = tagSupport_of_yojson @@ -12919,47 +12967,45 @@ module CompletionClientCapabilities = struct ("valueSet", arg) :: bnds in `Assoc bnds - : tagSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : tagSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_tagSupport [@@@end] - let create_tagSupport ~(valueSet : CompletionItemTag.t list) : tagSupport = - { valueSet } + let create_tagSupport ~(valueSet : CompletionItemTag.t list) : tagSupport = { valueSet } type completionItem = { snippetSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; commitCharactersSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; documentationFormat : MarkupKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; deprecatedSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; preselectSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tagSupport : tagSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertReplaceSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveSupport : resolveSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertTextModeSupport : insertTextModeSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; labelDetailsSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : completionItem) -> () let completionItem_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.CompletionClientCapabilities.completionItem" - in + (let _tp_loc = "lsp/src/types.ml.CompletionClientCapabilities.completionItem" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let snippetSupport_field = ref Ppx_yojson_conv_lib.Option.None and commitCharactersSupport_field = ref Ppx_yojson_conv_lib.Option.None and documentationFormat_field = ref Ppx_yojson_conv_lib.Option.None @@ -12975,195 +13021,186 @@ module CompletionClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "snippetSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) snippetSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - snippetSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "commitCharactersSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) commitCharactersSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - commitCharactersSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentationFormat" -> ( - match Ppx_yojson_conv_lib.( ! ) documentationFormat_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson MarkupKind.t_of_yojson) - _field_yojson - in - documentationFormat_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "deprecatedSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) deprecatedSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - deprecatedSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "preselectSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) preselectSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - preselectSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tagSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) tagSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - tagSupport_of_yojson - _field_yojson - in - tagSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertReplaceSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) insertReplaceSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - insertReplaceSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - resolveSupport_of_yojson - _field_yojson - in - resolveSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertTextModeSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) insertTextModeSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - insertTextModeSupport_of_yojson - _field_yojson - in - insertTextModeSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "labelDetailsSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - labelDetailsSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( snippetSupport_value - , commitCharactersSupport_value - , documentationFormat_value - , deprecatedSupport_value - , preselectSupport_value - , tagSupport_value - , insertReplaceSupport_value - , resolveSupport_value - , insertTextModeSupport_value - , labelDetailsSupport_value ) = - ( Ppx_yojson_conv_lib.( ! ) snippetSupport_field - , Ppx_yojson_conv_lib.( ! ) commitCharactersSupport_field - , Ppx_yojson_conv_lib.( ! ) documentationFormat_field - , Ppx_yojson_conv_lib.( ! ) deprecatedSupport_field - , Ppx_yojson_conv_lib.( ! ) preselectSupport_field - , Ppx_yojson_conv_lib.( ! ) tagSupport_field - , Ppx_yojson_conv_lib.( ! ) insertReplaceSupport_field - , Ppx_yojson_conv_lib.( ! ) resolveSupport_field - , Ppx_yojson_conv_lib.( ! ) insertTextModeSupport_field - , Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field ) - in - { snippetSupport = - (match snippetSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; commitCharactersSupport = - (match commitCharactersSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentationFormat = - (match documentationFormat_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; deprecatedSupport = - (match deprecatedSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; preselectSupport = - (match preselectSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tagSupport = - (match tagSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertReplaceSupport = - (match insertReplaceSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveSupport = - (match resolveSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertTextModeSupport = - (match insertTextModeSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; labelDetailsSupport = - (match labelDetailsSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionItem) + | "snippetSupport" -> + (match Ppx_yojson_conv_lib.( ! ) snippetSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + snippetSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "commitCharactersSupport" -> + (match Ppx_yojson_conv_lib.( ! ) commitCharactersSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + commitCharactersSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentationFormat" -> + (match Ppx_yojson_conv_lib.( ! ) documentationFormat_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson MarkupKind.t_of_yojson) + _field_yojson + in + documentationFormat_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "deprecatedSupport" -> + (match Ppx_yojson_conv_lib.( ! ) deprecatedSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + deprecatedSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "preselectSupport" -> + (match Ppx_yojson_conv_lib.( ! ) preselectSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + preselectSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tagSupport" -> + (match Ppx_yojson_conv_lib.( ! ) tagSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson tagSupport_of_yojson _field_yojson + in + tagSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertReplaceSupport" -> + (match Ppx_yojson_conv_lib.( ! ) insertReplaceSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + insertReplaceSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveSupport" -> + (match Ppx_yojson_conv_lib.( ! ) resolveSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson resolveSupport_of_yojson _field_yojson + in + resolveSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertTextModeSupport" -> + (match Ppx_yojson_conv_lib.( ! ) insertTextModeSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + insertTextModeSupport_of_yojson + _field_yojson + in + insertTextModeSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "labelDetailsSupport" -> + (match Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + labelDetailsSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( snippetSupport_value + , commitCharactersSupport_value + , documentationFormat_value + , deprecatedSupport_value + , preselectSupport_value + , tagSupport_value + , insertReplaceSupport_value + , resolveSupport_value + , insertTextModeSupport_value + , labelDetailsSupport_value ) + = + ( Ppx_yojson_conv_lib.( ! ) snippetSupport_field + , Ppx_yojson_conv_lib.( ! ) commitCharactersSupport_field + , Ppx_yojson_conv_lib.( ! ) documentationFormat_field + , Ppx_yojson_conv_lib.( ! ) deprecatedSupport_field + , Ppx_yojson_conv_lib.( ! ) preselectSupport_field + , Ppx_yojson_conv_lib.( ! ) tagSupport_field + , Ppx_yojson_conv_lib.( ! ) insertReplaceSupport_field + , Ppx_yojson_conv_lib.( ! ) resolveSupport_field + , Ppx_yojson_conv_lib.( ! ) insertTextModeSupport_field + , Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field ) + in + { snippetSupport = + (match snippetSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; commitCharactersSupport = + (match commitCharactersSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentationFormat = + (match documentationFormat_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; deprecatedSupport = + (match deprecatedSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; preselectSupport = + (match preselectSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tagSupport = + (match tagSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertReplaceSupport = + (match insertReplaceSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveSupport = + (match resolveSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertTextModeSupport = + (match insertTextModeSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; labelDetailsSupport = + (match labelDetailsSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionItem) + ;; let _ = completionItem_of_yojson @@ -13182,120 +13219,127 @@ module CompletionClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_labelDetailsSupport then bnds - else + if None = v_labelDetailsSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_labelDetailsSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_labelDetailsSupport in - let bnd = ("labelDetailsSupport", arg) in - bnd :: bnds + let bnd = "labelDetailsSupport", arg in + bnd :: bnds) in let bnds = - if None = v_insertTextModeSupport then bnds - else + if None = v_insertTextModeSupport + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_insertTextModeSupport) v_insertTextModeSupport in - let bnd = ("insertTextModeSupport", arg) in - bnd :: bnds + let bnd = "insertTextModeSupport", arg in + bnd :: bnds) in let bnds = - if None = v_resolveSupport then bnds - else + if None = v_resolveSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_resolveSupport) - v_resolveSupport + (Json.Nullable_option.yojson_of_t yojson_of_resolveSupport) v_resolveSupport in - let bnd = ("resolveSupport", arg) in - bnd :: bnds + let bnd = "resolveSupport", arg in + bnd :: bnds) in let bnds = - if None = v_insertReplaceSupport then bnds - else + if None = v_insertReplaceSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_insertReplaceSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_insertReplaceSupport in - let bnd = ("insertReplaceSupport", arg) in - bnd :: bnds + let bnd = "insertReplaceSupport", arg in + bnd :: bnds) in let bnds = - if None = v_tagSupport then bnds - else + if None = v_tagSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_tagSupport) - v_tagSupport + (Json.Nullable_option.yojson_of_t yojson_of_tagSupport) v_tagSupport in - let bnd = ("tagSupport", arg) in - bnd :: bnds + let bnd = "tagSupport", arg in + bnd :: bnds) in let bnds = - if None = v_preselectSupport then bnds - else + if None = v_preselectSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_preselectSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_preselectSupport in - let bnd = ("preselectSupport", arg) in - bnd :: bnds + let bnd = "preselectSupport", arg in + bnd :: bnds) in let bnds = - if None = v_deprecatedSupport then bnds - else + if None = v_deprecatedSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_deprecatedSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_deprecatedSupport in - let bnd = ("deprecatedSupport", arg) in - bnd :: bnds + let bnd = "deprecatedSupport", arg in + bnd :: bnds) in let bnds = - if None = v_documentationFormat then bnds - else + if None = v_documentationFormat + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list MarkupKind.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list MarkupKind.yojson_of_t)) v_documentationFormat in - let bnd = ("documentationFormat", arg) in - bnd :: bnds + let bnd = "documentationFormat", arg in + bnd :: bnds) in let bnds = - if None = v_commitCharactersSupport then bnds - else + if None = v_commitCharactersSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_commitCharactersSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_commitCharactersSupport in - let bnd = ("commitCharactersSupport", arg) in - bnd :: bnds + let bnd = "commitCharactersSupport", arg in + bnd :: bnds) in let bnds = - if None = v_snippetSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_snippetSupport - in - let bnd = ("snippetSupport", arg) in - bnd :: bnds + if None = v_snippetSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_snippetSupport in + let bnd = "snippetSupport", arg in + bnd :: bnds) in `Assoc bnds - : completionItem -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : completionItem -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_completionItem [@@@end] - let create_completionItem ?(snippetSupport : bool option) - ?(commitCharactersSupport : bool option) - ?(documentationFormat : MarkupKind.t list option) - ?(deprecatedSupport : bool option) ?(preselectSupport : bool option) - ?(tagSupport : tagSupport option) ?(insertReplaceSupport : bool option) - ?(resolveSupport : resolveSupport option) - ?(insertTextModeSupport : insertTextModeSupport option) - ?(labelDetailsSupport : bool option) (() : unit) : completionItem = + let create_completionItem + ?(snippetSupport : bool option) + ?(commitCharactersSupport : bool option) + ?(documentationFormat : MarkupKind.t list option) + ?(deprecatedSupport : bool option) + ?(preselectSupport : bool option) + ?(tagSupport : tagSupport option) + ?(insertReplaceSupport : bool option) + ?(resolveSupport : resolveSupport option) + ?(insertTextModeSupport : insertTextModeSupport option) + ?(labelDetailsSupport : bool option) + (() : unit) + : completionItem + = { snippetSupport ; commitCharactersSupport ; documentationFormat @@ -13307,20 +13351,21 @@ module CompletionClientCapabilities = struct ; insertTextModeSupport ; labelDetailsSupport } + ;; type t = { completionItem : completionItem Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; completionItemKind : completionItemKind Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; completionList : completionList Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; contextSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertTextMode : InsertTextMode.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -13329,7 +13374,7 @@ module CompletionClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let completionItem_field = ref Ppx_yojson_conv_lib.Option.None and completionItemKind_field = ref Ppx_yojson_conv_lib.Option.None and completionList_field = ref Ppx_yojson_conv_lib.Option.None @@ -13341,132 +13386,126 @@ module CompletionClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "completionItem" -> ( - match Ppx_yojson_conv_lib.( ! ) completionItem_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - completionItem_of_yojson - _field_yojson - in - completionItem_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "completionItemKind" -> ( - match Ppx_yojson_conv_lib.( ! ) completionItemKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - completionItemKind_of_yojson - _field_yojson - in - completionItemKind_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "completionList" -> ( - match Ppx_yojson_conv_lib.( ! ) completionList_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - completionList_of_yojson - _field_yojson - in - completionList_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "contextSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) contextSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - contextSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertTextMode" -> ( - match Ppx_yojson_conv_lib.( ! ) insertTextMode_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InsertTextMode.t_of_yojson - _field_yojson - in - insertTextMode_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( completionItem_value - , completionItemKind_value - , completionList_value - , contextSupport_value - , dynamicRegistration_value - , insertTextMode_value ) = - ( Ppx_yojson_conv_lib.( ! ) completionItem_field - , Ppx_yojson_conv_lib.( ! ) completionItemKind_field - , Ppx_yojson_conv_lib.( ! ) completionList_field - , Ppx_yojson_conv_lib.( ! ) contextSupport_field - , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) insertTextMode_field ) - in - { completionItem = - (match completionItem_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; completionItemKind = - (match completionItemKind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; completionList = - (match completionList_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; contextSupport = - (match contextSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertTextMode = - (match insertTextMode_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "completionItem" -> + (match Ppx_yojson_conv_lib.( ! ) completionItem_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson completionItem_of_yojson _field_yojson + in + completionItem_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "completionItemKind" -> + (match Ppx_yojson_conv_lib.( ! ) completionItemKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + completionItemKind_of_yojson + _field_yojson + in + completionItemKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "completionList" -> + (match Ppx_yojson_conv_lib.( ! ) completionList_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson completionList_of_yojson _field_yojson + in + completionList_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "contextSupport" -> + (match Ppx_yojson_conv_lib.( ! ) contextSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + contextSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertTextMode" -> + (match Ppx_yojson_conv_lib.( ! ) insertTextMode_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InsertTextMode.t_of_yojson + _field_yojson + in + insertTextMode_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( completionItem_value + , completionItemKind_value + , completionList_value + , contextSupport_value + , dynamicRegistration_value + , insertTextMode_value ) + = + ( Ppx_yojson_conv_lib.( ! ) completionItem_field + , Ppx_yojson_conv_lib.( ! ) completionItemKind_field + , Ppx_yojson_conv_lib.( ! ) completionList_field + , Ppx_yojson_conv_lib.( ! ) contextSupport_field + , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) insertTextMode_field ) + in + { completionItem = + (match completionItem_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; completionItemKind = + (match completionItemKind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; completionList = + (match completionList_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; contextSupport = + (match contextSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertTextMode = + (match insertTextMode_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -13481,76 +13520,83 @@ module CompletionClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_insertTextMode then bnds - else + if None = v_insertTextMode + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InsertTextMode.yojson_of_t) v_insertTextMode in - let bnd = ("insertTextMode", arg) in - bnd :: bnds + let bnd = "insertTextMode", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in let bnds = - if None = v_contextSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_contextSupport - in - let bnd = ("contextSupport", arg) in - bnd :: bnds + if None = v_contextSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_contextSupport in + let bnd = "contextSupport", arg in + bnd :: bnds) in let bnds = - if None = v_completionList then bnds - else + if None = v_completionList + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_completionList) - v_completionList + (Json.Nullable_option.yojson_of_t yojson_of_completionList) v_completionList in - let bnd = ("completionList", arg) in - bnd :: bnds + let bnd = "completionList", arg in + bnd :: bnds) in let bnds = - if None = v_completionItemKind then bnds - else + if None = v_completionItemKind + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_completionItemKind) v_completionItemKind in - let bnd = ("completionItemKind", arg) in - bnd :: bnds + let bnd = "completionItemKind", arg in + bnd :: bnds) in let bnds = - if None = v_completionItem then bnds - else + if None = v_completionItem + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_completionItem) - v_completionItem + (Json.Nullable_option.yojson_of_t yojson_of_completionItem) v_completionItem in - let bnd = ("completionItem", arg) in - bnd :: bnds + let bnd = "completionItem", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(completionItem : completionItem option) - ?(completionItemKind : completionItemKind option) - ?(completionList : completionList option) ?(contextSupport : bool option) - ?(dynamicRegistration : bool option) - ?(insertTextMode : InsertTextMode.t option) (() : unit) : t = + let create + ?(completionItem : completionItem option) + ?(completionItemKind : completionItemKind option) + ?(completionList : completionList option) + ?(contextSupport : bool option) + ?(dynamicRegistration : bool option) + ?(insertTextMode : InsertTextMode.t option) + (() : unit) + : t + = { completionItem ; completionItemKind ; completionList @@ -13558,12 +13604,13 @@ module CompletionClientCapabilities = struct ; dynamicRegistration ; insertTextMode } + ;; end module DocumentColorClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -13572,55 +13619,53 @@ module DocumentColorClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentColorClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -13629,17 +13674,18 @@ module DocumentColorClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -13647,12 +13693,13 @@ module DocumentColorClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module CodeLensClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -13661,55 +13708,53 @@ module CodeLensClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeLensClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value = - Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value = + Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -13718,17 +13763,18 @@ module CodeLensClientCapabilities = struct | { dynamicRegistration = v_dynamicRegistration } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -13736,6 +13782,7 @@ module CodeLensClientCapabilities = struct let create ?(dynamicRegistration : bool option) (() : unit) : t = { dynamicRegistration } + ;; end module CodeActionClientCapabilities = struct @@ -13745,60 +13792,57 @@ module CodeActionClientCapabilities = struct let _ = fun (_ : resolveSupport) -> () let resolveSupport_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.CodeActionClientCapabilities.resolveSupport" - in + (let _tp_loc = "lsp/src/types.ml.CodeActionClientCapabilities.resolveSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let properties_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "properties" -> ( - match Ppx_yojson_conv_lib.( ! ) properties_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - properties_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "properties" -> + (match Ppx_yojson_conv_lib.( ! ) properties_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + properties_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) properties_field with - | Ppx_yojson_conv_lib.Option.Some properties_value -> - { properties = properties_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) properties_field) - Ppx_yojson_conv_lib.Option.None - , "properties" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> resolveSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) properties_field with + | Ppx_yojson_conv_lib.Option.Some properties_value -> + { properties = properties_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) properties_field) + Ppx_yojson_conv_lib.Option.None + , "properties" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> resolveSupport) + ;; let _ = resolveSupport_of_yojson @@ -13811,14 +13855,14 @@ module CodeActionClientCapabilities = struct ("properties", arg) :: bnds in `Assoc bnds - : resolveSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : resolveSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_resolveSupport [@@@end] - let create_resolveSupport ~(properties : string list) : resolveSupport = - { properties } + let create_resolveSupport ~(properties : string list) : resolveSupport = { properties } type codeActionKind = { valueSet : CodeActionKind.t list } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -13826,62 +13870,57 @@ module CodeActionClientCapabilities = struct let _ = fun (_ : codeActionKind) -> () let codeActionKind_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.CodeActionClientCapabilities.codeActionKind" - in + (let _tp_loc = "lsp/src/types.ml.CodeActionClientCapabilities.codeActionKind" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let valueSet_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "valueSet" -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson CodeActionKind.t_of_yojson _field_yojson - in - valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "valueSet" -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson CodeActionKind.t_of_yojson _field_yojson in + valueSet_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) valueSet_field with - | Ppx_yojson_conv_lib.Option.Some valueSet_value -> - { valueSet = valueSet_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) valueSet_field) - Ppx_yojson_conv_lib.Option.None - , "valueSet" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> codeActionKind) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) valueSet_field with + | Ppx_yojson_conv_lib.Option.Some valueSet_value -> + { valueSet = valueSet_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) valueSet_field) + Ppx_yojson_conv_lib.Option.None + , "valueSet" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> codeActionKind) + ;; let _ = codeActionKind_of_yojson @@ -13894,15 +13933,16 @@ module CodeActionClientCapabilities = struct ("valueSet", arg) :: bnds in `Assoc bnds - : codeActionKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : codeActionKind -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_codeActionKind [@@@end] - let create_codeActionKind ~(valueSet : CodeActionKind.t list) : codeActionKind - = + let create_codeActionKind ~(valueSet : CodeActionKind.t list) : codeActionKind = { valueSet } + ;; type codeActionLiteralSupport = { codeActionKind : codeActionKind } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -13914,56 +13954,55 @@ module CodeActionClientCapabilities = struct "lsp/src/types.ml.CodeActionClientCapabilities.codeActionLiteralSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let codeActionKind_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "codeActionKind" -> ( - match Ppx_yojson_conv_lib.( ! ) codeActionKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = codeActionKind_of_yojson _field_yojson in - codeActionKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "codeActionKind" -> + (match Ppx_yojson_conv_lib.( ! ) codeActionKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = codeActionKind_of_yojson _field_yojson in + codeActionKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) codeActionKind_field with - | Ppx_yojson_conv_lib.Option.Some codeActionKind_value -> - { codeActionKind = codeActionKind_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) codeActionKind_field) - Ppx_yojson_conv_lib.Option.None - , "codeActionKind" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> codeActionLiteralSupport) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) codeActionKind_field with + | Ppx_yojson_conv_lib.Option.Some codeActionKind_value -> + { codeActionKind = codeActionKind_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) codeActionKind_field) + Ppx_yojson_conv_lib.Option.None + , "codeActionKind" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> codeActionLiteralSupport) + ;; let _ = codeActionLiteralSupport_of_yojson @@ -13976,31 +14015,34 @@ module CodeActionClientCapabilities = struct ("codeActionKind", arg) :: bnds in `Assoc bnds - : codeActionLiteralSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : codeActionLiteralSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_codeActionLiteralSupport [@@@end] - let create_codeActionLiteralSupport ~(codeActionKind : codeActionKind) : - codeActionLiteralSupport = + let create_codeActionLiteralSupport ~(codeActionKind : codeActionKind) + : codeActionLiteralSupport + = { codeActionKind } + ;; type t = { codeActionLiteralSupport : codeActionLiteralSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; dataSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; disabledSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; honorsChangeAnnotations : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; isPreferredSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveSupport : resolveSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -14009,7 +14051,7 @@ module CodeActionClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeActionClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let codeActionLiteralSupport_field = ref Ppx_yojson_conv_lib.Option.None and dataSupport_field = ref Ppx_yojson_conv_lib.Option.None and disabledSupport_field = ref Ppx_yojson_conv_lib.Option.None @@ -14022,145 +14064,139 @@ module CodeActionClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "codeActionLiteralSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) codeActionLiteralSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - codeActionLiteralSupport_of_yojson - _field_yojson - in - codeActionLiteralSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dataSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) dataSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dataSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "disabledSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) disabledSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - disabledSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "honorsChangeAnnotations" -> ( - match Ppx_yojson_conv_lib.( ! ) honorsChangeAnnotations_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - honorsChangeAnnotations_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "isPreferredSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) isPreferredSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - isPreferredSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - resolveSupport_of_yojson - _field_yojson - in - resolveSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( codeActionLiteralSupport_value - , dataSupport_value - , disabledSupport_value - , dynamicRegistration_value - , honorsChangeAnnotations_value - , isPreferredSupport_value - , resolveSupport_value ) = - ( Ppx_yojson_conv_lib.( ! ) codeActionLiteralSupport_field - , Ppx_yojson_conv_lib.( ! ) dataSupport_field - , Ppx_yojson_conv_lib.( ! ) disabledSupport_field - , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) honorsChangeAnnotations_field - , Ppx_yojson_conv_lib.( ! ) isPreferredSupport_field - , Ppx_yojson_conv_lib.( ! ) resolveSupport_field ) - in - { codeActionLiteralSupport = - (match codeActionLiteralSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dataSupport = - (match dataSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; disabledSupport = - (match disabledSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; honorsChangeAnnotations = - (match honorsChangeAnnotations_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; isPreferredSupport = - (match isPreferredSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveSupport = - (match resolveSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "codeActionLiteralSupport" -> + (match Ppx_yojson_conv_lib.( ! ) codeActionLiteralSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + codeActionLiteralSupport_of_yojson + _field_yojson + in + codeActionLiteralSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dataSupport" -> + (match Ppx_yojson_conv_lib.( ! ) dataSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dataSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "disabledSupport" -> + (match Ppx_yojson_conv_lib.( ! ) disabledSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + disabledSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "honorsChangeAnnotations" -> + (match Ppx_yojson_conv_lib.( ! ) honorsChangeAnnotations_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + honorsChangeAnnotations_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "isPreferredSupport" -> + (match Ppx_yojson_conv_lib.( ! ) isPreferredSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + isPreferredSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveSupport" -> + (match Ppx_yojson_conv_lib.( ! ) resolveSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson resolveSupport_of_yojson _field_yojson + in + resolveSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( codeActionLiteralSupport_value + , dataSupport_value + , disabledSupport_value + , dynamicRegistration_value + , honorsChangeAnnotations_value + , isPreferredSupport_value + , resolveSupport_value ) + = + ( Ppx_yojson_conv_lib.( ! ) codeActionLiteralSupport_field + , Ppx_yojson_conv_lib.( ! ) dataSupport_field + , Ppx_yojson_conv_lib.( ! ) disabledSupport_field + , Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) honorsChangeAnnotations_field + , Ppx_yojson_conv_lib.( ! ) isPreferredSupport_field + , Ppx_yojson_conv_lib.( ! ) resolveSupport_field ) + in + { codeActionLiteralSupport = + (match codeActionLiteralSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dataSupport = + (match dataSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; disabledSupport = + (match disabledSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; honorsChangeAnnotations = + (match honorsChangeAnnotations_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; isPreferredSupport = + (match isPreferredSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveSupport = + (match resolveSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -14176,87 +14212,93 @@ module CodeActionClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_resolveSupport then bnds - else + if None = v_resolveSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_resolveSupport) - v_resolveSupport + (Json.Nullable_option.yojson_of_t yojson_of_resolveSupport) v_resolveSupport in - let bnd = ("resolveSupport", arg) in - bnd :: bnds + let bnd = "resolveSupport", arg in + bnd :: bnds) in let bnds = - if None = v_isPreferredSupport then bnds - else + if None = v_isPreferredSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_isPreferredSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_isPreferredSupport in - let bnd = ("isPreferredSupport", arg) in - bnd :: bnds + let bnd = "isPreferredSupport", arg in + bnd :: bnds) in let bnds = - if None = v_honorsChangeAnnotations then bnds - else + if None = v_honorsChangeAnnotations + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_honorsChangeAnnotations + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_honorsChangeAnnotations in - let bnd = ("honorsChangeAnnotations", arg) in - bnd :: bnds + let bnd = "honorsChangeAnnotations", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in let bnds = - if None = v_disabledSupport then bnds - else + if None = v_disabledSupport + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_disabledSupport in - let bnd = ("disabledSupport", arg) in - bnd :: bnds + let bnd = "disabledSupport", arg in + bnd :: bnds) in let bnds = - if None = v_dataSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dataSupport - in - let bnd = ("dataSupport", arg) in - bnd :: bnds + if None = v_dataSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dataSupport in + let bnd = "dataSupport", arg in + bnd :: bnds) in let bnds = - if None = v_codeActionLiteralSupport then bnds - else + if None = v_codeActionLiteralSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_codeActionLiteralSupport) + (Json.Nullable_option.yojson_of_t yojson_of_codeActionLiteralSupport) v_codeActionLiteralSupport in - let bnd = ("codeActionLiteralSupport", arg) in - bnd :: bnds + let bnd = "codeActionLiteralSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(codeActionLiteralSupport : codeActionLiteralSupport option) - ?(dataSupport : bool option) ?(disabledSupport : bool option) - ?(dynamicRegistration : bool option) - ?(honorsChangeAnnotations : bool option) - ?(isPreferredSupport : bool option) - ?(resolveSupport : resolveSupport option) (() : unit) : t = + let create + ?(codeActionLiteralSupport : codeActionLiteralSupport option) + ?(dataSupport : bool option) + ?(disabledSupport : bool option) + ?(dynamicRegistration : bool option) + ?(honorsChangeAnnotations : bool option) + ?(isPreferredSupport : bool option) + ?(resolveSupport : resolveSupport option) + (() : unit) + : t + = { codeActionLiteralSupport ; dataSupport ; disabledSupport @@ -14265,79 +14307,74 @@ module CodeActionClientCapabilities = struct ; isPreferredSupport ; resolveSupport } + ;; end module TextDocumentClientCapabilities = struct type t = { callHierarchy : CallHierarchyClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; codeAction : CodeActionClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; codeLens : CodeLensClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; colorProvider : DocumentColorClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; completion : CompletionClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; declaration : DeclarationClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; definition : DefinitionClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; diagnostic : DiagnosticClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; documentHighlight : - DocumentHighlightClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; documentHighlight : DocumentHighlightClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; documentLink : DocumentLinkClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; documentSymbol : DocumentSymbolClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; foldingRange : FoldingRangeClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; formatting : DocumentFormattingClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; hover : HoverClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; implementation : ImplementationClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; inlayHint : InlayHintClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; inlineCompletion : - InlineCompletionClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; inlineCompletion : InlineCompletionClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; inlineValue : InlineValueClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; linkedEditingRange : - LinkedEditingRangeClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; linkedEditingRange : LinkedEditingRangeClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; moniker : MonikerClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; onTypeFormatting : DocumentOnTypeFormattingClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; publishDiagnostics : - PublishDiagnosticsClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; rangeFormatting : - DocumentRangeFormattingClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; publishDiagnostics : PublishDiagnosticsClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] + ; rangeFormatting : DocumentRangeFormattingClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; references : ReferenceClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; rename : RenameClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; selectionRange : SelectionRangeClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; semanticTokens : SemanticTokensClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; signatureHelp : SignatureHelpClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; synchronization : - TextDocumentSyncClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; synchronization : TextDocumentSyncClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; typeDefinition : TypeDefinitionClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; typeHierarchy : TypeHierarchyClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -14346,7 +14383,7 @@ module TextDocumentClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let callHierarchy_field = ref Ppx_yojson_conv_lib.Option.None and codeAction_field = ref Ppx_yojson_conv_lib.Option.None and codeLens_field = ref Ppx_yojson_conv_lib.Option.None @@ -14383,561 +14420,559 @@ module TextDocumentClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "callHierarchy" -> ( - match Ppx_yojson_conv_lib.( ! ) callHierarchy_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CallHierarchyClientCapabilities.t_of_yojson - _field_yojson - in - callHierarchy_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "codeAction" -> ( - match Ppx_yojson_conv_lib.( ! ) codeAction_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CodeActionClientCapabilities.t_of_yojson - _field_yojson - in - codeAction_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "codeLens" -> ( - match Ppx_yojson_conv_lib.( ! ) codeLens_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CodeLensClientCapabilities.t_of_yojson - _field_yojson - in - codeLens_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "colorProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) colorProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentColorClientCapabilities.t_of_yojson - _field_yojson - in - colorProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "completion" -> ( - match Ppx_yojson_conv_lib.( ! ) completion_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CompletionClientCapabilities.t_of_yojson - _field_yojson - in - completion_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "declaration" -> ( - match Ppx_yojson_conv_lib.( ! ) declaration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DeclarationClientCapabilities.t_of_yojson - _field_yojson - in - declaration_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "definition" -> ( - match Ppx_yojson_conv_lib.( ! ) definition_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DefinitionClientCapabilities.t_of_yojson - _field_yojson - in - definition_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "diagnostic" -> ( - match Ppx_yojson_conv_lib.( ! ) diagnostic_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DiagnosticClientCapabilities.t_of_yojson - _field_yojson - in - diagnostic_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentHighlight" -> ( - match Ppx_yojson_conv_lib.( ! ) documentHighlight_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentHighlightClientCapabilities.t_of_yojson - _field_yojson - in - documentHighlight_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentLink" -> ( - match Ppx_yojson_conv_lib.( ! ) documentLink_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentLinkClientCapabilities.t_of_yojson - _field_yojson - in - documentLink_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentSymbol" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSymbol_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSymbolClientCapabilities.t_of_yojson - _field_yojson - in - documentSymbol_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "foldingRange" -> ( - match Ppx_yojson_conv_lib.( ! ) foldingRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FoldingRangeClientCapabilities.t_of_yojson - _field_yojson - in - foldingRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "formatting" -> ( - match Ppx_yojson_conv_lib.( ! ) formatting_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentFormattingClientCapabilities.t_of_yojson - _field_yojson - in - formatting_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "hover" -> ( - match Ppx_yojson_conv_lib.( ! ) hover_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - HoverClientCapabilities.t_of_yojson - _field_yojson - in - hover_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "implementation" -> ( - match Ppx_yojson_conv_lib.( ! ) implementation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ImplementationClientCapabilities.t_of_yojson - _field_yojson - in - implementation_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlayHint" -> ( - match Ppx_yojson_conv_lib.( ! ) inlayHint_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InlayHintClientCapabilities.t_of_yojson - _field_yojson - in - inlayHint_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlineCompletion" -> ( - match Ppx_yojson_conv_lib.( ! ) inlineCompletion_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InlineCompletionClientCapabilities.t_of_yojson - _field_yojson - in - inlineCompletion_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlineValue" -> ( - match Ppx_yojson_conv_lib.( ! ) inlineValue_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InlineValueClientCapabilities.t_of_yojson - _field_yojson - in - inlineValue_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "linkedEditingRange" -> ( - match Ppx_yojson_conv_lib.( ! ) linkedEditingRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - LinkedEditingRangeClientCapabilities.t_of_yojson - _field_yojson - in - linkedEditingRange_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "moniker" -> ( - match Ppx_yojson_conv_lib.( ! ) moniker_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - MonikerClientCapabilities.t_of_yojson - _field_yojson - in - moniker_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "onTypeFormatting" -> ( - match Ppx_yojson_conv_lib.( ! ) onTypeFormatting_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentOnTypeFormattingClientCapabilities.t_of_yojson - _field_yojson - in - onTypeFormatting_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "publishDiagnostics" -> ( - match Ppx_yojson_conv_lib.( ! ) publishDiagnostics_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - PublishDiagnosticsClientCapabilities.t_of_yojson - _field_yojson - in - publishDiagnostics_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rangeFormatting" -> ( - match Ppx_yojson_conv_lib.( ! ) rangeFormatting_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentRangeFormattingClientCapabilities.t_of_yojson - _field_yojson - in - rangeFormatting_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "references" -> ( - match Ppx_yojson_conv_lib.( ! ) references_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ReferenceClientCapabilities.t_of_yojson - _field_yojson - in - references_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rename" -> ( - match Ppx_yojson_conv_lib.( ! ) rename_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - RenameClientCapabilities.t_of_yojson - _field_yojson - in - rename_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "selectionRange" -> ( - match Ppx_yojson_conv_lib.( ! ) selectionRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SelectionRangeClientCapabilities.t_of_yojson - _field_yojson - in - selectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "semanticTokens" -> ( - match Ppx_yojson_conv_lib.( ! ) semanticTokens_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SemanticTokensClientCapabilities.t_of_yojson - _field_yojson - in - semanticTokens_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "signatureHelp" -> ( - match Ppx_yojson_conv_lib.( ! ) signatureHelp_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SignatureHelpClientCapabilities.t_of_yojson - _field_yojson - in - signatureHelp_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "synchronization" -> ( - match Ppx_yojson_conv_lib.( ! ) synchronization_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - TextDocumentSyncClientCapabilities.t_of_yojson - _field_yojson - in - synchronization_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "typeDefinition" -> ( - match Ppx_yojson_conv_lib.( ! ) typeDefinition_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - TypeDefinitionClientCapabilities.t_of_yojson - _field_yojson - in - typeDefinition_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "typeHierarchy" -> ( - match Ppx_yojson_conv_lib.( ! ) typeHierarchy_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - TypeHierarchyClientCapabilities.t_of_yojson - _field_yojson - in - typeHierarchy_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( callHierarchy_value - , codeAction_value - , codeLens_value - , colorProvider_value - , completion_value - , declaration_value - , definition_value - , diagnostic_value - , documentHighlight_value - , documentLink_value - , documentSymbol_value - , foldingRange_value - , formatting_value - , hover_value - , implementation_value - , inlayHint_value - , inlineCompletion_value - , inlineValue_value - , linkedEditingRange_value - , moniker_value - , onTypeFormatting_value - , publishDiagnostics_value - , rangeFormatting_value - , references_value - , rename_value - , selectionRange_value - , semanticTokens_value - , signatureHelp_value - , synchronization_value - , typeDefinition_value - , typeHierarchy_value ) = - ( Ppx_yojson_conv_lib.( ! ) callHierarchy_field - , Ppx_yojson_conv_lib.( ! ) codeAction_field - , Ppx_yojson_conv_lib.( ! ) codeLens_field - , Ppx_yojson_conv_lib.( ! ) colorProvider_field - , Ppx_yojson_conv_lib.( ! ) completion_field - , Ppx_yojson_conv_lib.( ! ) declaration_field - , Ppx_yojson_conv_lib.( ! ) definition_field - , Ppx_yojson_conv_lib.( ! ) diagnostic_field - , Ppx_yojson_conv_lib.( ! ) documentHighlight_field - , Ppx_yojson_conv_lib.( ! ) documentLink_field - , Ppx_yojson_conv_lib.( ! ) documentSymbol_field - , Ppx_yojson_conv_lib.( ! ) foldingRange_field - , Ppx_yojson_conv_lib.( ! ) formatting_field - , Ppx_yojson_conv_lib.( ! ) hover_field - , Ppx_yojson_conv_lib.( ! ) implementation_field - , Ppx_yojson_conv_lib.( ! ) inlayHint_field - , Ppx_yojson_conv_lib.( ! ) inlineCompletion_field - , Ppx_yojson_conv_lib.( ! ) inlineValue_field - , Ppx_yojson_conv_lib.( ! ) linkedEditingRange_field - , Ppx_yojson_conv_lib.( ! ) moniker_field - , Ppx_yojson_conv_lib.( ! ) onTypeFormatting_field - , Ppx_yojson_conv_lib.( ! ) publishDiagnostics_field - , Ppx_yojson_conv_lib.( ! ) rangeFormatting_field - , Ppx_yojson_conv_lib.( ! ) references_field - , Ppx_yojson_conv_lib.( ! ) rename_field - , Ppx_yojson_conv_lib.( ! ) selectionRange_field - , Ppx_yojson_conv_lib.( ! ) semanticTokens_field - , Ppx_yojson_conv_lib.( ! ) signatureHelp_field - , Ppx_yojson_conv_lib.( ! ) synchronization_field - , Ppx_yojson_conv_lib.( ! ) typeDefinition_field - , Ppx_yojson_conv_lib.( ! ) typeHierarchy_field ) - in - { callHierarchy = - (match callHierarchy_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; codeAction = - (match codeAction_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; codeLens = - (match codeLens_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; colorProvider = - (match colorProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; completion = - (match completion_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; declaration = - (match declaration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; definition = - (match definition_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; diagnostic = - (match diagnostic_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentHighlight = - (match documentHighlight_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentLink = - (match documentLink_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentSymbol = - (match documentSymbol_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; foldingRange = - (match foldingRange_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; formatting = - (match formatting_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; hover = - (match hover_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; implementation = - (match implementation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlayHint = - (match inlayHint_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlineCompletion = - (match inlineCompletion_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlineValue = - (match inlineValue_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; linkedEditingRange = - (match linkedEditingRange_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; moniker = - (match moniker_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; onTypeFormatting = - (match onTypeFormatting_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; publishDiagnostics = - (match publishDiagnostics_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rangeFormatting = - (match rangeFormatting_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; references = - (match references_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rename = - (match rename_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; selectionRange = - (match selectionRange_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; semanticTokens = - (match semanticTokens_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; signatureHelp = - (match signatureHelp_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; synchronization = - (match synchronization_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; typeDefinition = - (match typeDefinition_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; typeHierarchy = - (match typeHierarchy_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "callHierarchy" -> + (match Ppx_yojson_conv_lib.( ! ) callHierarchy_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CallHierarchyClientCapabilities.t_of_yojson + _field_yojson + in + callHierarchy_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "codeAction" -> + (match Ppx_yojson_conv_lib.( ! ) codeAction_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CodeActionClientCapabilities.t_of_yojson + _field_yojson + in + codeAction_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "codeLens" -> + (match Ppx_yojson_conv_lib.( ! ) codeLens_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CodeLensClientCapabilities.t_of_yojson + _field_yojson + in + codeLens_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "colorProvider" -> + (match Ppx_yojson_conv_lib.( ! ) colorProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentColorClientCapabilities.t_of_yojson + _field_yojson + in + colorProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "completion" -> + (match Ppx_yojson_conv_lib.( ! ) completion_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CompletionClientCapabilities.t_of_yojson + _field_yojson + in + completion_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "declaration" -> + (match Ppx_yojson_conv_lib.( ! ) declaration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DeclarationClientCapabilities.t_of_yojson + _field_yojson + in + declaration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "definition" -> + (match Ppx_yojson_conv_lib.( ! ) definition_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DefinitionClientCapabilities.t_of_yojson + _field_yojson + in + definition_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "diagnostic" -> + (match Ppx_yojson_conv_lib.( ! ) diagnostic_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DiagnosticClientCapabilities.t_of_yojson + _field_yojson + in + diagnostic_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentHighlight" -> + (match Ppx_yojson_conv_lib.( ! ) documentHighlight_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentHighlightClientCapabilities.t_of_yojson + _field_yojson + in + documentHighlight_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentLink" -> + (match Ppx_yojson_conv_lib.( ! ) documentLink_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentLinkClientCapabilities.t_of_yojson + _field_yojson + in + documentLink_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentSymbol" -> + (match Ppx_yojson_conv_lib.( ! ) documentSymbol_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSymbolClientCapabilities.t_of_yojson + _field_yojson + in + documentSymbol_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "foldingRange" -> + (match Ppx_yojson_conv_lib.( ! ) foldingRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FoldingRangeClientCapabilities.t_of_yojson + _field_yojson + in + foldingRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "formatting" -> + (match Ppx_yojson_conv_lib.( ! ) formatting_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentFormattingClientCapabilities.t_of_yojson + _field_yojson + in + formatting_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "hover" -> + (match Ppx_yojson_conv_lib.( ! ) hover_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + HoverClientCapabilities.t_of_yojson + _field_yojson + in + hover_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "implementation" -> + (match Ppx_yojson_conv_lib.( ! ) implementation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ImplementationClientCapabilities.t_of_yojson + _field_yojson + in + implementation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlayHint" -> + (match Ppx_yojson_conv_lib.( ! ) inlayHint_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InlayHintClientCapabilities.t_of_yojson + _field_yojson + in + inlayHint_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlineCompletion" -> + (match Ppx_yojson_conv_lib.( ! ) inlineCompletion_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InlineCompletionClientCapabilities.t_of_yojson + _field_yojson + in + inlineCompletion_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlineValue" -> + (match Ppx_yojson_conv_lib.( ! ) inlineValue_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InlineValueClientCapabilities.t_of_yojson + _field_yojson + in + inlineValue_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "linkedEditingRange" -> + (match Ppx_yojson_conv_lib.( ! ) linkedEditingRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + LinkedEditingRangeClientCapabilities.t_of_yojson + _field_yojson + in + linkedEditingRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "moniker" -> + (match Ppx_yojson_conv_lib.( ! ) moniker_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + MonikerClientCapabilities.t_of_yojson + _field_yojson + in + moniker_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "onTypeFormatting" -> + (match Ppx_yojson_conv_lib.( ! ) onTypeFormatting_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentOnTypeFormattingClientCapabilities.t_of_yojson + _field_yojson + in + onTypeFormatting_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "publishDiagnostics" -> + (match Ppx_yojson_conv_lib.( ! ) publishDiagnostics_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + PublishDiagnosticsClientCapabilities.t_of_yojson + _field_yojson + in + publishDiagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rangeFormatting" -> + (match Ppx_yojson_conv_lib.( ! ) rangeFormatting_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentRangeFormattingClientCapabilities.t_of_yojson + _field_yojson + in + rangeFormatting_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "references" -> + (match Ppx_yojson_conv_lib.( ! ) references_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ReferenceClientCapabilities.t_of_yojson + _field_yojson + in + references_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rename" -> + (match Ppx_yojson_conv_lib.( ! ) rename_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + RenameClientCapabilities.t_of_yojson + _field_yojson + in + rename_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "selectionRange" -> + (match Ppx_yojson_conv_lib.( ! ) selectionRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SelectionRangeClientCapabilities.t_of_yojson + _field_yojson + in + selectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "semanticTokens" -> + (match Ppx_yojson_conv_lib.( ! ) semanticTokens_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SemanticTokensClientCapabilities.t_of_yojson + _field_yojson + in + semanticTokens_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "signatureHelp" -> + (match Ppx_yojson_conv_lib.( ! ) signatureHelp_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SignatureHelpClientCapabilities.t_of_yojson + _field_yojson + in + signatureHelp_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "synchronization" -> + (match Ppx_yojson_conv_lib.( ! ) synchronization_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + TextDocumentSyncClientCapabilities.t_of_yojson + _field_yojson + in + synchronization_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "typeDefinition" -> + (match Ppx_yojson_conv_lib.( ! ) typeDefinition_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + TypeDefinitionClientCapabilities.t_of_yojson + _field_yojson + in + typeDefinition_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "typeHierarchy" -> + (match Ppx_yojson_conv_lib.( ! ) typeHierarchy_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + TypeHierarchyClientCapabilities.t_of_yojson + _field_yojson + in + typeHierarchy_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( callHierarchy_value + , codeAction_value + , codeLens_value + , colorProvider_value + , completion_value + , declaration_value + , definition_value + , diagnostic_value + , documentHighlight_value + , documentLink_value + , documentSymbol_value + , foldingRange_value + , formatting_value + , hover_value + , implementation_value + , inlayHint_value + , inlineCompletion_value + , inlineValue_value + , linkedEditingRange_value + , moniker_value + , onTypeFormatting_value + , publishDiagnostics_value + , rangeFormatting_value + , references_value + , rename_value + , selectionRange_value + , semanticTokens_value + , signatureHelp_value + , synchronization_value + , typeDefinition_value + , typeHierarchy_value ) + = + ( Ppx_yojson_conv_lib.( ! ) callHierarchy_field + , Ppx_yojson_conv_lib.( ! ) codeAction_field + , Ppx_yojson_conv_lib.( ! ) codeLens_field + , Ppx_yojson_conv_lib.( ! ) colorProvider_field + , Ppx_yojson_conv_lib.( ! ) completion_field + , Ppx_yojson_conv_lib.( ! ) declaration_field + , Ppx_yojson_conv_lib.( ! ) definition_field + , Ppx_yojson_conv_lib.( ! ) diagnostic_field + , Ppx_yojson_conv_lib.( ! ) documentHighlight_field + , Ppx_yojson_conv_lib.( ! ) documentLink_field + , Ppx_yojson_conv_lib.( ! ) documentSymbol_field + , Ppx_yojson_conv_lib.( ! ) foldingRange_field + , Ppx_yojson_conv_lib.( ! ) formatting_field + , Ppx_yojson_conv_lib.( ! ) hover_field + , Ppx_yojson_conv_lib.( ! ) implementation_field + , Ppx_yojson_conv_lib.( ! ) inlayHint_field + , Ppx_yojson_conv_lib.( ! ) inlineCompletion_field + , Ppx_yojson_conv_lib.( ! ) inlineValue_field + , Ppx_yojson_conv_lib.( ! ) linkedEditingRange_field + , Ppx_yojson_conv_lib.( ! ) moniker_field + , Ppx_yojson_conv_lib.( ! ) onTypeFormatting_field + , Ppx_yojson_conv_lib.( ! ) publishDiagnostics_field + , Ppx_yojson_conv_lib.( ! ) rangeFormatting_field + , Ppx_yojson_conv_lib.( ! ) references_field + , Ppx_yojson_conv_lib.( ! ) rename_field + , Ppx_yojson_conv_lib.( ! ) selectionRange_field + , Ppx_yojson_conv_lib.( ! ) semanticTokens_field + , Ppx_yojson_conv_lib.( ! ) signatureHelp_field + , Ppx_yojson_conv_lib.( ! ) synchronization_field + , Ppx_yojson_conv_lib.( ! ) typeDefinition_field + , Ppx_yojson_conv_lib.( ! ) typeHierarchy_field ) + in + { callHierarchy = + (match callHierarchy_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; codeAction = + (match codeAction_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; codeLens = + (match codeLens_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; colorProvider = + (match colorProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; completion = + (match completion_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; declaration = + (match declaration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; definition = + (match definition_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; diagnostic = + (match diagnostic_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentHighlight = + (match documentHighlight_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentLink = + (match documentLink_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentSymbol = + (match documentSymbol_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; foldingRange = + (match foldingRange_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; formatting = + (match formatting_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; hover = + (match hover_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; implementation = + (match implementation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlayHint = + (match inlayHint_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlineCompletion = + (match inlineCompletion_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlineValue = + (match inlineValue_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; linkedEditingRange = + (match linkedEditingRange_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; moniker = + (match moniker_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; onTypeFormatting = + (match onTypeFormatting_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; publishDiagnostics = + (match publishDiagnostics_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rangeFormatting = + (match rangeFormatting_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; references = + (match references_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rename = + (match rename_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; selectionRange = + (match selectionRange_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; semanticTokens = + (match semanticTokens_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; signatureHelp = + (match signatureHelp_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; synchronization = + (match synchronization_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; typeDefinition = + (match typeDefinition_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; typeHierarchy = + (match typeHierarchy_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -14977,385 +15012,406 @@ module TextDocumentClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_typeHierarchy then bnds - else + if None = v_typeHierarchy + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t TypeHierarchyClientCapabilities.yojson_of_t) v_typeHierarchy in - let bnd = ("typeHierarchy", arg) in - bnd :: bnds + let bnd = "typeHierarchy", arg in + bnd :: bnds) in let bnds = - if None = v_typeDefinition then bnds - else + if None = v_typeDefinition + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t TypeDefinitionClientCapabilities.yojson_of_t) v_typeDefinition in - let bnd = ("typeDefinition", arg) in - bnd :: bnds + let bnd = "typeDefinition", arg in + bnd :: bnds) in let bnds = - if None = v_synchronization then bnds - else + if None = v_synchronization + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t TextDocumentSyncClientCapabilities.yojson_of_t) v_synchronization in - let bnd = ("synchronization", arg) in - bnd :: bnds + let bnd = "synchronization", arg in + bnd :: bnds) in let bnds = - if None = v_signatureHelp then bnds - else + if None = v_signatureHelp + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t SignatureHelpClientCapabilities.yojson_of_t) v_signatureHelp in - let bnd = ("signatureHelp", arg) in - bnd :: bnds + let bnd = "signatureHelp", arg in + bnd :: bnds) in let bnds = - if None = v_semanticTokens then bnds - else + if None = v_semanticTokens + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t SemanticTokensClientCapabilities.yojson_of_t) v_semanticTokens in - let bnd = ("semanticTokens", arg) in - bnd :: bnds + let bnd = "semanticTokens", arg in + bnd :: bnds) in let bnds = - if None = v_selectionRange then bnds - else + if None = v_selectionRange + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t SelectionRangeClientCapabilities.yojson_of_t) v_selectionRange in - let bnd = ("selectionRange", arg) in - bnd :: bnds + let bnd = "selectionRange", arg in + bnd :: bnds) in let bnds = - if None = v_rename then bnds - else + if None = v_rename + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - RenameClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t RenameClientCapabilities.yojson_of_t) v_rename in - let bnd = ("rename", arg) in - bnd :: bnds + let bnd = "rename", arg in + bnd :: bnds) in let bnds = - if None = v_references then bnds - else + if None = v_references + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - ReferenceClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t ReferenceClientCapabilities.yojson_of_t) v_references in - let bnd = ("references", arg) in - bnd :: bnds + let bnd = "references", arg in + bnd :: bnds) in let bnds = - if None = v_rangeFormatting then bnds - else + if None = v_rangeFormatting + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentRangeFormattingClientCapabilities.yojson_of_t) v_rangeFormatting in - let bnd = ("rangeFormatting", arg) in - bnd :: bnds + let bnd = "rangeFormatting", arg in + bnd :: bnds) in let bnds = - if None = v_publishDiagnostics then bnds - else + if None = v_publishDiagnostics + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t PublishDiagnosticsClientCapabilities.yojson_of_t) v_publishDiagnostics in - let bnd = ("publishDiagnostics", arg) in - bnd :: bnds + let bnd = "publishDiagnostics", arg in + bnd :: bnds) in let bnds = - if None = v_onTypeFormatting then bnds - else + if None = v_onTypeFormatting + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentOnTypeFormattingClientCapabilities.yojson_of_t) v_onTypeFormatting in - let bnd = ("onTypeFormatting", arg) in - bnd :: bnds + let bnd = "onTypeFormatting", arg in + bnd :: bnds) in let bnds = - if None = v_moniker then bnds - else + if None = v_moniker + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - MonikerClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t MonikerClientCapabilities.yojson_of_t) v_moniker in - let bnd = ("moniker", arg) in - bnd :: bnds + let bnd = "moniker", arg in + bnd :: bnds) in let bnds = - if None = v_linkedEditingRange then bnds - else + if None = v_linkedEditingRange + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t LinkedEditingRangeClientCapabilities.yojson_of_t) v_linkedEditingRange in - let bnd = ("linkedEditingRange", arg) in - bnd :: bnds + let bnd = "linkedEditingRange", arg in + bnd :: bnds) in let bnds = - if None = v_inlineValue then bnds - else + if None = v_inlineValue + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - InlineValueClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t InlineValueClientCapabilities.yojson_of_t) v_inlineValue in - let bnd = ("inlineValue", arg) in - bnd :: bnds + let bnd = "inlineValue", arg in + bnd :: bnds) in let bnds = - if None = v_inlineCompletion then bnds - else + if None = v_inlineCompletion + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InlineCompletionClientCapabilities.yojson_of_t) v_inlineCompletion in - let bnd = ("inlineCompletion", arg) in - bnd :: bnds + let bnd = "inlineCompletion", arg in + bnd :: bnds) in let bnds = - if None = v_inlayHint then bnds - else + if None = v_inlayHint + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - InlayHintClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t InlayHintClientCapabilities.yojson_of_t) v_inlayHint in - let bnd = ("inlayHint", arg) in - bnd :: bnds + let bnd = "inlayHint", arg in + bnd :: bnds) in let bnds = - if None = v_implementation then bnds - else + if None = v_implementation + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ImplementationClientCapabilities.yojson_of_t) v_implementation in - let bnd = ("implementation", arg) in - bnd :: bnds + let bnd = "implementation", arg in + bnd :: bnds) in let bnds = - if None = v_hover then bnds - else + if None = v_hover + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - HoverClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t HoverClientCapabilities.yojson_of_t) v_hover in - let bnd = ("hover", arg) in - bnd :: bnds + let bnd = "hover", arg in + bnd :: bnds) in let bnds = - if None = v_formatting then bnds - else + if None = v_formatting + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentFormattingClientCapabilities.yojson_of_t) v_formatting in - let bnd = ("formatting", arg) in - bnd :: bnds + let bnd = "formatting", arg in + bnd :: bnds) in let bnds = - if None = v_foldingRange then bnds - else + if None = v_foldingRange + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - FoldingRangeClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t FoldingRangeClientCapabilities.yojson_of_t) v_foldingRange in - let bnd = ("foldingRange", arg) in - bnd :: bnds + let bnd = "foldingRange", arg in + bnd :: bnds) in let bnds = - if None = v_documentSymbol then bnds - else + if None = v_documentSymbol + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSymbolClientCapabilities.yojson_of_t) v_documentSymbol in - let bnd = ("documentSymbol", arg) in - bnd :: bnds + let bnd = "documentSymbol", arg in + bnd :: bnds) in let bnds = - if None = v_documentLink then bnds - else + if None = v_documentLink + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - DocumentLinkClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t DocumentLinkClientCapabilities.yojson_of_t) v_documentLink in - let bnd = ("documentLink", arg) in - bnd :: bnds + let bnd = "documentLink", arg in + bnd :: bnds) in let bnds = - if None = v_documentHighlight then bnds - else + if None = v_documentHighlight + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentHighlightClientCapabilities.yojson_of_t) v_documentHighlight in - let bnd = ("documentHighlight", arg) in - bnd :: bnds + let bnd = "documentHighlight", arg in + bnd :: bnds) in let bnds = - if None = v_diagnostic then bnds - else + if None = v_diagnostic + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - DiagnosticClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t DiagnosticClientCapabilities.yojson_of_t) v_diagnostic in - let bnd = ("diagnostic", arg) in - bnd :: bnds + let bnd = "diagnostic", arg in + bnd :: bnds) in let bnds = - if None = v_definition then bnds - else + if None = v_definition + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - DefinitionClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t DefinitionClientCapabilities.yojson_of_t) v_definition in - let bnd = ("definition", arg) in - bnd :: bnds + let bnd = "definition", arg in + bnd :: bnds) in let bnds = - if None = v_declaration then bnds - else + if None = v_declaration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - DeclarationClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t DeclarationClientCapabilities.yojson_of_t) v_declaration in - let bnd = ("declaration", arg) in - bnd :: bnds + let bnd = "declaration", arg in + bnd :: bnds) in let bnds = - if None = v_completion then bnds - else + if None = v_completion + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - CompletionClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t CompletionClientCapabilities.yojson_of_t) v_completion in - let bnd = ("completion", arg) in - bnd :: bnds + let bnd = "completion", arg in + bnd :: bnds) in let bnds = - if None = v_colorProvider then bnds - else + if None = v_colorProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentColorClientCapabilities.yojson_of_t) v_colorProvider in - let bnd = ("colorProvider", arg) in - bnd :: bnds + let bnd = "colorProvider", arg in + bnd :: bnds) in let bnds = - if None = v_codeLens then bnds - else + if None = v_codeLens + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - CodeLensClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t CodeLensClientCapabilities.yojson_of_t) v_codeLens in - let bnd = ("codeLens", arg) in - bnd :: bnds + let bnd = "codeLens", arg in + bnd :: bnds) in let bnds = - if None = v_codeAction then bnds - else + if None = v_codeAction + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - CodeActionClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t CodeActionClientCapabilities.yojson_of_t) v_codeAction in - let bnd = ("codeAction", arg) in - bnd :: bnds + let bnd = "codeAction", arg in + bnd :: bnds) in let bnds = - if None = v_callHierarchy then bnds - else + if None = v_callHierarchy + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t CallHierarchyClientCapabilities.yojson_of_t) v_callHierarchy in - let bnd = ("callHierarchy", arg) in - bnd :: bnds + let bnd = "callHierarchy", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - - let _ = yojson_of_t - - [@@@end] - - let create ?(callHierarchy : CallHierarchyClientCapabilities.t option) - ?(codeAction : CodeActionClientCapabilities.t option) - ?(codeLens : CodeLensClientCapabilities.t option) - ?(colorProvider : DocumentColorClientCapabilities.t option) - ?(completion : CompletionClientCapabilities.t option) - ?(declaration : DeclarationClientCapabilities.t option) - ?(definition : DefinitionClientCapabilities.t option) - ?(diagnostic : DiagnosticClientCapabilities.t option) - ?(documentHighlight : DocumentHighlightClientCapabilities.t option) - ?(documentLink : DocumentLinkClientCapabilities.t option) - ?(documentSymbol : DocumentSymbolClientCapabilities.t option) - ?(foldingRange : FoldingRangeClientCapabilities.t option) - ?(formatting : DocumentFormattingClientCapabilities.t option) - ?(hover : HoverClientCapabilities.t option) - ?(implementation : ImplementationClientCapabilities.t option) - ?(inlayHint : InlayHintClientCapabilities.t option) - ?(inlineCompletion : InlineCompletionClientCapabilities.t option) - ?(inlineValue : InlineValueClientCapabilities.t option) - ?(linkedEditingRange : LinkedEditingRangeClientCapabilities.t option) - ?(moniker : MonikerClientCapabilities.t option) - ?(onTypeFormatting : DocumentOnTypeFormattingClientCapabilities.t option) - ?(publishDiagnostics : PublishDiagnosticsClientCapabilities.t option) - ?(rangeFormatting : DocumentRangeFormattingClientCapabilities.t option) - ?(references : ReferenceClientCapabilities.t option) - ?(rename : RenameClientCapabilities.t option) - ?(selectionRange : SelectionRangeClientCapabilities.t option) - ?(semanticTokens : SemanticTokensClientCapabilities.t option) - ?(signatureHelp : SignatureHelpClientCapabilities.t option) - ?(synchronization : TextDocumentSyncClientCapabilities.t option) - ?(typeDefinition : TypeDefinitionClientCapabilities.t option) - ?(typeHierarchy : TypeHierarchyClientCapabilities.t option) (() : unit) : - t = + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; + + let _ = yojson_of_t + + [@@@end] + + let create + ?(callHierarchy : CallHierarchyClientCapabilities.t option) + ?(codeAction : CodeActionClientCapabilities.t option) + ?(codeLens : CodeLensClientCapabilities.t option) + ?(colorProvider : DocumentColorClientCapabilities.t option) + ?(completion : CompletionClientCapabilities.t option) + ?(declaration : DeclarationClientCapabilities.t option) + ?(definition : DefinitionClientCapabilities.t option) + ?(diagnostic : DiagnosticClientCapabilities.t option) + ?(documentHighlight : DocumentHighlightClientCapabilities.t option) + ?(documentLink : DocumentLinkClientCapabilities.t option) + ?(documentSymbol : DocumentSymbolClientCapabilities.t option) + ?(foldingRange : FoldingRangeClientCapabilities.t option) + ?(formatting : DocumentFormattingClientCapabilities.t option) + ?(hover : HoverClientCapabilities.t option) + ?(implementation : ImplementationClientCapabilities.t option) + ?(inlayHint : InlayHintClientCapabilities.t option) + ?(inlineCompletion : InlineCompletionClientCapabilities.t option) + ?(inlineValue : InlineValueClientCapabilities.t option) + ?(linkedEditingRange : LinkedEditingRangeClientCapabilities.t option) + ?(moniker : MonikerClientCapabilities.t option) + ?(onTypeFormatting : DocumentOnTypeFormattingClientCapabilities.t option) + ?(publishDiagnostics : PublishDiagnosticsClientCapabilities.t option) + ?(rangeFormatting : DocumentRangeFormattingClientCapabilities.t option) + ?(references : ReferenceClientCapabilities.t option) + ?(rename : RenameClientCapabilities.t option) + ?(selectionRange : SelectionRangeClientCapabilities.t option) + ?(semanticTokens : SemanticTokensClientCapabilities.t option) + ?(signatureHelp : SignatureHelpClientCapabilities.t option) + ?(synchronization : TextDocumentSyncClientCapabilities.t option) + ?(typeDefinition : TypeDefinitionClientCapabilities.t option) + ?(typeHierarchy : TypeHierarchyClientCapabilities.t option) + (() : unit) + : t + = { callHierarchy ; codeAction ; codeLens @@ -15388,25 +15444,24 @@ module TextDocumentClientCapabilities = struct ; typeDefinition ; typeHierarchy } + ;; end module NotebookDocumentSyncClientCapabilities = struct type t = { dynamicRegistration : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; executionSummarySupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.NotebookDocumentSyncClientCapabilities.t" - in + (let _tp_loc = "lsp/src/types.ml.NotebookDocumentSyncClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let dynamicRegistration_field = ref Ppx_yojson_conv_lib.Option.None and executionSummarySupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -15414,63 +15469,60 @@ module NotebookDocumentSyncClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "dynamicRegistration" -> ( - match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - dynamicRegistration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "executionSummarySupport" -> ( - match Ppx_yojson_conv_lib.( ! ) executionSummarySupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - executionSummarySupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "dynamicRegistration" -> + (match Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + dynamicRegistration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "executionSummarySupport" -> + (match Ppx_yojson_conv_lib.( ! ) executionSummarySupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + executionSummarySupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let dynamicRegistration_value, executionSummarySupport_value = - ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field - , Ppx_yojson_conv_lib.( ! ) executionSummarySupport_field ) - in - { dynamicRegistration = - (match dynamicRegistration_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; executionSummarySupport = - (match executionSummarySupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let dynamicRegistration_value, executionSummarySupport_value = + ( Ppx_yojson_conv_lib.( ! ) dynamicRegistration_field + , Ppx_yojson_conv_lib.( ! ) executionSummarySupport_field ) + in + { dynamicRegistration = + (match dynamicRegistration_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; executionSummarySupport = + (match executionSummarySupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -15481,35 +15533,41 @@ module NotebookDocumentSyncClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_executionSummarySupport then bnds - else + if None = v_executionSummarySupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_executionSummarySupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_executionSummarySupport in - let bnd = ("executionSummarySupport", arg) in - bnd :: bnds + let bnd = "executionSummarySupport", arg in + bnd :: bnds) in let bnds = - if None = v_dynamicRegistration then bnds - else + if None = v_dynamicRegistration + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_dynamicRegistration + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_dynamicRegistration in - let bnd = ("dynamicRegistration", arg) in - bnd :: bnds + let bnd = "dynamicRegistration", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(dynamicRegistration : bool option) - ?(executionSummarySupport : bool option) (() : unit) : t = + let create + ?(dynamicRegistration : bool option) + ?(executionSummarySupport : bool option) + (() : unit) + : t + = { dynamicRegistration; executionSummarySupport } + ;; end module NotebookDocumentClientCapabilities = struct @@ -15521,59 +15579,57 @@ module NotebookDocumentClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookDocumentClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let synchronization_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "synchronization" -> ( - match Ppx_yojson_conv_lib.( ! ) synchronization_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - NotebookDocumentSyncClientCapabilities.t_of_yojson - _field_yojson - in - synchronization_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "synchronization" -> + (match Ppx_yojson_conv_lib.( ! ) synchronization_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + NotebookDocumentSyncClientCapabilities.t_of_yojson _field_yojson + in + synchronization_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) synchronization_field with - | Ppx_yojson_conv_lib.Option.Some synchronization_value -> - { synchronization = synchronization_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) synchronization_field) - Ppx_yojson_conv_lib.Option.None - , "synchronization" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) synchronization_field with + | Ppx_yojson_conv_lib.Option.Some synchronization_value -> + { synchronization = synchronization_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) synchronization_field) + Ppx_yojson_conv_lib.Option.None + , "synchronization" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -15582,13 +15638,12 @@ module NotebookDocumentClientCapabilities = struct | { synchronization = v_synchronization } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - let arg = - NotebookDocumentSyncClientCapabilities.yojson_of_t v_synchronization - in + let arg = NotebookDocumentSyncClientCapabilities.yojson_of_t v_synchronization in ("synchronization", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -15596,13 +15651,13 @@ module NotebookDocumentClientCapabilities = struct let create ~(synchronization : NotebookDocumentSyncClientCapabilities.t) : t = { synchronization } + ;; end module RegularExpressionsClientCapabilities = struct type t = { engine : string - ; version : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -15611,7 +15666,7 @@ module RegularExpressionsClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RegularExpressionsClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let engine_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -15619,66 +15674,65 @@ module RegularExpressionsClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "engine" -> ( - match Ppx_yojson_conv_lib.( ! ) engine_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - engine_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "engine" -> + (match Ppx_yojson_conv_lib.( ! ) engine_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + engine_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) engine_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | Ppx_yojson_conv_lib.Option.Some engine_value, version_value -> - { engine = engine_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) engine_field) - Ppx_yojson_conv_lib.Option.None - , "engine" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) engine_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | Ppx_yojson_conv_lib.Option.Some engine_value, version_value -> + { engine = engine_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) engine_field) + Ppx_yojson_conv_lib.Option.None + , "engine" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -15687,20 +15741,20 @@ module RegularExpressionsClientCapabilities = struct | { engine = v_engine; version = v_version } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_engine in ("engine", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -15708,15 +15762,15 @@ module RegularExpressionsClientCapabilities = struct let create ~(engine : string) ?(version : string option) (() : unit) : t = { engine; version } + ;; end module MarkdownClientCapabilities = struct type t = { allowedTags : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; parser : string - ; version : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -15725,7 +15779,7 @@ module MarkdownClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.MarkdownClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let allowedTags_field = ref Ppx_yojson_conv_lib.Option.None and parser_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None @@ -15734,126 +15788,130 @@ module MarkdownClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "allowedTags" -> ( - match Ppx_yojson_conv_lib.( ! ) allowedTags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - allowedTags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "parser" -> ( - match Ppx_yojson_conv_lib.( ! ) parser_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - parser_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) allowedTags_field - , Ppx_yojson_conv_lib.( ! ) parser_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | ( allowedTags_value - , Ppx_yojson_conv_lib.Option.Some parser_value - , version_value ) -> - { allowedTags = - (match allowedTags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; parser = parser_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) parser_field) - Ppx_yojson_conv_lib.Option.None - , "parser" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { allowedTags = v_allowedTags; parser = v_parser; version = v_version } - -> - let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in - let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + | "allowedTags" -> + (match Ppx_yojson_conv_lib.( ! ) allowedTags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + allowedTags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "parser" -> + (match Ppx_yojson_conv_lib.( ! ) parser_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + parser_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) allowedTags_field + , Ppx_yojson_conv_lib.( ! ) parser_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | ( allowedTags_value + , Ppx_yojson_conv_lib.Option.Some parser_value + , version_value ) -> + { allowedTags = + (match allowedTags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; parser = parser_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) parser_field) + Ppx_yojson_conv_lib.Option.None + , "parser" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { allowedTags = v_allowedTags; parser = v_parser; version = v_version } -> + let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in + let bnds = + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_parser in ("parser", arg) :: bnds in let bnds = - if None = v_allowedTags then bnds - else + if None = v_allowedTags + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_allowedTags in - let bnd = ("allowedTags", arg) in - bnd :: bnds + let bnd = "allowedTags", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(allowedTags : string list option) ~(parser : string) - ?(version : string option) (() : unit) : t = + let create + ?(allowedTags : string list option) + ~(parser : string) + ?(version : string option) + (() : unit) + : t + = { allowedTags; parser; version } + ;; end module GeneralClientCapabilities = struct @@ -15866,11 +15924,9 @@ module GeneralClientCapabilities = struct let _ = fun (_ : staleRequestSupport) -> () let staleRequestSupport_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.GeneralClientCapabilities.staleRequestSupport" - in + (let _tp_loc = "lsp/src/types.ml.GeneralClientCapabilities.staleRequestSupport" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let cancel_field = ref Ppx_yojson_conv_lib.Option.None and retryOnContentModified_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -15878,74 +15934,71 @@ module GeneralClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "cancel" -> ( - match Ppx_yojson_conv_lib.( ! ) cancel_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - cancel_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "retryOnContentModified" -> ( - match Ppx_yojson_conv_lib.( ! ) retryOnContentModified_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - retryOnContentModified_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "cancel" -> + (match Ppx_yojson_conv_lib.( ! ) cancel_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + cancel_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "retryOnContentModified" -> + (match Ppx_yojson_conv_lib.( ! ) retryOnContentModified_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + retryOnContentModified_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) cancel_field - , Ppx_yojson_conv_lib.( ! ) retryOnContentModified_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some cancel_value - , Ppx_yojson_conv_lib.Option.Some retryOnContentModified_value ) -> - { cancel = cancel_value - ; retryOnContentModified = retryOnContentModified_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) cancel_field) - Ppx_yojson_conv_lib.Option.None - , "cancel" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) retryOnContentModified_field) - Ppx_yojson_conv_lib.Option.None - , "retryOnContentModified" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> staleRequestSupport) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) cancel_field + , Ppx_yojson_conv_lib.( ! ) retryOnContentModified_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some cancel_value + , Ppx_yojson_conv_lib.Option.Some retryOnContentModified_value ) -> + { cancel = cancel_value + ; retryOnContentModified = retryOnContentModified_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) cancel_field) + Ppx_yojson_conv_lib.Option.None + , "cancel" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) retryOnContentModified_field) + Ppx_yojson_conv_lib.Option.None + , "retryOnContentModified" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> staleRequestSupport) + ;; let _ = staleRequestSupport_of_yojson let yojson_of_staleRequestSupport = (function - | { cancel = v_cancel; retryOnContentModified = v_retryOnContentModified } - -> + | { cancel = v_cancel; retryOnContentModified = v_retryOnContentModified } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = let arg = yojson_of_list yojson_of_string v_retryOnContentModified in @@ -15956,26 +16009,28 @@ module GeneralClientCapabilities = struct ("cancel", arg) :: bnds in `Assoc bnds - : staleRequestSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : staleRequestSupport -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_staleRequestSupport [@@@end] - let create_staleRequestSupport ~(cancel : bool) - ~(retryOnContentModified : string list) : staleRequestSupport = + let create_staleRequestSupport ~(cancel : bool) ~(retryOnContentModified : string list) + : staleRequestSupport + = { cancel; retryOnContentModified } + ;; type t = { markdown : MarkdownClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; positionEncodings : PositionEncodingKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; regularExpressions : - RegularExpressionsClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; regularExpressions : RegularExpressionsClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; staleRequestSupport : staleRequestSupport Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -15984,7 +16039,7 @@ module GeneralClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.GeneralClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let markdown_field = ref Ppx_yojson_conv_lib.Option.None and positionEncodings_field = ref Ppx_yojson_conv_lib.Option.None and regularExpressions_field = ref Ppx_yojson_conv_lib.Option.None @@ -15994,102 +16049,100 @@ module GeneralClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "markdown" -> ( - match Ppx_yojson_conv_lib.( ! ) markdown_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - MarkdownClientCapabilities.t_of_yojson - _field_yojson - in - markdown_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "positionEncodings" -> ( - match Ppx_yojson_conv_lib.( ! ) positionEncodings_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson PositionEncodingKind.t_of_yojson) - _field_yojson - in - positionEncodings_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "regularExpressions" -> ( - match Ppx_yojson_conv_lib.( ! ) regularExpressions_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - RegularExpressionsClientCapabilities.t_of_yojson - _field_yojson - in - regularExpressions_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "staleRequestSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) staleRequestSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - staleRequestSupport_of_yojson - _field_yojson - in - staleRequestSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( markdown_value - , positionEncodings_value - , regularExpressions_value - , staleRequestSupport_value ) = - ( Ppx_yojson_conv_lib.( ! ) markdown_field - , Ppx_yojson_conv_lib.( ! ) positionEncodings_field - , Ppx_yojson_conv_lib.( ! ) regularExpressions_field - , Ppx_yojson_conv_lib.( ! ) staleRequestSupport_field ) - in - { markdown = - (match markdown_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; positionEncodings = - (match positionEncodings_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; regularExpressions = - (match regularExpressions_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; staleRequestSupport = - (match staleRequestSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "markdown" -> + (match Ppx_yojson_conv_lib.( ! ) markdown_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + MarkdownClientCapabilities.t_of_yojson + _field_yojson + in + markdown_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "positionEncodings" -> + (match Ppx_yojson_conv_lib.( ! ) positionEncodings_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson PositionEncodingKind.t_of_yojson) + _field_yojson + in + positionEncodings_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "regularExpressions" -> + (match Ppx_yojson_conv_lib.( ! ) regularExpressions_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + RegularExpressionsClientCapabilities.t_of_yojson + _field_yojson + in + regularExpressions_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "staleRequestSupport" -> + (match Ppx_yojson_conv_lib.( ! ) staleRequestSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + staleRequestSupport_of_yojson + _field_yojson + in + staleRequestSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( markdown_value + , positionEncodings_value + , regularExpressions_value + , staleRequestSupport_value ) + = + ( Ppx_yojson_conv_lib.( ! ) markdown_field + , Ppx_yojson_conv_lib.( ! ) positionEncodings_field + , Ppx_yojson_conv_lib.( ! ) regularExpressions_field + , Ppx_yojson_conv_lib.( ! ) staleRequestSupport_field ) + in + { markdown = + (match markdown_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; positionEncodings = + (match positionEncodings_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; regularExpressions = + (match regularExpressions_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; staleRequestSupport = + (match staleRequestSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -16102,76 +16155,84 @@ module GeneralClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_staleRequestSupport then bnds - else + if None = v_staleRequestSupport + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_staleRequestSupport) v_staleRequestSupport in - let bnd = ("staleRequestSupport", arg) in - bnd :: bnds + let bnd = "staleRequestSupport", arg in + bnd :: bnds) in let bnds = - if None = v_regularExpressions then bnds - else + if None = v_regularExpressions + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t RegularExpressionsClientCapabilities.yojson_of_t) v_regularExpressions in - let bnd = ("regularExpressions", arg) in - bnd :: bnds + let bnd = "regularExpressions", arg in + bnd :: bnds) in let bnds = - if None = v_positionEncodings then bnds - else + if None = v_positionEncodings + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list PositionEncodingKind.yojson_of_t)) v_positionEncodings in - let bnd = ("positionEncodings", arg) in - bnd :: bnds + let bnd = "positionEncodings", arg in + bnd :: bnds) in let bnds = - if None = v_markdown then bnds - else + if None = v_markdown + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - MarkdownClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t MarkdownClientCapabilities.yojson_of_t) v_markdown in - let bnd = ("markdown", arg) in - bnd :: bnds + let bnd = "markdown", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(markdown : MarkdownClientCapabilities.t option) - ?(positionEncodings : PositionEncodingKind.t list option) - ?(regularExpressions : RegularExpressionsClientCapabilities.t option) - ?(staleRequestSupport : staleRequestSupport option) (() : unit) : t = + let create + ?(markdown : MarkdownClientCapabilities.t option) + ?(positionEncodings : PositionEncodingKind.t list option) + ?(regularExpressions : RegularExpressionsClientCapabilities.t option) + ?(staleRequestSupport : staleRequestSupport option) + (() : unit) + : t + = { markdown; positionEncodings; regularExpressions; staleRequestSupport } + ;; end module ClientCapabilities = struct type t = { experimental : Json.t option [@yojson.option] ; general : GeneralClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; notebookDocument : - NotebookDocumentClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; notebookDocument : NotebookDocumentClientCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; window : WindowClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workspace : WorkspaceClientCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -16180,7 +16241,7 @@ module ClientCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ClientCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let experimental_field = ref Ppx_yojson_conv_lib.Option.None and general_field = ref Ppx_yojson_conv_lib.Option.None and notebookDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -16192,127 +16253,127 @@ module ClientCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "experimental" -> ( - match Ppx_yojson_conv_lib.( ! ) experimental_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - experimental_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "general" -> ( - match Ppx_yojson_conv_lib.( ! ) general_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - GeneralClientCapabilities.t_of_yojson - _field_yojson - in - general_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "notebookDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - NotebookDocumentClientCapabilities.t_of_yojson - _field_yojson - in - notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - TextDocumentClientCapabilities.t_of_yojson - _field_yojson - in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "window" -> ( - match Ppx_yojson_conv_lib.( ! ) window_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - WindowClientCapabilities.t_of_yojson - _field_yojson - in - window_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workspace" -> ( - match Ppx_yojson_conv_lib.( ! ) workspace_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - WorkspaceClientCapabilities.t_of_yojson - _field_yojson - in - workspace_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( experimental_value - , general_value - , notebookDocument_value - , textDocument_value - , window_value - , workspace_value ) = - ( Ppx_yojson_conv_lib.( ! ) experimental_field - , Ppx_yojson_conv_lib.( ! ) general_field - , Ppx_yojson_conv_lib.( ! ) notebookDocument_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) window_field - , Ppx_yojson_conv_lib.( ! ) workspace_field ) - in - { experimental = experimental_value - ; general = - (match general_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; notebookDocument = - (match notebookDocument_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = - (match textDocument_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; window = - (match window_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workspace = - (match workspace_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "experimental" -> + (match Ppx_yojson_conv_lib.( ! ) experimental_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + experimental_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "general" -> + (match Ppx_yojson_conv_lib.( ! ) general_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + GeneralClientCapabilities.t_of_yojson + _field_yojson + in + general_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "notebookDocument" -> + (match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + NotebookDocumentClientCapabilities.t_of_yojson + _field_yojson + in + notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + TextDocumentClientCapabilities.t_of_yojson + _field_yojson + in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "window" -> + (match Ppx_yojson_conv_lib.( ! ) window_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + WindowClientCapabilities.t_of_yojson + _field_yojson + in + window_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workspace" -> + (match Ppx_yojson_conv_lib.( ! ) workspace_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + WorkspaceClientCapabilities.t_of_yojson + _field_yojson + in + workspace_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( experimental_value + , general_value + , notebookDocument_value + , textDocument_value + , window_value + , workspace_value ) + = + ( Ppx_yojson_conv_lib.( ! ) experimental_field + , Ppx_yojson_conv_lib.( ! ) general_field + , Ppx_yojson_conv_lib.( ! ) notebookDocument_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) window_field + , Ppx_yojson_conv_lib.( ! ) workspace_field ) + in + { experimental = experimental_value + ; general = + (match general_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; notebookDocument = + (match notebookDocument_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = + (match textDocument_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; window = + (match window_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workspace = + (match workspace_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -16327,82 +16388,89 @@ module ClientCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workspace then bnds - else + if None = v_workspace + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - WorkspaceClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t WorkspaceClientCapabilities.yojson_of_t) v_workspace in - let bnd = ("workspace", arg) in - bnd :: bnds + let bnd = "workspace", arg in + bnd :: bnds) in let bnds = - if None = v_window then bnds - else + if None = v_window + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - WindowClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t WindowClientCapabilities.yojson_of_t) v_window in - let bnd = ("window", arg) in - bnd :: bnds + let bnd = "window", arg in + bnd :: bnds) in let bnds = - if None = v_textDocument then bnds - else + if None = v_textDocument + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - TextDocumentClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t TextDocumentClientCapabilities.yojson_of_t) v_textDocument in - let bnd = ("textDocument", arg) in - bnd :: bnds + let bnd = "textDocument", arg in + bnd :: bnds) in let bnds = - if None = v_notebookDocument then bnds - else + if None = v_notebookDocument + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t NotebookDocumentClientCapabilities.yojson_of_t) v_notebookDocument in - let bnd = ("notebookDocument", arg) in - bnd :: bnds + let bnd = "notebookDocument", arg in + bnd :: bnds) in let bnds = - if None = v_general then bnds - else + if None = v_general + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - GeneralClientCapabilities.yojson_of_t) + (Json.Nullable_option.yojson_of_t GeneralClientCapabilities.yojson_of_t) v_general in - let bnd = ("general", arg) in - bnd :: bnds + let bnd = "general", arg in + bnd :: bnds) in let bnds = match v_experimental with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("experimental", arg) in + let bnd = "experimental", arg in bnd :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(experimental : Json.t option) - ?(general : GeneralClientCapabilities.t option) - ?(notebookDocument : NotebookDocumentClientCapabilities.t option) - ?(textDocument : TextDocumentClientCapabilities.t option) - ?(window : WindowClientCapabilities.t option) - ?(workspace : WorkspaceClientCapabilities.t option) (() : unit) : t = + let create + ?(experimental : Json.t option) + ?(general : GeneralClientCapabilities.t option) + ?(notebookDocument : NotebookDocumentClientCapabilities.t option) + ?(textDocument : TextDocumentClientCapabilities.t option) + ?(window : WindowClientCapabilities.t option) + ?(workspace : WorkspaceClientCapabilities.t option) + (() : unit) + : t + = { experimental; general; notebookDocument; textDocument; window; workspace } + ;; end module Location = struct @@ -16417,7 +16485,7 @@ module Location = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Location.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let range_field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -16425,64 +16493,62 @@ module Location = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) uri_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some uri_value ) -> - { range = range_value; uri = uri_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + Ppx_yojson_conv_lib.( ! ) range_field, Ppx_yojson_conv_lib.( ! ) uri_field + with + | ( Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some uri_value ) -> + { range = range_value; uri = uri_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -16499,7 +16565,8 @@ module Location = struct ("range", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -16520,7 +16587,7 @@ module DiagnosticRelatedInformation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DiagnosticRelatedInformation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let location_field = ref Ppx_yojson_conv_lib.Option.None and message_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -16528,64 +16595,63 @@ module DiagnosticRelatedInformation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "location" -> ( - match Ppx_yojson_conv_lib.( ! ) location_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Location.t_of_yojson _field_yojson in - location_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "location" -> + (match Ppx_yojson_conv_lib.( ! ) location_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Location.t_of_yojson _field_yojson in + location_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) location_field - , Ppx_yojson_conv_lib.( ! ) message_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some location_value - , Ppx_yojson_conv_lib.Option.Some message_value ) -> - { location = location_value; message = message_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) location_field) - Ppx_yojson_conv_lib.Option.None - , "location" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) message_field) - Ppx_yojson_conv_lib.Option.None - , "message" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) location_field + , Ppx_yojson_conv_lib.( ! ) message_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some location_value + , Ppx_yojson_conv_lib.Option.Some message_value ) -> + { location = location_value; message = message_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) location_field) + Ppx_yojson_conv_lib.Option.None + , "location" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) message_field) + Ppx_yojson_conv_lib.Option.None + , "message" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -16602,14 +16668,14 @@ module DiagnosticRelatedInformation = struct ("location", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(location : Location.t) ~(message : string) : t = - { location; message } + let create ~(location : Location.t) ~(message : string) : t = { location; message } end module MarkupContent = struct @@ -16624,7 +16690,7 @@ module MarkupContent = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.MarkupContent.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let kind_field = ref Ppx_yojson_conv_lib.Option.None and value_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -16632,64 +16698,63 @@ module MarkupContent = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = MarkupKind.t_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "value" -> ( - match Ppx_yojson_conv_lib.( ! ) value_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - value_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = MarkupKind.t_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "value" -> + (match Ppx_yojson_conv_lib.( ! ) value_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + value_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) value_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some kind_value - , Ppx_yojson_conv_lib.Option.Some value_value ) -> - { kind = kind_value; value = value_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) value_field) - Ppx_yojson_conv_lib.Option.None - , "value" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) value_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some kind_value + , Ppx_yojson_conv_lib.Option.Some value_value ) -> + { kind = kind_value; value = value_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) value_field) + Ppx_yojson_conv_lib.Option.None + , "value" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -16706,7 +16771,8 @@ module MarkupContent = struct ("kind", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -16724,55 +16790,54 @@ module CodeDescription = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeDescription.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let href_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "href" -> ( - match Ppx_yojson_conv_lib.( ! ) href_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - href_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "href" -> + (match Ppx_yojson_conv_lib.( ! ) href_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + href_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) href_field with - | Ppx_yojson_conv_lib.Option.Some href_value -> { href = href_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) href_field) - Ppx_yojson_conv_lib.Option.None - , "href" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) href_field with + | Ppx_yojson_conv_lib.Option.Some href_value -> { href = href_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) href_field) + Ppx_yojson_conv_lib.Option.None + , "href" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -16785,7 +16850,8 @@ module CodeDescription = struct ("href", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -16808,29 +16874,29 @@ module Diagnostic = struct "message_pvar" [ (fun json -> `MarkupContent (MarkupContent.t_of_yojson json)) ] json + ;; let yojson_of_message_pvar (message_pvar : message_pvar) : Json.t = match message_pvar with | `String j -> `String j | `MarkupContent s -> MarkupContent.yojson_of_t s + ;; type t = { code : Jsonrpc.Id.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; codeDescription : CodeDescription.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; data : Json.t option [@yojson.option] ; message : message_pvar ; range : Range.t - ; relatedInformation : - DiagnosticRelatedInformation.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; relatedInformation : DiagnosticRelatedInformation.t list Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; severity : DiagnosticSeverity.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; source : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; source : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; tags : DiagnosticTag.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -16839,7 +16905,7 @@ module Diagnostic = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Diagnostic.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let code_field = ref Ppx_yojson_conv_lib.Option.None and codeDescription_field = ref Ppx_yojson_conv_lib.Option.None and data_field = ref Ppx_yojson_conv_lib.Option.None @@ -16854,177 +16920,173 @@ module Diagnostic = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "code" -> ( - match Ppx_yojson_conv_lib.( ! ) code_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Jsonrpc.Id.t_of_yojson - _field_yojson - in - code_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "codeDescription" -> ( - match Ppx_yojson_conv_lib.( ! ) codeDescription_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CodeDescription.t_of_yojson - _field_yojson - in - codeDescription_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = message_pvar_of_yojson _field_yojson in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "relatedInformation" -> ( - match Ppx_yojson_conv_lib.( ! ) relatedInformation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson DiagnosticRelatedInformation.t_of_yojson) - _field_yojson - in - relatedInformation_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "severity" -> ( - match Ppx_yojson_conv_lib.( ! ) severity_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DiagnosticSeverity.t_of_yojson - _field_yojson - in - severity_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "source" -> ( - match Ppx_yojson_conv_lib.( ! ) source_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - source_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tags" -> ( - match Ppx_yojson_conv_lib.( ! ) tags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson DiagnosticTag.t_of_yojson) - _field_yojson - in - tags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) code_field - , Ppx_yojson_conv_lib.( ! ) codeDescription_field - , Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) message_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) relatedInformation_field - , Ppx_yojson_conv_lib.( ! ) severity_field - , Ppx_yojson_conv_lib.( ! ) source_field - , Ppx_yojson_conv_lib.( ! ) tags_field ) - with - | ( code_value - , codeDescription_value - , data_value - , Ppx_yojson_conv_lib.Option.Some message_value - , Ppx_yojson_conv_lib.Option.Some range_value - , relatedInformation_value - , severity_value - , source_value - , tags_value ) -> - { code = - (match code_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; codeDescription = - (match codeDescription_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; data = data_value - ; message = message_value - ; range = range_value - ; relatedInformation = - (match relatedInformation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; severity = - (match severity_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; source = - (match source_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tags = - (match tags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) message_field) - Ppx_yojson_conv_lib.Option.None - , "message" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "code" -> + (match Ppx_yojson_conv_lib.( ! ) code_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Jsonrpc.Id.t_of_yojson _field_yojson + in + code_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "codeDescription" -> + (match Ppx_yojson_conv_lib.( ! ) codeDescription_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CodeDescription.t_of_yojson + _field_yojson + in + codeDescription_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = message_pvar_of_yojson _field_yojson in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "relatedInformation" -> + (match Ppx_yojson_conv_lib.( ! ) relatedInformation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson DiagnosticRelatedInformation.t_of_yojson) + _field_yojson + in + relatedInformation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "severity" -> + (match Ppx_yojson_conv_lib.( ! ) severity_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DiagnosticSeverity.t_of_yojson + _field_yojson + in + severity_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "source" -> + (match Ppx_yojson_conv_lib.( ! ) source_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + source_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tags" -> + (match Ppx_yojson_conv_lib.( ! ) tags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson DiagnosticTag.t_of_yojson) + _field_yojson + in + tags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) code_field + , Ppx_yojson_conv_lib.( ! ) codeDescription_field + , Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) message_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) relatedInformation_field + , Ppx_yojson_conv_lib.( ! ) severity_field + , Ppx_yojson_conv_lib.( ! ) source_field + , Ppx_yojson_conv_lib.( ! ) tags_field ) + with + | ( code_value + , codeDescription_value + , data_value + , Ppx_yojson_conv_lib.Option.Some message_value + , Ppx_yojson_conv_lib.Option.Some range_value + , relatedInformation_value + , severity_value + , source_value + , tags_value ) -> + { code = + (match code_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; codeDescription = + (match codeDescription_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; data = data_value + ; message = message_value + ; range = range_value + ; relatedInformation = + (match relatedInformation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; severity = + (match severity_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; source = + (match source_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tags = + (match tags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) message_field) + Ppx_yojson_conv_lib.Option.None + , "message" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -17042,45 +17104,45 @@ module Diagnostic = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_tags then bnds - else + if None = v_tags + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list DiagnosticTag.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list DiagnosticTag.yojson_of_t)) v_tags in - let bnd = ("tags", arg) in - bnd :: bnds + let bnd = "tags", arg in + bnd :: bnds) in let bnds = - if None = v_source then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_source - in - let bnd = ("source", arg) in - bnd :: bnds + if None = v_source + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_source in + let bnd = "source", arg in + bnd :: bnds) in let bnds = - if None = v_severity then bnds - else + if None = v_severity + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t DiagnosticSeverity.yojson_of_t) - v_severity + (Json.Nullable_option.yojson_of_t DiagnosticSeverity.yojson_of_t) v_severity in - let bnd = ("severity", arg) in - bnd :: bnds + let bnd = "severity", arg in + bnd :: bnds) in let bnds = - if None = v_relatedInformation then bnds - else + if None = v_relatedInformation + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list DiagnosticRelatedInformation.yojson_of_t)) v_relatedInformation in - let bnd = ("relatedInformation", arg) in - bnd :: bnds + let bnd = "relatedInformation", arg in + bnd :: bnds) in let bnds = let arg = Range.yojson_of_t v_range in @@ -17095,41 +17157,49 @@ module Diagnostic = struct | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in let bnds = - if None = v_codeDescription then bnds - else + if None = v_codeDescription + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t CodeDescription.yojson_of_t) v_codeDescription in - let bnd = ("codeDescription", arg) in - bnd :: bnds + let bnd = "codeDescription", arg in + bnd :: bnds) in let bnds = - if None = v_code then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Jsonrpc.Id.yojson_of_t) v_code - in - let bnd = ("code", arg) in - bnd :: bnds + if None = v_code + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Jsonrpc.Id.yojson_of_t) v_code in + let bnd = "code", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(code : Jsonrpc.Id.t option) - ?(codeDescription : CodeDescription.t option) ?(data : Json.t option) - ~(message : message_pvar) ~(range : Range.t) - ?(relatedInformation : DiagnosticRelatedInformation.t list option) - ?(severity : DiagnosticSeverity.t option) ?(source : string option) - ?(tags : DiagnosticTag.t list option) (() : unit) : t = + let create + ?(code : Jsonrpc.Id.t option) + ?(codeDescription : CodeDescription.t option) + ?(data : Json.t option) + ~(message : message_pvar) + ~(range : Range.t) + ?(relatedInformation : DiagnosticRelatedInformation.t list option) + ?(severity : DiagnosticSeverity.t option) + ?(source : string option) + ?(tags : DiagnosticTag.t list option) + (() : unit) + : t + = { code ; codeDescription ; data @@ -17140,12 +17210,13 @@ module Diagnostic = struct ; source ; tags } + ;; end module Command = struct type t = { arguments : Json.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; command : string ; title : string } @@ -17156,7 +17227,7 @@ module Command = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Command.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let arguments_field = ref Ppx_yojson_conv_lib.Option.None and command_field = ref Ppx_yojson_conv_lib.Option.None and title_field = ref Ppx_yojson_conv_lib.Option.None @@ -17165,83 +17236,82 @@ module Command = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "arguments" -> ( - match Ppx_yojson_conv_lib.( ! ) arguments_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson Json.t_of_yojson) - _field_yojson - in - arguments_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "command" -> ( - match Ppx_yojson_conv_lib.( ! ) command_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - command_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "title" -> ( - match Ppx_yojson_conv_lib.( ! ) title_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - title_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) arguments_field - , Ppx_yojson_conv_lib.( ! ) command_field - , Ppx_yojson_conv_lib.( ! ) title_field ) - with - | ( arguments_value - , Ppx_yojson_conv_lib.Option.Some command_value - , Ppx_yojson_conv_lib.Option.Some title_value ) -> - { arguments = - (match arguments_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; command = command_value - ; title = title_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) command_field) - Ppx_yojson_conv_lib.Option.None - , "command" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) title_field) - Ppx_yojson_conv_lib.Option.None - , "title" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "arguments" -> + (match Ppx_yojson_conv_lib.( ! ) arguments_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson Json.t_of_yojson) + _field_yojson + in + arguments_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "command" -> + (match Ppx_yojson_conv_lib.( ! ) command_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + command_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "title" -> + (match Ppx_yojson_conv_lib.( ! ) title_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + title_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) arguments_field + , Ppx_yojson_conv_lib.( ! ) command_field + , Ppx_yojson_conv_lib.( ! ) title_field ) + with + | ( arguments_value + , Ppx_yojson_conv_lib.Option.Some command_value + , Ppx_yojson_conv_lib.Option.Some title_value ) -> + { arguments = + (match arguments_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; command = command_value + ; title = title_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) command_field) + Ppx_yojson_conv_lib.Option.None + , "command" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) title_field) + Ppx_yojson_conv_lib.Option.None + , "title" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -17258,26 +17328,33 @@ module Command = struct ("command", arg) :: bnds in let bnds = - if None = v_arguments then bnds - else + if None = v_arguments + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list Json.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list Json.yojson_of_t)) v_arguments in - let bnd = ("arguments", arg) in - bnd :: bnds + let bnd = "arguments", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(arguments : Json.t list option) ~(command : string) - ~(title : string) (() : unit) : t = + let create + ?(arguments : Json.t list option) + ~(command : string) + ~(title : string) + (() : unit) + : t + = { arguments; command; title } + ;; end module CodeAction = struct @@ -17289,56 +17366,54 @@ module CodeAction = struct let disabled_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeAction.disabled" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let reason_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "reason" -> ( - match Ppx_yojson_conv_lib.( ! ) reason_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - reason_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "reason" -> + (match Ppx_yojson_conv_lib.( ! ) reason_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + reason_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) reason_field with - | Ppx_yojson_conv_lib.Option.Some reason_value -> - { reason = reason_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) reason_field) - Ppx_yojson_conv_lib.Option.None - , "reason" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> disabled) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) reason_field with + | Ppx_yojson_conv_lib.Option.Some reason_value -> { reason = reason_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) reason_field) + Ppx_yojson_conv_lib.Option.None + , "reason" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> disabled) + ;; let _ = disabled_of_yojson @@ -17351,7 +17426,8 @@ module CodeAction = struct ("reason", arg) :: bnds in `Assoc bnds - : disabled -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : disabled -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_disabled @@ -17361,18 +17437,18 @@ module CodeAction = struct type t = { command : Command.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; data : Json.t option [@yojson.option] ; diagnostics : Diagnostic.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; disabled : disabled Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; edit : WorkspaceEdit.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; isPreferred : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; kind : CodeActionKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; title : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -17382,7 +17458,7 @@ module CodeAction = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeAction.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let command_field = ref Ppx_yojson_conv_lib.Option.None and data_field = ref Ppx_yojson_conv_lib.Option.None and diagnostics_field = ref Ppx_yojson_conv_lib.Option.None @@ -17396,162 +17472,157 @@ module CodeAction = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "command" -> ( - match Ppx_yojson_conv_lib.( ! ) command_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Command.t_of_yojson - _field_yojson - in - command_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "diagnostics" -> ( - match Ppx_yojson_conv_lib.( ! ) diagnostics_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson Diagnostic.t_of_yojson) - _field_yojson - in - diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "disabled" -> ( - match Ppx_yojson_conv_lib.( ! ) disabled_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - disabled_of_yojson - _field_yojson - in - disabled_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "edit" -> ( - match Ppx_yojson_conv_lib.( ! ) edit_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - WorkspaceEdit.t_of_yojson - _field_yojson - in - edit_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "isPreferred" -> ( - match Ppx_yojson_conv_lib.( ! ) isPreferred_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - isPreferred_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CodeActionKind.t_of_yojson - _field_yojson - in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "title" -> ( - match Ppx_yojson_conv_lib.( ! ) title_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - title_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) command_field - , Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) diagnostics_field - , Ppx_yojson_conv_lib.( ! ) disabled_field - , Ppx_yojson_conv_lib.( ! ) edit_field - , Ppx_yojson_conv_lib.( ! ) isPreferred_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) title_field ) - with - | ( command_value - , data_value - , diagnostics_value - , disabled_value - , edit_value - , isPreferred_value - , kind_value - , Ppx_yojson_conv_lib.Option.Some title_value ) -> - { command = - (match command_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; data = data_value - ; diagnostics = - (match diagnostics_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; disabled = - (match disabled_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; edit = - (match edit_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; isPreferred = - (match isPreferred_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = - (match kind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; title = title_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) title_field) - Ppx_yojson_conv_lib.Option.None - , "title" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "command" -> + (match Ppx_yojson_conv_lib.( ! ) command_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Command.t_of_yojson _field_yojson + in + command_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "diagnostics" -> + (match Ppx_yojson_conv_lib.( ! ) diagnostics_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson Diagnostic.t_of_yojson) + _field_yojson + in + diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "disabled" -> + (match Ppx_yojson_conv_lib.( ! ) disabled_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson disabled_of_yojson _field_yojson + in + disabled_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "edit" -> + (match Ppx_yojson_conv_lib.( ! ) edit_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + WorkspaceEdit.t_of_yojson + _field_yojson + in + edit_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "isPreferred" -> + (match Ppx_yojson_conv_lib.( ! ) isPreferred_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + isPreferred_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CodeActionKind.t_of_yojson + _field_yojson + in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "title" -> + (match Ppx_yojson_conv_lib.( ! ) title_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + title_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) command_field + , Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) diagnostics_field + , Ppx_yojson_conv_lib.( ! ) disabled_field + , Ppx_yojson_conv_lib.( ! ) edit_field + , Ppx_yojson_conv_lib.( ! ) isPreferred_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) title_field ) + with + | ( command_value + , data_value + , diagnostics_value + , disabled_value + , edit_value + , isPreferred_value + , kind_value + , Ppx_yojson_conv_lib.Option.Some title_value ) -> + { command = + (match command_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; data = data_value + ; diagnostics = + (match diagnostics_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; disabled = + (match disabled_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; edit = + (match edit_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; isPreferred = + (match isPreferred_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = + (match kind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; title = title_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) title_field) + Ppx_yojson_conv_lib.Option.None + , "title" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -17572,91 +17643,99 @@ module CodeAction = struct ("title", arg) :: bnds in let bnds = - if None = v_kind then bnds - else + if None = v_kind + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t CodeActionKind.yojson_of_t) - v_kind + (Json.Nullable_option.yojson_of_t CodeActionKind.yojson_of_t) v_kind in - let bnd = ("kind", arg) in - bnd :: bnds + let bnd = "kind", arg in + bnd :: bnds) in let bnds = - if None = v_isPreferred then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_isPreferred - in - let bnd = ("isPreferred", arg) in - bnd :: bnds + if None = v_isPreferred + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_isPreferred in + let bnd = "isPreferred", arg in + bnd :: bnds) in let bnds = - if None = v_edit then bnds - else + if None = v_edit + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t WorkspaceEdit.yojson_of_t) v_edit in - let bnd = ("edit", arg) in - bnd :: bnds + let bnd = "edit", arg in + bnd :: bnds) in let bnds = - if None = v_disabled then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_disabled) v_disabled - in - let bnd = ("disabled", arg) in - bnd :: bnds + if None = v_disabled + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_disabled) v_disabled in + let bnd = "disabled", arg in + bnd :: bnds) in let bnds = - if None = v_diagnostics then bnds - else + if None = v_diagnostics + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list Diagnostic.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list Diagnostic.yojson_of_t)) v_diagnostics in - let bnd = ("diagnostics", arg) in - bnd :: bnds + let bnd = "diagnostics", arg in + bnd :: bnds) in let bnds = match v_data with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in let bnds = - if None = v_command then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command - in - let bnd = ("command", arg) in - bnd :: bnds + if None = v_command + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command in + let bnd = "command", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(command : Command.t option) ?(data : Json.t option) - ?(diagnostics : Diagnostic.t list option) ?(disabled : disabled option) - ?(edit : WorkspaceEdit.t option) ?(isPreferred : bool option) - ?(kind : CodeActionKind.t option) ~(title : string) (() : unit) : t = + let create + ?(command : Command.t option) + ?(data : Json.t option) + ?(diagnostics : Diagnostic.t list option) + ?(disabled : disabled option) + ?(edit : WorkspaceEdit.t option) + ?(isPreferred : bool option) + ?(kind : CodeActionKind.t option) + ~(title : string) + (() : unit) + : t + = { command; data; diagnostics; disabled; edit; isPreferred; kind; title } + ;; end module CodeActionContext = struct type t = { diagnostics : Diagnostic.t list ; only : CodeActionKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; triggerKind : CodeActionTriggerKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -17665,7 +17744,7 @@ module CodeActionContext = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeActionContext.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let diagnostics_field = ref Ppx_yojson_conv_lib.Option.None and only_field = ref Ppx_yojson_conv_lib.Option.None and triggerKind_field = ref Ppx_yojson_conv_lib.Option.None @@ -17674,145 +17753,146 @@ module CodeActionContext = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "diagnostics" -> ( - match Ppx_yojson_conv_lib.( ! ) diagnostics_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson Diagnostic.t_of_yojson _field_yojson - in - diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "only" -> ( - match Ppx_yojson_conv_lib.( ! ) only_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson CodeActionKind.t_of_yojson) - _field_yojson - in - only_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerKind" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CodeActionTriggerKind.t_of_yojson - _field_yojson - in - triggerKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) diagnostics_field - , Ppx_yojson_conv_lib.( ! ) only_field - , Ppx_yojson_conv_lib.( ! ) triggerKind_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some diagnostics_value - , only_value - , triggerKind_value ) -> - { diagnostics = diagnostics_value - ; only = - (match only_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; triggerKind = - (match triggerKind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) diagnostics_field) - Ppx_yojson_conv_lib.Option.None - , "diagnostics" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { diagnostics = v_diagnostics - ; only = v_only - ; triggerKind = v_triggerKind - } -> - let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in - let bnds = - if None = v_triggerKind then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t - CodeActionTriggerKind.yojson_of_t) - v_triggerKind - in - let bnd = ("triggerKind", arg) in - bnd :: bnds + | "diagnostics" -> + (match Ppx_yojson_conv_lib.( ! ) diagnostics_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Diagnostic.t_of_yojson _field_yojson in + diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "only" -> + (match Ppx_yojson_conv_lib.( ! ) only_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson CodeActionKind.t_of_yojson) + _field_yojson + in + only_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerKind" -> + (match Ppx_yojson_conv_lib.( ! ) triggerKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CodeActionTriggerKind.t_of_yojson + _field_yojson + in + triggerKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () in - let bnds = - if None = v_only then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list CodeActionKind.yojson_of_t)) - v_only + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) diagnostics_field + , Ppx_yojson_conv_lib.( ! ) only_field + , Ppx_yojson_conv_lib.( ! ) triggerKind_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some diagnostics_value + , only_value + , triggerKind_value ) -> + { diagnostics = diagnostics_value + ; only = + (match only_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; triggerKind = + (match triggerKind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) diagnostics_field) + Ppx_yojson_conv_lib.Option.None + , "diagnostics" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { diagnostics = v_diagnostics; only = v_only; triggerKind = v_triggerKind } -> + let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in + let bnds = + if None = v_triggerKind + then bnds + else ( + let arg = + (Json.Nullable_option.yojson_of_t CodeActionTriggerKind.yojson_of_t) + v_triggerKind in - let bnd = ("only", arg) in - bnd :: bnds + let bnd = "triggerKind", arg in + bnd :: bnds) + in + let bnds = + if None = v_only + then bnds + else ( + let arg = + (Json.Nullable_option.yojson_of_t + (yojson_of_list CodeActionKind.yojson_of_t)) + v_only + in + let bnd = "only", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list Diagnostic.yojson_of_t v_diagnostics in ("diagnostics", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(diagnostics : Diagnostic.t list) - ?(only : CodeActionKind.t list option) - ?(triggerKind : CodeActionTriggerKind.t option) (() : unit) : t = + let create + ~(diagnostics : Diagnostic.t list) + ?(only : CodeActionKind.t list option) + ?(triggerKind : CodeActionTriggerKind.t option) + (() : unit) + : t + = { diagnostics; only; triggerKind } + ;; end module CodeActionOptions = struct type t = { codeActionKinds : CodeActionKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -17821,7 +17901,7 @@ module CodeActionOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeActionOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let codeActionKinds_field = ref Ppx_yojson_conv_lib.Option.None and resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -17830,79 +17910,76 @@ module CodeActionOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "codeActionKinds" -> ( - match Ppx_yojson_conv_lib.( ! ) codeActionKinds_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson CodeActionKind.t_of_yojson) - _field_yojson - in - codeActionKinds_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( codeActionKinds_value - , resolveProvider_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) codeActionKinds_field - , Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { codeActionKinds = - (match codeActionKinds_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "codeActionKinds" -> + (match Ppx_yojson_conv_lib.( ! ) codeActionKinds_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson CodeActionKind.t_of_yojson) + _field_yojson + in + codeActionKinds_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let codeActionKinds_value, resolveProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) codeActionKinds_field + , Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { codeActionKinds = + (match codeActionKinds_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -17914,57 +17991,65 @@ module CodeActionOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in let bnds = - if None = v_codeActionKinds then bnds - else + if None = v_codeActionKinds + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list CodeActionKind.yojson_of_t)) v_codeActionKinds in - let bnd = ("codeActionKinds", arg) in - bnd :: bnds + let bnd = "codeActionKinds", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(codeActionKinds : CodeActionKind.t list option) - ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(codeActionKinds : CodeActionKind.t list option) + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { codeActionKinds; resolveProvider; workDoneProgress } + ;; end module CodeActionParams = struct type t = { context : CodeActionContext.t ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; range : Range.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -17973,7 +18058,7 @@ module CodeActionParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeActionParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let context_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None @@ -17984,115 +18069,113 @@ module CodeActionParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "context" -> ( - match Ppx_yojson_conv_lib.( ! ) context_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = CodeActionContext.t_of_yojson _field_yojson in - context_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) context_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some context_value - , partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { context = context_value - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; range = range_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "context" -> + (match Ppx_yojson_conv_lib.( ! ) context_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = CodeActionContext.t_of_yojson _field_yojson in + context_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) context_field) - Ppx_yojson_conv_lib.Option.None - , "context" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) context_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some context_value + , partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { context = context_value + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; range = range_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) context_field) + Ppx_yojson_conv_lib.Option.None + , "context" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -18106,14 +18189,14 @@ module CodeActionParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -18124,43 +18207,51 @@ module CodeActionParams = struct ("range", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = let arg = CodeActionContext.yojson_of_t v_context in ("context", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(context : CodeActionContext.t) - ?(partialResultToken : ProgressToken.t option) ~(range : Range.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(context : CodeActionContext.t) + ?(partialResultToken : ProgressToken.t option) + ~(range : Range.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { context; partialResultToken; range; textDocument; workDoneToken } + ;; end module CodeActionRegistrationOptions = struct type t = { codeActionKinds : CodeActionKind.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -18169,7 +18260,7 @@ module CodeActionRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeActionRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let codeActionKinds_field = ref Ppx_yojson_conv_lib.Option.None and documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None @@ -18179,96 +18270,96 @@ module CodeActionRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "codeActionKinds" -> ( - match Ppx_yojson_conv_lib.( ! ) codeActionKinds_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson CodeActionKind.t_of_yojson) - _field_yojson - in - codeActionKinds_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( codeActionKinds_value - , documentSelector_value - , resolveProvider_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) codeActionKinds_field - , Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { codeActionKinds = - (match codeActionKinds_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "codeActionKinds" -> + (match Ppx_yojson_conv_lib.( ! ) codeActionKinds_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson CodeActionKind.t_of_yojson) + _field_yojson + in + codeActionKinds_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( codeActionKinds_value + , documentSelector_value + , resolveProvider_value + , workDoneProgress_value ) + = + ( Ppx_yojson_conv_lib.( ! ) codeActionKinds_field + , Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { codeActionKinds = + (match codeActionKinds_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -18281,63 +18372,72 @@ module CodeActionRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in let bnds = - if None = v_codeActionKinds then bnds - else + if None = v_codeActionKinds + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list CodeActionKind.yojson_of_t)) v_codeActionKinds in - let bnd = ("codeActionKinds", arg) in - bnd :: bnds + let bnd = "codeActionKinds", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(codeActionKinds : CodeActionKind.t list option) - ?(documentSelector : DocumentSelector.t option) - ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(codeActionKinds : CodeActionKind.t list option) + ?(documentSelector : DocumentSelector.t option) + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { codeActionKinds; documentSelector; resolveProvider; workDoneProgress } + ;; end module CodeLens = struct type t = { command : Command.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; data : Json.t option [@yojson.option] ; range : Range.t } @@ -18348,7 +18448,7 @@ module CodeLens = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeLens.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let command_field = ref Ppx_yojson_conv_lib.Option.None and data_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None @@ -18357,79 +18457,74 @@ module CodeLens = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "command" -> ( - match Ppx_yojson_conv_lib.( ! ) command_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Command.t_of_yojson - _field_yojson - in - command_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) command_field - , Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | ( command_value - , data_value - , Ppx_yojson_conv_lib.Option.Some range_value ) -> - { command = - (match command_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; data = data_value - ; range = range_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "command" -> + (match Ppx_yojson_conv_lib.( ! ) command_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Command.t_of_yojson _field_yojson + in + command_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) command_field + , Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | command_value, data_value, Ppx_yojson_conv_lib.Option.Some range_value -> + { command = + (match command_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; data = data_value + ; range = range_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -18446,36 +18541,42 @@ module CodeLens = struct | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in let bnds = - if None = v_command then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command - in - let bnd = ("command", arg) in - bnd :: bnds + if None = v_command + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command in + let bnd = "command", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(command : Command.t option) ?(data : Json.t option) - ~(range : Range.t) (() : unit) : t = + let create + ?(command : Command.t option) + ?(data : Json.t option) + ~(range : Range.t) + (() : unit) + : t + = { command; data; range } + ;; end module CodeLensOptions = struct type t = { resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -18484,7 +18585,7 @@ module CodeLensOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeLensOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -18492,108 +18593,112 @@ module CodeLensOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let resolveProvider_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let resolveProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { resolveProvider = v_resolveProvider - ; workDoneProgress = v_workDoneProgress - } -> + | { resolveProvider = v_resolveProvider; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { resolveProvider; workDoneProgress } + ;; end module CodeLensParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -18602,7 +18707,7 @@ module CodeLensParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeLensParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -18611,87 +18716,85 @@ module CodeLensParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -18703,50 +18806,57 @@ module CodeLensParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in ("textDocument", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; textDocument; workDoneToken } + ;; end module CodeLensRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -18755,7 +18865,7 @@ module CodeLensRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CodeLensRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -18764,79 +18874,76 @@ module CodeLensRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( documentSelector_value - , resolveProvider_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, resolveProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -18848,45 +18955,53 @@ module CodeLensRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; resolveProvider; workDoneProgress } + ;; end module Color = struct @@ -18903,7 +19018,7 @@ module Color = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Color.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let alpha_field = ref Ppx_yojson_conv_lib.Option.None and blue_field = ref Ppx_yojson_conv_lib.Option.None and green_field = ref Ppx_yojson_conv_lib.Option.None @@ -18913,94 +19028,93 @@ module Color = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "alpha" -> ( - match Ppx_yojson_conv_lib.( ! ) alpha_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - alpha_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "blue" -> ( - match Ppx_yojson_conv_lib.( ! ) blue_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - blue_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "green" -> ( - match Ppx_yojson_conv_lib.( ! ) green_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - green_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "red" -> ( - match Ppx_yojson_conv_lib.( ! ) red_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - red_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) alpha_field - , Ppx_yojson_conv_lib.( ! ) blue_field - , Ppx_yojson_conv_lib.( ! ) green_field - , Ppx_yojson_conv_lib.( ! ) red_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some alpha_value - , Ppx_yojson_conv_lib.Option.Some blue_value - , Ppx_yojson_conv_lib.Option.Some green_value - , Ppx_yojson_conv_lib.Option.Some red_value ) -> - { alpha = alpha_value - ; blue = blue_value - ; green = green_value - ; red = red_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) alpha_field) - Ppx_yojson_conv_lib.Option.None - , "alpha" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) blue_field) - Ppx_yojson_conv_lib.Option.None - , "blue" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) green_field) - Ppx_yojson_conv_lib.Option.None - , "green" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) red_field) - Ppx_yojson_conv_lib.Option.None - , "red" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "alpha" -> + (match Ppx_yojson_conv_lib.( ! ) alpha_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + alpha_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "blue" -> + (match Ppx_yojson_conv_lib.( ! ) blue_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + blue_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "green" -> + (match Ppx_yojson_conv_lib.( ! ) green_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + green_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "red" -> + (match Ppx_yojson_conv_lib.( ! ) red_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + red_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) alpha_field + , Ppx_yojson_conv_lib.( ! ) blue_field + , Ppx_yojson_conv_lib.( ! ) green_field + , Ppx_yojson_conv_lib.( ! ) red_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some alpha_value + , Ppx_yojson_conv_lib.Option.Some blue_value + , Ppx_yojson_conv_lib.Option.Some green_value + , Ppx_yojson_conv_lib.Option.Some red_value ) -> + { alpha = alpha_value + ; blue = blue_value + ; green = green_value + ; red = red_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) alpha_field) + Ppx_yojson_conv_lib.Option.None + , "alpha" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) blue_field) + Ppx_yojson_conv_lib.Option.None + , "blue" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) green_field) + Ppx_yojson_conv_lib.Option.None + , "green" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) red_field) + Ppx_yojson_conv_lib.Option.None + , "red" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -19025,7 +19139,8 @@ module Color = struct ("alpha", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -19033,6 +19148,7 @@ module Color = struct let create ~(alpha : int) ~(blue : int) ~(green : int) ~(red : int) : t = { alpha; blue; green; red } + ;; end module ColorInformation = struct @@ -19047,7 +19163,7 @@ module ColorInformation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ColorInformation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let color_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -19055,64 +19171,63 @@ module ColorInformation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "color" -> ( - match Ppx_yojson_conv_lib.( ! ) color_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Color.t_of_yojson _field_yojson in - color_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "color" -> + (match Ppx_yojson_conv_lib.( ! ) color_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Color.t_of_yojson _field_yojson in + color_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) color_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some color_value - , Ppx_yojson_conv_lib.Option.Some range_value ) -> - { color = color_value; range = range_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) color_field) - Ppx_yojson_conv_lib.Option.None - , "color" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) color_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some color_value + , Ppx_yojson_conv_lib.Option.Some range_value ) -> + { color = color_value; range = range_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) color_field) + Ppx_yojson_conv_lib.Option.None + , "color" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -19129,7 +19244,8 @@ module ColorInformation = struct ("color", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -19141,10 +19257,10 @@ end module ColorPresentation = struct type t = { additionalTextEdits : TextEdit.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; label : string ; textEdit : TextEdit.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -19153,7 +19269,7 @@ module ColorPresentation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ColorPresentation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let additionalTextEdits_field = ref Ppx_yojson_conv_lib.Option.None and label_field = ref Ppx_yojson_conv_lib.Option.None and textEdit_field = ref Ppx_yojson_conv_lib.Option.None @@ -19162,87 +19278,83 @@ module ColorPresentation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "additionalTextEdits" -> ( - match Ppx_yojson_conv_lib.( ! ) additionalTextEdits_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson TextEdit.t_of_yojson) - _field_yojson - in - additionalTextEdits_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textEdit" -> ( - match Ppx_yojson_conv_lib.( ! ) textEdit_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - TextEdit.t_of_yojson - _field_yojson - in - textEdit_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) additionalTextEdits_field - , Ppx_yojson_conv_lib.( ! ) label_field - , Ppx_yojson_conv_lib.( ! ) textEdit_field ) - with - | ( additionalTextEdits_value - , Ppx_yojson_conv_lib.Option.Some label_value - , textEdit_value ) -> - { additionalTextEdits = - (match additionalTextEdits_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; label = label_value - ; textEdit = - (match textEdit_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) label_field) - Ppx_yojson_conv_lib.Option.None - , "label" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "additionalTextEdits" -> + (match Ppx_yojson_conv_lib.( ! ) additionalTextEdits_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson TextEdit.t_of_yojson) + _field_yojson + in + additionalTextEdits_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textEdit" -> + (match Ppx_yojson_conv_lib.( ! ) textEdit_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson TextEdit.t_of_yojson _field_yojson + in + textEdit_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) additionalTextEdits_field + , Ppx_yojson_conv_lib.( ! ) label_field + , Ppx_yojson_conv_lib.( ! ) textEdit_field ) + with + | ( additionalTextEdits_value + , Ppx_yojson_conv_lib.Option.Some label_value + , textEdit_value ) -> + { additionalTextEdits = + (match additionalTextEdits_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; label = label_value + ; textEdit = + (match textEdit_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) label_field) + Ppx_yojson_conv_lib.Option.None + , "label" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -19254,50 +19366,56 @@ module ColorPresentation = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_textEdit then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t TextEdit.yojson_of_t) v_textEdit - in - let bnd = ("textEdit", arg) in - bnd :: bnds + if None = v_textEdit + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t TextEdit.yojson_of_t) v_textEdit in + let bnd = "textEdit", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_label in ("label", arg) :: bnds in let bnds = - if None = v_additionalTextEdits then bnds - else + if None = v_additionalTextEdits + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list TextEdit.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list TextEdit.yojson_of_t)) v_additionalTextEdits in - let bnd = ("additionalTextEdits", arg) in - bnd :: bnds + let bnd = "additionalTextEdits", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(additionalTextEdits : TextEdit.t list option) ~(label : string) - ?(textEdit : TextEdit.t option) (() : unit) : t = + let create + ?(additionalTextEdits : TextEdit.t list option) + ~(label : string) + ?(textEdit : TextEdit.t option) + (() : unit) + : t + = { additionalTextEdits; label; textEdit } + ;; end module ColorPresentationParams = struct type t = { color : Color.t ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; range : Range.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -19306,7 +19424,7 @@ module ColorPresentationParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ColorPresentationParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let color_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None @@ -19317,115 +19435,113 @@ module ColorPresentationParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "color" -> ( - match Ppx_yojson_conv_lib.( ! ) color_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Color.t_of_yojson _field_yojson in - color_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) color_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some color_value - , partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { color = color_value - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; range = range_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "color" -> + (match Ppx_yojson_conv_lib.( ! ) color_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Color.t_of_yojson _field_yojson in + color_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) color_field) - Ppx_yojson_conv_lib.Option.None - , "color" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) color_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some color_value + , partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { color = color_value + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; range = range_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) color_field) + Ppx_yojson_conv_lib.Option.None + , "color" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -19439,14 +19555,14 @@ module ColorPresentationParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -19457,36 +19573,45 @@ module ColorPresentationParams = struct ("range", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = let arg = Color.yojson_of_t v_color in ("color", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(color : Color.t) ?(partialResultToken : ProgressToken.t option) - ~(range : Range.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(color : Color.t) + ?(partialResultToken : ProgressToken.t option) + ~(range : Range.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { color; partialResultToken; range; textDocument; workDoneToken } + ;; end module CompletionContext = struct type t = { triggerCharacter : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; triggerKind : CompletionTriggerKind.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -19496,7 +19621,7 @@ module CompletionContext = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionContext.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let triggerCharacter_field = ref Ppx_yojson_conv_lib.Option.None and triggerKind_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -19504,67 +19629,66 @@ module CompletionContext = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "triggerCharacter" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerCharacter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - triggerCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerKind" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = CompletionTriggerKind.t_of_yojson _field_yojson in - triggerKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "triggerCharacter" -> + (match Ppx_yojson_conv_lib.( ! ) triggerCharacter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + triggerCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerKind" -> + (match Ppx_yojson_conv_lib.( ! ) triggerKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = CompletionTriggerKind.t_of_yojson _field_yojson in + triggerKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) triggerCharacter_field - , Ppx_yojson_conv_lib.( ! ) triggerKind_field ) - with - | ( triggerCharacter_value - , Ppx_yojson_conv_lib.Option.Some triggerKind_value ) -> - { triggerCharacter = - (match triggerCharacter_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; triggerKind = triggerKind_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) triggerKind_field) - Ppx_yojson_conv_lib.Option.None - , "triggerKind" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) triggerCharacter_field + , Ppx_yojson_conv_lib.( ! ) triggerKind_field ) + with + | triggerCharacter_value, Ppx_yojson_conv_lib.Option.Some triggerKind_value + -> + { triggerCharacter = + (match triggerCharacter_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; triggerKind = triggerKind_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) triggerKind_field) + Ppx_yojson_conv_lib.Option.None + , "triggerKind" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -19577,25 +19701,31 @@ module CompletionContext = struct ("triggerKind", arg) :: bnds in let bnds = - if None = v_triggerCharacter then bnds - else + if None = v_triggerCharacter + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) - v_triggerCharacter + (Json.Nullable_option.yojson_of_t yojson_of_string) v_triggerCharacter in - let bnd = ("triggerCharacter", arg) in - bnd :: bnds + let bnd = "triggerCharacter", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(triggerCharacter : string option) - ~(triggerKind : CompletionTriggerKind.t) (() : unit) : t = + let create + ?(triggerCharacter : string option) + ~(triggerKind : CompletionTriggerKind.t) + (() : unit) + : t + = { triggerCharacter; triggerKind } + ;; end module InsertReplaceEdit = struct @@ -19611,7 +19741,7 @@ module InsertReplaceEdit = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InsertReplaceEdit.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let insert_field = ref Ppx_yojson_conv_lib.Option.None and newText_field = ref Ppx_yojson_conv_lib.Option.None and replace_field = ref Ppx_yojson_conv_lib.Option.None @@ -19620,80 +19750,79 @@ module InsertReplaceEdit = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "insert" -> ( - match Ppx_yojson_conv_lib.( ! ) insert_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - insert_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "newText" -> ( - match Ppx_yojson_conv_lib.( ! ) newText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - newText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "replace" -> ( - match Ppx_yojson_conv_lib.( ! ) replace_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - replace_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "insert" -> + (match Ppx_yojson_conv_lib.( ! ) insert_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + insert_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "newText" -> + (match Ppx_yojson_conv_lib.( ! ) newText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + newText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "replace" -> + (match Ppx_yojson_conv_lib.( ! ) replace_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + replace_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) insert_field - , Ppx_yojson_conv_lib.( ! ) newText_field - , Ppx_yojson_conv_lib.( ! ) replace_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some insert_value - , Ppx_yojson_conv_lib.Option.Some newText_value - , Ppx_yojson_conv_lib.Option.Some replace_value ) -> - { insert = insert_value - ; newText = newText_value - ; replace = replace_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) insert_field) - Ppx_yojson_conv_lib.Option.None - , "insert" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) newText_field) - Ppx_yojson_conv_lib.Option.None - , "newText" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) replace_field) - Ppx_yojson_conv_lib.Option.None - , "replace" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) insert_field + , Ppx_yojson_conv_lib.( ! ) newText_field + , Ppx_yojson_conv_lib.( ! ) replace_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some insert_value + , Ppx_yojson_conv_lib.Option.Some newText_value + , Ppx_yojson_conv_lib.Option.Some replace_value ) -> + { insert = insert_value + ; newText = newText_value + ; replace = replace_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) insert_field) + Ppx_yojson_conv_lib.Option.None + , "insert" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) newText_field) + Ppx_yojson_conv_lib.Option.None + , "newText" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) replace_field) + Ppx_yojson_conv_lib.Option.None + , "replace" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -19714,7 +19843,8 @@ module InsertReplaceEdit = struct ("insert", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -19722,14 +19852,14 @@ module InsertReplaceEdit = struct let create ~(insert : Range.t) ~(newText : string) ~(replace : Range.t) : t = { insert; newText; replace } + ;; end module CompletionItemLabelDetails = struct type t = { description : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; detail : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; detail : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -19738,7 +19868,7 @@ module CompletionItemLabelDetails = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionItemLabelDetails.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let description_field = ref Ppx_yojson_conv_lib.Option.None and detail_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -19746,61 +19876,60 @@ module CompletionItemLabelDetails = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "description" -> ( - match Ppx_yojson_conv_lib.( ! ) description_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - description_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "detail" -> ( - match Ppx_yojson_conv_lib.( ! ) detail_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - detail_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "description" -> + (match Ppx_yojson_conv_lib.( ! ) description_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + description_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "detail" -> + (match Ppx_yojson_conv_lib.( ! ) detail_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + detail_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let description_value, detail_value = - ( Ppx_yojson_conv_lib.( ! ) description_field - , Ppx_yojson_conv_lib.( ! ) detail_field ) - in - { description = - (match description_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; detail = - (match detail_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let description_value, detail_value = + ( Ppx_yojson_conv_lib.( ! ) description_field + , Ppx_yojson_conv_lib.( ! ) detail_field ) + in + { description = + (match description_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; detail = + (match detail_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -19809,33 +19938,32 @@ module CompletionItemLabelDetails = struct | { description = v_description; detail = v_detail } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_detail then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail - in - let bnd = ("detail", arg) in - bnd :: bnds + if None = v_detail + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail in + let bnd = "detail", arg in + bnd :: bnds) in let bnds = - if None = v_description then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_description - in - let bnd = ("description", arg) in - bnd :: bnds + if None = v_description + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_description in + let bnd = "description", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(description : string option) ?(detail : string option) - (() : unit) : t = + let create ?(description : string option) ?(detail : string option) (() : unit) : t = { description; detail } + ;; end module CompletionItem = struct @@ -19852,12 +19980,13 @@ module CompletionItem = struct "documentation_pvar" [ (fun json -> `MarkupContent (MarkupContent.t_of_yojson json)) ] json + ;; - let yojson_of_documentation_pvar (documentation_pvar : documentation_pvar) : - Json.t = + let yojson_of_documentation_pvar (documentation_pvar : documentation_pvar) : Json.t = match documentation_pvar with | `String j -> `String j | `MarkupContent s -> MarkupContent.yojson_of_t s + ;; type textEdit_pvar = [ `TextEdit of TextEdit.t @@ -19871,49 +20000,49 @@ module CompletionItem = struct ; (fun json -> `InsertReplaceEdit (InsertReplaceEdit.t_of_yojson json)) ] json + ;; let yojson_of_textEdit_pvar (textEdit_pvar : textEdit_pvar) : Json.t = match textEdit_pvar with | `TextEdit s -> TextEdit.yojson_of_t s | `InsertReplaceEdit s -> InsertReplaceEdit.yojson_of_t s + ;; type t = { additionalTextEdits : TextEdit.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; command : Command.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; commitCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; data : Json.t option [@yojson.option] ; deprecated : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; detail : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; detail : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; documentation : documentation_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; filterText : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertText : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertTextFormat : InsertTextFormat.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertTextMode : InsertTextMode.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; kind : CompletionItemKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; label : string ; labelDetails : CompletionItemLabelDetails.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; preselect : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; preselect : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; sortText : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tags : CompletionItemTag.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textEdit : textEdit_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textEditText : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -19922,7 +20051,7 @@ module CompletionItem = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionItem.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let additionalTextEdits_field = ref Ppx_yojson_conv_lib.Option.None and command_field = ref Ppx_yojson_conv_lib.Option.None and commitCharacters_field = ref Ppx_yojson_conv_lib.Option.None @@ -19947,338 +20076,332 @@ module CompletionItem = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "additionalTextEdits" -> ( - match Ppx_yojson_conv_lib.( ! ) additionalTextEdits_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson TextEdit.t_of_yojson) - _field_yojson - in - additionalTextEdits_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "command" -> ( - match Ppx_yojson_conv_lib.( ! ) command_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Command.t_of_yojson - _field_yojson - in - command_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "commitCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) commitCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - commitCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "deprecated" -> ( - match Ppx_yojson_conv_lib.( ! ) deprecated_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - deprecated_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "detail" -> ( - match Ppx_yojson_conv_lib.( ! ) detail_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - detail_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentation" -> ( - match Ppx_yojson_conv_lib.( ! ) documentation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - documentation_pvar_of_yojson - _field_yojson - in - documentation_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "filterText" -> ( - match Ppx_yojson_conv_lib.( ! ) filterText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - filterText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertText" -> ( - match Ppx_yojson_conv_lib.( ! ) insertText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - insertText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertTextFormat" -> ( - match Ppx_yojson_conv_lib.( ! ) insertTextFormat_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InsertTextFormat.t_of_yojson - _field_yojson - in - insertTextFormat_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertTextMode" -> ( - match Ppx_yojson_conv_lib.( ! ) insertTextMode_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InsertTextMode.t_of_yojson - _field_yojson - in - insertTextMode_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CompletionItemKind.t_of_yojson - _field_yojson - in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "labelDetails" -> ( - match Ppx_yojson_conv_lib.( ! ) labelDetails_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CompletionItemLabelDetails.t_of_yojson - _field_yojson - in - labelDetails_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "preselect" -> ( - match Ppx_yojson_conv_lib.( ! ) preselect_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - preselect_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "sortText" -> ( - match Ppx_yojson_conv_lib.( ! ) sortText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - sortText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tags" -> ( - match Ppx_yojson_conv_lib.( ! ) tags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson CompletionItemTag.t_of_yojson) - _field_yojson - in - tags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textEdit" -> ( - match Ppx_yojson_conv_lib.( ! ) textEdit_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - textEdit_pvar_of_yojson - _field_yojson - in - textEdit_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textEditText" -> ( - match Ppx_yojson_conv_lib.( ! ) textEditText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - textEditText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) additionalTextEdits_field - , Ppx_yojson_conv_lib.( ! ) command_field - , Ppx_yojson_conv_lib.( ! ) commitCharacters_field - , Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) deprecated_field - , Ppx_yojson_conv_lib.( ! ) detail_field - , Ppx_yojson_conv_lib.( ! ) documentation_field - , Ppx_yojson_conv_lib.( ! ) filterText_field - , Ppx_yojson_conv_lib.( ! ) insertText_field - , Ppx_yojson_conv_lib.( ! ) insertTextFormat_field - , Ppx_yojson_conv_lib.( ! ) insertTextMode_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) label_field - , Ppx_yojson_conv_lib.( ! ) labelDetails_field - , Ppx_yojson_conv_lib.( ! ) preselect_field - , Ppx_yojson_conv_lib.( ! ) sortText_field - , Ppx_yojson_conv_lib.( ! ) tags_field - , Ppx_yojson_conv_lib.( ! ) textEdit_field - , Ppx_yojson_conv_lib.( ! ) textEditText_field ) - with - | ( additionalTextEdits_value - , command_value - , commitCharacters_value - , data_value - , deprecated_value - , detail_value - , documentation_value - , filterText_value - , insertText_value - , insertTextFormat_value - , insertTextMode_value - , kind_value - , Ppx_yojson_conv_lib.Option.Some label_value - , labelDetails_value - , preselect_value - , sortText_value - , tags_value - , textEdit_value - , textEditText_value ) -> - { additionalTextEdits = - (match additionalTextEdits_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; command = - (match command_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; commitCharacters = - (match commitCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; data = data_value - ; deprecated = - (match deprecated_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; detail = - (match detail_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentation = - (match documentation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; filterText = - (match filterText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertText = - (match insertText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertTextFormat = - (match insertTextFormat_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertTextMode = - (match insertTextMode_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = - (match kind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; label = label_value - ; labelDetails = - (match labelDetails_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; preselect = - (match preselect_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; sortText = - (match sortText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tags = - (match tags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textEdit = - (match textEdit_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textEditText = - (match textEditText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) label_field) - Ppx_yojson_conv_lib.Option.None - , "label" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "additionalTextEdits" -> + (match Ppx_yojson_conv_lib.( ! ) additionalTextEdits_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson TextEdit.t_of_yojson) + _field_yojson + in + additionalTextEdits_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "command" -> + (match Ppx_yojson_conv_lib.( ! ) command_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Command.t_of_yojson _field_yojson + in + command_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "commitCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) commitCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + commitCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "deprecated" -> + (match Ppx_yojson_conv_lib.( ! ) deprecated_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + deprecated_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "detail" -> + (match Ppx_yojson_conv_lib.( ! ) detail_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + detail_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentation" -> + (match Ppx_yojson_conv_lib.( ! ) documentation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + documentation_pvar_of_yojson + _field_yojson + in + documentation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "filterText" -> + (match Ppx_yojson_conv_lib.( ! ) filterText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + filterText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertText" -> + (match Ppx_yojson_conv_lib.( ! ) insertText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + insertText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertTextFormat" -> + (match Ppx_yojson_conv_lib.( ! ) insertTextFormat_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InsertTextFormat.t_of_yojson + _field_yojson + in + insertTextFormat_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertTextMode" -> + (match Ppx_yojson_conv_lib.( ! ) insertTextMode_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InsertTextMode.t_of_yojson + _field_yojson + in + insertTextMode_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CompletionItemKind.t_of_yojson + _field_yojson + in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "labelDetails" -> + (match Ppx_yojson_conv_lib.( ! ) labelDetails_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CompletionItemLabelDetails.t_of_yojson + _field_yojson + in + labelDetails_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "preselect" -> + (match Ppx_yojson_conv_lib.( ! ) preselect_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + preselect_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "sortText" -> + (match Ppx_yojson_conv_lib.( ! ) sortText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + sortText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tags" -> + (match Ppx_yojson_conv_lib.( ! ) tags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson CompletionItemTag.t_of_yojson) + _field_yojson + in + tags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textEdit" -> + (match Ppx_yojson_conv_lib.( ! ) textEdit_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson textEdit_pvar_of_yojson _field_yojson + in + textEdit_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textEditText" -> + (match Ppx_yojson_conv_lib.( ! ) textEditText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + textEditText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) additionalTextEdits_field + , Ppx_yojson_conv_lib.( ! ) command_field + , Ppx_yojson_conv_lib.( ! ) commitCharacters_field + , Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) deprecated_field + , Ppx_yojson_conv_lib.( ! ) detail_field + , Ppx_yojson_conv_lib.( ! ) documentation_field + , Ppx_yojson_conv_lib.( ! ) filterText_field + , Ppx_yojson_conv_lib.( ! ) insertText_field + , Ppx_yojson_conv_lib.( ! ) insertTextFormat_field + , Ppx_yojson_conv_lib.( ! ) insertTextMode_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) label_field + , Ppx_yojson_conv_lib.( ! ) labelDetails_field + , Ppx_yojson_conv_lib.( ! ) preselect_field + , Ppx_yojson_conv_lib.( ! ) sortText_field + , Ppx_yojson_conv_lib.( ! ) tags_field + , Ppx_yojson_conv_lib.( ! ) textEdit_field + , Ppx_yojson_conv_lib.( ! ) textEditText_field ) + with + | ( additionalTextEdits_value + , command_value + , commitCharacters_value + , data_value + , deprecated_value + , detail_value + , documentation_value + , filterText_value + , insertText_value + , insertTextFormat_value + , insertTextMode_value + , kind_value + , Ppx_yojson_conv_lib.Option.Some label_value + , labelDetails_value + , preselect_value + , sortText_value + , tags_value + , textEdit_value + , textEditText_value ) -> + { additionalTextEdits = + (match additionalTextEdits_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; command = + (match command_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; commitCharacters = + (match commitCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; data = data_value + ; deprecated = + (match deprecated_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; detail = + (match detail_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentation = + (match documentation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; filterText = + (match filterText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertText = + (match insertText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertTextFormat = + (match insertTextFormat_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertTextMode = + (match insertTextMode_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = + (match kind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; label = label_value + ; labelDetails = + (match labelDetails_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; preselect = + (match preselect_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; sortText = + (match sortText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tags = + (match tags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textEdit = + (match textEdit_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textEditText = + (match textEditText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) label_field) + Ppx_yojson_conv_lib.Option.None + , "label" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -20306,203 +20429,210 @@ module CompletionItem = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_textEditText then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_textEditText - in - let bnd = ("textEditText", arg) in - bnd :: bnds + if None = v_textEditText + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_textEditText in + let bnd = "textEditText", arg in + bnd :: bnds) in let bnds = - if None = v_textEdit then bnds - else + if None = v_textEdit + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_textEdit_pvar) - v_textEdit + (Json.Nullable_option.yojson_of_t yojson_of_textEdit_pvar) v_textEdit in - let bnd = ("textEdit", arg) in - bnd :: bnds + let bnd = "textEdit", arg in + bnd :: bnds) in let bnds = - if None = v_tags then bnds - else + if None = v_tags + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list CompletionItemTag.yojson_of_t)) v_tags in - let bnd = ("tags", arg) in - bnd :: bnds + let bnd = "tags", arg in + bnd :: bnds) in let bnds = - if None = v_sortText then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_sortText - in - let bnd = ("sortText", arg) in - bnd :: bnds + if None = v_sortText + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_sortText in + let bnd = "sortText", arg in + bnd :: bnds) in let bnds = - if None = v_preselect then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_preselect - in - let bnd = ("preselect", arg) in - bnd :: bnds + if None = v_preselect + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_preselect in + let bnd = "preselect", arg in + bnd :: bnds) in let bnds = - if None = v_labelDetails then bnds - else + if None = v_labelDetails + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - CompletionItemLabelDetails.yojson_of_t) + (Json.Nullable_option.yojson_of_t CompletionItemLabelDetails.yojson_of_t) v_labelDetails in - let bnd = ("labelDetails", arg) in - bnd :: bnds + let bnd = "labelDetails", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_label in ("label", arg) :: bnds in let bnds = - if None = v_kind then bnds - else + if None = v_kind + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t CompletionItemKind.yojson_of_t) - v_kind + (Json.Nullable_option.yojson_of_t CompletionItemKind.yojson_of_t) v_kind in - let bnd = ("kind", arg) in - bnd :: bnds + let bnd = "kind", arg in + bnd :: bnds) in let bnds = - if None = v_insertTextMode then bnds - else + if None = v_insertTextMode + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InsertTextMode.yojson_of_t) v_insertTextMode in - let bnd = ("insertTextMode", arg) in - bnd :: bnds + let bnd = "insertTextMode", arg in + bnd :: bnds) in let bnds = - if None = v_insertTextFormat then bnds - else + if None = v_insertTextFormat + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InsertTextFormat.yojson_of_t) v_insertTextFormat in - let bnd = ("insertTextFormat", arg) in - bnd :: bnds + let bnd = "insertTextFormat", arg in + bnd :: bnds) in let bnds = - if None = v_insertText then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_insertText - in - let bnd = ("insertText", arg) in - bnd :: bnds + if None = v_insertText + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_insertText in + let bnd = "insertText", arg in + bnd :: bnds) in let bnds = - if None = v_filterText then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_filterText - in - let bnd = ("filterText", arg) in - bnd :: bnds + if None = v_filterText + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_filterText in + let bnd = "filterText", arg in + bnd :: bnds) in let bnds = - if None = v_documentation then bnds - else + if None = v_documentation + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_documentation_pvar) v_documentation in - let bnd = ("documentation", arg) in - bnd :: bnds + let bnd = "documentation", arg in + bnd :: bnds) in let bnds = - if None = v_detail then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail - in - let bnd = ("detail", arg) in - bnd :: bnds + if None = v_detail + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail in + let bnd = "detail", arg in + bnd :: bnds) in let bnds = - if None = v_deprecated then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_deprecated - in - let bnd = ("deprecated", arg) in - bnd :: bnds + if None = v_deprecated + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_deprecated in + let bnd = "deprecated", arg in + bnd :: bnds) in let bnds = match v_data with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in let bnds = - if None = v_commitCharacters then bnds - else + if None = v_commitCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_commitCharacters in - let bnd = ("commitCharacters", arg) in - bnd :: bnds + let bnd = "commitCharacters", arg in + bnd :: bnds) in let bnds = - if None = v_command then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command - in - let bnd = ("command", arg) in - bnd :: bnds + if None = v_command + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command in + let bnd = "command", arg in + bnd :: bnds) in let bnds = - if None = v_additionalTextEdits then bnds - else + if None = v_additionalTextEdits + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list TextEdit.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list TextEdit.yojson_of_t)) v_additionalTextEdits in - let bnd = ("additionalTextEdits", arg) in - bnd :: bnds + let bnd = "additionalTextEdits", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(additionalTextEdits : TextEdit.t list option) - ?(command : Command.t option) ?(commitCharacters : string list option) - ?(data : Json.t option) ?(deprecated : bool option) - ?(detail : string option) ?(documentation : documentation_pvar option) - ?(filterText : string option) ?(insertText : string option) - ?(insertTextFormat : InsertTextFormat.t option) - ?(insertTextMode : InsertTextMode.t option) - ?(kind : CompletionItemKind.t option) ~(label : string) - ?(labelDetails : CompletionItemLabelDetails.t option) - ?(preselect : bool option) ?(sortText : string option) - ?(tags : CompletionItemTag.t list option) - ?(textEdit : textEdit_pvar option) ?(textEditText : string option) - (() : unit) : t = + let create + ?(additionalTextEdits : TextEdit.t list option) + ?(command : Command.t option) + ?(commitCharacters : string list option) + ?(data : Json.t option) + ?(deprecated : bool option) + ?(detail : string option) + ?(documentation : documentation_pvar option) + ?(filterText : string option) + ?(insertText : string option) + ?(insertTextFormat : InsertTextFormat.t option) + ?(insertTextMode : InsertTextMode.t option) + ?(kind : CompletionItemKind.t option) + ~(label : string) + ?(labelDetails : CompletionItemLabelDetails.t option) + ?(preselect : bool option) + ?(sortText : string option) + ?(tags : CompletionItemTag.t list option) + ?(textEdit : textEdit_pvar option) + ?(textEditText : string option) + (() : unit) + : t + = { additionalTextEdits ; command ; commitCharacters @@ -20523,6 +20653,7 @@ module CompletionItem = struct ; textEdit ; textEditText } + ;; end module CompletionList = struct @@ -20537,7 +20668,7 @@ module CompletionList = struct let editRange_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionList.editRange" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let insert_field = ref Ppx_yojson_conv_lib.Option.None and replace_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -20545,64 +20676,63 @@ module CompletionList = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "insert" -> ( - match Ppx_yojson_conv_lib.( ! ) insert_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - insert_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "replace" -> ( - match Ppx_yojson_conv_lib.( ! ) replace_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - replace_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "insert" -> + (match Ppx_yojson_conv_lib.( ! ) insert_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + insert_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "replace" -> + (match Ppx_yojson_conv_lib.( ! ) replace_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + replace_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) insert_field - , Ppx_yojson_conv_lib.( ! ) replace_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some insert_value - , Ppx_yojson_conv_lib.Option.Some replace_value ) -> - { insert = insert_value; replace = replace_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) insert_field) - Ppx_yojson_conv_lib.Option.None - , "insert" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) replace_field) - Ppx_yojson_conv_lib.Option.None - , "replace" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> editRange) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) insert_field + , Ppx_yojson_conv_lib.( ! ) replace_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some insert_value + , Ppx_yojson_conv_lib.Option.Some replace_value ) -> + { insert = insert_value; replace = replace_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) insert_field) + Ppx_yojson_conv_lib.Option.None + , "insert" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) replace_field) + Ppx_yojson_conv_lib.Option.None + , "replace" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> editRange) + ;; let _ = editRange_of_yojson @@ -20619,7 +20749,8 @@ module CompletionList = struct ("insert", arg) :: bnds in `Assoc bnds - : editRange -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : editRange -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_editRange @@ -20627,6 +20758,7 @@ module CompletionList = struct let create_editRange ~(insert : Range.t) ~(replace : Range.t) : editRange = { insert; replace } + ;; type editRange_pvar = [ `Range of Range.t @@ -20640,21 +20772,23 @@ module CompletionList = struct ; (fun json -> `EditRange (editRange_of_yojson json)) ] json + ;; let yojson_of_editRange_pvar (editRange_pvar : editRange_pvar) : Json.t = match editRange_pvar with | `Range s -> Range.yojson_of_t s | `EditRange s -> yojson_of_editRange s + ;; type itemDefaults = { commitCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; editRange : editRange_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertTextFormat : InsertTextFormat.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertTextMode : InsertTextMode.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; data : Json.t option [@yojson.option] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -20664,7 +20798,7 @@ module CompletionList = struct let itemDefaults_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionList.itemDefaults" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let commitCharacters_field = ref Ppx_yojson_conv_lib.Option.None and editRange_field = ref Ppx_yojson_conv_lib.Option.None and insertTextFormat_field = ref Ppx_yojson_conv_lib.Option.None @@ -20675,110 +20809,108 @@ module CompletionList = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "commitCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) commitCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - commitCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "editRange" -> ( - match Ppx_yojson_conv_lib.( ! ) editRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - editRange_pvar_of_yojson - _field_yojson - in - editRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertTextFormat" -> ( - match Ppx_yojson_conv_lib.( ! ) insertTextFormat_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InsertTextFormat.t_of_yojson - _field_yojson - in - insertTextFormat_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertTextMode" -> ( - match Ppx_yojson_conv_lib.( ! ) insertTextMode_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InsertTextMode.t_of_yojson - _field_yojson - in - insertTextMode_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( commitCharacters_value - , editRange_value - , insertTextFormat_value - , insertTextMode_value - , data_value ) = - ( Ppx_yojson_conv_lib.( ! ) commitCharacters_field - , Ppx_yojson_conv_lib.( ! ) editRange_field - , Ppx_yojson_conv_lib.( ! ) insertTextFormat_field - , Ppx_yojson_conv_lib.( ! ) insertTextMode_field - , Ppx_yojson_conv_lib.( ! ) data_field ) - in - { commitCharacters = - (match commitCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; editRange = - (match editRange_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertTextFormat = - (match insertTextFormat_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertTextMode = - (match insertTextMode_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; data = data_value - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> itemDefaults) + | "commitCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) commitCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + commitCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "editRange" -> + (match Ppx_yojson_conv_lib.( ! ) editRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson editRange_pvar_of_yojson _field_yojson + in + editRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertTextFormat" -> + (match Ppx_yojson_conv_lib.( ! ) insertTextFormat_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InsertTextFormat.t_of_yojson + _field_yojson + in + insertTextFormat_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertTextMode" -> + (match Ppx_yojson_conv_lib.( ! ) insertTextMode_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InsertTextMode.t_of_yojson + _field_yojson + in + insertTextMode_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( commitCharacters_value + , editRange_value + , insertTextFormat_value + , insertTextMode_value + , data_value ) + = + ( Ppx_yojson_conv_lib.( ! ) commitCharacters_field + , Ppx_yojson_conv_lib.( ! ) editRange_field + , Ppx_yojson_conv_lib.( ! ) insertTextFormat_field + , Ppx_yojson_conv_lib.( ! ) insertTextMode_field + , Ppx_yojson_conv_lib.( ! ) data_field ) + in + { commitCharacters = + (match commitCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; editRange = + (match editRange_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertTextFormat = + (match insertTextFormat_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertTextMode = + (match insertTextMode_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; data = data_value + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> itemDefaults) + ;; let _ = itemDefaults_of_yojson @@ -20796,68 +20928,76 @@ module CompletionList = struct | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in let bnds = - if None = v_insertTextMode then bnds - else + if None = v_insertTextMode + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InsertTextMode.yojson_of_t) v_insertTextMode in - let bnd = ("insertTextMode", arg) in - bnd :: bnds + let bnd = "insertTextMode", arg in + bnd :: bnds) in let bnds = - if None = v_insertTextFormat then bnds - else + if None = v_insertTextFormat + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InsertTextFormat.yojson_of_t) v_insertTextFormat in - let bnd = ("insertTextFormat", arg) in - bnd :: bnds + let bnd = "insertTextFormat", arg in + bnd :: bnds) in let bnds = - if None = v_editRange then bnds - else + if None = v_editRange + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_editRange_pvar) - v_editRange + (Json.Nullable_option.yojson_of_t yojson_of_editRange_pvar) v_editRange in - let bnd = ("editRange", arg) in - bnd :: bnds + let bnd = "editRange", arg in + bnd :: bnds) in let bnds = - if None = v_commitCharacters then bnds - else + if None = v_commitCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_commitCharacters in - let bnd = ("commitCharacters", arg) in - bnd :: bnds + let bnd = "commitCharacters", arg in + bnd :: bnds) in `Assoc bnds - : itemDefaults -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : itemDefaults -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_itemDefaults [@@@end] - let create_itemDefaults ?(commitCharacters : string list option) - ?(editRange : editRange_pvar option) - ?(insertTextFormat : InsertTextFormat.t option) - ?(insertTextMode : InsertTextMode.t option) ?(data : Json.t option) - (() : unit) : itemDefaults = + let create_itemDefaults + ?(commitCharacters : string list option) + ?(editRange : editRange_pvar option) + ?(insertTextFormat : InsertTextFormat.t option) + ?(insertTextMode : InsertTextMode.t option) + ?(data : Json.t option) + (() : unit) + : itemDefaults + = { commitCharacters; editRange; insertTextFormat; insertTextMode; data } + ;; type t = { isIncomplete : bool ; itemDefaults : itemDefaults Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; items : CompletionItem.t list } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -20867,7 +21007,7 @@ module CompletionList = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionList.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let isIncomplete_field = ref Ppx_yojson_conv_lib.Option.None and itemDefaults_field = ref Ppx_yojson_conv_lib.Option.None and items_field = ref Ppx_yojson_conv_lib.Option.None @@ -20876,129 +21016,129 @@ module CompletionList = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "isIncomplete" -> ( - match Ppx_yojson_conv_lib.( ! ) isIncomplete_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - isIncomplete_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "itemDefaults" -> ( - match Ppx_yojson_conv_lib.( ! ) itemDefaults_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - itemDefaults_of_yojson - _field_yojson - in - itemDefaults_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "items" -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson CompletionItem.t_of_yojson _field_yojson - in - items_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) isIncomplete_field - , Ppx_yojson_conv_lib.( ! ) itemDefaults_field - , Ppx_yojson_conv_lib.( ! ) items_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some isIncomplete_value - , itemDefaults_value - , Ppx_yojson_conv_lib.Option.Some items_value ) -> - { isIncomplete = isIncomplete_value - ; itemDefaults = - (match itemDefaults_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; items = items_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "isIncomplete" -> + (match Ppx_yojson_conv_lib.( ! ) isIncomplete_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + isIncomplete_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "itemDefaults" -> + (match Ppx_yojson_conv_lib.( ! ) itemDefaults_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson itemDefaults_of_yojson _field_yojson + in + itemDefaults_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "items" -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson CompletionItem.t_of_yojson _field_yojson in + items_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) isIncomplete_field) - Ppx_yojson_conv_lib.Option.None - , "isIncomplete" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) items_field) - Ppx_yojson_conv_lib.Option.None - , "items" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { isIncomplete = v_isIncomplete - ; itemDefaults = v_itemDefaults - ; items = v_items - } -> + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) isIncomplete_field + , Ppx_yojson_conv_lib.( ! ) itemDefaults_field + , Ppx_yojson_conv_lib.( ! ) items_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some isIncomplete_value + , itemDefaults_value + , Ppx_yojson_conv_lib.Option.Some items_value ) -> + { isIncomplete = isIncomplete_value + ; itemDefaults = + (match itemDefaults_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; items = items_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) isIncomplete_field) + Ppx_yojson_conv_lib.Option.None + , "isIncomplete" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) items_field) + Ppx_yojson_conv_lib.Option.None + , "items" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { isIncomplete = v_isIncomplete; itemDefaults = v_itemDefaults; items = v_items } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = let arg = yojson_of_list CompletionItem.yojson_of_t v_items in ("items", arg) :: bnds in let bnds = - if None = v_itemDefaults then bnds - else + if None = v_itemDefaults + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_itemDefaults) - v_itemDefaults + (Json.Nullable_option.yojson_of_t yojson_of_itemDefaults) v_itemDefaults in - let bnd = ("itemDefaults", arg) in - bnd :: bnds + let bnd = "itemDefaults", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_bool v_isIncomplete in ("isIncomplete", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(isIncomplete : bool) ?(itemDefaults : itemDefaults option) - ~(items : CompletionItem.t list) (() : unit) : t = + let create + ~(isIncomplete : bool) + ?(itemDefaults : itemDefaults option) + ~(items : CompletionItem.t list) + (() : unit) + : t + = { isIncomplete; itemDefaults; items } + ;; end module CompletionOptions = struct type completionItem = { labelDetailsSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -21007,55 +21147,53 @@ module CompletionOptions = struct let completionItem_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionOptions.completionItem" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let labelDetailsSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "labelDetailsSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - labelDetailsSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "labelDetailsSupport" -> + (match Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + labelDetailsSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let labelDetailsSupport_value = - Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field - in - { labelDetailsSupport = - (match labelDetailsSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionItem) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let labelDetailsSupport_value = + Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field + in + { labelDetailsSupport = + (match labelDetailsSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionItem) + ;; let _ = completionItem_of_yojson @@ -21064,37 +21202,40 @@ module CompletionOptions = struct | { labelDetailsSupport = v_labelDetailsSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_labelDetailsSupport then bnds - else + if None = v_labelDetailsSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_labelDetailsSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_labelDetailsSupport in - let bnd = ("labelDetailsSupport", arg) in - bnd :: bnds + let bnd = "labelDetailsSupport", arg in + bnd :: bnds) in `Assoc bnds - : completionItem -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : completionItem -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_completionItem [@@@end] - let create_completionItem ?(labelDetailsSupport : bool option) (() : unit) : - completionItem = + let create_completionItem ?(labelDetailsSupport : bool option) (() : unit) + : completionItem + = { labelDetailsSupport } + ;; type t = { allCommitCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; completionItem : completionItem Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; triggerCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -21103,7 +21244,7 @@ module CompletionOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let allCommitCharacters_field = ref Ppx_yojson_conv_lib.Option.None and completionItem_field = ref Ppx_yojson_conv_lib.Option.None and resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None @@ -21114,114 +21255,111 @@ module CompletionOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "allCommitCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) allCommitCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - allCommitCharacters_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "completionItem" -> ( - match Ppx_yojson_conv_lib.( ! ) completionItem_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - completionItem_of_yojson - _field_yojson - in - completionItem_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - triggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( allCommitCharacters_value - , completionItem_value - , resolveProvider_value - , triggerCharacters_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) allCommitCharacters_field - , Ppx_yojson_conv_lib.( ! ) completionItem_field - , Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) triggerCharacters_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { allCommitCharacters = - (match allCommitCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; completionItem = - (match completionItem_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; triggerCharacters = - (match triggerCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "allCommitCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) allCommitCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + allCommitCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "completionItem" -> + (match Ppx_yojson_conv_lib.( ! ) completionItem_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson completionItem_of_yojson _field_yojson + in + completionItem_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) triggerCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + triggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( allCommitCharacters_value + , completionItem_value + , resolveProvider_value + , triggerCharacters_value + , workDoneProgress_value ) + = + ( Ppx_yojson_conv_lib.( ! ) allCommitCharacters_field + , Ppx_yojson_conv_lib.( ! ) completionItem_field + , Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) triggerCharacters_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { allCommitCharacters = + (match allCommitCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; completionItem = + (match completionItem_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; triggerCharacters = + (match triggerCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -21235,85 +21373,93 @@ module CompletionOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_triggerCharacters then bnds - else + if None = v_triggerCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_triggerCharacters in - let bnd = ("triggerCharacters", arg) in - bnd :: bnds + let bnd = "triggerCharacters", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in let bnds = - if None = v_completionItem then bnds - else + if None = v_completionItem + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_completionItem) - v_completionItem + (Json.Nullable_option.yojson_of_t yojson_of_completionItem) v_completionItem in - let bnd = ("completionItem", arg) in - bnd :: bnds + let bnd = "completionItem", arg in + bnd :: bnds) in let bnds = - if None = v_allCommitCharacters then bnds - else + if None = v_allCommitCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_allCommitCharacters in - let bnd = ("allCommitCharacters", arg) in - bnd :: bnds + let bnd = "allCommitCharacters", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(allCommitCharacters : string list option) - ?(completionItem : completionItem option) ?(resolveProvider : bool option) - ?(triggerCharacters : string list option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(allCommitCharacters : string list option) + ?(completionItem : completionItem option) + ?(resolveProvider : bool option) + ?(triggerCharacters : string list option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { allCommitCharacters ; completionItem ; resolveProvider ; triggerCharacters ; workDoneProgress } + ;; end module CompletionParams = struct type t = { context : CompletionContext.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -21322,7 +21468,7 @@ module CompletionParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let context_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None @@ -21333,118 +21479,116 @@ module CompletionParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "context" -> ( - match Ppx_yojson_conv_lib.( ! ) context_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CompletionContext.t_of_yojson - _field_yojson - in - context_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) context_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( context_value - , partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { context = - (match context_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "context" -> + (match Ppx_yojson_conv_lib.( ! ) context_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CompletionContext.t_of_yojson + _field_yojson + in + context_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) context_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( context_value + , partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { context = + (match context_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -21458,14 +21602,14 @@ module CompletionParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -21476,102 +21620,106 @@ module CompletionParams = struct ("position", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = - if None = v_context then bnds - else + if None = v_context + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t CompletionContext.yojson_of_t) - v_context + (Json.Nullable_option.yojson_of_t CompletionContext.yojson_of_t) v_context in - let bnd = ("context", arg) in - bnd :: bnds + let bnd = "context", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(context : CompletionContext.t option) - ?(partialResultToken : ProgressToken.t option) ~(position : Position.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(context : CompletionContext.t option) + ?(partialResultToken : ProgressToken.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { context; partialResultToken; position; textDocument; workDoneToken } + ;; end module CompletionRegistrationOptions = struct type completionItem = { labelDetailsSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : completionItem) -> () let completionItem_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.CompletionRegistrationOptions.completionItem" - in + (let _tp_loc = "lsp/src/types.ml.CompletionRegistrationOptions.completionItem" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let labelDetailsSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "labelDetailsSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - labelDetailsSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "labelDetailsSupport" -> + (match Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + labelDetailsSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let labelDetailsSupport_value = - Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field - in - { labelDetailsSupport = - (match labelDetailsSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionItem) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let labelDetailsSupport_value = + Ppx_yojson_conv_lib.( ! ) labelDetailsSupport_field + in + { labelDetailsSupport = + (match labelDetailsSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> completionItem) + ;; let _ = completionItem_of_yojson @@ -21580,39 +21728,42 @@ module CompletionRegistrationOptions = struct | { labelDetailsSupport = v_labelDetailsSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_labelDetailsSupport then bnds - else + if None = v_labelDetailsSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_labelDetailsSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_labelDetailsSupport in - let bnd = ("labelDetailsSupport", arg) in - bnd :: bnds + let bnd = "labelDetailsSupport", arg in + bnd :: bnds) in `Assoc bnds - : completionItem -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : completionItem -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_completionItem [@@@end] - let create_completionItem ?(labelDetailsSupport : bool option) (() : unit) : - completionItem = + let create_completionItem ?(labelDetailsSupport : bool option) (() : unit) + : completionItem + = { labelDetailsSupport } + ;; type t = { allCommitCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; completionItem : completionItem Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; triggerCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -21621,7 +21772,7 @@ module CompletionRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CompletionRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let allCommitCharacters_field = ref Ppx_yojson_conv_lib.Option.None and completionItem_field = ref Ppx_yojson_conv_lib.Option.None and documentSelector_field = ref Ppx_yojson_conv_lib.Option.None @@ -21633,217 +21784,222 @@ module CompletionRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "allCommitCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) allCommitCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - allCommitCharacters_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "completionItem" -> ( - match Ppx_yojson_conv_lib.( ! ) completionItem_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - completionItem_of_yojson - _field_yojson - in - completionItem_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - triggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( allCommitCharacters_value - , completionItem_value - , documentSelector_value - , resolveProvider_value - , triggerCharacters_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) allCommitCharacters_field - , Ppx_yojson_conv_lib.( ! ) completionItem_field - , Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) triggerCharacters_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { allCommitCharacters = - (match allCommitCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; completionItem = - (match completionItem_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; triggerCharacters = - (match triggerCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { allCommitCharacters = v_allCommitCharacters - ; completionItem = v_completionItem - ; documentSelector = v_documentSelector - ; resolveProvider = v_resolveProvider - ; triggerCharacters = v_triggerCharacters - ; workDoneProgress = v_workDoneProgress - } -> - let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in - let bnds = - if None = v_workDoneProgress then bnds - else + | "allCommitCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) allCommitCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + allCommitCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "completionItem" -> + (match Ppx_yojson_conv_lib.( ! ) completionItem_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson completionItem_of_yojson _field_yojson + in + completionItem_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) triggerCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + triggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( allCommitCharacters_value + , completionItem_value + , documentSelector_value + , resolveProvider_value + , triggerCharacters_value + , workDoneProgress_value ) + = + ( Ppx_yojson_conv_lib.( ! ) allCommitCharacters_field + , Ppx_yojson_conv_lib.( ! ) completionItem_field + , Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) triggerCharacters_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { allCommitCharacters = + (match allCommitCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; completionItem = + (match completionItem_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; triggerCharacters = + (match triggerCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { allCommitCharacters = v_allCommitCharacters + ; completionItem = v_completionItem + ; documentSelector = v_documentSelector + ; resolveProvider = v_resolveProvider + ; triggerCharacters = v_triggerCharacters + ; workDoneProgress = v_workDoneProgress + } -> + let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in + let bnds = + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_triggerCharacters then bnds - else + if None = v_triggerCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_triggerCharacters in - let bnd = ("triggerCharacters", arg) in - bnd :: bnds + let bnd = "triggerCharacters", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in let bnds = - if None = v_completionItem then bnds - else + if None = v_completionItem + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_completionItem) - v_completionItem + (Json.Nullable_option.yojson_of_t yojson_of_completionItem) v_completionItem in - let bnd = ("completionItem", arg) in - bnd :: bnds + let bnd = "completionItem", arg in + bnd :: bnds) in let bnds = - if None = v_allCommitCharacters then bnds - else + if None = v_allCommitCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_allCommitCharacters in - let bnd = ("allCommitCharacters", arg) in - bnd :: bnds + let bnd = "allCommitCharacters", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(allCommitCharacters : string list option) - ?(completionItem : completionItem option) - ?(documentSelector : DocumentSelector.t option) - ?(resolveProvider : bool option) ?(triggerCharacters : string list option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(allCommitCharacters : string list option) + ?(completionItem : completionItem option) + ?(documentSelector : DocumentSelector.t option) + ?(resolveProvider : bool option) + ?(triggerCharacters : string list option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { allCommitCharacters ; completionItem ; documentSelector @@ -21851,14 +22007,14 @@ module CompletionRegistrationOptions = struct ; triggerCharacters ; workDoneProgress } + ;; end module ConfigurationItem = struct type t = { scopeUri : DocumentUri.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; section : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; section : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -21867,7 +22023,7 @@ module ConfigurationItem = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ConfigurationItem.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let scopeUri_field = ref Ppx_yojson_conv_lib.Option.None and section_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -21875,63 +22031,60 @@ module ConfigurationItem = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "scopeUri" -> ( - match Ppx_yojson_conv_lib.( ! ) scopeUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentUri.t_of_yojson - _field_yojson - in - scopeUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "section" -> ( - match Ppx_yojson_conv_lib.( ! ) section_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - section_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "scopeUri" -> + (match Ppx_yojson_conv_lib.( ! ) scopeUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson DocumentUri.t_of_yojson _field_yojson + in + scopeUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "section" -> + (match Ppx_yojson_conv_lib.( ! ) section_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + section_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let scopeUri_value, section_value = - ( Ppx_yojson_conv_lib.( ! ) scopeUri_field - , Ppx_yojson_conv_lib.( ! ) section_field ) - in - { scopeUri = - (match scopeUri_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; section = - (match section_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let scopeUri_value, section_value = + ( Ppx_yojson_conv_lib.( ! ) scopeUri_field + , Ppx_yojson_conv_lib.( ! ) section_field ) + in + { scopeUri = + (match scopeUri_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; section = + (match section_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -21940,34 +22093,35 @@ module ConfigurationItem = struct | { scopeUri = v_scopeUri; section = v_section } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_section then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_section - in - let bnd = ("section", arg) in - bnd :: bnds + if None = v_section + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_section in + let bnd = "section", arg in + bnd :: bnds) in let bnds = - if None = v_scopeUri then bnds - else + if None = v_scopeUri + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t DocumentUri.yojson_of_t) - v_scopeUri + (Json.Nullable_option.yojson_of_t DocumentUri.yojson_of_t) v_scopeUri in - let bnd = ("scopeUri", arg) in - bnd :: bnds + let bnd = "scopeUri", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(scopeUri : DocumentUri.t option) ?(section : string option) - (() : unit) : t = + let create ?(scopeUri : DocumentUri.t option) ?(section : string option) (() : unit) : t + = { scopeUri; section } + ;; end module ConfigurationParams = struct @@ -21979,58 +22133,56 @@ module ConfigurationParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ConfigurationParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let items_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "items" -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson ConfigurationItem.t_of_yojson _field_yojson - in - items_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "items" -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson ConfigurationItem.t_of_yojson _field_yojson + in + items_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.Some items_value -> - { items = items_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) items_field) - Ppx_yojson_conv_lib.Option.None - , "items" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.Some items_value -> { items = items_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) items_field) + Ppx_yojson_conv_lib.Option.None + , "items" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -22043,7 +22195,8 @@ module ConfigurationParams = struct ("items", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -22053,63 +22206,61 @@ module ConfigurationParams = struct end module FileCreate = struct - type t = { uri : string } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { uri : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileCreate.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let uri_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.Some uri_value -> { uri = uri_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.Some uri_value -> { uri = uri_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -22122,7 +22273,8 @@ module FileCreate = struct ("uri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -22140,58 +22292,54 @@ module CreateFilesParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.CreateFilesParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let files_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "files" -> ( - match Ppx_yojson_conv_lib.( ! ) files_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson FileCreate.t_of_yojson _field_yojson - in - files_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "files" -> + (match Ppx_yojson_conv_lib.( ! ) files_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson FileCreate.t_of_yojson _field_yojson in + files_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) files_field with - | Ppx_yojson_conv_lib.Option.Some files_value -> - { files = files_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) files_field) - Ppx_yojson_conv_lib.Option.None - , "files" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) files_field with + | Ppx_yojson_conv_lib.Option.Some files_value -> { files = files_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) files_field) + Ppx_yojson_conv_lib.Option.None + , "files" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -22204,7 +22352,8 @@ module CreateFilesParams = struct ("files", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -22226,17 +22375,19 @@ module Declaration = struct ; (fun json -> `List (Json.Of.list Location.t_of_yojson json)) ] json + ;; let yojson_of_t (t : t) : Json.t = match t with | `Location s -> Location.yojson_of_t s | `List s -> Json.To.list Location.yojson_of_t s + ;; end module LocationLink = struct type t = { originSelectionRange : Range.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; targetRange : Range.t ; targetSelectionRange : Range.t ; targetUri : DocumentUri.t @@ -22248,7 +22399,7 @@ module LocationLink = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.LocationLink.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let originSelectionRange_field = ref Ppx_yojson_conv_lib.Option.None and targetRange_field = ref Ppx_yojson_conv_lib.Option.None and targetSelectionRange_field = ref Ppx_yojson_conv_lib.Option.None @@ -22258,99 +22409,94 @@ module LocationLink = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "originSelectionRange" -> ( - match Ppx_yojson_conv_lib.( ! ) originSelectionRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Range.t_of_yojson - _field_yojson - in - originSelectionRange_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "targetRange" -> ( - match Ppx_yojson_conv_lib.( ! ) targetRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - targetRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "targetSelectionRange" -> ( - match Ppx_yojson_conv_lib.( ! ) targetSelectionRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - targetSelectionRange_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "targetUri" -> ( - match Ppx_yojson_conv_lib.( ! ) targetUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - targetUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) originSelectionRange_field - , Ppx_yojson_conv_lib.( ! ) targetRange_field - , Ppx_yojson_conv_lib.( ! ) targetSelectionRange_field - , Ppx_yojson_conv_lib.( ! ) targetUri_field ) - with - | ( originSelectionRange_value - , Ppx_yojson_conv_lib.Option.Some targetRange_value - , Ppx_yojson_conv_lib.Option.Some targetSelectionRange_value - , Ppx_yojson_conv_lib.Option.Some targetUri_value ) -> - { originSelectionRange = - (match originSelectionRange_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; targetRange = targetRange_value - ; targetSelectionRange = targetSelectionRange_value - ; targetUri = targetUri_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) targetRange_field) - Ppx_yojson_conv_lib.Option.None - , "targetRange" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) targetSelectionRange_field) - Ppx_yojson_conv_lib.Option.None - , "targetSelectionRange" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) targetUri_field) - Ppx_yojson_conv_lib.Option.None - , "targetUri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "originSelectionRange" -> + (match Ppx_yojson_conv_lib.( ! ) originSelectionRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Range.t_of_yojson _field_yojson + in + originSelectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "targetRange" -> + (match Ppx_yojson_conv_lib.( ! ) targetRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + targetRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "targetSelectionRange" -> + (match Ppx_yojson_conv_lib.( ! ) targetSelectionRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + targetSelectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "targetUri" -> + (match Ppx_yojson_conv_lib.( ! ) targetUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + targetUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) originSelectionRange_field + , Ppx_yojson_conv_lib.( ! ) targetRange_field + , Ppx_yojson_conv_lib.( ! ) targetSelectionRange_field + , Ppx_yojson_conv_lib.( ! ) targetUri_field ) + with + | ( originSelectionRange_value + , Ppx_yojson_conv_lib.Option.Some targetRange_value + , Ppx_yojson_conv_lib.Option.Some targetSelectionRange_value + , Ppx_yojson_conv_lib.Option.Some targetUri_value ) -> + { originSelectionRange = + (match originSelectionRange_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; targetRange = targetRange_value + ; targetSelectionRange = targetSelectionRange_value + ; targetUri = targetUri_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) targetRange_field) + Ppx_yojson_conv_lib.Option.None + , "targetRange" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) targetSelectionRange_field) + Ppx_yojson_conv_lib.Option.None + , "targetSelectionRange" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) targetUri_field) + Ppx_yojson_conv_lib.Option.None + , "targetUri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -22375,41 +22521,42 @@ module LocationLink = struct ("targetRange", arg) :: bnds in let bnds = - if None = v_originSelectionRange then bnds - else + if None = v_originSelectionRange + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t Range.yojson_of_t) - v_originSelectionRange + (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_originSelectionRange in - let bnd = ("originSelectionRange", arg) in - bnd :: bnds + let bnd = "originSelectionRange", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(originSelectionRange : Range.t option) ~(targetRange : Range.t) - ~(targetSelectionRange : Range.t) ~(targetUri : DocumentUri.t) (() : unit) - : t = + let create + ?(originSelectionRange : Range.t option) + ~(targetRange : Range.t) + ~(targetSelectionRange : Range.t) + ~(targetUri : DocumentUri.t) + (() : unit) + : t + = { originSelectionRange; targetRange; targetSelectionRange; targetUri } + ;; end module DeclarationLink = struct type t = LocationLink.t [@@deriving_inline yojson] let _ = fun (_ : t) -> () - - let t_of_yojson = - (LocationLink.t_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - + let t_of_yojson = (LocationLink.t_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) let _ = t_of_yojson - - let yojson_of_t = - (LocationLink.yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - + let yojson_of_t = (LocationLink.yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) let _ = yojson_of_t [@@@end] @@ -22418,7 +22565,7 @@ end module DeclarationOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -22427,54 +22574,53 @@ module DeclarationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DeclarationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -22483,34 +22629,34 @@ module DeclarationOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module DeclarationParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -22519,7 +22665,7 @@ module DeclarationParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DeclarationParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -22529,101 +22675,99 @@ module DeclarationParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -22636,14 +22780,14 @@ module DeclarationParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -22654,36 +22798,43 @@ module DeclarationParams = struct ("position", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; position; textDocument; workDoneToken } + ;; end module DeclarationRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -22692,7 +22843,7 @@ module DeclarationRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DeclarationRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -22701,77 +22852,76 @@ module DeclarationRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -22783,42 +22933,51 @@ module DeclarationRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module Definition = struct @@ -22834,26 +22993,22 @@ module Definition = struct ; (fun json -> `List (Json.Of.list Location.t_of_yojson json)) ] json + ;; let yojson_of_t (t : t) : Json.t = match t with | `Location s -> Location.yojson_of_t s | `List s -> Json.To.list Location.yojson_of_t s + ;; end module DefinitionLink = struct type t = LocationLink.t [@@deriving_inline yojson] let _ = fun (_ : t) -> () - - let t_of_yojson = - (LocationLink.t_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - + let t_of_yojson = (LocationLink.t_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) let _ = t_of_yojson - - let yojson_of_t = - (LocationLink.yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - + let yojson_of_t = (LocationLink.yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) let _ = yojson_of_t [@@@end] @@ -22862,7 +23017,7 @@ end module DefinitionOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -22871,54 +23026,53 @@ module DefinitionOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DefinitionOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -22927,34 +23081,34 @@ module DefinitionOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module DefinitionParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -22963,7 +23117,7 @@ module DefinitionParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DefinitionParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -22973,101 +23127,99 @@ module DefinitionParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -23080,14 +23232,14 @@ module DefinitionParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -23098,34 +23250,42 @@ module DefinitionParams = struct ("position", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; position; textDocument; workDoneToken } + ;; end module DefinitionRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -23134,7 +23294,7 @@ module DefinitionRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DefinitionRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -23142,162 +23302,164 @@ module DefinitionRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { documentSelector = v_documentSelector - ; workDoneProgress = v_workDoneProgress - } -> + | { documentSelector = v_documentSelector; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; workDoneProgress } + ;; end module FileDelete = struct - type t = { uri : string } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { uri : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileDelete.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let uri_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.Some uri_value -> { uri = uri_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.Some uri_value -> { uri = uri_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -23310,7 +23472,8 @@ module FileDelete = struct ("uri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -23328,58 +23491,54 @@ module DeleteFilesParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DeleteFilesParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let files_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "files" -> ( - match Ppx_yojson_conv_lib.( ! ) files_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson FileDelete.t_of_yojson _field_yojson - in - files_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "files" -> + (match Ppx_yojson_conv_lib.( ! ) files_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson FileDelete.t_of_yojson _field_yojson in + files_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) files_field with - | Ppx_yojson_conv_lib.Option.Some files_value -> - { files = files_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) files_field) - Ppx_yojson_conv_lib.Option.None - , "files" ) - ]))) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) files_field with + | Ppx_yojson_conv_lib.Option.Some files_value -> { files = files_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) files_field) + Ppx_yojson_conv_lib.Option.None + , "files" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -23392,7 +23551,8 @@ module DeleteFilesParams = struct ("files", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -23404,10 +23564,10 @@ end module DiagnosticOptions = struct type t = { identifier : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; interFileDependencies : bool ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workspaceDiagnostics : bool } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -23417,7 +23577,7 @@ module DiagnosticOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DiagnosticOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let identifier_field = ref Ppx_yojson_conv_lib.Option.None and interFileDependencies_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -23427,98 +23587,95 @@ module DiagnosticOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "identifier" -> ( - match Ppx_yojson_conv_lib.( ! ) identifier_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "interFileDependencies" -> ( - match Ppx_yojson_conv_lib.( ! ) interFileDependencies_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - interFileDependencies_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workspaceDiagnostics" -> ( - match Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - workspaceDiagnostics_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) identifier_field - , Ppx_yojson_conv_lib.( ! ) interFileDependencies_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - , Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field ) - with - | ( identifier_value - , Ppx_yojson_conv_lib.Option.Some interFileDependencies_value - , workDoneProgress_value - , Ppx_yojson_conv_lib.Option.Some workspaceDiagnostics_value ) -> - { identifier = - (match identifier_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; interFileDependencies = interFileDependencies_value - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workspaceDiagnostics = workspaceDiagnostics_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "identifier" -> + (match Ppx_yojson_conv_lib.( ! ) identifier_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "interFileDependencies" -> + (match Ppx_yojson_conv_lib.( ! ) interFileDependencies_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + interFileDependencies_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workspaceDiagnostics" -> + (match Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + workspaceDiagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) interFileDependencies_field) - Ppx_yojson_conv_lib.Option.None - , "interFileDependencies" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field) - Ppx_yojson_conv_lib.Option.None - , "workspaceDiagnostics" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) identifier_field + , Ppx_yojson_conv_lib.( ! ) interFileDependencies_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + , Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field ) + with + | ( identifier_value + , Ppx_yojson_conv_lib.Option.Some interFileDependencies_value + , workDoneProgress_value + , Ppx_yojson_conv_lib.Option.Some workspaceDiagnostics_value ) -> + { identifier = + (match identifier_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; interFileDependencies = interFileDependencies_value + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workspaceDiagnostics = workspaceDiagnostics_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) interFileDependencies_field) + Ppx_yojson_conv_lib.Option.None + , "interFileDependencies" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field) + Ppx_yojson_conv_lib.Option.None + , "workspaceDiagnostics" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -23535,56 +23692,57 @@ module DiagnosticOptions = struct ("workspaceDiagnostics", arg) :: bnds in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_bool v_interFileDependencies in ("interFileDependencies", arg) :: bnds in let bnds = - if None = v_identifier then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_identifier - in - let bnd = ("identifier", arg) in - bnd :: bnds + if None = v_identifier + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_identifier in + let bnd = "identifier", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(identifier : string option) ~(interFileDependencies : bool) - ?(workDoneProgress : bool option) ~(workspaceDiagnostics : bool) - (() : unit) : t = - { identifier - ; interFileDependencies - ; workDoneProgress - ; workspaceDiagnostics - } + let create + ?(identifier : string option) + ~(interFileDependencies : bool) + ?(workDoneProgress : bool option) + ~(workspaceDiagnostics : bool) + (() : unit) + : t + = + { identifier; interFileDependencies; workDoneProgress; workspaceDiagnostics } + ;; end module DiagnosticRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; identifier : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; interFileDependencies : bool ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workspaceDiagnostics : bool } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -23594,7 +23752,7 @@ module DiagnosticRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DiagnosticRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and identifier_field = ref Ppx_yojson_conv_lib.Option.None @@ -23606,130 +23764,127 @@ module DiagnosticRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "identifier" -> ( - match Ppx_yojson_conv_lib.( ! ) identifier_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "interFileDependencies" -> ( - match Ppx_yojson_conv_lib.( ! ) interFileDependencies_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - interFileDependencies_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workspaceDiagnostics" -> ( - match Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - workspaceDiagnostics_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) identifier_field - , Ppx_yojson_conv_lib.( ! ) interFileDependencies_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - , Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field ) - with - | ( documentSelector_value - , id_value - , identifier_value - , Ppx_yojson_conv_lib.Option.Some interFileDependencies_value - , workDoneProgress_value - , Ppx_yojson_conv_lib.Option.Some workspaceDiagnostics_value ) -> - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; identifier = - (match identifier_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; interFileDependencies = interFileDependencies_value - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workspaceDiagnostics = workspaceDiagnostics_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "identifier" -> + (match Ppx_yojson_conv_lib.( ! ) identifier_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "interFileDependencies" -> + (match Ppx_yojson_conv_lib.( ! ) interFileDependencies_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + interFileDependencies_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workspaceDiagnostics" -> + (match Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + workspaceDiagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) interFileDependencies_field) - Ppx_yojson_conv_lib.Option.None - , "interFileDependencies" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field) - Ppx_yojson_conv_lib.Option.None - , "workspaceDiagnostics" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) identifier_field + , Ppx_yojson_conv_lib.( ! ) interFileDependencies_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + , Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field ) + with + | ( documentSelector_value + , id_value + , identifier_value + , Ppx_yojson_conv_lib.Option.Some interFileDependencies_value + , workDoneProgress_value + , Ppx_yojson_conv_lib.Option.Some workspaceDiagnostics_value ) -> + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; identifier = + (match identifier_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; interFileDependencies = interFileDependencies_value + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workspaceDiagnostics = workspaceDiagnostics_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) interFileDependencies_field) + Ppx_yojson_conv_lib.Option.None + , "interFileDependencies" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) workspaceDiagnostics_field) + Ppx_yojson_conv_lib.Option.None + , "workspaceDiagnostics" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -23748,56 +23903,64 @@ module DiagnosticRegistrationOptions = struct ("workspaceDiagnostics", arg) :: bnds in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_bool v_interFileDependencies in ("interFileDependencies", arg) :: bnds in let bnds = - if None = v_identifier then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_identifier - in - let bnd = ("identifier", arg) in - bnd :: bnds + if None = v_identifier + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_identifier in + let bnd = "identifier", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(identifier : string option) - ~(interFileDependencies : bool) ?(workDoneProgress : bool option) - ~(workspaceDiagnostics : bool) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(identifier : string option) + ~(interFileDependencies : bool) + ?(workDoneProgress : bool option) + ~(workspaceDiagnostics : bool) + (() : unit) + : t + = { documentSelector ; id ; identifier @@ -23805,6 +23968,7 @@ module DiagnosticRegistrationOptions = struct ; workDoneProgress ; workspaceDiagnostics } + ;; end module DiagnosticServerCancellationData = struct @@ -23816,56 +23980,55 @@ module DiagnosticServerCancellationData = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DiagnosticServerCancellationData.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let retriggerRequest_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "retriggerRequest" -> ( - match Ppx_yojson_conv_lib.( ! ) retriggerRequest_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - retriggerRequest_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "retriggerRequest" -> + (match Ppx_yojson_conv_lib.( ! ) retriggerRequest_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + retriggerRequest_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) retriggerRequest_field with - | Ppx_yojson_conv_lib.Option.Some retriggerRequest_value -> - { retriggerRequest = retriggerRequest_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) retriggerRequest_field) - Ppx_yojson_conv_lib.Option.None - , "retriggerRequest" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) retriggerRequest_field with + | Ppx_yojson_conv_lib.Option.Some retriggerRequest_value -> + { retriggerRequest = retriggerRequest_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) retriggerRequest_field) + Ppx_yojson_conv_lib.Option.None + , "retriggerRequest" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -23878,7 +24041,8 @@ module DiagnosticServerCancellationData = struct ("retriggerRequest", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -23888,64 +24052,62 @@ module DiagnosticServerCancellationData = struct end module DidChangeConfigurationParams = struct - type t = { settings : Json.t } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { settings : Json.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidChangeConfigurationParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let settings_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "settings" -> ( - match Ppx_yojson_conv_lib.( ! ) settings_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - settings_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "settings" -> + (match Ppx_yojson_conv_lib.( ! ) settings_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + settings_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) settings_field with - | Ppx_yojson_conv_lib.Option.Some settings_value -> - { settings = settings_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) settings_field) - Ppx_yojson_conv_lib.Option.None - , "settings" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) settings_field with + | Ppx_yojson_conv_lib.Option.Some settings_value -> + { settings = settings_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) settings_field) + Ppx_yojson_conv_lib.Option.None + , "settings" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -23958,7 +24120,8 @@ module DidChangeConfigurationParams = struct ("settings", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -23981,73 +24144,70 @@ module DidChangeConfigurationRegistrationOptions = struct "section_pvar" [ (fun json -> `List (Json.Of.list string_of_yojson json)) ] json + ;; let yojson_of_section_pvar (section_pvar : section_pvar) : Json.t = match section_pvar with | `String j -> `String j | `List s -> Json.To.list yojson_of_string s + ;; type t = { section : section_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DidChangeConfigurationRegistrationOptions.t" - in + (let _tp_loc = "lsp/src/types.ml.DidChangeConfigurationRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let section_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "section" -> ( - match Ppx_yojson_conv_lib.( ! ) section_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - section_pvar_of_yojson - _field_yojson - in - section_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "section" -> + (match Ppx_yojson_conv_lib.( ! ) section_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson section_pvar_of_yojson _field_yojson + in + section_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let section_value = Ppx_yojson_conv_lib.( ! ) section_field in - { section = - (match section_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let section_value = Ppx_yojson_conv_lib.( ! ) section_field in + { section = + (match section_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -24056,16 +24216,18 @@ module DidChangeConfigurationRegistrationOptions = struct | { section = v_section } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_section then bnds - else + if None = v_section + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_section_pvar) v_section in - let bnd = ("section", arg) in - bnd :: bnds + let bnd = "section", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -24086,7 +24248,7 @@ module VersionedNotebookDocumentIdentifier = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.VersionedNotebookDocumentIdentifier.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let uri_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -24094,64 +24256,63 @@ module VersionedNotebookDocumentIdentifier = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some uri_value - , Ppx_yojson_conv_lib.Option.Some version_value ) -> - { uri = uri_value; version = version_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) version_field) - Ppx_yojson_conv_lib.Option.None - , "version" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) uri_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some uri_value + , Ppx_yojson_conv_lib.Option.Some version_value ) -> + { uri = uri_value; version = version_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) version_field) + Ppx_yojson_conv_lib.Option.None + , "version" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -24168,7 +24329,8 @@ module VersionedNotebookDocumentIdentifier = struct ("uri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -24179,10 +24341,9 @@ end module TextDocumentContentChangeEvent = struct type t = - { range : Range.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { range : Range.t Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; rangeLength : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; text : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -24192,7 +24353,7 @@ module TextDocumentContentChangeEvent = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentContentChangeEvent.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let range_field = ref Ppx_yojson_conv_lib.Option.None and rangeLength_field = ref Ppx_yojson_conv_lib.Option.None and text_field = ref Ppx_yojson_conv_lib.Option.None @@ -24201,84 +24362,80 @@ module TextDocumentContentChangeEvent = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Range.t_of_yojson - _field_yojson - in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rangeLength" -> ( - match Ppx_yojson_conv_lib.( ! ) rangeLength_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - rangeLength_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "text" -> ( - match Ppx_yojson_conv_lib.( ! ) text_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - text_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) rangeLength_field - , Ppx_yojson_conv_lib.( ! ) text_field ) - with - | ( range_value - , rangeLength_value - , Ppx_yojson_conv_lib.Option.Some text_value ) -> - { range = - (match range_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rangeLength = - (match rangeLength_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; text = text_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Range.t_of_yojson _field_yojson + in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rangeLength" -> + (match Ppx_yojson_conv_lib.( ! ) rangeLength_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + rangeLength_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "text" -> + (match Ppx_yojson_conv_lib.( ! ) text_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + text_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) text_field) - Ppx_yojson_conv_lib.Option.None - , "text" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) rangeLength_field + , Ppx_yojson_conv_lib.( ! ) text_field ) + with + | range_value, rangeLength_value, Ppx_yojson_conv_lib.Option.Some text_value + -> + { range = + (match range_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rangeLength = + (match rangeLength_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; text = text_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) text_field) + Ppx_yojson_conv_lib.Option.None + , "text" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -24291,33 +24448,38 @@ module TextDocumentContentChangeEvent = struct ("text", arg) :: bnds in let bnds = - if None = v_rangeLength then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_rangeLength - in - let bnd = ("rangeLength", arg) in - bnd :: bnds + if None = v_rangeLength + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_rangeLength in + let bnd = "rangeLength", arg in + bnd :: bnds) in let bnds = - if None = v_range then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_range - in - let bnd = ("range", arg) in - bnd :: bnds + if None = v_range + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_range in + let bnd = "range", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(range : Range.t option) ?(rangeLength : int option) - ~(text : string) (() : unit) : t = + let create + ?(range : Range.t option) + ?(rangeLength : int option) + ~(text : string) + (() : unit) + : t + = { range; rangeLength; text } + ;; end module VersionedTextDocumentIdentifier = struct @@ -24332,7 +24494,7 @@ module VersionedTextDocumentIdentifier = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.VersionedTextDocumentIdentifier.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let uri_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -24340,64 +24502,63 @@ module VersionedTextDocumentIdentifier = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some uri_value - , Ppx_yojson_conv_lib.Option.Some version_value ) -> - { uri = uri_value; version = version_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) version_field) - Ppx_yojson_conv_lib.Option.None - , "version" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) uri_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some uri_value + , Ppx_yojson_conv_lib.Option.Some version_value ) -> + { uri = uri_value; version = version_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) version_field) + Ppx_yojson_conv_lib.Option.None + , "version" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -24414,7 +24575,8 @@ module VersionedTextDocumentIdentifier = struct ("uri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -24426,8 +24588,7 @@ end module ExecutionSummary = struct type t = { executionOrder : int - ; success : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; success : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -24436,7 +24597,7 @@ module ExecutionSummary = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ExecutionSummary.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let executionOrder_field = ref Ppx_yojson_conv_lib.Option.None and success_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -24444,67 +24605,65 @@ module ExecutionSummary = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "executionOrder" -> ( - match Ppx_yojson_conv_lib.( ! ) executionOrder_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - executionOrder_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "success" -> ( - match Ppx_yojson_conv_lib.( ! ) success_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - success_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "executionOrder" -> + (match Ppx_yojson_conv_lib.( ! ) executionOrder_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + executionOrder_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "success" -> + (match Ppx_yojson_conv_lib.( ! ) success_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + success_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) executionOrder_field - , Ppx_yojson_conv_lib.( ! ) success_field ) - with - | Ppx_yojson_conv_lib.Option.Some executionOrder_value, success_value - -> - { executionOrder = executionOrder_value - ; success = - (match success_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) executionOrder_field) - Ppx_yojson_conv_lib.Option.None - , "executionOrder" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) executionOrder_field + , Ppx_yojson_conv_lib.( ! ) success_field ) + with + | Ppx_yojson_conv_lib.Option.Some executionOrder_value, success_value -> + { executionOrder = executionOrder_value + ; success = + (match success_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) executionOrder_field) + Ppx_yojson_conv_lib.Option.None + , "executionOrder" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -24513,20 +24672,20 @@ module ExecutionSummary = struct | { executionOrder = v_executionOrder; success = v_success } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_success then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_success - in - let bnd = ("success", arg) in - bnd :: bnds + if None = v_success + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_success in + let bnd = "success", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_int v_executionOrder in ("executionOrder", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -24534,16 +24693,17 @@ module ExecutionSummary = struct let create ~(executionOrder : int) ?(success : bool option) (() : unit) : t = { executionOrder; success } + ;; end module NotebookCell = struct type t = { document : DocumentUri.t ; executionSummary : ExecutionSummary.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; kind : NotebookCellKind.t ; metadata : Json.Object.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -24552,7 +24712,7 @@ module NotebookCell = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookCell.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let document_field = ref Ppx_yojson_conv_lib.Option.None and executionSummary_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None @@ -24562,100 +24722,97 @@ module NotebookCell = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "document" -> ( - match Ppx_yojson_conv_lib.( ! ) document_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - document_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "executionSummary" -> ( - match Ppx_yojson_conv_lib.( ! ) executionSummary_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ExecutionSummary.t_of_yojson - _field_yojson - in - executionSummary_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = NotebookCellKind.t_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "metadata" -> ( - match Ppx_yojson_conv_lib.( ! ) metadata_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Json.Object.t_of_yojson - _field_yojson - in - metadata_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) document_field - , Ppx_yojson_conv_lib.( ! ) executionSummary_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) metadata_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some document_value - , executionSummary_value - , Ppx_yojson_conv_lib.Option.Some kind_value - , metadata_value ) -> - { document = document_value - ; executionSummary = - (match executionSummary_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = kind_value - ; metadata = - (match metadata_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "document" -> + (match Ppx_yojson_conv_lib.( ! ) document_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + document_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "executionSummary" -> + (match Ppx_yojson_conv_lib.( ! ) executionSummary_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ExecutionSummary.t_of_yojson + _field_yojson + in + executionSummary_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = NotebookCellKind.t_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "metadata" -> + (match Ppx_yojson_conv_lib.( ! ) metadata_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Json.Object.t_of_yojson _field_yojson + in + metadata_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) document_field) - Ppx_yojson_conv_lib.Option.None - , "document" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) document_field + , Ppx_yojson_conv_lib.( ! ) executionSummary_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) metadata_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some document_value + , executionSummary_value + , Ppx_yojson_conv_lib.Option.Some kind_value + , metadata_value ) -> + { document = document_value + ; executionSummary = + (match executionSummary_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = kind_value + ; metadata = + (match metadata_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) document_field) + Ppx_yojson_conv_lib.Option.None + , "document" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -24668,45 +24825,52 @@ module NotebookCell = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_metadata then bnds - else + if None = v_metadata + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t Json.Object.yojson_of_t) - v_metadata + (Json.Nullable_option.yojson_of_t Json.Object.yojson_of_t) v_metadata in - let bnd = ("metadata", arg) in - bnd :: bnds + let bnd = "metadata", arg in + bnd :: bnds) in let bnds = let arg = NotebookCellKind.yojson_of_t v_kind in ("kind", arg) :: bnds in let bnds = - if None = v_executionSummary then bnds - else + if None = v_executionSummary + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ExecutionSummary.yojson_of_t) v_executionSummary in - let bnd = ("executionSummary", arg) in - bnd :: bnds + let bnd = "executionSummary", arg in + bnd :: bnds) in let bnds = let arg = DocumentUri.yojson_of_t v_document in ("document", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(document : DocumentUri.t) - ?(executionSummary : ExecutionSummary.t option) - ~(kind : NotebookCellKind.t) ?(metadata : Json.Object.t option) - (() : unit) : t = + let create + ~(document : DocumentUri.t) + ?(executionSummary : ExecutionSummary.t option) + ~(kind : NotebookCellKind.t) + ?(metadata : Json.Object.t option) + (() : unit) + : t + = { document; executionSummary; kind; metadata } + ;; end module TextDocumentItem = struct @@ -24723,7 +24887,7 @@ module TextDocumentItem = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentItem.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let languageId_field = ref Ppx_yojson_conv_lib.Option.None and text_field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None @@ -24733,104 +24897,99 @@ module TextDocumentItem = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "languageId" -> ( - match Ppx_yojson_conv_lib.( ! ) languageId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - languageId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "text" -> ( - match Ppx_yojson_conv_lib.( ! ) text_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - text_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) languageId_field - , Ppx_yojson_conv_lib.( ! ) text_field - , Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some languageId_value - , Ppx_yojson_conv_lib.Option.Some text_value - , Ppx_yojson_conv_lib.Option.Some uri_value - , Ppx_yojson_conv_lib.Option.Some version_value ) -> - { languageId = languageId_value - ; text = text_value - ; uri = uri_value - ; version = version_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) languageId_field) - Ppx_yojson_conv_lib.Option.None - , "languageId" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) text_field) - Ppx_yojson_conv_lib.Option.None - , "text" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) version_field) - Ppx_yojson_conv_lib.Option.None - , "version" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { languageId = v_languageId - ; text = v_text - ; uri = v_uri - ; version = v_version - } -> + | "languageId" -> + (match Ppx_yojson_conv_lib.( ! ) languageId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + languageId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "text" -> + (match Ppx_yojson_conv_lib.( ! ) text_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + text_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) languageId_field + , Ppx_yojson_conv_lib.( ! ) text_field + , Ppx_yojson_conv_lib.( ! ) uri_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some languageId_value + , Ppx_yojson_conv_lib.Option.Some text_value + , Ppx_yojson_conv_lib.Option.Some uri_value + , Ppx_yojson_conv_lib.Option.Some version_value ) -> + { languageId = languageId_value + ; text = text_value + ; uri = uri_value + ; version = version_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) languageId_field) + Ppx_yojson_conv_lib.Option.None + , "languageId" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) text_field) + Ppx_yojson_conv_lib.Option.None + , "text" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) version_field) + Ppx_yojson_conv_lib.Option.None + , "version" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { languageId = v_languageId; text = v_text; uri = v_uri; version = v_version } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = let arg = yojson_of_int v_version in @@ -24849,21 +25008,28 @@ module TextDocumentItem = struct ("languageId", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(languageId : string) ~(text : string) ~(uri : DocumentUri.t) - ~(version : int) : t = + let create + ~(languageId : string) + ~(text : string) + ~(uri : DocumentUri.t) + ~(version : int) + : t + = { languageId; text; uri; version } + ;; end module NotebookCellArrayChange = struct type t = { cells : NotebookCell.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; deleteCount : int ; start : int } @@ -24874,7 +25040,7 @@ module NotebookCellArrayChange = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookCellArrayChange.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let cells_field = ref Ppx_yojson_conv_lib.Option.None and deleteCount_field = ref Ppx_yojson_conv_lib.Option.None and start_field = ref Ppx_yojson_conv_lib.Option.None @@ -24883,83 +25049,82 @@ module NotebookCellArrayChange = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "cells" -> ( - match Ppx_yojson_conv_lib.( ! ) cells_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson NotebookCell.t_of_yojson) - _field_yojson - in - cells_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "deleteCount" -> ( - match Ppx_yojson_conv_lib.( ! ) deleteCount_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - deleteCount_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "start" -> ( - match Ppx_yojson_conv_lib.( ! ) start_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - start_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) cells_field - , Ppx_yojson_conv_lib.( ! ) deleteCount_field - , Ppx_yojson_conv_lib.( ! ) start_field ) - with - | ( cells_value - , Ppx_yojson_conv_lib.Option.Some deleteCount_value - , Ppx_yojson_conv_lib.Option.Some start_value ) -> - { cells = - (match cells_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; deleteCount = deleteCount_value - ; start = start_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "cells" -> + (match Ppx_yojson_conv_lib.( ! ) cells_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson NotebookCell.t_of_yojson) + _field_yojson + in + cells_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "deleteCount" -> + (match Ppx_yojson_conv_lib.( ! ) deleteCount_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + deleteCount_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "start" -> + (match Ppx_yojson_conv_lib.( ! ) start_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + start_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) deleteCount_field) - Ppx_yojson_conv_lib.Option.None - , "deleteCount" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) start_field) - Ppx_yojson_conv_lib.Option.None - , "start" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) cells_field + , Ppx_yojson_conv_lib.( ! ) deleteCount_field + , Ppx_yojson_conv_lib.( ! ) start_field ) + with + | ( cells_value + , Ppx_yojson_conv_lib.Option.Some deleteCount_value + , Ppx_yojson_conv_lib.Option.Some start_value ) -> + { cells = + (match cells_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; deleteCount = deleteCount_value + ; start = start_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) deleteCount_field) + Ppx_yojson_conv_lib.Option.None + , "deleteCount" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) start_field) + Ppx_yojson_conv_lib.Option.None + , "start" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -24976,26 +25141,33 @@ module NotebookCellArrayChange = struct ("deleteCount", arg) :: bnds in let bnds = - if None = v_cells then bnds - else + if None = v_cells + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list NotebookCell.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list NotebookCell.yojson_of_t)) v_cells in - let bnd = ("cells", arg) in - bnd :: bnds + let bnd = "cells", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(cells : NotebookCell.t list option) ~(deleteCount : int) - ~(start : int) (() : unit) : t = + let create + ?(cells : NotebookCell.t list option) + ~(deleteCount : int) + ~(start : int) + (() : unit) + : t + = { cells; deleteCount; start } + ;; end module NotebookDocumentChangeEvent = struct @@ -25010,7 +25182,7 @@ module NotebookDocumentChangeEvent = struct let textContent_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookDocumentChangeEvent.textContent" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let document_field = ref Ppx_yojson_conv_lib.Option.None and changes_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -25018,70 +25190,65 @@ module NotebookDocumentChangeEvent = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "document" -> ( - match Ppx_yojson_conv_lib.( ! ) document_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - VersionedTextDocumentIdentifier.t_of_yojson _field_yojson - in - document_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "changes" -> ( - match Ppx_yojson_conv_lib.( ! ) changes_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson - TextDocumentContentChangeEvent.t_of_yojson - _field_yojson - in - changes_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "document" -> + (match Ppx_yojson_conv_lib.( ! ) document_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = VersionedTextDocumentIdentifier.t_of_yojson _field_yojson in + document_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "changes" -> + (match Ppx_yojson_conv_lib.( ! ) changes_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson TextDocumentContentChangeEvent.t_of_yojson _field_yojson + in + changes_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) document_field - , Ppx_yojson_conv_lib.( ! ) changes_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some document_value - , Ppx_yojson_conv_lib.Option.Some changes_value ) -> - { document = document_value; changes = changes_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) document_field) - Ppx_yojson_conv_lib.Option.None - , "document" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) changes_field) - Ppx_yojson_conv_lib.Option.None - , "changes" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> textContent) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) document_field + , Ppx_yojson_conv_lib.( ! ) changes_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some document_value + , Ppx_yojson_conv_lib.Option.Some changes_value ) -> + { document = document_value; changes = changes_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) document_field) + Ppx_yojson_conv_lib.Option.None + , "document" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) changes_field) + Ppx_yojson_conv_lib.Option.None + , "changes" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> textContent) + ;; let _ = textContent_of_yojson @@ -25090,9 +25257,7 @@ module NotebookDocumentChangeEvent = struct | { document = v_document; changes = v_changes } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - let arg = - yojson_of_list TextDocumentContentChangeEvent.yojson_of_t v_changes - in + let arg = yojson_of_list TextDocumentContentChangeEvent.yojson_of_t v_changes in ("changes", arg) :: bnds in let bnds = @@ -25100,22 +25265,27 @@ module NotebookDocumentChangeEvent = struct ("document", arg) :: bnds in `Assoc bnds - : textContent -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : textContent -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_textContent [@@@end] - let create_textContent ~(document : VersionedTextDocumentIdentifier.t) - ~(changes : TextDocumentContentChangeEvent.t list) : textContent = + let create_textContent + ~(document : VersionedTextDocumentIdentifier.t) + ~(changes : TextDocumentContentChangeEvent.t list) + : textContent + = { document; changes } + ;; type structure = { array : NotebookCellArrayChange.t ; didOpen : TextDocumentItem.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; didClose : TextDocumentIdentifier.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -25124,7 +25294,7 @@ module NotebookDocumentChangeEvent = struct let structure_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookDocumentChangeEvent.structure" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let array_field = ref Ppx_yojson_conv_lib.Option.None and didOpen_field = ref Ppx_yojson_conv_lib.Option.None and didClose_field = ref Ppx_yojson_conv_lib.Option.None @@ -25133,86 +25303,84 @@ module NotebookDocumentChangeEvent = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "array" -> ( - match Ppx_yojson_conv_lib.( ! ) array_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = NotebookCellArrayChange.t_of_yojson _field_yojson in - array_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "didOpen" -> ( - match Ppx_yojson_conv_lib.( ! ) didOpen_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson TextDocumentItem.t_of_yojson) - _field_yojson - in - didOpen_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "didClose" -> ( - match Ppx_yojson_conv_lib.( ! ) didClose_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson TextDocumentIdentifier.t_of_yojson) - _field_yojson - in - didClose_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) array_field - , Ppx_yojson_conv_lib.( ! ) didOpen_field - , Ppx_yojson_conv_lib.( ! ) didClose_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some array_value - , didOpen_value - , didClose_value ) -> - { array = array_value - ; didOpen = - (match didOpen_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; didClose = - (match didClose_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) array_field) - Ppx_yojson_conv_lib.Option.None - , "array" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> structure) + | "array" -> + (match Ppx_yojson_conv_lib.( ! ) array_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = NotebookCellArrayChange.t_of_yojson _field_yojson in + array_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "didOpen" -> + (match Ppx_yojson_conv_lib.( ! ) didOpen_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson TextDocumentItem.t_of_yojson) + _field_yojson + in + didOpen_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "didClose" -> + (match Ppx_yojson_conv_lib.( ! ) didClose_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson TextDocumentIdentifier.t_of_yojson) + _field_yojson + in + didClose_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) array_field + , Ppx_yojson_conv_lib.( ! ) didOpen_field + , Ppx_yojson_conv_lib.( ! ) didClose_field ) + with + | Ppx_yojson_conv_lib.Option.Some array_value, didOpen_value, didClose_value + -> + { array = array_value + ; didOpen = + (match didOpen_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; didClose = + (match didClose_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) array_field) + Ppx_yojson_conv_lib.Option.None + , "array" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> structure) + ;; let _ = structure_of_yojson @@ -25221,51 +25389,58 @@ module NotebookDocumentChangeEvent = struct | { array = v_array; didOpen = v_didOpen; didClose = v_didClose } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_didClose then bnds - else + if None = v_didClose + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list TextDocumentIdentifier.yojson_of_t)) v_didClose in - let bnd = ("didClose", arg) in - bnd :: bnds + let bnd = "didClose", arg in + bnd :: bnds) in let bnds = - if None = v_didOpen then bnds - else + if None = v_didOpen + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list TextDocumentItem.yojson_of_t)) v_didOpen in - let bnd = ("didOpen", arg) in - bnd :: bnds + let bnd = "didOpen", arg in + bnd :: bnds) in let bnds = let arg = NotebookCellArrayChange.yojson_of_t v_array in ("array", arg) :: bnds in `Assoc bnds - : structure -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : structure -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_structure [@@@end] - let create_structure ~(array : NotebookCellArrayChange.t) - ?(didOpen : TextDocumentItem.t list option) - ?(didClose : TextDocumentIdentifier.t list option) (() : unit) : structure - = + let create_structure + ~(array : NotebookCellArrayChange.t) + ?(didOpen : TextDocumentItem.t list option) + ?(didClose : TextDocumentIdentifier.t list option) + (() : unit) + : structure + = { array; didOpen; didClose } + ;; type cells = { structure : structure Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; data : NotebookCell.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textContent : textContent list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -25274,7 +25449,7 @@ module NotebookDocumentChangeEvent = struct let cells_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookDocumentChangeEvent.cells" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let structure_field = ref Ppx_yojson_conv_lib.Option.None and data_field = ref Ppx_yojson_conv_lib.Option.None and textContent_field = ref Ppx_yojson_conv_lib.Option.None @@ -25283,137 +25458,137 @@ module NotebookDocumentChangeEvent = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "structure" -> ( - match Ppx_yojson_conv_lib.( ! ) structure_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - structure_of_yojson - _field_yojson - in - structure_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson NotebookCell.t_of_yojson) - _field_yojson - in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textContent" -> ( - match Ppx_yojson_conv_lib.( ! ) textContent_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson textContent_of_yojson) - _field_yojson - in - textContent_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let structure_value, data_value, textContent_value = - ( Ppx_yojson_conv_lib.( ! ) structure_field - , Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) textContent_field ) - in - { structure = - (match structure_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; data = - (match data_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textContent = - (match textContent_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> cells) + | "structure" -> + (match Ppx_yojson_conv_lib.( ! ) structure_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson structure_of_yojson _field_yojson + in + structure_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson NotebookCell.t_of_yojson) + _field_yojson + in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textContent" -> + (match Ppx_yojson_conv_lib.( ! ) textContent_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson textContent_of_yojson) + _field_yojson + in + textContent_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let structure_value, data_value, textContent_value = + ( Ppx_yojson_conv_lib.( ! ) structure_field + , Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) textContent_field ) + in + { structure = + (match structure_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; data = + (match data_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textContent = + (match textContent_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> cells) + ;; let _ = cells_of_yojson let yojson_of_cells = (function - | { structure = v_structure; data = v_data; textContent = v_textContent } - -> + | { structure = v_structure; data = v_data; textContent = v_textContent } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_textContent then bnds - else + if None = v_textContent + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_textContent)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_textContent)) v_textContent in - let bnd = ("textContent", arg) in - bnd :: bnds + let bnd = "textContent", arg in + bnd :: bnds) in let bnds = - if None = v_data then bnds - else + if None = v_data + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list NotebookCell.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list NotebookCell.yojson_of_t)) v_data in - let bnd = ("data", arg) in - bnd :: bnds + let bnd = "data", arg in + bnd :: bnds) in let bnds = - if None = v_structure then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_structure) v_structure - in - let bnd = ("structure", arg) in - bnd :: bnds + if None = v_structure + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_structure) v_structure in + let bnd = "structure", arg in + bnd :: bnds) in `Assoc bnds - : cells -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : cells -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_cells [@@@end] - let create_cells ?(structure : structure option) - ?(data : NotebookCell.t list option) - ?(textContent : textContent list option) (() : unit) : cells = + let create_cells + ?(structure : structure option) + ?(data : NotebookCell.t list option) + ?(textContent : textContent list option) + (() : unit) + : cells + = { structure; data; textContent } + ;; type t = - { cells : cells Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { cells : cells Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; metadata : Json.Object.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -25422,7 +25597,7 @@ module NotebookDocumentChangeEvent = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookDocumentChangeEvent.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let cells_field = ref Ppx_yojson_conv_lib.Option.None and metadata_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -25430,63 +25605,60 @@ module NotebookDocumentChangeEvent = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "cells" -> ( - match Ppx_yojson_conv_lib.( ! ) cells_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson cells_of_yojson _field_yojson - in - cells_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "metadata" -> ( - match Ppx_yojson_conv_lib.( ! ) metadata_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Json.Object.t_of_yojson - _field_yojson - in - metadata_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "cells" -> + (match Ppx_yojson_conv_lib.( ! ) cells_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson cells_of_yojson _field_yojson + in + cells_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "metadata" -> + (match Ppx_yojson_conv_lib.( ! ) metadata_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Json.Object.t_of_yojson _field_yojson + in + metadata_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let cells_value, metadata_value = - ( Ppx_yojson_conv_lib.( ! ) cells_field - , Ppx_yojson_conv_lib.( ! ) metadata_field ) - in - { cells = - (match cells_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; metadata = - (match metadata_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let cells_value, metadata_value = + ( Ppx_yojson_conv_lib.( ! ) cells_field + , Ppx_yojson_conv_lib.( ! ) metadata_field ) + in + { cells = + (match cells_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; metadata = + (match metadata_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -25495,34 +25667,34 @@ module NotebookDocumentChangeEvent = struct | { cells = v_cells; metadata = v_metadata } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_metadata then bnds - else + if None = v_metadata + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t Json.Object.yojson_of_t) - v_metadata + (Json.Nullable_option.yojson_of_t Json.Object.yojson_of_t) v_metadata in - let bnd = ("metadata", arg) in - bnd :: bnds + let bnd = "metadata", arg in + bnd :: bnds) in let bnds = - if None = v_cells then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_cells) v_cells - in - let bnd = ("cells", arg) in - bnd :: bnds + if None = v_cells + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_cells) v_cells in + let bnd = "cells", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(cells : cells option) ?(metadata : Json.Object.t option) - (() : unit) : t = + let create ?(cells : cells option) ?(metadata : Json.Object.t option) (() : unit) : t = { cells; metadata } + ;; end module DidChangeNotebookDocumentParams = struct @@ -25537,7 +25709,7 @@ module DidChangeNotebookDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidChangeNotebookDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let change_field = ref Ppx_yojson_conv_lib.Option.None and notebookDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -25545,70 +25717,65 @@ module DidChangeNotebookDocumentParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "change" -> ( - match Ppx_yojson_conv_lib.( ! ) change_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - NotebookDocumentChangeEvent.t_of_yojson _field_yojson - in - change_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "notebookDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - VersionedNotebookDocumentIdentifier.t_of_yojson _field_yojson - in - notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "change" -> + (match Ppx_yojson_conv_lib.( ! ) change_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = NotebookDocumentChangeEvent.t_of_yojson _field_yojson in + change_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "notebookDocument" -> + (match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + VersionedNotebookDocumentIdentifier.t_of_yojson _field_yojson + in + notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) change_field - , Ppx_yojson_conv_lib.( ! ) notebookDocument_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some change_value - , Ppx_yojson_conv_lib.Option.Some notebookDocument_value ) -> - { change = change_value - ; notebookDocument = notebookDocument_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) change_field) - Ppx_yojson_conv_lib.Option.None - , "change" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) notebookDocument_field) - Ppx_yojson_conv_lib.Option.None - , "notebookDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) change_field + , Ppx_yojson_conv_lib.( ! ) notebookDocument_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some change_value + , Ppx_yojson_conv_lib.Option.Some notebookDocument_value ) -> + { change = change_value; notebookDocument = notebookDocument_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) change_field) + Ppx_yojson_conv_lib.Option.None + , "change" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) notebookDocument_field) + Ppx_yojson_conv_lib.Option.None + , "notebookDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -25617,9 +25784,7 @@ module DidChangeNotebookDocumentParams = struct | { change = v_change; notebookDocument = v_notebookDocument } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - let arg = - VersionedNotebookDocumentIdentifier.yojson_of_t v_notebookDocument - in + let arg = VersionedNotebookDocumentIdentifier.yojson_of_t v_notebookDocument in ("notebookDocument", arg) :: bnds in let bnds = @@ -25627,15 +25792,20 @@ module DidChangeNotebookDocumentParams = struct ("change", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(change : NotebookDocumentChangeEvent.t) - ~(notebookDocument : VersionedNotebookDocumentIdentifier.t) : t = + let create + ~(change : NotebookDocumentChangeEvent.t) + ~(notebookDocument : VersionedNotebookDocumentIdentifier.t) + : t + = { change; notebookDocument } + ;; end module DidChangeTextDocumentParams = struct @@ -25650,7 +25820,7 @@ module DidChangeTextDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidChangeTextDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let contentChanges_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -25658,72 +25828,67 @@ module DidChangeTextDocumentParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "contentChanges" -> ( - match Ppx_yojson_conv_lib.( ! ) contentChanges_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson - TextDocumentContentChangeEvent.t_of_yojson - _field_yojson - in - contentChanges_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - VersionedTextDocumentIdentifier.t_of_yojson _field_yojson - in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "contentChanges" -> + (match Ppx_yojson_conv_lib.( ! ) contentChanges_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson TextDocumentContentChangeEvent.t_of_yojson _field_yojson + in + contentChanges_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = VersionedTextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) contentChanges_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some contentChanges_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> - { contentChanges = contentChanges_value - ; textDocument = textDocument_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) contentChanges_field) - Ppx_yojson_conv_lib.Option.None - , "contentChanges" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) contentChanges_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some contentChanges_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> + { contentChanges = contentChanges_value + ; textDocument = textDocument_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) contentChanges_field) + Ppx_yojson_conv_lib.Option.None + , "contentChanges" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -25737,22 +25902,25 @@ module DidChangeTextDocumentParams = struct in let bnds = let arg = - yojson_of_list - TextDocumentContentChangeEvent.yojson_of_t - v_contentChanges + yojson_of_list TextDocumentContentChangeEvent.yojson_of_t v_contentChanges in ("contentChanges", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(contentChanges : TextDocumentContentChangeEvent.t list) - ~(textDocument : VersionedTextDocumentIdentifier.t) : t = + let create + ~(contentChanges : TextDocumentContentChangeEvent.t list) + ~(textDocument : VersionedTextDocumentIdentifier.t) + : t + = { contentChanges; textDocument } + ;; end module FileEvent = struct @@ -25767,7 +25935,7 @@ module FileEvent = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileEvent.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let type__field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -25775,64 +25943,62 @@ module FileEvent = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "type" -> ( - match Ppx_yojson_conv_lib.( ! ) type__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = FileChangeType.t_of_yojson _field_yojson in - type__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "type" -> + (match Ppx_yojson_conv_lib.( ! ) type__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = FileChangeType.t_of_yojson _field_yojson in + type__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) type__field - , Ppx_yojson_conv_lib.( ! ) uri_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some type__value - , Ppx_yojson_conv_lib.Option.Some uri_value ) -> - { type_ = type__value; uri = uri_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) type__field) - Ppx_yojson_conv_lib.Option.None - , "type_" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + Ppx_yojson_conv_lib.( ! ) type__field, Ppx_yojson_conv_lib.( ! ) uri_field + with + | ( Ppx_yojson_conv_lib.Option.Some type__value + , Ppx_yojson_conv_lib.Option.Some uri_value ) -> + { type_ = type__value; uri = uri_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) type__field) + Ppx_yojson_conv_lib.Option.None + , "type_" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -25849,14 +26015,14 @@ module FileEvent = struct ("type", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(type_ : FileChangeType.t) ~(uri : DocumentUri.t) : t = - { type_; uri } + let create ~(type_ : FileChangeType.t) ~(uri : DocumentUri.t) : t = { type_; uri } end module DidChangeWatchedFilesParams = struct @@ -25868,58 +26034,55 @@ module DidChangeWatchedFilesParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidChangeWatchedFilesParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let changes_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "changes" -> ( - match Ppx_yojson_conv_lib.( ! ) changes_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson FileEvent.t_of_yojson _field_yojson - in - changes_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "changes" -> + (match Ppx_yojson_conv_lib.( ! ) changes_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson FileEvent.t_of_yojson _field_yojson in + changes_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) changes_field with - | Ppx_yojson_conv_lib.Option.Some changes_value -> - { changes = changes_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) changes_field) - Ppx_yojson_conv_lib.Option.None - , "changes" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) changes_field with + | Ppx_yojson_conv_lib.Option.Some changes_value -> + { changes = changes_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) changes_field) + Ppx_yojson_conv_lib.Option.None + , "changes" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -25932,7 +26095,8 @@ module DidChangeWatchedFilesParams = struct ("changes", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -25945,13 +26109,9 @@ module Pattern = struct type t = string [@@deriving_inline yojson] let _ = fun (_ : t) -> () - let t_of_yojson = (string_of_yojson : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - let _ = t_of_yojson - let yojson_of_t = (yojson_of_string : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - let _ = yojson_of_t [@@@end] @@ -25969,7 +26129,7 @@ module WorkspaceFolder = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceFolder.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let name_field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -25977,64 +26137,62 @@ module WorkspaceFolder = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) uri_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some name_value - , Ppx_yojson_conv_lib.Option.Some uri_value ) -> - { name = name_value; uri = uri_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + Ppx_yojson_conv_lib.( ! ) name_field, Ppx_yojson_conv_lib.( ! ) uri_field + with + | ( Ppx_yojson_conv_lib.Option.Some name_value + , Ppx_yojson_conv_lib.Option.Some uri_value ) -> + { name = name_value; uri = uri_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -26051,7 +26209,8 @@ module WorkspaceFolder = struct ("name", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -26072,7 +26231,7 @@ module RelativePattern = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RelativePattern.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let baseUri_field = ref Ppx_yojson_conv_lib.Option.None and pattern_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -26080,64 +26239,63 @@ module RelativePattern = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "baseUri" -> ( - match Ppx_yojson_conv_lib.( ! ) baseUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = unit_of_yojson _field_yojson in - baseUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "pattern" -> ( - match Ppx_yojson_conv_lib.( ! ) pattern_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Pattern.t_of_yojson _field_yojson in - pattern_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "baseUri" -> + (match Ppx_yojson_conv_lib.( ! ) baseUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = unit_of_yojson _field_yojson in + baseUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "pattern" -> + (match Ppx_yojson_conv_lib.( ! ) pattern_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Pattern.t_of_yojson _field_yojson in + pattern_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) baseUri_field - , Ppx_yojson_conv_lib.( ! ) pattern_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some baseUri_value - , Ppx_yojson_conv_lib.Option.Some pattern_value ) -> - { baseUri = baseUri_value; pattern = pattern_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) baseUri_field) - Ppx_yojson_conv_lib.Option.None - , "baseUri" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) pattern_field) - Ppx_yojson_conv_lib.Option.None - , "pattern" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) baseUri_field + , Ppx_yojson_conv_lib.( ! ) pattern_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some baseUri_value + , Ppx_yojson_conv_lib.Option.Some pattern_value ) -> + { baseUri = baseUri_value; pattern = pattern_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) baseUri_field) + Ppx_yojson_conv_lib.Option.None + , "baseUri" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) pattern_field) + Ppx_yojson_conv_lib.Option.None + , "pattern" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -26154,7 +26312,8 @@ module RelativePattern = struct ("baseUri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -26176,18 +26335,20 @@ module GlobPattern = struct ; (fun json -> `RelativePattern (RelativePattern.t_of_yojson json)) ] json + ;; let yojson_of_t (t : t) : Json.t = match t with | `Pattern s -> Pattern.yojson_of_t s | `RelativePattern s -> RelativePattern.yojson_of_t s + ;; end module FileSystemWatcher = struct type t = { globPattern : GlobPattern.t ; kind : WatchKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -26196,7 +26357,7 @@ module FileSystemWatcher = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileSystemWatcher.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let globPattern_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -26204,68 +26365,65 @@ module FileSystemWatcher = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "globPattern" -> ( - match Ppx_yojson_conv_lib.( ! ) globPattern_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = GlobPattern.t_of_yojson _field_yojson in - globPattern_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - WatchKind.t_of_yojson - _field_yojson - in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "globPattern" -> + (match Ppx_yojson_conv_lib.( ! ) globPattern_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = GlobPattern.t_of_yojson _field_yojson in + globPattern_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson WatchKind.t_of_yojson _field_yojson + in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) globPattern_field - , Ppx_yojson_conv_lib.( ! ) kind_field ) - with - | Ppx_yojson_conv_lib.Option.Some globPattern_value, kind_value -> - { globPattern = globPattern_value - ; kind = - (match kind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) globPattern_field) - Ppx_yojson_conv_lib.Option.None - , "globPattern" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) globPattern_field + , Ppx_yojson_conv_lib.( ! ) kind_field ) + with + | Ppx_yojson_conv_lib.Option.Some globPattern_value, kind_value -> + { globPattern = globPattern_value + ; kind = + (match kind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) globPattern_field) + Ppx_yojson_conv_lib.Option.None + , "globPattern" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -26274,28 +26432,28 @@ module FileSystemWatcher = struct | { globPattern = v_globPattern; kind = v_kind } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_kind then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t WatchKind.yojson_of_t) v_kind - in - let bnd = ("kind", arg) in - bnd :: bnds + if None = v_kind + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t WatchKind.yojson_of_t) v_kind in + let bnd = "kind", arg in + bnd :: bnds) in let bnds = let arg = GlobPattern.yojson_of_t v_globPattern in ("globPattern", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(globPattern : GlobPattern.t) ?(kind : WatchKind.t option) - (() : unit) : t = + let create ~(globPattern : GlobPattern.t) ?(kind : WatchKind.t option) (() : unit) : t = { globPattern; kind } + ;; end module DidChangeWatchedFilesRegistrationOptions = struct @@ -26305,62 +26463,59 @@ module DidChangeWatchedFilesRegistrationOptions = struct let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DidChangeWatchedFilesRegistrationOptions.t" - in + (let _tp_loc = "lsp/src/types.ml.DidChangeWatchedFilesRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let watchers_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "watchers" -> ( - match Ppx_yojson_conv_lib.( ! ) watchers_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson FileSystemWatcher.t_of_yojson _field_yojson - in - watchers_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "watchers" -> + (match Ppx_yojson_conv_lib.( ! ) watchers_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson FileSystemWatcher.t_of_yojson _field_yojson + in + watchers_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) watchers_field with - | Ppx_yojson_conv_lib.Option.Some watchers_value -> - { watchers = watchers_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) watchers_field) - Ppx_yojson_conv_lib.Option.None - , "watchers" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) watchers_field with + | Ppx_yojson_conv_lib.Option.Some watchers_value -> + { watchers = watchers_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) watchers_field) + Ppx_yojson_conv_lib.Option.None + , "watchers" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -26373,7 +26528,8 @@ module DidChangeWatchedFilesRegistrationOptions = struct ("watchers", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -26394,7 +26550,7 @@ module WorkspaceFoldersChangeEvent = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceFoldersChangeEvent.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let added_field = ref Ppx_yojson_conv_lib.Option.None and removed_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -26402,68 +26558,63 @@ module WorkspaceFoldersChangeEvent = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "added" -> ( - match Ppx_yojson_conv_lib.( ! ) added_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson WorkspaceFolder.t_of_yojson _field_yojson - in - added_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "removed" -> ( - match Ppx_yojson_conv_lib.( ! ) removed_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson WorkspaceFolder.t_of_yojson _field_yojson - in - removed_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "added" -> + (match Ppx_yojson_conv_lib.( ! ) added_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson WorkspaceFolder.t_of_yojson _field_yojson in + added_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "removed" -> + (match Ppx_yojson_conv_lib.( ! ) removed_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson WorkspaceFolder.t_of_yojson _field_yojson in + removed_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) added_field - , Ppx_yojson_conv_lib.( ! ) removed_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some added_value - , Ppx_yojson_conv_lib.Option.Some removed_value ) -> - { added = added_value; removed = removed_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) added_field) - Ppx_yojson_conv_lib.Option.None - , "added" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) removed_field) - Ppx_yojson_conv_lib.Option.None - , "removed" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) added_field + , Ppx_yojson_conv_lib.( ! ) removed_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some added_value + , Ppx_yojson_conv_lib.Option.Some removed_value ) -> + { added = added_value; removed = removed_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) added_field) + Ppx_yojson_conv_lib.Option.None + , "added" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) removed_field) + Ppx_yojson_conv_lib.Option.None + , "removed" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -26480,15 +26631,16 @@ module WorkspaceFoldersChangeEvent = struct ("added", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(added : WorkspaceFolder.t list) - ~(removed : WorkspaceFolder.t list) : t = + let create ~(added : WorkspaceFolder.t list) ~(removed : WorkspaceFolder.t list) : t = { added; removed } + ;; end module DidChangeWorkspaceFoldersParams = struct @@ -26500,58 +26652,54 @@ module DidChangeWorkspaceFoldersParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidChangeWorkspaceFoldersParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let event_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "event" -> ( - match Ppx_yojson_conv_lib.( ! ) event_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - WorkspaceFoldersChangeEvent.t_of_yojson _field_yojson - in - event_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "event" -> + (match Ppx_yojson_conv_lib.( ! ) event_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = WorkspaceFoldersChangeEvent.t_of_yojson _field_yojson in + event_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) event_field with - | Ppx_yojson_conv_lib.Option.Some event_value -> - { event = event_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) event_field) - Ppx_yojson_conv_lib.Option.None - , "event" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) event_field with + | Ppx_yojson_conv_lib.Option.Some event_value -> { event = event_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) event_field) + Ppx_yojson_conv_lib.Option.None + , "event" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -26564,7 +26712,8 @@ module DidChangeWorkspaceFoldersParams = struct ("event", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -26582,55 +26731,54 @@ module NotebookDocumentIdentifier = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookDocumentIdentifier.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let uri_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.Some uri_value -> { uri = uri_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.Some uri_value -> { uri = uri_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -26643,7 +26791,8 @@ module NotebookDocumentIdentifier = struct ("uri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -26664,7 +26813,7 @@ module DidCloseNotebookDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidCloseNotebookDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let cellTextDocuments_field = ref Ppx_yojson_conv_lib.Option.None and notebookDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -26672,78 +26821,74 @@ module DidCloseNotebookDocumentParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "cellTextDocuments" -> ( - match Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson TextDocumentIdentifier.t_of_yojson _field_yojson - in - cellTextDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "notebookDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - NotebookDocumentIdentifier.t_of_yojson _field_yojson - in - notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "cellTextDocuments" -> + (match Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson TextDocumentIdentifier.t_of_yojson _field_yojson + in + cellTextDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "notebookDocument" -> + (match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = NotebookDocumentIdentifier.t_of_yojson _field_yojson in + notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field - , Ppx_yojson_conv_lib.( ! ) notebookDocument_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some cellTextDocuments_value - , Ppx_yojson_conv_lib.Option.Some notebookDocument_value ) -> - { cellTextDocuments = cellTextDocuments_value - ; notebookDocument = notebookDocument_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field) - Ppx_yojson_conv_lib.Option.None - , "cellTextDocuments" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) notebookDocument_field) - Ppx_yojson_conv_lib.Option.None - , "notebookDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { cellTextDocuments = v_cellTextDocuments - ; notebookDocument = v_notebookDocument - } -> + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field + , Ppx_yojson_conv_lib.( ! ) notebookDocument_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some cellTextDocuments_value + , Ppx_yojson_conv_lib.Option.Some notebookDocument_value ) -> + { cellTextDocuments = cellTextDocuments_value + ; notebookDocument = notebookDocument_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field) + Ppx_yojson_conv_lib.Option.None + , "cellTextDocuments" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) notebookDocument_field) + Ppx_yojson_conv_lib.Option.None + , "notebookDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { cellTextDocuments = v_cellTextDocuments; notebookDocument = v_notebookDocument } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = let arg = NotebookDocumentIdentifier.yojson_of_t v_notebookDocument in @@ -26756,15 +26901,20 @@ module DidCloseNotebookDocumentParams = struct ("cellTextDocuments", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(cellTextDocuments : TextDocumentIdentifier.t list) - ~(notebookDocument : NotebookDocumentIdentifier.t) : t = + let create + ~(cellTextDocuments : TextDocumentIdentifier.t list) + ~(notebookDocument : NotebookDocumentIdentifier.t) + : t + = { cellTextDocuments; notebookDocument } + ;; end module DidCloseTextDocumentParams = struct @@ -26776,56 +26926,55 @@ module DidCloseTextDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidCloseTextDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let textDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.Some textDocument_value -> - { textDocument = textDocument_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.Some textDocument_value -> + { textDocument = textDocument_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -26838,7 +26987,8 @@ module DidCloseTextDocumentParams = struct ("textDocument", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -26851,7 +27001,7 @@ module NotebookDocument = struct type t = { cells : NotebookCell.t list ; metadata : Json.Object.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; notebookType : string ; uri : DocumentUri.t ; version : int @@ -26863,7 +27013,7 @@ module NotebookDocument = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.NotebookDocument.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let cells_field = ref Ppx_yojson_conv_lib.Option.None and metadata_field = ref Ppx_yojson_conv_lib.Option.None and notebookType_field = ref Ppx_yojson_conv_lib.Option.None @@ -26874,113 +27024,108 @@ module NotebookDocument = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "cells" -> ( - match Ppx_yojson_conv_lib.( ! ) cells_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson NotebookCell.t_of_yojson _field_yojson - in - cells_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "metadata" -> ( - match Ppx_yojson_conv_lib.( ! ) metadata_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Json.Object.t_of_yojson - _field_yojson - in - metadata_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "notebookType" -> ( - match Ppx_yojson_conv_lib.( ! ) notebookType_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - notebookType_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) cells_field - , Ppx_yojson_conv_lib.( ! ) metadata_field - , Ppx_yojson_conv_lib.( ! ) notebookType_field - , Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some cells_value - , metadata_value - , Ppx_yojson_conv_lib.Option.Some notebookType_value - , Ppx_yojson_conv_lib.Option.Some uri_value - , Ppx_yojson_conv_lib.Option.Some version_value ) -> - { cells = cells_value - ; metadata = - (match metadata_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; notebookType = notebookType_value - ; uri = uri_value - ; version = version_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) cells_field) - Ppx_yojson_conv_lib.Option.None - , "cells" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) notebookType_field) - Ppx_yojson_conv_lib.Option.None - , "notebookType" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) version_field) - Ppx_yojson_conv_lib.Option.None - , "version" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "cells" -> + (match Ppx_yojson_conv_lib.( ! ) cells_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson NotebookCell.t_of_yojson _field_yojson in + cells_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "metadata" -> + (match Ppx_yojson_conv_lib.( ! ) metadata_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Json.Object.t_of_yojson _field_yojson + in + metadata_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "notebookType" -> + (match Ppx_yojson_conv_lib.( ! ) notebookType_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + notebookType_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) cells_field + , Ppx_yojson_conv_lib.( ! ) metadata_field + , Ppx_yojson_conv_lib.( ! ) notebookType_field + , Ppx_yojson_conv_lib.( ! ) uri_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some cells_value + , metadata_value + , Ppx_yojson_conv_lib.Option.Some notebookType_value + , Ppx_yojson_conv_lib.Option.Some uri_value + , Ppx_yojson_conv_lib.Option.Some version_value ) -> + { cells = cells_value + ; metadata = + (match metadata_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; notebookType = notebookType_value + ; uri = uri_value + ; version = version_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) cells_field) + Ppx_yojson_conv_lib.Option.None + , "cells" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) notebookType_field) + Ppx_yojson_conv_lib.Option.None + , "notebookType" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) version_field) + Ppx_yojson_conv_lib.Option.None + , "version" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -27006,30 +27151,38 @@ module NotebookDocument = struct ("notebookType", arg) :: bnds in let bnds = - if None = v_metadata then bnds - else + if None = v_metadata + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t Json.Object.yojson_of_t) - v_metadata + (Json.Nullable_option.yojson_of_t Json.Object.yojson_of_t) v_metadata in - let bnd = ("metadata", arg) in - bnd :: bnds + let bnd = "metadata", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list NotebookCell.yojson_of_t v_cells in ("cells", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(cells : NotebookCell.t list) ?(metadata : Json.Object.t option) - ~(notebookType : string) ~(uri : DocumentUri.t) ~(version : int) - (() : unit) : t = + let create + ~(cells : NotebookCell.t list) + ?(metadata : Json.Object.t option) + ~(notebookType : string) + ~(uri : DocumentUri.t) + ~(version : int) + (() : unit) + : t + = { cells; metadata; notebookType; uri; version } + ;; end module DidOpenNotebookDocumentParams = struct @@ -27044,7 +27197,7 @@ module DidOpenNotebookDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidOpenNotebookDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let cellTextDocuments_field = ref Ppx_yojson_conv_lib.Option.None and notebookDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -27052,97 +27205,96 @@ module DidOpenNotebookDocumentParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "cellTextDocuments" -> ( - match Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson TextDocumentItem.t_of_yojson _field_yojson - in - cellTextDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "notebookDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = NotebookDocument.t_of_yojson _field_yojson in - notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "cellTextDocuments" -> + (match Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson TextDocumentItem.t_of_yojson _field_yojson in + cellTextDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "notebookDocument" -> + (match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = NotebookDocument.t_of_yojson _field_yojson in + notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field - , Ppx_yojson_conv_lib.( ! ) notebookDocument_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some cellTextDocuments_value - , Ppx_yojson_conv_lib.Option.Some notebookDocument_value ) -> - { cellTextDocuments = cellTextDocuments_value - ; notebookDocument = notebookDocument_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field) - Ppx_yojson_conv_lib.Option.None - , "cellTextDocuments" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) notebookDocument_field) - Ppx_yojson_conv_lib.Option.None - , "notebookDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { cellTextDocuments = v_cellTextDocuments - ; notebookDocument = v_notebookDocument - } -> + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field + , Ppx_yojson_conv_lib.( ! ) notebookDocument_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some cellTextDocuments_value + , Ppx_yojson_conv_lib.Option.Some notebookDocument_value ) -> + { cellTextDocuments = cellTextDocuments_value + ; notebookDocument = notebookDocument_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) cellTextDocuments_field) + Ppx_yojson_conv_lib.Option.None + , "cellTextDocuments" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) notebookDocument_field) + Ppx_yojson_conv_lib.Option.None + , "notebookDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { cellTextDocuments = v_cellTextDocuments; notebookDocument = v_notebookDocument } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = let arg = NotebookDocument.yojson_of_t v_notebookDocument in ("notebookDocument", arg) :: bnds in let bnds = - let arg = - yojson_of_list TextDocumentItem.yojson_of_t v_cellTextDocuments - in + let arg = yojson_of_list TextDocumentItem.yojson_of_t v_cellTextDocuments in ("cellTextDocuments", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(cellTextDocuments : TextDocumentItem.t list) - ~(notebookDocument : NotebookDocument.t) : t = + let create + ~(cellTextDocuments : TextDocumentItem.t list) + ~(notebookDocument : NotebookDocument.t) + : t + = { cellTextDocuments; notebookDocument } + ;; end module DidOpenTextDocumentParams = struct @@ -27154,56 +27306,55 @@ module DidOpenTextDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidOpenTextDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let textDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentItem.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentItem.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.Some textDocument_value -> - { textDocument = textDocument_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.Some textDocument_value -> + { textDocument = textDocument_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -27216,7 +27367,8 @@ module DidOpenTextDocumentParams = struct ("textDocument", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -27234,58 +27386,55 @@ module DidSaveNotebookDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidSaveNotebookDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let notebookDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "notebookDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - NotebookDocumentIdentifier.t_of_yojson _field_yojson - in - notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "notebookDocument" -> + (match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = NotebookDocumentIdentifier.t_of_yojson _field_yojson in + notebookDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with - | Ppx_yojson_conv_lib.Option.Some notebookDocument_value -> - { notebookDocument = notebookDocument_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) notebookDocument_field) - Ppx_yojson_conv_lib.Option.None - , "notebookDocument" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) notebookDocument_field with + | Ppx_yojson_conv_lib.Option.Some notebookDocument_value -> + { notebookDocument = notebookDocument_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) notebookDocument_field) + Ppx_yojson_conv_lib.Option.None + , "notebookDocument" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -27298,20 +27447,19 @@ module DidSaveNotebookDocumentParams = struct ("notebookDocument", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(notebookDocument : NotebookDocumentIdentifier.t) : t = - { notebookDocument } + let create ~(notebookDocument : NotebookDocumentIdentifier.t) : t = { notebookDocument } end module DidSaveTextDocumentParams = struct type t = - { text : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { text : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentIdentifier.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -27321,7 +27469,7 @@ module DidSaveTextDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DidSaveTextDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let text_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -27329,66 +27477,65 @@ module DidSaveTextDocumentParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "text" -> ( - match Ppx_yojson_conv_lib.( ! ) text_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - text_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "text" -> + (match Ppx_yojson_conv_lib.( ! ) text_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + text_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) text_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field ) - with - | text_value, Ppx_yojson_conv_lib.Option.Some textDocument_value -> - { text = - (match text_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = textDocument_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) text_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field ) + with + | text_value, Ppx_yojson_conv_lib.Option.Some textDocument_value -> + { text = + (match text_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = textDocument_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -27401,30 +27548,35 @@ module DidSaveTextDocumentParams = struct ("textDocument", arg) :: bnds in let bnds = - if None = v_text then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_text - in - let bnd = ("text", arg) in - bnd :: bnds + if None = v_text + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_text in + let bnd = "text", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(text : string option) ~(textDocument : TextDocumentIdentifier.t) - (() : unit) : t = + let create + ?(text : string option) + ~(textDocument : TextDocumentIdentifier.t) + (() : unit) + : t + = { text; textDocument } + ;; end module DocumentColorOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -27433,89 +27585,88 @@ module DocumentColorOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentColorOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson let yojson_of_t = (function | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module DocumentColorParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -27524,7 +27675,7 @@ module DocumentColorParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentColorParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -27533,87 +27684,85 @@ module DocumentColorParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -27625,50 +27774,56 @@ module DocumentColorParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in ("textDocument", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; textDocument; workDoneToken } + ;; end module DocumentColorRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -27677,7 +27832,7 @@ module DocumentColorRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentColorRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -27686,77 +27841,76 @@ module DocumentColorRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -27768,55 +27922,64 @@ module DocumentColorRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module DocumentDiagnosticParams = struct type t = { identifier : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; previousResultId : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -27825,7 +27988,7 @@ module DocumentDiagnosticParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentDiagnosticParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let identifier_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and previousResultId_field = ref Ppx_yojson_conv_lib.Option.None @@ -27836,117 +27999,115 @@ module DocumentDiagnosticParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "identifier" -> ( - match Ppx_yojson_conv_lib.( ! ) identifier_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "previousResultId" -> ( - match Ppx_yojson_conv_lib.( ! ) previousResultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - previousResultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) identifier_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) previousResultId_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( identifier_value - , partialResultToken_value - , previousResultId_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { identifier = - (match identifier_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; previousResultId = - (match previousResultId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "identifier" -> + (match Ppx_yojson_conv_lib.( ! ) identifier_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "previousResultId" -> + (match Ppx_yojson_conv_lib.( ! ) previousResultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + previousResultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) identifier_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) previousResultId_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( identifier_value + , partialResultToken_value + , previousResultId_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { identifier = + (match identifier_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; previousResultId = + (match previousResultId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -27960,127 +28121,126 @@ module DocumentDiagnosticParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in ("textDocument", arg) :: bnds in let bnds = - if None = v_previousResultId then bnds - else + if None = v_previousResultId + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) - v_previousResultId + (Json.Nullable_option.yojson_of_t yojson_of_string) v_previousResultId in - let bnd = ("previousResultId", arg) in - bnd :: bnds + let bnd = "previousResultId", arg in + bnd :: bnds) in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = - if None = v_identifier then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_identifier - in - let bnd = ("identifier", arg) in - bnd :: bnds + if None = v_identifier + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_identifier in + let bnd = "identifier", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(identifier : string option) - ?(partialResultToken : ProgressToken.t option) - ?(previousResultId : string option) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = - { identifier - ; partialResultToken - ; previousResultId - ; textDocument - ; workDoneToken - } + let create + ?(identifier : string option) + ?(partialResultToken : ProgressToken.t option) + ?(previousResultId : string option) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = + { identifier; partialResultToken; previousResultId; textDocument; workDoneToken } + ;; end module UnchangedDocumentDiagnosticReport = struct - type t = { resultId : string } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { resultId : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.UnchangedDocumentDiagnosticReport.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let resultId_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "resultId" -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "resultId" -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.Some resultId_value -> - { resultId = resultId_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) resultId_field) - Ppx_yojson_conv_lib.Option.None - , "resultId" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.Some resultId_value -> + { resultId = resultId_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) resultId_field) + Ppx_yojson_conv_lib.Option.None + , "resultId" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -28093,7 +28253,8 @@ module UnchangedDocumentDiagnosticReport = struct ("resultId", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -28103,16 +28264,18 @@ module UnchangedDocumentDiagnosticReport = struct let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "unchanged" yojson_of_t t + ;; let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "unchanged" t_of_yojson json + ;; end module FullDocumentDiagnosticReport = struct type t = { items : Diagnostic.t list ; resultId : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -28121,7 +28284,7 @@ module FullDocumentDiagnosticReport = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FullDocumentDiagnosticReport.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let items_field = ref Ppx_yojson_conv_lib.Option.None and resultId_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -28129,68 +28292,65 @@ module FullDocumentDiagnosticReport = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "items" -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson Diagnostic.t_of_yojson _field_yojson - in - items_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resultId" -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "items" -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Diagnostic.t_of_yojson _field_yojson in + items_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resultId" -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) items_field - , Ppx_yojson_conv_lib.( ! ) resultId_field ) - with - | Ppx_yojson_conv_lib.Option.Some items_value, resultId_value -> - { items = items_value - ; resultId = - (match resultId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) items_field) - Ppx_yojson_conv_lib.Option.None - , "items" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) items_field + , Ppx_yojson_conv_lib.( ! ) resultId_field ) + with + | Ppx_yojson_conv_lib.Option.Some items_value, resultId_value -> + { items = items_value + ; resultId = + (match resultId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) items_field) + Ppx_yojson_conv_lib.Option.None + , "items" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -28199,34 +28359,34 @@ module FullDocumentDiagnosticReport = struct | { items = v_items; resultId = v_resultId } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_resultId then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId - in - let bnd = ("resultId", arg) in - bnd :: bnds + if None = v_resultId + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId in + let bnd = "resultId", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list Diagnostic.yojson_of_t v_items in ("items", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(items : Diagnostic.t list) ?(resultId : string option) - (() : unit) : t = + let create ~(items : Diagnostic.t list) ?(resultId : string option) (() : unit) : t = { items; resultId } + ;; - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "full" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "full" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "full" t_of_yojson json + ;; end module RelatedUnchangedDocumentDiagnosticReport = struct @@ -28239,27 +28399,27 @@ module RelatedUnchangedDocumentDiagnosticReport = struct Json.Of.untagged_union "relatedDocuments_pvar" [ (fun json -> - `FullDocumentDiagnosticReport - (FullDocumentDiagnosticReport.t_of_yojson json)) + `FullDocumentDiagnosticReport (FullDocumentDiagnosticReport.t_of_yojson json)) ; (fun json -> `UnchangedDocumentDiagnosticReport (UnchangedDocumentDiagnosticReport.t_of_yojson json)) ] json + ;; - let yojson_of_relatedDocuments_pvar - (relatedDocuments_pvar : relatedDocuments_pvar) : Json.t = + let yojson_of_relatedDocuments_pvar (relatedDocuments_pvar : relatedDocuments_pvar) + : Json.t + = match relatedDocuments_pvar with - | `FullDocumentDiagnosticReport s -> - FullDocumentDiagnosticReport.yojson_of_t s + | `FullDocumentDiagnosticReport s -> FullDocumentDiagnosticReport.yojson_of_t s | `UnchangedDocumentDiagnosticReport s -> UnchangedDocumentDiagnosticReport.yojson_of_t s + ;; type t = { relatedDocuments : - (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t - Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; resultId : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -28267,11 +28427,9 @@ module RelatedUnchangedDocumentDiagnosticReport = struct let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.RelatedUnchangedDocumentDiagnosticReport.t" - in + (let _tp_loc = "lsp/src/types.ml.RelatedUnchangedDocumentDiagnosticReport.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let relatedDocuments_field = ref Ppx_yojson_conv_lib.Option.None and resultId_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -28279,71 +28437,69 @@ module RelatedUnchangedDocumentDiagnosticReport = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "relatedDocuments" -> ( - match Ppx_yojson_conv_lib.( ! ) relatedDocuments_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Assoc.t_of_yojson - DocumentUri.t_of_yojson - relatedDocuments_pvar_of_yojson) - _field_yojson - in - relatedDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resultId" -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "relatedDocuments" -> + (match Ppx_yojson_conv_lib.( ! ) relatedDocuments_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Assoc.t_of_yojson + DocumentUri.t_of_yojson + relatedDocuments_pvar_of_yojson) + _field_yojson + in + relatedDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resultId" -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) relatedDocuments_field - , Ppx_yojson_conv_lib.( ! ) resultId_field ) - with - | ( relatedDocuments_value - , Ppx_yojson_conv_lib.Option.Some resultId_value ) -> - { relatedDocuments = - (match relatedDocuments_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resultId = resultId_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) resultId_field) - Ppx_yojson_conv_lib.Option.None - , "resultId" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) relatedDocuments_field + , Ppx_yojson_conv_lib.( ! ) resultId_field ) + with + | relatedDocuments_value, Ppx_yojson_conv_lib.Option.Some resultId_value -> + { relatedDocuments = + (match relatedDocuments_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resultId = resultId_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) resultId_field) + Ppx_yojson_conv_lib.Option.None + , "resultId" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -28356,8 +28512,9 @@ module RelatedUnchangedDocumentDiagnosticReport = struct ("resultId", arg) :: bnds in let bnds = - if None = v_relatedDocuments then bnds - else + if None = v_relatedDocuments + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Assoc.yojson_of_t @@ -28365,27 +28522,33 @@ module RelatedUnchangedDocumentDiagnosticReport = struct yojson_of_relatedDocuments_pvar)) v_relatedDocuments in - let bnd = ("relatedDocuments", arg) in - bnd :: bnds + let bnd = "relatedDocuments", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] let create - ?(relatedDocuments : - (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t option) - ~(resultId : string) (() : unit) : t = + ?(relatedDocuments : (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t option) + ~(resultId : string) + (() : unit) + : t + = { relatedDocuments; resultId } + ;; let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "unchanged" yojson_of_t t + ;; let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "unchanged" t_of_yojson json + ;; end module RelatedFullDocumentDiagnosticReport = struct @@ -28398,30 +28561,30 @@ module RelatedFullDocumentDiagnosticReport = struct Json.Of.untagged_union "relatedDocuments_pvar" [ (fun json -> - `FullDocumentDiagnosticReport - (FullDocumentDiagnosticReport.t_of_yojson json)) + `FullDocumentDiagnosticReport (FullDocumentDiagnosticReport.t_of_yojson json)) ; (fun json -> `UnchangedDocumentDiagnosticReport (UnchangedDocumentDiagnosticReport.t_of_yojson json)) ] json + ;; - let yojson_of_relatedDocuments_pvar - (relatedDocuments_pvar : relatedDocuments_pvar) : Json.t = + let yojson_of_relatedDocuments_pvar (relatedDocuments_pvar : relatedDocuments_pvar) + : Json.t + = match relatedDocuments_pvar with - | `FullDocumentDiagnosticReport s -> - FullDocumentDiagnosticReport.yojson_of_t s + | `FullDocumentDiagnosticReport s -> FullDocumentDiagnosticReport.yojson_of_t s | `UnchangedDocumentDiagnosticReport s -> UnchangedDocumentDiagnosticReport.yojson_of_t s + ;; type t = { items : Diagnostic.t list ; relatedDocuments : - (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t - Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; resultId : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -28430,7 +28593,7 @@ module RelatedFullDocumentDiagnosticReport = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RelatedFullDocumentDiagnosticReport.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let items_field = ref Ppx_yojson_conv_lib.Option.None and relatedDocuments_field = ref Ppx_yojson_conv_lib.Option.None and resultId_field = ref Ppx_yojson_conv_lib.Option.None @@ -28439,110 +28602,105 @@ module RelatedFullDocumentDiagnosticReport = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "items" -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson Diagnostic.t_of_yojson _field_yojson - in - items_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "relatedDocuments" -> ( - match Ppx_yojson_conv_lib.( ! ) relatedDocuments_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Assoc.t_of_yojson - DocumentUri.t_of_yojson - relatedDocuments_pvar_of_yojson) - _field_yojson - in - relatedDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resultId" -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) items_field - , Ppx_yojson_conv_lib.( ! ) relatedDocuments_field - , Ppx_yojson_conv_lib.( ! ) resultId_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some items_value - , relatedDocuments_value - , resultId_value ) -> - { items = items_value - ; relatedDocuments = - (match relatedDocuments_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resultId = - (match resultId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) items_field) - Ppx_yojson_conv_lib.Option.None - , "items" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { items = v_items - ; relatedDocuments = v_relatedDocuments - ; resultId = v_resultId - } -> + | "items" -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Diagnostic.t_of_yojson _field_yojson in + items_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "relatedDocuments" -> + (match Ppx_yojson_conv_lib.( ! ) relatedDocuments_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Assoc.t_of_yojson + DocumentUri.t_of_yojson + relatedDocuments_pvar_of_yojson) + _field_yojson + in + relatedDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resultId" -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) items_field + , Ppx_yojson_conv_lib.( ! ) relatedDocuments_field + , Ppx_yojson_conv_lib.( ! ) resultId_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some items_value + , relatedDocuments_value + , resultId_value ) -> + { items = items_value + ; relatedDocuments = + (match relatedDocuments_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resultId = + (match resultId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) items_field) + Ppx_yojson_conv_lib.Option.None + , "items" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { items = v_items; relatedDocuments = v_relatedDocuments; resultId = v_resultId } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_resultId then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId - in - let bnd = ("resultId", arg) in - bnd :: bnds + if None = v_resultId + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId in + let bnd = "resultId", arg in + bnd :: bnds) in let bnds = - if None = v_relatedDocuments then bnds - else + if None = v_relatedDocuments + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Assoc.yojson_of_t @@ -28550,37 +28708,41 @@ module RelatedFullDocumentDiagnosticReport = struct yojson_of_relatedDocuments_pvar)) v_relatedDocuments in - let bnd = ("relatedDocuments", arg) in - bnd :: bnds + let bnd = "relatedDocuments", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list Diagnostic.yojson_of_t v_items in ("items", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(items : Diagnostic.t list) - ?(relatedDocuments : - (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t option) - ?(resultId : string option) (() : unit) : t = + let create + ~(items : Diagnostic.t list) + ?(relatedDocuments : (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t option) + ?(resultId : string option) + (() : unit) + : t + = { items; relatedDocuments; resultId } + ;; - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "full" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "full" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "full" t_of_yojson json + ;; end module DocumentDiagnosticReport = struct type t = - [ `RelatedFullDocumentDiagnosticReport of - RelatedFullDocumentDiagnosticReport.t + [ `RelatedFullDocumentDiagnosticReport of RelatedFullDocumentDiagnosticReport.t | `RelatedUnchangedDocumentDiagnosticReport of RelatedUnchangedDocumentDiagnosticReport.t ] @@ -28596,6 +28758,7 @@ module DocumentDiagnosticReport = struct (RelatedUnchangedDocumentDiagnosticReport.t_of_yojson json)) ] json + ;; let yojson_of_t (t : t) : Json.t = match t with @@ -28603,6 +28766,7 @@ module DocumentDiagnosticReport = struct RelatedFullDocumentDiagnosticReport.yojson_of_t s | `RelatedUnchangedDocumentDiagnosticReport s -> RelatedUnchangedDocumentDiagnosticReport.yojson_of_t s + ;; end module DocumentDiagnosticReportPartialResult = struct @@ -28615,24 +28779,24 @@ module DocumentDiagnosticReportPartialResult = struct Json.Of.untagged_union "relatedDocuments_pvar" [ (fun json -> - `FullDocumentDiagnosticReport - (FullDocumentDiagnosticReport.t_of_yojson json)) + `FullDocumentDiagnosticReport (FullDocumentDiagnosticReport.t_of_yojson json)) ; (fun json -> `UnchangedDocumentDiagnosticReport (UnchangedDocumentDiagnosticReport.t_of_yojson json)) ] json + ;; - let yojson_of_relatedDocuments_pvar - (relatedDocuments_pvar : relatedDocuments_pvar) : Json.t = + let yojson_of_relatedDocuments_pvar (relatedDocuments_pvar : relatedDocuments_pvar) + : Json.t + = match relatedDocuments_pvar with - | `FullDocumentDiagnosticReport s -> - FullDocumentDiagnosticReport.yojson_of_t s + | `FullDocumentDiagnosticReport s -> FullDocumentDiagnosticReport.yojson_of_t s | `UnchangedDocumentDiagnosticReport s -> UnchangedDocumentDiagnosticReport.yojson_of_t s + ;; - type t = - { relatedDocuments : (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t } + type t = { relatedDocuments : (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () @@ -28640,61 +28804,60 @@ module DocumentDiagnosticReportPartialResult = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentDiagnosticReportPartialResult.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let relatedDocuments_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "relatedDocuments" -> ( - match Ppx_yojson_conv_lib.( ! ) relatedDocuments_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Assoc.t_of_yojson - DocumentUri.t_of_yojson - relatedDocuments_pvar_of_yojson - _field_yojson - in - relatedDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "relatedDocuments" -> + (match Ppx_yojson_conv_lib.( ! ) relatedDocuments_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Assoc.t_of_yojson + DocumentUri.t_of_yojson + relatedDocuments_pvar_of_yojson + _field_yojson + in + relatedDocuments_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) relatedDocuments_field with - | Ppx_yojson_conv_lib.Option.Some relatedDocuments_value -> - { relatedDocuments = relatedDocuments_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) relatedDocuments_field) - Ppx_yojson_conv_lib.Option.None - , "relatedDocuments" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) relatedDocuments_field with + | Ppx_yojson_conv_lib.Option.Some relatedDocuments_value -> + { relatedDocuments = relatedDocuments_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) relatedDocuments_field) + Ppx_yojson_conv_lib.Option.None + , "relatedDocuments" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -28712,22 +28875,23 @@ module DocumentDiagnosticReportPartialResult = struct ("relatedDocuments", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create - ~(relatedDocuments : (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t) - : t = + let create ~(relatedDocuments : (DocumentUri.t, relatedDocuments_pvar) Json.Assoc.t) : t + = { relatedDocuments } + ;; end module DocumentFormattingOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -28736,54 +28900,53 @@ module DocumentFormattingOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentFormattingOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -28792,36 +28955,36 @@ module DocumentFormattingOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module FormattingOptions = struct type t = { insertFinalNewline : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertSpaces : bool ; tabSize : int ; trimFinalNewlines : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; trimTrailingWhitespace : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -28830,7 +28993,7 @@ module FormattingOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FormattingOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let insertFinalNewline_field = ref Ppx_yojson_conv_lib.Option.None and insertSpaces_field = ref Ppx_yojson_conv_lib.Option.None and tabSize_field = ref Ppx_yojson_conv_lib.Option.None @@ -28841,113 +29004,110 @@ module FormattingOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "insertFinalNewline" -> ( - match Ppx_yojson_conv_lib.( ! ) insertFinalNewline_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - insertFinalNewline_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertSpaces" -> ( - match Ppx_yojson_conv_lib.( ! ) insertSpaces_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - insertSpaces_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tabSize" -> ( - match Ppx_yojson_conv_lib.( ! ) tabSize_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - tabSize_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "trimFinalNewlines" -> ( - match Ppx_yojson_conv_lib.( ! ) trimFinalNewlines_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - trimFinalNewlines_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "trimTrailingWhitespace" -> ( - match Ppx_yojson_conv_lib.( ! ) trimTrailingWhitespace_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - trimTrailingWhitespace_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) insertFinalNewline_field - , Ppx_yojson_conv_lib.( ! ) insertSpaces_field - , Ppx_yojson_conv_lib.( ! ) tabSize_field - , Ppx_yojson_conv_lib.( ! ) trimFinalNewlines_field - , Ppx_yojson_conv_lib.( ! ) trimTrailingWhitespace_field ) - with - | ( insertFinalNewline_value - , Ppx_yojson_conv_lib.Option.Some insertSpaces_value - , Ppx_yojson_conv_lib.Option.Some tabSize_value - , trimFinalNewlines_value - , trimTrailingWhitespace_value ) -> - { insertFinalNewline = - (match insertFinalNewline_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertSpaces = insertSpaces_value - ; tabSize = tabSize_value - ; trimFinalNewlines = - (match trimFinalNewlines_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; trimTrailingWhitespace = - (match trimTrailingWhitespace_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) insertSpaces_field) - Ppx_yojson_conv_lib.Option.None - , "insertSpaces" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) tabSize_field) - Ppx_yojson_conv_lib.Option.None - , "tabSize" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "insertFinalNewline" -> + (match Ppx_yojson_conv_lib.( ! ) insertFinalNewline_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + insertFinalNewline_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertSpaces" -> + (match Ppx_yojson_conv_lib.( ! ) insertSpaces_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + insertSpaces_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tabSize" -> + (match Ppx_yojson_conv_lib.( ! ) tabSize_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + tabSize_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "trimFinalNewlines" -> + (match Ppx_yojson_conv_lib.( ! ) trimFinalNewlines_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + trimFinalNewlines_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "trimTrailingWhitespace" -> + (match Ppx_yojson_conv_lib.( ! ) trimTrailingWhitespace_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + trimTrailingWhitespace_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) insertFinalNewline_field + , Ppx_yojson_conv_lib.( ! ) insertSpaces_field + , Ppx_yojson_conv_lib.( ! ) tabSize_field + , Ppx_yojson_conv_lib.( ! ) trimFinalNewlines_field + , Ppx_yojson_conv_lib.( ! ) trimTrailingWhitespace_field ) + with + | ( insertFinalNewline_value + , Ppx_yojson_conv_lib.Option.Some insertSpaces_value + , Ppx_yojson_conv_lib.Option.Some tabSize_value + , trimFinalNewlines_value + , trimTrailingWhitespace_value ) -> + { insertFinalNewline = + (match insertFinalNewline_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertSpaces = insertSpaces_value + ; tabSize = tabSize_value + ; trimFinalNewlines = + (match trimFinalNewlines_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; trimTrailingWhitespace = + (match trimTrailingWhitespace_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) insertSpaces_field) + Ppx_yojson_conv_lib.Option.None + , "insertSpaces" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) tabSize_field) + Ppx_yojson_conv_lib.Option.None + , "tabSize" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -28961,24 +29121,24 @@ module FormattingOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_trimTrailingWhitespace then bnds - else + if None = v_trimTrailingWhitespace + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_trimTrailingWhitespace + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_trimTrailingWhitespace in - let bnd = ("trimTrailingWhitespace", arg) in - bnd :: bnds + let bnd = "trimTrailingWhitespace", arg in + bnd :: bnds) in let bnds = - if None = v_trimFinalNewlines then bnds - else + if None = v_trimFinalNewlines + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_trimFinalNewlines + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_trimFinalNewlines in - let bnd = ("trimFinalNewlines", arg) in - bnd :: bnds + let bnd = "trimFinalNewlines", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_int v_tabSize in @@ -28989,31 +29149,39 @@ module FormattingOptions = struct ("insertSpaces", arg) :: bnds in let bnds = - if None = v_insertFinalNewline then bnds - else + if None = v_insertFinalNewline + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_insertFinalNewline + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_insertFinalNewline in - let bnd = ("insertFinalNewline", arg) in - bnd :: bnds + let bnd = "insertFinalNewline", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(insertFinalNewline : bool option) ~(insertSpaces : bool) - ~(tabSize : int) ?(trimFinalNewlines : bool option) - ?(trimTrailingWhitespace : bool option) (() : unit) : t = + let create + ?(insertFinalNewline : bool option) + ~(insertSpaces : bool) + ~(tabSize : int) + ?(trimFinalNewlines : bool option) + ?(trimTrailingWhitespace : bool option) + (() : unit) + : t + = { insertFinalNewline ; insertSpaces ; tabSize ; trimFinalNewlines ; trimTrailingWhitespace } + ;; end module DocumentFormattingParams = struct @@ -29021,7 +29189,7 @@ module DocumentFormattingParams = struct { options : FormattingOptions.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -29030,7 +29198,7 @@ module DocumentFormattingParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentFormattingParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let options_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -29039,83 +29207,82 @@ module DocumentFormattingParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "options" -> ( - match Ppx_yojson_conv_lib.( ! ) options_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = FormattingOptions.t_of_yojson _field_yojson in - options_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) options_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some options_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { options = options_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "options" -> + (match Ppx_yojson_conv_lib.( ! ) options_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = FormattingOptions.t_of_yojson _field_yojson in + options_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) options_field) - Ppx_yojson_conv_lib.Option.None - , "options" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) options_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some options_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { options = options_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) options_field) + Ppx_yojson_conv_lib.Option.None + , "options" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -29127,14 +29294,14 @@ module DocumentFormattingParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -29145,24 +29312,30 @@ module DocumentFormattingParams = struct ("options", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(options : FormattingOptions.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(options : FormattingOptions.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { options; textDocument; workDoneToken } + ;; end module DocumentFormattingRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -29171,7 +29344,7 @@ module DocumentFormattingRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentFormattingRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -29179,108 +29352,112 @@ module DocumentFormattingRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { documentSelector = v_documentSelector - ; workDoneProgress = v_workDoneProgress - } -> + | { documentSelector = v_documentSelector; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; workDoneProgress } + ;; end module DocumentHighlight = struct type t = { kind : DocumentHighlightKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; range : Range.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -29290,7 +29467,7 @@ module DocumentHighlight = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentHighlight.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let kind_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -29298,68 +29475,67 @@ module DocumentHighlight = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentHighlightKind.t_of_yojson - _field_yojson - in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentHighlightKind.t_of_yojson + _field_yojson + in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | kind_value, Ppx_yojson_conv_lib.Option.Some range_value -> - { kind = - (match kind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; range = range_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | kind_value, Ppx_yojson_conv_lib.Option.Some range_value -> + { kind = + (match kind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; range = range_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -29372,32 +29548,32 @@ module DocumentHighlight = struct ("range", arg) :: bnds in let bnds = - if None = v_kind then bnds - else + if None = v_kind + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - DocumentHighlightKind.yojson_of_t) - v_kind + (Json.Nullable_option.yojson_of_t DocumentHighlightKind.yojson_of_t) v_kind in - let bnd = ("kind", arg) in - bnd :: bnds + let bnd = "kind", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(kind : DocumentHighlightKind.t option) ~(range : Range.t) - (() : unit) : t = + let create ?(kind : DocumentHighlightKind.t option) ~(range : Range.t) (() : unit) : t = { kind; range } + ;; end module DocumentHighlightOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -29406,54 +29582,53 @@ module DocumentHighlightOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentHighlightOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -29462,34 +29637,34 @@ module DocumentHighlightOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module DocumentHighlightParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -29498,7 +29673,7 @@ module DocumentHighlightParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentHighlightParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -29508,101 +29683,99 @@ module DocumentHighlightParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -29615,14 +29788,14 @@ module DocumentHighlightParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -29633,34 +29806,42 @@ module DocumentHighlightParams = struct ("position", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; position; textDocument; workDoneToken } + ;; end module DocumentHighlightRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -29669,7 +29850,7 @@ module DocumentHighlightRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentHighlightRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -29677,102 +29858,106 @@ module DocumentHighlightRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { documentSelector = v_documentSelector - ; workDoneProgress = v_workDoneProgress - } -> + | { documentSelector = v_documentSelector; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; workDoneProgress } + ;; end module DocumentLink = struct @@ -29780,9 +29965,8 @@ module DocumentLink = struct { data : Json.t option [@yojson.option] ; range : Range.t ; target : DocumentUri.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; tooltip : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; tooltip : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -29791,7 +29975,7 @@ module DocumentLink = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentLink.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let data_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and target_field = ref Ppx_yojson_conv_lib.Option.None @@ -29801,122 +29985,115 @@ module DocumentLink = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "target" -> ( - match Ppx_yojson_conv_lib.( ! ) target_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentUri.t_of_yojson - _field_yojson - in - target_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tooltip" -> ( - match Ppx_yojson_conv_lib.( ! ) tooltip_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - tooltip_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) target_field - , Ppx_yojson_conv_lib.( ! ) tooltip_field ) - with - | ( data_value - , Ppx_yojson_conv_lib.Option.Some range_value - , target_value - , tooltip_value ) -> - { data = data_value - ; range = range_value - ; target = - (match target_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tooltip = - (match tooltip_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { data = v_data - ; range = v_range - ; target = v_target - ; tooltip = v_tooltip - } -> - let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in - let bnds = - if None = v_tooltip then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_tooltip - in - let bnd = ("tooltip", arg) in - bnd :: bnds + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "target" -> + (match Ppx_yojson_conv_lib.( ! ) target_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson DocumentUri.t_of_yojson _field_yojson + in + target_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tooltip" -> + (match Ppx_yojson_conv_lib.( ! ) tooltip_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + tooltip_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () in - let bnds = - if None = v_target then bnds - else + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) target_field + , Ppx_yojson_conv_lib.( ! ) tooltip_field ) + with + | ( data_value + , Ppx_yojson_conv_lib.Option.Some range_value + , target_value + , tooltip_value ) -> + { data = data_value + ; range = range_value + ; target = + (match target_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tooltip = + (match tooltip_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { data = v_data; range = v_range; target = v_target; tooltip = v_tooltip } -> + let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in + let bnds = + if None = v_tooltip + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_tooltip in + let bnd = "tooltip", arg in + bnd :: bnds) + in + let bnds = + if None = v_target + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentUri.yojson_of_t) v_target in - let bnd = ("target", arg) in - bnd :: bnds + let bnd = "target", arg in + bnd :: bnds) in let bnds = let arg = Range.yojson_of_t v_range in @@ -29927,28 +30104,35 @@ module DocumentLink = struct | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(data : Json.t option) ~(range : Range.t) - ?(target : DocumentUri.t option) ?(tooltip : string option) (() : unit) : - t = + let create + ?(data : Json.t option) + ~(range : Range.t) + ?(target : DocumentUri.t option) + ?(tooltip : string option) + (() : unit) + : t + = { data; range; target; tooltip } + ;; end module DocumentLinkOptions = struct type t = { resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -29957,7 +30141,7 @@ module DocumentLinkOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentLinkOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -29965,108 +30149,112 @@ module DocumentLinkOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let resolveProvider_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let resolveProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { resolveProvider = v_resolveProvider - ; workDoneProgress = v_workDoneProgress - } -> + | { resolveProvider = v_resolveProvider; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { resolveProvider; workDoneProgress } + ;; end module DocumentLinkParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -30075,7 +30263,7 @@ module DocumentLinkParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentLinkParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -30084,87 +30272,85 @@ module DocumentLinkParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -30176,50 +30362,57 @@ module DocumentLinkParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in ("textDocument", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; textDocument; workDoneToken } + ;; end module DocumentLinkRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -30228,7 +30421,7 @@ module DocumentLinkRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentLinkRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -30237,79 +30430,76 @@ module DocumentLinkRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( documentSelector_value - , resolveProvider_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, resolveProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -30321,52 +30511,60 @@ module DocumentLinkRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; resolveProvider; workDoneProgress } + ;; end module DocumentOnTypeFormattingOptions = struct type t = { firstTriggerCharacter : string ; moreTriggerCharacter : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -30375,7 +30573,7 @@ module DocumentOnTypeFormattingOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentOnTypeFormattingOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let firstTriggerCharacter_field = ref Ppx_yojson_conv_lib.Option.None and moreTriggerCharacter_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -30383,71 +30581,68 @@ module DocumentOnTypeFormattingOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "firstTriggerCharacter" -> ( - match Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - firstTriggerCharacter_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "moreTriggerCharacter" -> ( - match Ppx_yojson_conv_lib.( ! ) moreTriggerCharacter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - moreTriggerCharacter_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "firstTriggerCharacter" -> + (match Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + firstTriggerCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "moreTriggerCharacter" -> + (match Ppx_yojson_conv_lib.( ! ) moreTriggerCharacter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + moreTriggerCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field - , Ppx_yojson_conv_lib.( ! ) moreTriggerCharacter_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some firstTriggerCharacter_value - , moreTriggerCharacter_value ) -> - { firstTriggerCharacter = firstTriggerCharacter_value - ; moreTriggerCharacter = - (match moreTriggerCharacter_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field) - Ppx_yojson_conv_lib.Option.None - , "firstTriggerCharacter" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field + , Ppx_yojson_conv_lib.( ! ) moreTriggerCharacter_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some firstTriggerCharacter_value + , moreTriggerCharacter_value ) -> + { firstTriggerCharacter = firstTriggerCharacter_value + ; moreTriggerCharacter = + (match moreTriggerCharacter_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field) + Ppx_yojson_conv_lib.Option.None + , "firstTriggerCharacter" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -30458,30 +30653,36 @@ module DocumentOnTypeFormattingOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_moreTriggerCharacter then bnds - else + if None = v_moreTriggerCharacter + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_moreTriggerCharacter in - let bnd = ("moreTriggerCharacter", arg) in - bnd :: bnds + let bnd = "moreTriggerCharacter", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_firstTriggerCharacter in ("firstTriggerCharacter", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(firstTriggerCharacter : string) - ?(moreTriggerCharacter : string list option) (() : unit) : t = + let create + ~(firstTriggerCharacter : string) + ?(moreTriggerCharacter : string list option) + (() : unit) + : t + = { firstTriggerCharacter; moreTriggerCharacter } + ;; end module DocumentOnTypeFormattingParams = struct @@ -30498,7 +30699,7 @@ module DocumentOnTypeFormattingParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentOnTypeFormattingParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let ch_field = ref Ppx_yojson_conv_lib.Option.None and options_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None @@ -30508,94 +30709,93 @@ module DocumentOnTypeFormattingParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "ch" -> ( - match Ppx_yojson_conv_lib.( ! ) ch_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - ch_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "options" -> ( - match Ppx_yojson_conv_lib.( ! ) options_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = FormattingOptions.t_of_yojson _field_yojson in - options_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) ch_field - , Ppx_yojson_conv_lib.( ! ) options_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some ch_value - , Ppx_yojson_conv_lib.Option.Some options_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> - { ch = ch_value - ; options = options_value - ; position = position_value - ; textDocument = textDocument_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) ch_field) - Ppx_yojson_conv_lib.Option.None - , "ch" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) options_field) - Ppx_yojson_conv_lib.Option.None - , "options" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "ch" -> + (match Ppx_yojson_conv_lib.( ! ) ch_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + ch_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "options" -> + (match Ppx_yojson_conv_lib.( ! ) options_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = FormattingOptions.t_of_yojson _field_yojson in + options_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) ch_field + , Ppx_yojson_conv_lib.( ! ) options_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some ch_value + , Ppx_yojson_conv_lib.Option.Some options_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> + { ch = ch_value + ; options = options_value + ; position = position_value + ; textDocument = textDocument_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) ch_field) + Ppx_yojson_conv_lib.Option.None + , "ch" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) options_field) + Ppx_yojson_conv_lib.Option.None + , "options" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -30624,35 +30824,40 @@ module DocumentOnTypeFormattingParams = struct ("ch", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(ch : string) ~(options : FormattingOptions.t) - ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) : t = + let create + ~(ch : string) + ~(options : FormattingOptions.t) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + : t + = { ch; options; position; textDocument } + ;; end module DocumentOnTypeFormattingRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; firstTriggerCharacter : string ; moreTriggerCharacter : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DocumentOnTypeFormattingRegistrationOptions.t" - in + (let _tp_loc = "lsp/src/types.ml.DocumentOnTypeFormattingRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and firstTriggerCharacter_field = ref Ppx_yojson_conv_lib.Option.None and moreTriggerCharacter_field = ref Ppx_yojson_conv_lib.Option.None @@ -30661,88 +30866,85 @@ module DocumentOnTypeFormattingRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "firstTriggerCharacter" -> ( - match Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - firstTriggerCharacter_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "moreTriggerCharacter" -> ( - match Ppx_yojson_conv_lib.( ! ) moreTriggerCharacter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - moreTriggerCharacter_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field - , Ppx_yojson_conv_lib.( ! ) moreTriggerCharacter_field ) - with - | ( documentSelector_value - , Ppx_yojson_conv_lib.Option.Some firstTriggerCharacter_value - , moreTriggerCharacter_value ) -> - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; firstTriggerCharacter = firstTriggerCharacter_value - ; moreTriggerCharacter = - (match moreTriggerCharacter_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "firstTriggerCharacter" -> + (match Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + firstTriggerCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "moreTriggerCharacter" -> + (match Ppx_yojson_conv_lib.( ! ) moreTriggerCharacter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + moreTriggerCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field) - Ppx_yojson_conv_lib.Option.None - , "firstTriggerCharacter" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field + , Ppx_yojson_conv_lib.( ! ) moreTriggerCharacter_field ) + with + | ( documentSelector_value + , Ppx_yojson_conv_lib.Option.Some firstTriggerCharacter_value + , moreTriggerCharacter_value ) -> + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; firstTriggerCharacter = firstTriggerCharacter_value + ; moreTriggerCharacter = + (match moreTriggerCharacter_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) firstTriggerCharacter_field) + Ppx_yojson_conv_lib.Option.None + , "firstTriggerCharacter" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -30754,49 +30956,56 @@ module DocumentOnTypeFormattingRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_moreTriggerCharacter then bnds - else + if None = v_moreTriggerCharacter + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_moreTriggerCharacter in - let bnd = ("moreTriggerCharacter", arg) in - bnd :: bnds + let bnd = "moreTriggerCharacter", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_firstTriggerCharacter in ("firstTriggerCharacter", arg) :: bnds in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ~(firstTriggerCharacter : string) - ?(moreTriggerCharacter : string list option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ~(firstTriggerCharacter : string) + ?(moreTriggerCharacter : string list option) + (() : unit) + : t + = { documentSelector; firstTriggerCharacter; moreTriggerCharacter } + ;; end module DocumentRangeFormattingOptions = struct type t = { rangesSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -30805,7 +31014,7 @@ module DocumentRangeFormattingOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentRangeFormattingOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let rangesSupport_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -30813,99 +31022,98 @@ module DocumentRangeFormattingOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "rangesSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) rangesSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - rangesSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "rangesSupport" -> + (match Ppx_yojson_conv_lib.( ! ) rangesSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + rangesSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let rangesSupport_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) rangesSupport_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { rangesSupport = - (match rangesSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let rangesSupport_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) rangesSupport_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { rangesSupport = + (match rangesSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { rangesSupport = v_rangesSupport - ; workDoneProgress = v_workDoneProgress - } -> + | { rangesSupport = v_rangesSupport; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_rangesSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_rangesSupport - in - let bnd = ("rangesSupport", arg) in - bnd :: bnds + if None = v_rangesSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_rangesSupport in + let bnd = "rangesSupport", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(rangesSupport : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create ?(rangesSupport : bool option) ?(workDoneProgress : bool option) (() : unit) + : t + = { rangesSupport; workDoneProgress } + ;; end module DocumentRangeFormattingParams = struct @@ -30914,7 +31122,7 @@ module DocumentRangeFormattingParams = struct ; range : Range.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -30923,7 +31131,7 @@ module DocumentRangeFormattingParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentRangeFormattingParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let options_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -30933,97 +31141,96 @@ module DocumentRangeFormattingParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "options" -> ( - match Ppx_yojson_conv_lib.( ! ) options_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = FormattingOptions.t_of_yojson _field_yojson in - options_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) options_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some options_value - , Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { options = options_value - ; range = range_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "options" -> + (match Ppx_yojson_conv_lib.( ! ) options_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = FormattingOptions.t_of_yojson _field_yojson in + options_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) options_field) - Ppx_yojson_conv_lib.Option.None - , "options" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) options_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some options_value + , Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { options = options_value + ; range = range_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) options_field) + Ppx_yojson_conv_lib.Option.None + , "options" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -31036,14 +31243,14 @@ module DocumentRangeFormattingParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -31058,37 +31265,42 @@ module DocumentRangeFormattingParams = struct ("options", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(options : FormattingOptions.t) ~(range : Range.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(options : FormattingOptions.t) + ~(range : Range.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { options; range; textDocument; workDoneToken } + ;; end module DocumentRangeFormattingRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; rangesSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.DocumentRangeFormattingRegistrationOptions.t" - in + (let _tp_loc = "lsp/src/types.ml.DocumentRangeFormattingRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and rangesSupport_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -31097,80 +31309,77 @@ module DocumentRangeFormattingRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rangesSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) rangesSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - rangesSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( documentSelector_value - , rangesSupport_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) rangesSupport_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rangesSupport = - (match rangesSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rangesSupport" -> + (match Ppx_yojson_conv_lib.( ! ) rangesSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + rangesSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, rangesSupport_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) rangesSupport_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rangesSupport = + (match rangesSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + let _ = t_of_yojson let yojson_of_t = @@ -31181,45 +31390,51 @@ module DocumentRangeFormattingRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_rangesSupport then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_rangesSupport - in - let bnd = ("rangesSupport", arg) in - bnd :: bnds + if None = v_rangesSupport + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_rangesSupport in + let bnd = "rangesSupport", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(rangesSupport : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(rangesSupport : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; rangesSupport; workDoneProgress } + ;; end module DocumentRangesFormattingParams = struct @@ -31228,7 +31443,7 @@ module DocumentRangesFormattingParams = struct ; ranges : Range.t list ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -31237,7 +31452,7 @@ module DocumentRangesFormattingParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentRangesFormattingParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let options_field = ref Ppx_yojson_conv_lib.Option.None and ranges_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -31247,97 +31462,96 @@ module DocumentRangesFormattingParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "options" -> ( - match Ppx_yojson_conv_lib.( ! ) options_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = FormattingOptions.t_of_yojson _field_yojson in - options_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "ranges" -> ( - match Ppx_yojson_conv_lib.( ! ) ranges_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson Range.t_of_yojson _field_yojson in - ranges_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) options_field - , Ppx_yojson_conv_lib.( ! ) ranges_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some options_value - , Ppx_yojson_conv_lib.Option.Some ranges_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { options = options_value - ; ranges = ranges_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "options" -> + (match Ppx_yojson_conv_lib.( ! ) options_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = FormattingOptions.t_of_yojson _field_yojson in + options_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "ranges" -> + (match Ppx_yojson_conv_lib.( ! ) ranges_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Range.t_of_yojson _field_yojson in + ranges_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) options_field) - Ppx_yojson_conv_lib.Option.None - , "options" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) ranges_field) - Ppx_yojson_conv_lib.Option.None - , "ranges" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) options_field + , Ppx_yojson_conv_lib.( ! ) ranges_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some options_value + , Ppx_yojson_conv_lib.Option.Some ranges_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { options = options_value + ; ranges = ranges_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) options_field) + Ppx_yojson_conv_lib.Option.None + , "options" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) ranges_field) + Ppx_yojson_conv_lib.Option.None + , "ranges" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -31350,14 +31564,14 @@ module DocumentRangesFormattingParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -31372,32 +31586,38 @@ module DocumentRangesFormattingParams = struct ("options", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(options : FormattingOptions.t) ~(ranges : Range.t list) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(options : FormattingOptions.t) + ~(ranges : Range.t list) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { options; ranges; textDocument; workDoneToken } + ;; end module DocumentSymbol = struct type t = { children : t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; deprecated : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; detail : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; detail : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; kind : SymbolKind.t ; name : string ; range : Range.t ; selectionRange : Range.t ; tags : SymbolTag.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -31406,7 +31626,7 @@ module DocumentSymbol = struct let rec t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentSymbol.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let children_field = ref Ppx_yojson_conv_lib.Option.None and deprecated_field = ref Ppx_yojson_conv_lib.Option.None and detail_field = ref Ppx_yojson_conv_lib.Option.None @@ -31420,158 +31640,157 @@ module DocumentSymbol = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "children" -> ( - match Ppx_yojson_conv_lib.( ! ) children_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson t_of_yojson) - _field_yojson - in - children_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "deprecated" -> ( - match Ppx_yojson_conv_lib.( ! ) deprecated_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - deprecated_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "detail" -> ( - match Ppx_yojson_conv_lib.( ! ) detail_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - detail_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = SymbolKind.t_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "selectionRange" -> ( - match Ppx_yojson_conv_lib.( ! ) selectionRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - selectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tags" -> ( - match Ppx_yojson_conv_lib.( ! ) tags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson SymbolTag.t_of_yojson) - _field_yojson - in - tags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) children_field - , Ppx_yojson_conv_lib.( ! ) deprecated_field - , Ppx_yojson_conv_lib.( ! ) detail_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) selectionRange_field - , Ppx_yojson_conv_lib.( ! ) tags_field ) - with - | ( children_value - , deprecated_value - , detail_value - , Ppx_yojson_conv_lib.Option.Some kind_value - , Ppx_yojson_conv_lib.Option.Some name_value - , Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some selectionRange_value - , tags_value ) -> - { children = - (match children_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; deprecated = - (match deprecated_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; detail = - (match detail_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = kind_value - ; name = name_value - ; range = range_value - ; selectionRange = selectionRange_value - ; tags = - (match tags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) selectionRange_field) - Ppx_yojson_conv_lib.Option.None - , "selectionRange" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "children" -> + (match Ppx_yojson_conv_lib.( ! ) children_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson t_of_yojson) + _field_yojson + in + children_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "deprecated" -> + (match Ppx_yojson_conv_lib.( ! ) deprecated_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + deprecated_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "detail" -> + (match Ppx_yojson_conv_lib.( ! ) detail_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + detail_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SymbolKind.t_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "selectionRange" -> + (match Ppx_yojson_conv_lib.( ! ) selectionRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + selectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tags" -> + (match Ppx_yojson_conv_lib.( ! ) tags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson SymbolTag.t_of_yojson) + _field_yojson + in + tags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) children_field + , Ppx_yojson_conv_lib.( ! ) deprecated_field + , Ppx_yojson_conv_lib.( ! ) detail_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) selectionRange_field + , Ppx_yojson_conv_lib.( ! ) tags_field ) + with + | ( children_value + , deprecated_value + , detail_value + , Ppx_yojson_conv_lib.Option.Some kind_value + , Ppx_yojson_conv_lib.Option.Some name_value + , Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some selectionRange_value + , tags_value ) -> + { children = + (match children_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; deprecated = + (match deprecated_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; detail = + (match detail_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = kind_value + ; name = name_value + ; range = range_value + ; selectionRange = selectionRange_value + ; tags = + (match tags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) selectionRange_field) + Ppx_yojson_conv_lib.Option.None + , "selectionRange" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -31588,15 +31807,15 @@ module DocumentSymbol = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_tags then bnds - else + if None = v_tags + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list SymbolTag.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list SymbolTag.yojson_of_t)) v_tags in - let bnd = ("tags", arg) in - bnd :: bnds + let bnd = "tags", arg in + bnd :: bnds) in let bnds = let arg = Range.yojson_of_t v_selectionRange in @@ -31615,53 +31834,60 @@ module DocumentSymbol = struct ("kind", arg) :: bnds in let bnds = - if None = v_detail then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail - in - let bnd = ("detail", arg) in - bnd :: bnds + if None = v_detail + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail in + let bnd = "detail", arg in + bnd :: bnds) in let bnds = - if None = v_deprecated then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_deprecated - in - let bnd = ("deprecated", arg) in - bnd :: bnds + if None = v_deprecated + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_deprecated in + let bnd = "deprecated", arg in + bnd :: bnds) in let bnds = - if None = v_children then bnds - else + if None = v_children + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_t)) - v_children + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_t)) v_children in - let bnd = ("children", arg) in - bnd :: bnds + let bnd = "children", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(children : t list option) ?(deprecated : bool option) - ?(detail : string option) ~(kind : SymbolKind.t) ~(name : string) - ~(range : Range.t) ~(selectionRange : Range.t) - ?(tags : SymbolTag.t list option) (() : unit) : t = + let create + ?(children : t list option) + ?(deprecated : bool option) + ?(detail : string option) + ~(kind : SymbolKind.t) + ~(name : string) + ~(range : Range.t) + ~(selectionRange : Range.t) + ?(tags : SymbolTag.t list option) + (() : unit) + : t + = { children; deprecated; detail; kind; name; range; selectionRange; tags } + ;; end module DocumentSymbolOptions = struct type t = - { label : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { label : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -31670,7 +31896,7 @@ module DocumentSymbolOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentSymbolOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let label_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -31678,61 +31904,60 @@ module DocumentSymbolOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let label_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) label_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { label = - (match label_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let label_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) label_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { label = + (match label_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -31741,43 +31966,43 @@ module DocumentSymbolOptions = struct | { label = v_label; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_label then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_label - in - let bnd = ("label", arg) in - bnd :: bnds + if None = v_label + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_label in + let bnd = "label", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(label : string option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create ?(label : string option) ?(workDoneProgress : bool option) (() : unit) : t = { label; workDoneProgress } + ;; end module DocumentSymbolParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -31786,7 +32011,7 @@ module DocumentSymbolParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentSymbolParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -31795,87 +32020,85 @@ module DocumentSymbolParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -31887,50 +32110,56 @@ module DocumentSymbolParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in ("textDocument", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; textDocument; workDoneToken } + ;; end module DocumentSymbolRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; label : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; label : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -31939,7 +32168,7 @@ module DocumentSymbolRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.DocumentSymbolRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and label_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -31948,77 +32177,76 @@ module DocumentSymbolRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, label_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) label_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; label = - (match label_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, label_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) label_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; label = + (match label_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -32030,52 +32258,58 @@ module DocumentSymbolRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_label then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_label - in - let bnd = ("label", arg) in - bnd :: bnds + if None = v_label + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_label in + let bnd = "label", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(label : string option) ?(workDoneProgress : bool option) (() : unit) : t - = + let create + ?(documentSelector : DocumentSelector.t option) + ?(label : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; label; workDoneProgress } + ;; end module ExecuteCommandOptions = struct type t = { commands : string list ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -32084,7 +32318,7 @@ module ExecuteCommandOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ExecuteCommandOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let commands_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -32092,67 +32326,65 @@ module ExecuteCommandOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "commands" -> ( - match Ppx_yojson_conv_lib.( ! ) commands_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - commands_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "commands" -> + (match Ppx_yojson_conv_lib.( ! ) commands_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + commands_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) commands_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some commands_value - , workDoneProgress_value ) -> - { commands = commands_value - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) commands_field) - Ppx_yojson_conv_lib.Option.None - , "commands" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) commands_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + with + | Ppx_yojson_conv_lib.Option.Some commands_value, workDoneProgress_value -> + { commands = commands_value + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) commands_field) + Ppx_yojson_conv_lib.Option.None + , "commands" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -32161,38 +32393,39 @@ module ExecuteCommandOptions = struct | { commands = v_commands; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list yojson_of_string v_commands in ("commands", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(commands : string list) ?(workDoneProgress : bool option) - (() : unit) : t = + let create ~(commands : string list) ?(workDoneProgress : bool option) (() : unit) : t = { commands; workDoneProgress } + ;; end module ExecuteCommandParams = struct type t = { arguments : Json.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; command : string ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -32201,7 +32434,7 @@ module ExecuteCommandParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ExecuteCommandParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let arguments_field = ref Ppx_yojson_conv_lib.Option.None and command_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -32210,138 +32443,142 @@ module ExecuteCommandParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "arguments" -> ( - match Ppx_yojson_conv_lib.( ! ) arguments_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson Json.t_of_yojson) - _field_yojson - in - arguments_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "command" -> ( - match Ppx_yojson_conv_lib.( ! ) command_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - command_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) arguments_field - , Ppx_yojson_conv_lib.( ! ) command_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( arguments_value - , Ppx_yojson_conv_lib.Option.Some command_value - , workDoneToken_value ) -> - { arguments = - (match arguments_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; command = command_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "arguments" -> + (match Ppx_yojson_conv_lib.( ! ) arguments_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson Json.t_of_yojson) + _field_yojson + in + arguments_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "command" -> + (match Ppx_yojson_conv_lib.( ! ) command_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + command_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) command_field) - Ppx_yojson_conv_lib.Option.None - , "command" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { arguments = v_arguments - ; command = v_command - ; workDoneToken = v_workDoneToken - } -> + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) arguments_field + , Ppx_yojson_conv_lib.( ! ) command_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( arguments_value + , Ppx_yojson_conv_lib.Option.Some command_value + , workDoneToken_value ) -> + { arguments = + (match arguments_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; command = command_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) command_field) + Ppx_yojson_conv_lib.Option.None + , "command" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { arguments = v_arguments; command = v_command; workDoneToken = v_workDoneToken } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_command in ("command", arg) :: bnds in let bnds = - if None = v_arguments then bnds - else + if None = v_arguments + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list Json.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list Json.yojson_of_t)) v_arguments in - let bnd = ("arguments", arg) in - bnd :: bnds + let bnd = "arguments", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(arguments : Json.t list option) ~(command : string) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(arguments : Json.t list option) + ~(command : string) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { arguments; command; workDoneToken } + ;; end module ExecuteCommandRegistrationOptions = struct type t = { commands : string list ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -32350,7 +32587,7 @@ module ExecuteCommandRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ExecuteCommandRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let commands_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -32358,67 +32595,65 @@ module ExecuteCommandRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "commands" -> ( - match Ppx_yojson_conv_lib.( ! ) commands_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - commands_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "commands" -> + (match Ppx_yojson_conv_lib.( ! ) commands_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + commands_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) commands_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some commands_value - , workDoneProgress_value ) -> - { commands = commands_value - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) commands_field) - Ppx_yojson_conv_lib.Option.None - , "commands" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) commands_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + with + | Ppx_yojson_conv_lib.Option.Some commands_value, workDoneProgress_value -> + { commands = commands_value + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) commands_field) + Ppx_yojson_conv_lib.Option.None + , "commands" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -32427,35 +32662,36 @@ module ExecuteCommandRegistrationOptions = struct | { commands = v_commands; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list yojson_of_string v_commands in ("commands", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(commands : string list) ?(workDoneProgress : bool option) - (() : unit) : t = + let create ~(commands : string list) ?(workDoneProgress : bool option) (() : unit) : t = { commands; workDoneProgress } + ;; end module FileOperationPatternOptions = struct type t = { ignoreCase : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -32464,52 +32700,51 @@ module FileOperationPatternOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileOperationPatternOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let ignoreCase_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "ignoreCase" -> ( - match Ppx_yojson_conv_lib.( ! ) ignoreCase_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - ignoreCase_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "ignoreCase" -> + (match Ppx_yojson_conv_lib.( ! ) ignoreCase_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + ignoreCase_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ignoreCase_value = Ppx_yojson_conv_lib.( ! ) ignoreCase_field in - { ignoreCase = - (match ignoreCase_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ignoreCase_value = Ppx_yojson_conv_lib.( ! ) ignoreCase_field in + { ignoreCase = + (match ignoreCase_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -32518,16 +32753,16 @@ module FileOperationPatternOptions = struct | { ignoreCase = v_ignoreCase } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_ignoreCase then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_ignoreCase - in - let bnd = ("ignoreCase", arg) in - bnd :: bnds + if None = v_ignoreCase + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_ignoreCase in + let bnd = "ignoreCase", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -32540,9 +32775,9 @@ module FileOperationPattern = struct type t = { glob : string ; matches : FileOperationPatternKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; options : FileOperationPatternOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -32551,7 +32786,7 @@ module FileOperationPattern = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileOperationPattern.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let glob_field = ref Ppx_yojson_conv_lib.Option.None and matches_field = ref Ppx_yojson_conv_lib.Option.None and options_field = ref Ppx_yojson_conv_lib.Option.None @@ -32560,86 +32795,84 @@ module FileOperationPattern = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "glob" -> ( - match Ppx_yojson_conv_lib.( ! ) glob_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - glob_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "matches" -> ( - match Ppx_yojson_conv_lib.( ! ) matches_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationPatternKind.t_of_yojson - _field_yojson - in - matches_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "options" -> ( - match Ppx_yojson_conv_lib.( ! ) options_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationPatternOptions.t_of_yojson - _field_yojson - in - options_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) glob_field - , Ppx_yojson_conv_lib.( ! ) matches_field - , Ppx_yojson_conv_lib.( ! ) options_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some glob_value - , matches_value - , options_value ) -> - { glob = glob_value - ; matches = - (match matches_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; options = - (match options_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) glob_field) - Ppx_yojson_conv_lib.Option.None - , "glob" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "glob" -> + (match Ppx_yojson_conv_lib.( ! ) glob_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + glob_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "matches" -> + (match Ppx_yojson_conv_lib.( ! ) matches_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationPatternKind.t_of_yojson + _field_yojson + in + matches_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "options" -> + (match Ppx_yojson_conv_lib.( ! ) options_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationPatternOptions.t_of_yojson + _field_yojson + in + options_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) glob_field + , Ppx_yojson_conv_lib.( ! ) matches_field + , Ppx_yojson_conv_lib.( ! ) options_field ) + with + | Ppx_yojson_conv_lib.Option.Some glob_value, matches_value, options_value + -> + { glob = glob_value + ; matches = + (match matches_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; options = + (match options_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) glob_field) + Ppx_yojson_conv_lib.Option.None + , "glob" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -32648,48 +32881,54 @@ module FileOperationPattern = struct | { glob = v_glob; matches = v_matches; options = v_options } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_options then bnds - else + if None = v_options + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - FileOperationPatternOptions.yojson_of_t) + (Json.Nullable_option.yojson_of_t FileOperationPatternOptions.yojson_of_t) v_options in - let bnd = ("options", arg) in - bnd :: bnds + let bnd = "options", arg in + bnd :: bnds) in let bnds = - if None = v_matches then bnds - else + if None = v_matches + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - FileOperationPatternKind.yojson_of_t) + (Json.Nullable_option.yojson_of_t FileOperationPatternKind.yojson_of_t) v_matches in - let bnd = ("matches", arg) in - bnd :: bnds + let bnd = "matches", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_glob in ("glob", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(glob : string) ?(matches : FileOperationPatternKind.t option) - ?(options : FileOperationPatternOptions.t option) (() : unit) : t = + let create + ~(glob : string) + ?(matches : FileOperationPatternKind.t option) + ?(options : FileOperationPatternOptions.t option) + (() : unit) + : t + = { glob; matches; options } + ;; end module FileOperationFilter = struct type t = { pattern : FileOperationPattern.t - ; scheme : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; scheme : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -32698,7 +32937,7 @@ module FileOperationFilter = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileOperationFilter.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let pattern_field = ref Ppx_yojson_conv_lib.Option.None and scheme_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -32706,66 +32945,65 @@ module FileOperationFilter = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "pattern" -> ( - match Ppx_yojson_conv_lib.( ! ) pattern_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = FileOperationPattern.t_of_yojson _field_yojson in - pattern_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "scheme" -> ( - match Ppx_yojson_conv_lib.( ! ) scheme_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - scheme_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "pattern" -> + (match Ppx_yojson_conv_lib.( ! ) pattern_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = FileOperationPattern.t_of_yojson _field_yojson in + pattern_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "scheme" -> + (match Ppx_yojson_conv_lib.( ! ) scheme_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + scheme_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) pattern_field - , Ppx_yojson_conv_lib.( ! ) scheme_field ) - with - | Ppx_yojson_conv_lib.Option.Some pattern_value, scheme_value -> - { pattern = pattern_value - ; scheme = - (match scheme_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) pattern_field) - Ppx_yojson_conv_lib.Option.None - , "pattern" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) pattern_field + , Ppx_yojson_conv_lib.( ! ) scheme_field ) + with + | Ppx_yojson_conv_lib.Option.Some pattern_value, scheme_value -> + { pattern = pattern_value + ; scheme = + (match scheme_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) pattern_field) + Ppx_yojson_conv_lib.Option.None + , "pattern" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -32774,28 +33012,29 @@ module FileOperationFilter = struct | { pattern = v_pattern; scheme = v_scheme } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_scheme then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_scheme - in - let bnd = ("scheme", arg) in - bnd :: bnds + if None = v_scheme + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_scheme in + let bnd = "scheme", arg in + bnd :: bnds) in let bnds = let arg = FileOperationPattern.yojson_of_t v_pattern in ("pattern", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(pattern : FileOperationPattern.t) ?(scheme : string option) - (() : unit) : t = + let create ~(pattern : FileOperationPattern.t) ?(scheme : string option) (() : unit) : t + = { pattern; scheme } + ;; end module FileOperationRegistrationOptions = struct @@ -32807,58 +33046,57 @@ module FileOperationRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileOperationRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let filters_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "filters" -> ( - match Ppx_yojson_conv_lib.( ! ) filters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson FileOperationFilter.t_of_yojson _field_yojson - in - filters_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "filters" -> + (match Ppx_yojson_conv_lib.( ! ) filters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson FileOperationFilter.t_of_yojson _field_yojson + in + filters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) filters_field with - | Ppx_yojson_conv_lib.Option.Some filters_value -> - { filters = filters_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) filters_field) - Ppx_yojson_conv_lib.Option.None - , "filters" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) filters_field with + | Ppx_yojson_conv_lib.Option.Some filters_value -> + { filters = filters_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) filters_field) + Ppx_yojson_conv_lib.Option.None + , "filters" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -32871,7 +33109,8 @@ module FileOperationRegistrationOptions = struct ("filters", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -32883,17 +33122,17 @@ end module FileOperationOptions = struct type t = { didCreate : FileOperationRegistrationOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; didDelete : FileOperationRegistrationOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; didRename : FileOperationRegistrationOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; willCreate : FileOperationRegistrationOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; willDelete : FileOperationRegistrationOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; willRename : FileOperationRegistrationOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -32902,7 +33141,7 @@ module FileOperationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileOperationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let didCreate_field = ref Ppx_yojson_conv_lib.Option.None and didDelete_field = ref Ppx_yojson_conv_lib.Option.None and didRename_field = ref Ppx_yojson_conv_lib.Option.None @@ -32914,134 +33153,134 @@ module FileOperationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "didCreate" -> ( - match Ppx_yojson_conv_lib.( ! ) didCreate_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationRegistrationOptions.t_of_yojson - _field_yojson - in - didCreate_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "didDelete" -> ( - match Ppx_yojson_conv_lib.( ! ) didDelete_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationRegistrationOptions.t_of_yojson - _field_yojson - in - didDelete_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "didRename" -> ( - match Ppx_yojson_conv_lib.( ! ) didRename_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationRegistrationOptions.t_of_yojson - _field_yojson - in - didRename_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willCreate" -> ( - match Ppx_yojson_conv_lib.( ! ) willCreate_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationRegistrationOptions.t_of_yojson - _field_yojson - in - willCreate_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willDelete" -> ( - match Ppx_yojson_conv_lib.( ! ) willDelete_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationRegistrationOptions.t_of_yojson - _field_yojson - in - willDelete_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willRename" -> ( - match Ppx_yojson_conv_lib.( ! ) willRename_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationRegistrationOptions.t_of_yojson - _field_yojson - in - willRename_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( didCreate_value - , didDelete_value - , didRename_value - , willCreate_value - , willDelete_value - , willRename_value ) = - ( Ppx_yojson_conv_lib.( ! ) didCreate_field - , Ppx_yojson_conv_lib.( ! ) didDelete_field - , Ppx_yojson_conv_lib.( ! ) didRename_field - , Ppx_yojson_conv_lib.( ! ) willCreate_field - , Ppx_yojson_conv_lib.( ! ) willDelete_field - , Ppx_yojson_conv_lib.( ! ) willRename_field ) - in - { didCreate = - (match didCreate_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; didDelete = - (match didDelete_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; didRename = - (match didRename_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willCreate = - (match willCreate_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willDelete = - (match willDelete_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willRename = - (match willRename_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "didCreate" -> + (match Ppx_yojson_conv_lib.( ! ) didCreate_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationRegistrationOptions.t_of_yojson + _field_yojson + in + didCreate_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "didDelete" -> + (match Ppx_yojson_conv_lib.( ! ) didDelete_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationRegistrationOptions.t_of_yojson + _field_yojson + in + didDelete_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "didRename" -> + (match Ppx_yojson_conv_lib.( ! ) didRename_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationRegistrationOptions.t_of_yojson + _field_yojson + in + didRename_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willCreate" -> + (match Ppx_yojson_conv_lib.( ! ) willCreate_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationRegistrationOptions.t_of_yojson + _field_yojson + in + willCreate_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willDelete" -> + (match Ppx_yojson_conv_lib.( ! ) willDelete_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationRegistrationOptions.t_of_yojson + _field_yojson + in + willDelete_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willRename" -> + (match Ppx_yojson_conv_lib.( ! ) willRename_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationRegistrationOptions.t_of_yojson + _field_yojson + in + willRename_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( didCreate_value + , didDelete_value + , didRename_value + , willCreate_value + , willDelete_value + , willRename_value ) + = + ( Ppx_yojson_conv_lib.( ! ) didCreate_field + , Ppx_yojson_conv_lib.( ! ) didDelete_field + , Ppx_yojson_conv_lib.( ! ) didRename_field + , Ppx_yojson_conv_lib.( ! ) willCreate_field + , Ppx_yojson_conv_lib.( ! ) willDelete_field + , Ppx_yojson_conv_lib.( ! ) willRename_field ) + in + { didCreate = + (match didCreate_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; didDelete = + (match didDelete_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; didRename = + (match didRename_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willCreate = + (match willCreate_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willDelete = + (match willDelete_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willRename = + (match willRename_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -33056,86 +33295,97 @@ module FileOperationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_willRename then bnds - else + if None = v_willRename + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FileOperationRegistrationOptions.yojson_of_t) v_willRename in - let bnd = ("willRename", arg) in - bnd :: bnds + let bnd = "willRename", arg in + bnd :: bnds) in let bnds = - if None = v_willDelete then bnds - else + if None = v_willDelete + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FileOperationRegistrationOptions.yojson_of_t) v_willDelete in - let bnd = ("willDelete", arg) in - bnd :: bnds + let bnd = "willDelete", arg in + bnd :: bnds) in let bnds = - if None = v_willCreate then bnds - else + if None = v_willCreate + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FileOperationRegistrationOptions.yojson_of_t) v_willCreate in - let bnd = ("willCreate", arg) in - bnd :: bnds + let bnd = "willCreate", arg in + bnd :: bnds) in let bnds = - if None = v_didRename then bnds - else + if None = v_didRename + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FileOperationRegistrationOptions.yojson_of_t) v_didRename in - let bnd = ("didRename", arg) in - bnd :: bnds + let bnd = "didRename", arg in + bnd :: bnds) in let bnds = - if None = v_didDelete then bnds - else + if None = v_didDelete + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FileOperationRegistrationOptions.yojson_of_t) v_didDelete in - let bnd = ("didDelete", arg) in - bnd :: bnds + let bnd = "didDelete", arg in + bnd :: bnds) in let bnds = - if None = v_didCreate then bnds - else + if None = v_didCreate + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FileOperationRegistrationOptions.yojson_of_t) v_didCreate in - let bnd = ("didCreate", arg) in - bnd :: bnds + let bnd = "didCreate", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(didCreate : FileOperationRegistrationOptions.t option) - ?(didDelete : FileOperationRegistrationOptions.t option) - ?(didRename : FileOperationRegistrationOptions.t option) - ?(willCreate : FileOperationRegistrationOptions.t option) - ?(willDelete : FileOperationRegistrationOptions.t option) - ?(willRename : FileOperationRegistrationOptions.t option) (() : unit) : t - = + let create + ?(didCreate : FileOperationRegistrationOptions.t option) + ?(didDelete : FileOperationRegistrationOptions.t option) + ?(didRename : FileOperationRegistrationOptions.t option) + ?(willCreate : FileOperationRegistrationOptions.t option) + ?(willDelete : FileOperationRegistrationOptions.t option) + ?(willRename : FileOperationRegistrationOptions.t option) + (() : unit) + : t + = { didCreate; didDelete; didRename; willCreate; willDelete; willRename } + ;; end module FileRename = struct @@ -33150,7 +33400,7 @@ module FileRename = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FileRename.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let newUri_field = ref Ppx_yojson_conv_lib.Option.None and oldUri_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -33158,64 +33408,63 @@ module FileRename = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "newUri" -> ( - match Ppx_yojson_conv_lib.( ! ) newUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - newUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "oldUri" -> ( - match Ppx_yojson_conv_lib.( ! ) oldUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - oldUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "newUri" -> + (match Ppx_yojson_conv_lib.( ! ) newUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + newUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "oldUri" -> + (match Ppx_yojson_conv_lib.( ! ) oldUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + oldUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) newUri_field - , Ppx_yojson_conv_lib.( ! ) oldUri_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some newUri_value - , Ppx_yojson_conv_lib.Option.Some oldUri_value ) -> - { newUri = newUri_value; oldUri = oldUri_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) newUri_field) - Ppx_yojson_conv_lib.Option.None - , "newUri" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) oldUri_field) - Ppx_yojson_conv_lib.Option.None - , "oldUri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) newUri_field + , Ppx_yojson_conv_lib.( ! ) oldUri_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some newUri_value + , Ppx_yojson_conv_lib.Option.Some oldUri_value ) -> + { newUri = newUri_value; oldUri = oldUri_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) newUri_field) + Ppx_yojson_conv_lib.Option.None + , "newUri" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) oldUri_field) + Ppx_yojson_conv_lib.Option.None + , "oldUri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -33232,7 +33481,8 @@ module FileRename = struct ("newUri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -33244,14 +33494,14 @@ end module FoldingRange = struct type t = { collapsedText : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; endCharacter : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; endLine : int ; kind : FoldingRangeKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; startCharacter : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; startLine : int } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -33261,7 +33511,7 @@ module FoldingRange = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FoldingRange.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let collapsedText_field = ref Ppx_yojson_conv_lib.Option.None and endCharacter_field = ref Ppx_yojson_conv_lib.Option.None and endLine_field = ref Ppx_yojson_conv_lib.Option.None @@ -33273,128 +33523,127 @@ module FoldingRange = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "collapsedText" -> ( - match Ppx_yojson_conv_lib.( ! ) collapsedText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - collapsedText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "endCharacter" -> ( - match Ppx_yojson_conv_lib.( ! ) endCharacter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - endCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "endLine" -> ( - match Ppx_yojson_conv_lib.( ! ) endLine_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - endLine_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FoldingRangeKind.t_of_yojson - _field_yojson - in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "startCharacter" -> ( - match Ppx_yojson_conv_lib.( ! ) startCharacter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - startCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "startLine" -> ( - match Ppx_yojson_conv_lib.( ! ) startLine_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - startLine_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) collapsedText_field - , Ppx_yojson_conv_lib.( ! ) endCharacter_field - , Ppx_yojson_conv_lib.( ! ) endLine_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) startCharacter_field - , Ppx_yojson_conv_lib.( ! ) startLine_field ) - with - | ( collapsedText_value - , endCharacter_value - , Ppx_yojson_conv_lib.Option.Some endLine_value - , kind_value - , startCharacter_value - , Ppx_yojson_conv_lib.Option.Some startLine_value ) -> - { collapsedText = - (match collapsedText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; endCharacter = - (match endCharacter_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; endLine = endLine_value - ; kind = - (match kind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; startCharacter = - (match startCharacter_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; startLine = startLine_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) endLine_field) - Ppx_yojson_conv_lib.Option.None - , "endLine" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) startLine_field) - Ppx_yojson_conv_lib.Option.None - , "startLine" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "collapsedText" -> + (match Ppx_yojson_conv_lib.( ! ) collapsedText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + collapsedText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "endCharacter" -> + (match Ppx_yojson_conv_lib.( ! ) endCharacter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + endCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "endLine" -> + (match Ppx_yojson_conv_lib.( ! ) endLine_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + endLine_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FoldingRangeKind.t_of_yojson + _field_yojson + in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "startCharacter" -> + (match Ppx_yojson_conv_lib.( ! ) startCharacter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + startCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "startLine" -> + (match Ppx_yojson_conv_lib.( ! ) startLine_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + startLine_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) collapsedText_field + , Ppx_yojson_conv_lib.( ! ) endCharacter_field + , Ppx_yojson_conv_lib.( ! ) endLine_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) startCharacter_field + , Ppx_yojson_conv_lib.( ! ) startLine_field ) + with + | ( collapsedText_value + , endCharacter_value + , Ppx_yojson_conv_lib.Option.Some endLine_value + , kind_value + , startCharacter_value + , Ppx_yojson_conv_lib.Option.Some startLine_value ) -> + { collapsedText = + (match collapsedText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; endCharacter = + (match endCharacter_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; endLine = endLine_value + ; kind = + (match kind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; startCharacter = + (match startCharacter_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; startLine = startLine_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) endLine_field) + Ppx_yojson_conv_lib.Option.None + , "endLine" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) startLine_field) + Ppx_yojson_conv_lib.Option.None + , "startLine" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -33413,63 +33662,71 @@ module FoldingRange = struct ("startLine", arg) :: bnds in let bnds = - if None = v_startCharacter then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_startCharacter - in - let bnd = ("startCharacter", arg) in - bnd :: bnds + if None = v_startCharacter + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_startCharacter in + let bnd = "startCharacter", arg in + bnd :: bnds) in let bnds = - if None = v_kind then bnds - else + if None = v_kind + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t FoldingRangeKind.yojson_of_t) - v_kind + (Json.Nullable_option.yojson_of_t FoldingRangeKind.yojson_of_t) v_kind in - let bnd = ("kind", arg) in - bnd :: bnds + let bnd = "kind", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_int v_endLine in ("endLine", arg) :: bnds in let bnds = - if None = v_endCharacter then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_endCharacter - in - let bnd = ("endCharacter", arg) in - bnd :: bnds + if None = v_endCharacter + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_endCharacter in + let bnd = "endCharacter", arg in + bnd :: bnds) in let bnds = - if None = v_collapsedText then bnds - else + if None = v_collapsedText + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_collapsedText in - let bnd = ("collapsedText", arg) in - bnd :: bnds + let bnd = "collapsedText", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(collapsedText : string option) ?(endCharacter : int option) - ~(endLine : int) ?(kind : FoldingRangeKind.t option) - ?(startCharacter : int option) ~(startLine : int) (() : unit) : t = + let create + ?(collapsedText : string option) + ?(endCharacter : int option) + ~(endLine : int) + ?(kind : FoldingRangeKind.t option) + ?(startCharacter : int option) + ~(startLine : int) + (() : unit) + : t + = { collapsedText; endCharacter; endLine; kind; startCharacter; startLine } + ;; end module FoldingRangeOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -33478,54 +33735,53 @@ module FoldingRangeOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FoldingRangeOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -33534,33 +33790,33 @@ module FoldingRangeOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module FoldingRangeParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -33569,7 +33825,7 @@ module FoldingRangeParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FoldingRangeParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -33578,87 +33834,85 @@ module FoldingRangeParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -33670,50 +33924,56 @@ module FoldingRangeParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in ("textDocument", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; textDocument; workDoneToken } + ;; end module FoldingRangeRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -33722,7 +33982,7 @@ module FoldingRangeRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.FoldingRangeRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -33731,77 +33991,76 @@ module FoldingRangeRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -33813,42 +34072,51 @@ module FoldingRangeRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module Hover = struct @@ -33866,17 +34134,18 @@ module Hover = struct ; (fun json -> `List (Json.Of.list MarkedString.t_of_yojson json)) ] json + ;; let yojson_of_contents_pvar (contents_pvar : contents_pvar) : Json.t = match contents_pvar with | `MarkupContent s -> MarkupContent.yojson_of_t s | `MarkedString s -> MarkedString.yojson_of_t s | `List s -> Json.To.list MarkedString.yojson_of_t s + ;; type t = { contents : contents_pvar - ; range : Range.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; range : Range.t Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -33885,7 +34154,7 @@ module Hover = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Hover.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let contents_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -33893,68 +34162,65 @@ module Hover = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "contents" -> ( - match Ppx_yojson_conv_lib.( ! ) contents_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = contents_pvar_of_yojson _field_yojson in - contents_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Range.t_of_yojson - _field_yojson - in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "contents" -> + (match Ppx_yojson_conv_lib.( ! ) contents_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = contents_pvar_of_yojson _field_yojson in + contents_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Range.t_of_yojson _field_yojson + in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) contents_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | Ppx_yojson_conv_lib.Option.Some contents_value, range_value -> - { contents = contents_value - ; range = - (match range_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) contents_field) - Ppx_yojson_conv_lib.Option.None - , "contents" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) contents_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | Ppx_yojson_conv_lib.Option.Some contents_value, range_value -> + { contents = contents_value + ; range = + (match range_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) contents_field) + Ppx_yojson_conv_lib.Option.None + , "contents" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -33963,34 +34229,34 @@ module Hover = struct | { contents = v_contents; range = v_range } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_range then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_range - in - let bnd = ("range", arg) in - bnd :: bnds + if None = v_range + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_range in + let bnd = "range", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_contents_pvar v_contents in ("contents", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(contents : contents_pvar) ?(range : Range.t option) (() : unit) : - t = + let create ~(contents : contents_pvar) ?(range : Range.t option) (() : unit) : t = { contents; range } + ;; end module HoverOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -33999,54 +34265,53 @@ module HoverOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.HoverOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -34055,24 +34320,24 @@ module HoverOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module HoverParams = struct @@ -34080,7 +34345,7 @@ module HoverParams = struct { position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -34089,7 +34354,7 @@ module HoverParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.HoverParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -34098,83 +34363,82 @@ module HoverParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -34186,14 +34450,14 @@ module HoverParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -34204,23 +34468,30 @@ module HoverParams = struct ("position", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { position; textDocument; workDoneToken } + ;; end module HoverRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -34229,7 +34500,7 @@ module HoverRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.HoverRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -34237,108 +34508,112 @@ module HoverRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { documentSelector = v_documentSelector - ; workDoneProgress = v_workDoneProgress - } -> + | { documentSelector = v_documentSelector; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; workDoneProgress } + ;; end module ImplementationOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -34347,54 +34622,53 @@ module ImplementationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ImplementationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -34403,34 +34677,34 @@ module ImplementationOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module ImplementationParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -34439,7 +34713,7 @@ module ImplementationParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ImplementationParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -34449,101 +34723,99 @@ module ImplementationParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -34556,14 +34828,14 @@ module ImplementationParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -34574,36 +34846,43 @@ module ImplementationParams = struct ("position", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; position; textDocument; workDoneToken } + ;; end module ImplementationRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -34612,7 +34891,7 @@ module ImplementationRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ImplementationRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -34621,77 +34900,76 @@ module ImplementationRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -34703,103 +34981,109 @@ module ImplementationRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module InitializeError = struct - type t = { retry : bool } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { retry : bool } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InitializeError.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let retry_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "retry" -> ( - match Ppx_yojson_conv_lib.( ! ) retry_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - retry_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "retry" -> + (match Ppx_yojson_conv_lib.( ! ) retry_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + retry_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) retry_field with - | Ppx_yojson_conv_lib.Option.Some retry_value -> - { retry = retry_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) retry_field) - Ppx_yojson_conv_lib.Option.None - , "retry" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) retry_field with + | Ppx_yojson_conv_lib.Option.Some retry_value -> { retry = retry_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) retry_field) + Ppx_yojson_conv_lib.Option.None + , "retry" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -34812,7 +35096,8 @@ module InitializeError = struct ("retry", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -34824,8 +35109,7 @@ end module InitializeParams = struct type clientInfo = { name : string - ; version : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -34834,7 +35118,7 @@ module InitializeParams = struct let clientInfo_of_yojson = (let _tp_loc = "lsp/src/types.ml.InitializeParams.clientInfo" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let name_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -34842,66 +35126,65 @@ module InitializeParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | Ppx_yojson_conv_lib.Option.Some name_value, version_value -> - { name = name_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> clientInfo) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | Ppx_yojson_conv_lib.Option.Some name_value, version_value -> + { name = name_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> clientInfo) + ;; let _ = clientInfo_of_yojson @@ -34910,49 +35193,49 @@ module InitializeParams = struct | { name = v_name; version = v_version } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_name in ("name", arg) :: bnds in `Assoc bnds - : clientInfo -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : clientInfo -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_clientInfo [@@@end] let create_clientInfo ~(name : string) ?(version : string option) (() : unit) - : clientInfo = + : clientInfo + = { name; version } + ;; type t = { capabilities : ClientCapabilities.t ; clientInfo : clientInfo Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; initializationOptions : Json.t option [@yojson.option] - ; locale : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; processId : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; locale : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; processId : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; rootPath : string Json.Nullable_option.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; rootUri : DocumentUri.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; trace : TraceValues.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workspaceFolders : WorkspaceFolder.t list Json.Nullable_option.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -34961,7 +35244,7 @@ module InitializeParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InitializeParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let capabilities_field = ref Ppx_yojson_conv_lib.Option.None and clientInfo_field = ref Ppx_yojson_conv_lib.Option.None and initializationOptions_field = ref Ppx_yojson_conv_lib.Option.None @@ -34977,196 +35260,188 @@ module InitializeParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "capabilities" -> ( - match Ppx_yojson_conv_lib.( ! ) capabilities_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = ClientCapabilities.t_of_yojson _field_yojson in - capabilities_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "clientInfo" -> ( - match Ppx_yojson_conv_lib.( ! ) clientInfo_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - clientInfo_of_yojson - _field_yojson - in - clientInfo_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "initializationOptions" -> ( - match Ppx_yojson_conv_lib.( ! ) initializationOptions_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - initializationOptions_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "locale" -> ( - match Ppx_yojson_conv_lib.( ! ) locale_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - locale_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "processId" -> ( - match Ppx_yojson_conv_lib.( ! ) processId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - processId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rootPath" -> ( - match Ppx_yojson_conv_lib.( ! ) rootPath_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Nullable_option.t_of_yojson string_of_yojson) - _field_yojson - in - rootPath_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rootUri" -> ( - match Ppx_yojson_conv_lib.( ! ) rootUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentUri.t_of_yojson - _field_yojson - in - rootUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "trace" -> ( - match Ppx_yojson_conv_lib.( ! ) trace_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - TraceValues.t_of_yojson - _field_yojson - in - trace_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workspaceFolders" -> ( - match Ppx_yojson_conv_lib.( ! ) workspaceFolders_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Nullable_option.t_of_yojson - (list_of_yojson WorkspaceFolder.t_of_yojson)) - _field_yojson - in - workspaceFolders_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) capabilities_field - , Ppx_yojson_conv_lib.( ! ) clientInfo_field - , Ppx_yojson_conv_lib.( ! ) initializationOptions_field - , Ppx_yojson_conv_lib.( ! ) locale_field - , Ppx_yojson_conv_lib.( ! ) processId_field - , Ppx_yojson_conv_lib.( ! ) rootPath_field - , Ppx_yojson_conv_lib.( ! ) rootUri_field - , Ppx_yojson_conv_lib.( ! ) trace_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field - , Ppx_yojson_conv_lib.( ! ) workspaceFolders_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some capabilities_value - , clientInfo_value - , initializationOptions_value - , locale_value - , processId_value - , rootPath_value - , rootUri_value - , trace_value - , workDoneToken_value - , workspaceFolders_value ) -> - { capabilities = capabilities_value - ; clientInfo = - (match clientInfo_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; initializationOptions = initializationOptions_value - ; locale = - (match locale_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; processId = - (match processId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rootPath = - (match rootPath_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rootUri = - (match rootUri_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; trace = - (match trace_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workspaceFolders = - (match workspaceFolders_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "capabilities" -> + (match Ppx_yojson_conv_lib.( ! ) capabilities_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = ClientCapabilities.t_of_yojson _field_yojson in + capabilities_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "clientInfo" -> + (match Ppx_yojson_conv_lib.( ! ) clientInfo_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson clientInfo_of_yojson _field_yojson + in + clientInfo_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "initializationOptions" -> + (match Ppx_yojson_conv_lib.( ! ) initializationOptions_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + initializationOptions_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "locale" -> + (match Ppx_yojson_conv_lib.( ! ) locale_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + locale_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "processId" -> + (match Ppx_yojson_conv_lib.( ! ) processId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + processId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rootPath" -> + (match Ppx_yojson_conv_lib.( ! ) rootPath_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Nullable_option.t_of_yojson string_of_yojson) + _field_yojson + in + rootPath_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rootUri" -> + (match Ppx_yojson_conv_lib.( ! ) rootUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson DocumentUri.t_of_yojson _field_yojson + in + rootUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "trace" -> + (match Ppx_yojson_conv_lib.( ! ) trace_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson TraceValues.t_of_yojson _field_yojson + in + trace_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workspaceFolders" -> + (match Ppx_yojson_conv_lib.( ! ) workspaceFolders_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Nullable_option.t_of_yojson + (list_of_yojson WorkspaceFolder.t_of_yojson)) + _field_yojson + in + workspaceFolders_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) capabilities_field) - Ppx_yojson_conv_lib.Option.None - , "capabilities" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) capabilities_field + , Ppx_yojson_conv_lib.( ! ) clientInfo_field + , Ppx_yojson_conv_lib.( ! ) initializationOptions_field + , Ppx_yojson_conv_lib.( ! ) locale_field + , Ppx_yojson_conv_lib.( ! ) processId_field + , Ppx_yojson_conv_lib.( ! ) rootPath_field + , Ppx_yojson_conv_lib.( ! ) rootUri_field + , Ppx_yojson_conv_lib.( ! ) trace_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field + , Ppx_yojson_conv_lib.( ! ) workspaceFolders_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some capabilities_value + , clientInfo_value + , initializationOptions_value + , locale_value + , processId_value + , rootPath_value + , rootUri_value + , trace_value + , workDoneToken_value + , workspaceFolders_value ) -> + { capabilities = capabilities_value + ; clientInfo = + (match clientInfo_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; initializationOptions = initializationOptions_value + ; locale = + (match locale_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; processId = + (match processId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rootPath = + (match rootPath_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rootUri = + (match rootUri_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; trace = + (match trace_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workspaceFolders = + (match workspaceFolders_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) capabilities_field) + Ppx_yojson_conv_lib.Option.None + , "capabilities" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -35185,111 +35460,118 @@ module InitializeParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workspaceFolders then bnds - else + if None = v_workspaceFolders + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Nullable_option.yojson_of_t (yojson_of_list WorkspaceFolder.yojson_of_t))) v_workspaceFolders in - let bnd = ("workspaceFolders", arg) in - bnd :: bnds + let bnd = "workspaceFolders", arg in + bnd :: bnds) in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = - if None = v_trace then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t TraceValues.yojson_of_t) v_trace - in - let bnd = ("trace", arg) in - bnd :: bnds + if None = v_trace + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t TraceValues.yojson_of_t) v_trace in + let bnd = "trace", arg in + bnd :: bnds) in let bnds = - if None = v_rootUri then bnds - else + if None = v_rootUri + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t DocumentUri.yojson_of_t) - v_rootUri + (Json.Nullable_option.yojson_of_t DocumentUri.yojson_of_t) v_rootUri in - let bnd = ("rootUri", arg) in - bnd :: bnds + let bnd = "rootUri", arg in + bnd :: bnds) in let bnds = - if None = v_rootPath then bnds - else + if None = v_rootPath + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Nullable_option.yojson_of_t yojson_of_string)) v_rootPath in - let bnd = ("rootPath", arg) in - bnd :: bnds + let bnd = "rootPath", arg in + bnd :: bnds) in let bnds = - if None = v_processId then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_processId - in - let bnd = ("processId", arg) in - bnd :: bnds + if None = v_processId + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_processId in + let bnd = "processId", arg in + bnd :: bnds) in let bnds = - if None = v_locale then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_locale - in - let bnd = ("locale", arg) in - bnd :: bnds + if None = v_locale + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_locale in + let bnd = "locale", arg in + bnd :: bnds) in let bnds = match v_initializationOptions with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("initializationOptions", arg) in + let bnd = "initializationOptions", arg in bnd :: bnds in let bnds = - if None = v_clientInfo then bnds - else + if None = v_clientInfo + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_clientInfo) - v_clientInfo + (Json.Nullable_option.yojson_of_t yojson_of_clientInfo) v_clientInfo in - let bnd = ("clientInfo", arg) in - bnd :: bnds + let bnd = "clientInfo", arg in + bnd :: bnds) in let bnds = let arg = ClientCapabilities.yojson_of_t v_capabilities in ("capabilities", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(capabilities : ClientCapabilities.t) - ?(clientInfo : clientInfo option) ?(initializationOptions : Json.t option) - ?(locale : string option) ?(processId : int option) - ?(rootPath : string option option) ?(rootUri : DocumentUri.t option) - ?(trace : TraceValues.t option) ?(workDoneToken : ProgressToken.t option) - ?(workspaceFolders : WorkspaceFolder.t list option option) (() : unit) : t - = + let create + ~(capabilities : ClientCapabilities.t) + ?(clientInfo : clientInfo option) + ?(initializationOptions : Json.t option) + ?(locale : string option) + ?(processId : int option) + ?(rootPath : string option option) + ?(rootUri : DocumentUri.t option) + ?(trace : TraceValues.t option) + ?(workDoneToken : ProgressToken.t option) + ?(workspaceFolders : WorkspaceFolder.t list option option) + (() : unit) + : t + = { capabilities ; clientInfo ; initializationOptions @@ -35301,14 +35583,15 @@ module InitializeParams = struct ; workDoneToken ; workspaceFolders } + ;; end module WorkspaceSymbolOptions = struct type t = { resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -35317,7 +35600,7 @@ module WorkspaceSymbolOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceSymbolOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -35325,99 +35608,103 @@ module WorkspaceSymbolOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let resolveProvider_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let resolveProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { resolveProvider = v_resolveProvider - ; workDoneProgress = v_workDoneProgress - } -> + | { resolveProvider = v_resolveProvider; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { resolveProvider; workDoneProgress } + ;; end module WorkspaceFoldersServerCapabilities = struct @@ -35426,24 +35713,26 @@ module WorkspaceFoldersServerCapabilities = struct | `Bool of bool ] - let changeNotifications_pvar_of_yojson (json : Json.t) : - changeNotifications_pvar = + let changeNotifications_pvar_of_yojson (json : Json.t) : changeNotifications_pvar = match json with | `String j -> `String j | `Bool j -> `Bool j | _ -> Json.error "changeNotifications_pvar" json + ;; let yojson_of_changeNotifications_pvar - (changeNotifications_pvar : changeNotifications_pvar) : Json.t = + (changeNotifications_pvar : changeNotifications_pvar) + : Json.t + = match changeNotifications_pvar with | `String j -> `String j | `Bool j -> `Bool j + ;; type t = { changeNotifications : changeNotifications_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; supported : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; supported : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -35452,7 +35741,7 @@ module WorkspaceFoldersServerCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceFoldersServerCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let changeNotifications_field = ref Ppx_yojson_conv_lib.Option.None and supported_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -35460,112 +35749,113 @@ module WorkspaceFoldersServerCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "changeNotifications" -> ( - match Ppx_yojson_conv_lib.( ! ) changeNotifications_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - changeNotifications_pvar_of_yojson - _field_yojson - in - changeNotifications_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "supported" -> ( - match Ppx_yojson_conv_lib.( ! ) supported_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - supported_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "changeNotifications" -> + (match Ppx_yojson_conv_lib.( ! ) changeNotifications_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + changeNotifications_pvar_of_yojson + _field_yojson + in + changeNotifications_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "supported" -> + (match Ppx_yojson_conv_lib.( ! ) supported_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + supported_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let changeNotifications_value, supported_value = - ( Ppx_yojson_conv_lib.( ! ) changeNotifications_field - , Ppx_yojson_conv_lib.( ! ) supported_field ) - in - { changeNotifications = - (match changeNotifications_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; supported = - (match supported_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let changeNotifications_value, supported_value = + ( Ppx_yojson_conv_lib.( ! ) changeNotifications_field + , Ppx_yojson_conv_lib.( ! ) supported_field ) + in + { changeNotifications = + (match changeNotifications_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; supported = + (match supported_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { changeNotifications = v_changeNotifications; supported = v_supported } - -> + | { changeNotifications = v_changeNotifications; supported = v_supported } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_supported then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_supported - in - let bnd = ("supported", arg) in - bnd :: bnds + if None = v_supported + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_supported in + let bnd = "supported", arg in + bnd :: bnds) in let bnds = - if None = v_changeNotifications then bnds - else + if None = v_changeNotifications + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_changeNotifications_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_changeNotifications_pvar) v_changeNotifications in - let bnd = ("changeNotifications", arg) in - bnd :: bnds + let bnd = "changeNotifications", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(changeNotifications : changeNotifications_pvar option) - ?(supported : bool option) (() : unit) : t = + let create + ?(changeNotifications : changeNotifications_pvar option) + ?(supported : bool option) + (() : unit) + : t + = { changeNotifications; supported } + ;; end module TypeHierarchyRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -35574,7 +35864,7 @@ module TypeHierarchyRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeHierarchyRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -35583,77 +35873,76 @@ module TypeHierarchyRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -35665,48 +35954,57 @@ module TypeHierarchyRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module TypeHierarchyOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -35715,54 +36013,53 @@ module TypeHierarchyOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeHierarchyOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -35771,34 +36068,33 @@ module TypeHierarchyOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module TypeDefinitionRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -35807,7 +36103,7 @@ module TypeDefinitionRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeDefinitionRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -35816,77 +36112,76 @@ module TypeDefinitionRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -35898,48 +36193,57 @@ module TypeDefinitionRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module TypeDefinitionOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -35948,54 +36252,53 @@ module TypeDefinitionOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeDefinitionOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -36004,30 +36307,30 @@ module TypeDefinitionOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module SaveOptions = struct type t = { includeText : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -36036,54 +36339,51 @@ module SaveOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SaveOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let includeText_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "includeText" -> ( - match Ppx_yojson_conv_lib.( ! ) includeText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - includeText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "includeText" -> + (match Ppx_yojson_conv_lib.( ! ) includeText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + includeText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let includeText_value = - Ppx_yojson_conv_lib.( ! ) includeText_field - in - { includeText = - (match includeText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let includeText_value = Ppx_yojson_conv_lib.( ! ) includeText_field in + { includeText = + (match includeText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -36092,16 +36392,16 @@ module SaveOptions = struct | { includeText = v_includeText } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_includeText then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_includeText - in - let bnd = ("includeText", arg) in - bnd :: bnds + if None = v_includeText + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_includeText in + let bnd = "includeText", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -36124,23 +36424,22 @@ module TextDocumentSyncOptions = struct "save_pvar" [ (fun json -> `SaveOptions (SaveOptions.t_of_yojson json)) ] json + ;; let yojson_of_save_pvar (save_pvar : save_pvar) : Json.t = match save_pvar with | `Bool j -> `Bool j | `SaveOptions s -> SaveOptions.yojson_of_t s + ;; type t = { change : TextDocumentSyncKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; openClose : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; save : save_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; willSave : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; openClose : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; save : save_pvar Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; willSave : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; willSaveWaitUntil : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -36149,7 +36448,7 @@ module TextDocumentSyncOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentSyncOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let change_field = ref Ppx_yojson_conv_lib.Option.None and openClose_field = ref Ppx_yojson_conv_lib.Option.None and save_field = ref Ppx_yojson_conv_lib.Option.None @@ -36160,111 +36459,109 @@ module TextDocumentSyncOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "change" -> ( - match Ppx_yojson_conv_lib.( ! ) change_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - TextDocumentSyncKind.t_of_yojson - _field_yojson - in - change_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "openClose" -> ( - match Ppx_yojson_conv_lib.( ! ) openClose_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - openClose_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "save" -> ( - match Ppx_yojson_conv_lib.( ! ) save_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - save_pvar_of_yojson - _field_yojson - in - save_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willSave" -> ( - match Ppx_yojson_conv_lib.( ! ) willSave_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - willSave_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "willSaveWaitUntil" -> ( - match Ppx_yojson_conv_lib.( ! ) willSaveWaitUntil_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - willSaveWaitUntil_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( change_value - , openClose_value - , save_value - , willSave_value - , willSaveWaitUntil_value ) = - ( Ppx_yojson_conv_lib.( ! ) change_field - , Ppx_yojson_conv_lib.( ! ) openClose_field - , Ppx_yojson_conv_lib.( ! ) save_field - , Ppx_yojson_conv_lib.( ! ) willSave_field - , Ppx_yojson_conv_lib.( ! ) willSaveWaitUntil_field ) - in - { change = - (match change_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; openClose = - (match openClose_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; save = - (match save_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willSave = - (match willSave_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; willSaveWaitUntil = - (match willSaveWaitUntil_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "change" -> + (match Ppx_yojson_conv_lib.( ! ) change_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + TextDocumentSyncKind.t_of_yojson + _field_yojson + in + change_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "openClose" -> + (match Ppx_yojson_conv_lib.( ! ) openClose_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + openClose_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "save" -> + (match Ppx_yojson_conv_lib.( ! ) save_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson save_pvar_of_yojson _field_yojson + in + save_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willSave" -> + (match Ppx_yojson_conv_lib.( ! ) willSave_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + willSave_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "willSaveWaitUntil" -> + (match Ppx_yojson_conv_lib.( ! ) willSaveWaitUntil_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + willSaveWaitUntil_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( change_value + , openClose_value + , save_value + , willSave_value + , willSaveWaitUntil_value ) + = + ( Ppx_yojson_conv_lib.( ! ) change_field + , Ppx_yojson_conv_lib.( ! ) openClose_field + , Ppx_yojson_conv_lib.( ! ) save_field + , Ppx_yojson_conv_lib.( ! ) willSave_field + , Ppx_yojson_conv_lib.( ! ) willSaveWaitUntil_field ) + in + { change = + (match change_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; openClose = + (match openClose_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; save = + (match save_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willSave = + (match willSave_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; willSaveWaitUntil = + (match willSaveWaitUntil_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -36278,74 +36575,78 @@ module TextDocumentSyncOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_willSaveWaitUntil then bnds - else + if None = v_willSaveWaitUntil + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_willSaveWaitUntil + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willSaveWaitUntil in - let bnd = ("willSaveWaitUntil", arg) in - bnd :: bnds + let bnd = "willSaveWaitUntil", arg in + bnd :: bnds) in let bnds = - if None = v_willSave then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willSave - in - let bnd = ("willSave", arg) in - bnd :: bnds + if None = v_willSave + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_willSave in + let bnd = "willSave", arg in + bnd :: bnds) in let bnds = - if None = v_save then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_save_pvar) v_save - in - let bnd = ("save", arg) in - bnd :: bnds + if None = v_save + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_save_pvar) v_save in + let bnd = "save", arg in + bnd :: bnds) in let bnds = - if None = v_openClose then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_openClose - in - let bnd = ("openClose", arg) in - bnd :: bnds + if None = v_openClose + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_openClose in + let bnd = "openClose", arg in + bnd :: bnds) in let bnds = - if None = v_change then bnds - else + if None = v_change + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t TextDocumentSyncKind.yojson_of_t) - v_change + (Json.Nullable_option.yojson_of_t TextDocumentSyncKind.yojson_of_t) v_change in - let bnd = ("change", arg) in - bnd :: bnds + let bnd = "change", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(change : TextDocumentSyncKind.t option) - ?(openClose : bool option) ?(save : save_pvar option) - ?(willSave : bool option) ?(willSaveWaitUntil : bool option) (() : unit) : - t = + let create + ?(change : TextDocumentSyncKind.t option) + ?(openClose : bool option) + ?(save : save_pvar option) + ?(willSave : bool option) + ?(willSaveWaitUntil : bool option) + (() : unit) + : t + = { change; openClose; save; willSave; willSaveWaitUntil } + ;; end module SignatureHelpOptions = struct type t = { retriggerCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; triggerCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -36354,7 +36655,7 @@ module SignatureHelpOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SignatureHelpOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let retriggerCharacters_field = ref Ppx_yojson_conv_lib.Option.None and triggerCharacters_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -36363,82 +36664,81 @@ module SignatureHelpOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "retriggerCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) retriggerCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - retriggerCharacters_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - triggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( retriggerCharacters_value - , triggerCharacters_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) retriggerCharacters_field - , Ppx_yojson_conv_lib.( ! ) triggerCharacters_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { retriggerCharacters = - (match retriggerCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; triggerCharacters = - (match triggerCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "retriggerCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) retriggerCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + retriggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) triggerCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + triggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( retriggerCharacters_value + , triggerCharacters_value + , workDoneProgress_value ) + = + ( Ppx_yojson_conv_lib.( ! ) retriggerCharacters_field + , Ppx_yojson_conv_lib.( ! ) triggerCharacters_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { retriggerCharacters = + (match retriggerCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; triggerCharacters = + (match triggerCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -36450,48 +36750,54 @@ module SignatureHelpOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_triggerCharacters then bnds - else + if None = v_triggerCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_triggerCharacters in - let bnd = ("triggerCharacters", arg) in - bnd :: bnds + let bnd = "triggerCharacters", arg in + bnd :: bnds) in let bnds = - if None = v_retriggerCharacters then bnds - else + if None = v_retriggerCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_retriggerCharacters in - let bnd = ("retriggerCharacters", arg) in - bnd :: bnds + let bnd = "retriggerCharacters", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(retriggerCharacters : string list option) - ?(triggerCharacters : string list option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(retriggerCharacters : string list option) + ?(triggerCharacters : string list option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { retriggerCharacters; triggerCharacters; workDoneProgress } + ;; end module SemanticTokensLegend = struct @@ -36506,7 +36812,7 @@ module SemanticTokensLegend = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensLegend.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let tokenModifiers_field = ref Ppx_yojson_conv_lib.Option.None and tokenTypes_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -36514,66 +36820,63 @@ module SemanticTokensLegend = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "tokenModifiers" -> ( - match Ppx_yojson_conv_lib.( ! ) tokenModifiers_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - tokenModifiers_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tokenTypes" -> ( - match Ppx_yojson_conv_lib.( ! ) tokenTypes_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson string_of_yojson _field_yojson in - tokenTypes_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "tokenModifiers" -> + (match Ppx_yojson_conv_lib.( ! ) tokenModifiers_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + tokenModifiers_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tokenTypes" -> + (match Ppx_yojson_conv_lib.( ! ) tokenTypes_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson string_of_yojson _field_yojson in + tokenTypes_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) tokenModifiers_field - , Ppx_yojson_conv_lib.( ! ) tokenTypes_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some tokenModifiers_value - , Ppx_yojson_conv_lib.Option.Some tokenTypes_value ) -> - { tokenModifiers = tokenModifiers_value - ; tokenTypes = tokenTypes_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) tokenModifiers_field) - Ppx_yojson_conv_lib.Option.None - , "tokenModifiers" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) tokenTypes_field) - Ppx_yojson_conv_lib.Option.None - , "tokenTypes" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) tokenModifiers_field + , Ppx_yojson_conv_lib.( ! ) tokenTypes_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some tokenModifiers_value + , Ppx_yojson_conv_lib.Option.Some tokenTypes_value ) -> + { tokenModifiers = tokenModifiers_value; tokenTypes = tokenTypes_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) tokenModifiers_field) + Ppx_yojson_conv_lib.Option.None + , "tokenModifiers" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) tokenTypes_field) + Ppx_yojson_conv_lib.Option.None + , "tokenTypes" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -36590,7 +36893,8 @@ module SemanticTokensLegend = struct ("tokenModifiers", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -36598,13 +36902,12 @@ module SemanticTokensLegend = struct let create ~(tokenModifiers : string list) ~(tokenTypes : string list) : t = { tokenModifiers; tokenTypes } + ;; end module SemanticTokensRegistrationOptions = struct type full = - { delta : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - } + { delta : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : full) -> () @@ -36612,52 +36915,51 @@ module SemanticTokensRegistrationOptions = struct let full_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensRegistrationOptions.full" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let delta_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "delta" -> ( - match Ppx_yojson_conv_lib.( ! ) delta_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - delta_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "delta" -> + (match Ppx_yojson_conv_lib.( ! ) delta_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + delta_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let delta_value = Ppx_yojson_conv_lib.( ! ) delta_field in - { delta = - (match delta_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> full) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let delta_value = Ppx_yojson_conv_lib.( ! ) delta_field in + { delta = + (match delta_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> full) + ;; let _ = full_of_yojson @@ -36666,16 +36968,16 @@ module SemanticTokensRegistrationOptions = struct | { delta = v_delta } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_delta then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_delta - in - let bnd = ("delta", arg) in - bnd :: bnds + if None = v_delta + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_delta in + let bnd = "delta", arg in + bnd :: bnds) in `Assoc bnds - : full -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : full -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_full @@ -36696,24 +36998,23 @@ module SemanticTokensRegistrationOptions = struct "full_pvar" [ (fun json -> `Full (full_of_yojson json)) ] json + ;; let yojson_of_full_pvar (full_pvar : full_pvar) : Json.t = match full_pvar with | `Bool j -> `Bool j | `Full s -> yojson_of_full s + ;; type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; full : full_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; full : full_pvar Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; legend : SemanticTokensLegend.t - ; range : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; range : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -36722,7 +37023,7 @@ module SemanticTokensRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and full_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None @@ -36734,131 +37035,128 @@ module SemanticTokensRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "full" -> ( - match Ppx_yojson_conv_lib.( ! ) full_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - full_pvar_of_yojson - _field_yojson - in - full_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "legend" -> ( - match Ppx_yojson_conv_lib.( ! ) legend_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = SemanticTokensLegend.t_of_yojson _field_yojson in - legend_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) full_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) legend_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - with - | ( documentSelector_value - , full_value - , id_value - , Ppx_yojson_conv_lib.Option.Some legend_value - , range_value - , workDoneProgress_value ) -> - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; full = - (match full_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; legend = legend_value - ; range = - (match range_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "full" -> + (match Ppx_yojson_conv_lib.( ! ) full_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson full_pvar_of_yojson _field_yojson + in + full_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "legend" -> + (match Ppx_yojson_conv_lib.( ! ) legend_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SemanticTokensLegend.t_of_yojson _field_yojson in + legend_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) legend_field) - Ppx_yojson_conv_lib.Option.None - , "legend" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) full_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) legend_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + with + | ( documentSelector_value + , full_value + , id_value + , Ppx_yojson_conv_lib.Option.Some legend_value + , range_value + , workDoneProgress_value ) -> + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; full = + (match full_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; legend = legend_value + ; range = + (match range_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) legend_field) + Ppx_yojson_conv_lib.Option.None + , "legend" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -36873,73 +37171,79 @@ module SemanticTokensRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_range then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_range - in - let bnd = ("range", arg) in - bnd :: bnds + if None = v_range + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_range in + let bnd = "range", arg in + bnd :: bnds) in let bnds = let arg = SemanticTokensLegend.yojson_of_t v_legend in ("legend", arg) :: bnds in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_full then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_full_pvar) v_full - in - let bnd = ("full", arg) in - bnd :: bnds + if None = v_full + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_full_pvar) v_full in + let bnd = "full", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(full : full_pvar option) ?(id : string option) - ~(legend : SemanticTokensLegend.t) ?(range : bool option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(full : full_pvar option) + ?(id : string option) + ~(legend : SemanticTokensLegend.t) + ?(range : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; full; id; legend; range; workDoneProgress } + ;; end module SemanticTokensOptions = struct type full = - { delta : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - } + { delta : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : full) -> () @@ -36947,52 +37251,51 @@ module SemanticTokensOptions = struct let full_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensOptions.full" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let delta_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "delta" -> ( - match Ppx_yojson_conv_lib.( ! ) delta_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - delta_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "delta" -> + (match Ppx_yojson_conv_lib.( ! ) delta_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + delta_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let delta_value = Ppx_yojson_conv_lib.( ! ) delta_field in - { delta = - (match delta_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> full) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let delta_value = Ppx_yojson_conv_lib.( ! ) delta_field in + { delta = + (match delta_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> full) + ;; let _ = full_of_yojson @@ -37001,16 +37304,16 @@ module SemanticTokensOptions = struct | { delta = v_delta } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_delta then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_delta - in - let bnd = ("delta", arg) in - bnd :: bnds + if None = v_delta + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_delta in + let bnd = "delta", arg in + bnd :: bnds) in `Assoc bnds - : full -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : full -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_full @@ -37031,20 +37334,20 @@ module SemanticTokensOptions = struct "full_pvar" [ (fun json -> `Full (full_of_yojson json)) ] json + ;; let yojson_of_full_pvar (full_pvar : full_pvar) : Json.t = match full_pvar with | `Bool j -> `Bool j | `Full s -> yojson_of_full s + ;; type t = - { full : full_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { full : full_pvar Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; legend : SemanticTokensLegend.t - ; range : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; range : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -37053,7 +37356,7 @@ module SemanticTokensOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let full_field = ref Ppx_yojson_conv_lib.Option.None and legend_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None @@ -37063,99 +37366,96 @@ module SemanticTokensOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "full" -> ( - match Ppx_yojson_conv_lib.( ! ) full_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - full_pvar_of_yojson - _field_yojson - in - full_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "legend" -> ( - match Ppx_yojson_conv_lib.( ! ) legend_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = SemanticTokensLegend.t_of_yojson _field_yojson in - legend_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) full_field - , Ppx_yojson_conv_lib.( ! ) legend_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - with - | ( full_value - , Ppx_yojson_conv_lib.Option.Some legend_value - , range_value - , workDoneProgress_value ) -> - { full = - (match full_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; legend = legend_value - ; range = - (match range_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "full" -> + (match Ppx_yojson_conv_lib.( ! ) full_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson full_pvar_of_yojson _field_yojson + in + full_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "legend" -> + (match Ppx_yojson_conv_lib.( ! ) legend_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SemanticTokensLegend.t_of_yojson _field_yojson in + legend_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) legend_field) - Ppx_yojson_conv_lib.Option.None - , "legend" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) full_field + , Ppx_yojson_conv_lib.( ! ) legend_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + with + | ( full_value + , Ppx_yojson_conv_lib.Option.Some legend_value + , range_value + , workDoneProgress_value ) -> + { full = + (match full_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; legend = legend_value + ; range = + (match range_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) legend_field) + Ppx_yojson_conv_lib.Option.None + , "legend" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -37168,57 +37468,62 @@ module SemanticTokensOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_range then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_range - in - let bnd = ("range", arg) in - bnd :: bnds + if None = v_range + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_range in + let bnd = "range", arg in + bnd :: bnds) in let bnds = let arg = SemanticTokensLegend.yojson_of_t v_legend in ("legend", arg) :: bnds in let bnds = - if None = v_full then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_full_pvar) v_full - in - let bnd = ("full", arg) in - bnd :: bnds + if None = v_full + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_full_pvar) v_full in + let bnd = "full", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(full : full_pvar option) ~(legend : SemanticTokensLegend.t) - ?(range : bool option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(full : full_pvar option) + ~(legend : SemanticTokensLegend.t) + ?(range : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { full; legend; range; workDoneProgress } + ;; end module SelectionRangeRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -37227,7 +37532,7 @@ module SelectionRangeRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SelectionRangeRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -37236,77 +37541,76 @@ module SelectionRangeRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -37318,48 +37622,57 @@ module SelectionRangeRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module SelectionRangeOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -37368,54 +37681,53 @@ module SelectionRangeOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SelectionRangeOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -37424,32 +37736,32 @@ module SelectionRangeOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module RenameOptions = struct type t = { prepareProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -37458,7 +37770,7 @@ module RenameOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RenameOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let prepareProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -37466,105 +37778,109 @@ module RenameOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "prepareProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) prepareProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - prepareProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "prepareProvider" -> + (match Ppx_yojson_conv_lib.( ! ) prepareProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + prepareProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let prepareProvider_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) prepareProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { prepareProvider = - (match prepareProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let prepareProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) prepareProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { prepareProvider = + (match prepareProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { prepareProvider = v_prepareProvider - ; workDoneProgress = v_workDoneProgress - } -> + | { prepareProvider = v_prepareProvider; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_prepareProvider then bnds - else + if None = v_prepareProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_prepareProvider in - let bnd = ("prepareProvider", arg) in - bnd :: bnds + let bnd = "prepareProvider", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(prepareProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(prepareProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { prepareProvider; workDoneProgress } + ;; end module ReferenceOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -37573,54 +37889,53 @@ module ReferenceOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ReferenceOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -37629,32 +37944,32 @@ module ReferenceOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module MonikerRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -37663,7 +37978,7 @@ module MonikerRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.MonikerRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -37671,108 +37986,112 @@ module MonikerRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { documentSelector = v_documentSelector - ; workDoneProgress = v_workDoneProgress - } -> + | { documentSelector = v_documentSelector; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; workDoneProgress } + ;; end module MonikerOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -37781,54 +38100,53 @@ module MonikerOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.MonikerOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -37837,34 +38155,33 @@ module MonikerOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module LinkedEditingRangeRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -37873,7 +38190,7 @@ module LinkedEditingRangeRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.LinkedEditingRangeRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -37882,77 +38199,76 @@ module LinkedEditingRangeRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -37964,48 +38280,57 @@ module LinkedEditingRangeRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module LinkedEditingRangeOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38014,54 +38339,53 @@ module LinkedEditingRangeOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.LinkedEditingRangeOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -38070,34 +38394,33 @@ module LinkedEditingRangeOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module InlineValueRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38106,7 +38429,7 @@ module InlineValueRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineValueRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -38115,77 +38438,76 @@ module InlineValueRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -38197,48 +38519,57 @@ module InlineValueRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module InlineValueOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38247,54 +38578,53 @@ module InlineValueOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineValueOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -38303,30 +38633,30 @@ module InlineValueOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module InlineCompletionOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38335,54 +38665,53 @@ module InlineCompletionOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineCompletionOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -38391,36 +38720,35 @@ module InlineCompletionOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module InlayHintRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38429,7 +38757,7 @@ module InlayHintRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlayHintRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None @@ -38439,94 +38767,94 @@ module InlayHintRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( documentSelector_value - , id_value - , resolveProvider_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( documentSelector_value + , id_value + , resolveProvider_value + , workDoneProgress_value ) + = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -38539,60 +38867,70 @@ module InlayHintRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(resolveProvider : bool option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; resolveProvider; workDoneProgress } + ;; end module InlayHintOptions = struct type t = { resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38601,7 +38939,7 @@ module InlayHintOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlayHintOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -38609,108 +38947,111 @@ module InlayHintOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let resolveProvider_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let resolveProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { resolveProvider = v_resolveProvider - ; workDoneProgress = v_workDoneProgress - } -> + | { resolveProvider = v_resolveProvider; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { resolveProvider; workDoneProgress } + ;; end module ServerCapabilities = struct type workspace = - { workspaceFolders : - WorkspaceFoldersServerCapabilities.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { workspaceFolders : WorkspaceFoldersServerCapabilities.t Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; fileOperations : FileOperationOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38719,7 +39060,7 @@ module ServerCapabilities = struct let workspace_of_yojson = (let _tp_loc = "lsp/src/types.ml.ServerCapabilities.workspace" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workspaceFolders_field = ref Ppx_yojson_conv_lib.Option.None and fileOperations_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -38727,111 +39068,114 @@ module ServerCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workspaceFolders" -> ( - match Ppx_yojson_conv_lib.( ! ) workspaceFolders_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - WorkspaceFoldersServerCapabilities.t_of_yojson - _field_yojson - in - workspaceFolders_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "fileOperations" -> ( - match Ppx_yojson_conv_lib.( ! ) fileOperations_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - FileOperationOptions.t_of_yojson - _field_yojson - in - fileOperations_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workspaceFolders_value, fileOperations_value = - ( Ppx_yojson_conv_lib.( ! ) workspaceFolders_field - , Ppx_yojson_conv_lib.( ! ) fileOperations_field ) - in - { workspaceFolders = - (match workspaceFolders_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; fileOperations = - (match fileOperations_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> workspace) + | "workspaceFolders" -> + (match Ppx_yojson_conv_lib.( ! ) workspaceFolders_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + WorkspaceFoldersServerCapabilities.t_of_yojson + _field_yojson + in + workspaceFolders_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "fileOperations" -> + (match Ppx_yojson_conv_lib.( ! ) fileOperations_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + FileOperationOptions.t_of_yojson + _field_yojson + in + fileOperations_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workspaceFolders_value, fileOperations_value = + ( Ppx_yojson_conv_lib.( ! ) workspaceFolders_field + , Ppx_yojson_conv_lib.( ! ) fileOperations_field ) + in + { workspaceFolders = + (match workspaceFolders_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; fileOperations = + (match fileOperations_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> workspace) + ;; let _ = workspace_of_yojson let yojson_of_workspace = (function - | { workspaceFolders = v_workspaceFolders - ; fileOperations = v_fileOperations - } -> + | { workspaceFolders = v_workspaceFolders; fileOperations = v_fileOperations } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_fileOperations then bnds - else + if None = v_fileOperations + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t FileOperationOptions.yojson_of_t) v_fileOperations in - let bnd = ("fileOperations", arg) in - bnd :: bnds + let bnd = "fileOperations", arg in + bnd :: bnds) in let bnds = - if None = v_workspaceFolders then bnds - else + if None = v_workspaceFolders + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t WorkspaceFoldersServerCapabilities.yojson_of_t) v_workspaceFolders in - let bnd = ("workspaceFolders", arg) in - bnd :: bnds + let bnd = "workspaceFolders", arg in + bnd :: bnds) in `Assoc bnds - : workspace -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : workspace -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_workspace [@@@end] let create_workspace - ?(workspaceFolders : WorkspaceFoldersServerCapabilities.t option) - ?(fileOperations : FileOperationOptions.t option) (() : unit) : workspace - = + ?(workspaceFolders : WorkspaceFoldersServerCapabilities.t option) + ?(fileOperations : FileOperationOptions.t option) + (() : unit) + : workspace + = { workspaceFolders; fileOperations } + ;; type diagnostic = { markupMessageSupport : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38840,55 +39184,53 @@ module ServerCapabilities = struct let diagnostic_of_yojson = (let _tp_loc = "lsp/src/types.ml.ServerCapabilities.diagnostic" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let markupMessageSupport_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "markupMessageSupport" -> ( - match Ppx_yojson_conv_lib.( ! ) markupMessageSupport_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - markupMessageSupport_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "markupMessageSupport" -> + (match Ppx_yojson_conv_lib.( ! ) markupMessageSupport_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + markupMessageSupport_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let markupMessageSupport_value = - Ppx_yojson_conv_lib.( ! ) markupMessageSupport_field - in - { markupMessageSupport = - (match markupMessageSupport_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> diagnostic) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let markupMessageSupport_value = + Ppx_yojson_conv_lib.( ! ) markupMessageSupport_field + in + { markupMessageSupport = + (match markupMessageSupport_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> diagnostic) + ;; let _ = diagnostic_of_yojson @@ -38897,29 +39239,30 @@ module ServerCapabilities = struct | { markupMessageSupport = v_markupMessageSupport } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_markupMessageSupport then bnds - else + if None = v_markupMessageSupport + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_markupMessageSupport + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_markupMessageSupport in - let bnd = ("markupMessageSupport", arg) in - bnd :: bnds + let bnd = "markupMessageSupport", arg in + bnd :: bnds) in `Assoc bnds - : diagnostic -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : diagnostic -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_diagnostic [@@@end] - let create_diagnostic ?(markupMessageSupport : bool option) (() : unit) : - diagnostic = + let create_diagnostic ?(markupMessageSupport : bool option) (() : unit) : diagnostic = { markupMessageSupport } + ;; type textDocument = { diagnostic : diagnostic Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -38928,54 +39271,51 @@ module ServerCapabilities = struct let textDocument_of_yojson = (let _tp_loc = "lsp/src/types.ml.ServerCapabilities.textDocument" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let diagnostic_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "diagnostic" -> ( - match Ppx_yojson_conv_lib.( ! ) diagnostic_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - diagnostic_of_yojson - _field_yojson - in - diagnostic_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "diagnostic" -> + (match Ppx_yojson_conv_lib.( ! ) diagnostic_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson diagnostic_of_yojson _field_yojson + in + diagnostic_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let diagnostic_value = Ppx_yojson_conv_lib.( ! ) diagnostic_field in - { diagnostic = - (match diagnostic_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> textDocument) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let diagnostic_value = Ppx_yojson_conv_lib.( ! ) diagnostic_field in + { diagnostic = + (match diagnostic_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> textDocument) + ;; let _ = textDocument_of_yojson @@ -38984,25 +39324,26 @@ module ServerCapabilities = struct | { diagnostic = v_diagnostic } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_diagnostic then bnds - else + if None = v_diagnostic + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_diagnostic) - v_diagnostic + (Json.Nullable_option.yojson_of_t yojson_of_diagnostic) v_diagnostic in - let bnd = ("diagnostic", arg) in - bnd :: bnds + let bnd = "diagnostic", arg in + bnd :: bnds) in `Assoc bnds - : textDocument -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : textDocument -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_textDocument [@@@end] - let create_textDocument ?(diagnostic : diagnostic option) (() : unit) : - textDocument = + let create_textDocument ?(diagnostic : diagnostic option) (() : unit) : textDocument = { diagnostic } + ;; type callHierarchyProvider_pvar = [ `Bool of bool @@ -39010,50 +39351,54 @@ module ServerCapabilities = struct | `CallHierarchyRegistrationOptions of CallHierarchyRegistrationOptions.t ] - let callHierarchyProvider_pvar_of_yojson (json : Json.t) : - callHierarchyProvider_pvar = + let callHierarchyProvider_pvar_of_yojson (json : Json.t) : callHierarchyProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "callHierarchyProvider_pvar" - [ (fun json -> - `CallHierarchyOptions (CallHierarchyOptions.t_of_yojson json)) + [ (fun json -> `CallHierarchyOptions (CallHierarchyOptions.t_of_yojson json)) ; (fun json -> `CallHierarchyRegistrationOptions (CallHierarchyRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_callHierarchyProvider_pvar - (callHierarchyProvider_pvar : callHierarchyProvider_pvar) : Json.t = + (callHierarchyProvider_pvar : callHierarchyProvider_pvar) + : Json.t + = match callHierarchyProvider_pvar with | `Bool j -> `Bool j | `CallHierarchyOptions s -> CallHierarchyOptions.yojson_of_t s | `CallHierarchyRegistrationOptions s -> CallHierarchyRegistrationOptions.yojson_of_t s + ;; type codeActionProvider_pvar = [ `Bool of bool | `CodeActionOptions of CodeActionOptions.t ] - let codeActionProvider_pvar_of_yojson (json : Json.t) : - codeActionProvider_pvar = + let codeActionProvider_pvar_of_yojson (json : Json.t) : codeActionProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "codeActionProvider_pvar" - [ (fun json -> `CodeActionOptions (CodeActionOptions.t_of_yojson json)) - ] + [ (fun json -> `CodeActionOptions (CodeActionOptions.t_of_yojson json)) ] json + ;; let yojson_of_codeActionProvider_pvar - (codeActionProvider_pvar : codeActionProvider_pvar) : Json.t = + (codeActionProvider_pvar : codeActionProvider_pvar) + : Json.t + = match codeActionProvider_pvar with | `Bool j -> `Bool j | `CodeActionOptions s -> CodeActionOptions.yojson_of_t s + ;; type colorProvider_pvar = [ `Bool of bool @@ -39067,21 +39412,21 @@ module ServerCapabilities = struct | _ -> Json.Of.untagged_union "colorProvider_pvar" - [ (fun json -> - `DocumentColorOptions (DocumentColorOptions.t_of_yojson json)) + [ (fun json -> `DocumentColorOptions (DocumentColorOptions.t_of_yojson json)) ; (fun json -> `DocumentColorRegistrationOptions (DocumentColorRegistrationOptions.t_of_yojson json)) ] json + ;; - let yojson_of_colorProvider_pvar (colorProvider_pvar : colorProvider_pvar) : - Json.t = + let yojson_of_colorProvider_pvar (colorProvider_pvar : colorProvider_pvar) : Json.t = match colorProvider_pvar with | `Bool j -> `Bool j | `DocumentColorOptions s -> DocumentColorOptions.yojson_of_t s | `DocumentColorRegistrationOptions s -> DocumentColorRegistrationOptions.yojson_of_t s + ;; type declarationProvider_pvar = [ `Bool of bool @@ -39089,131 +39434,142 @@ module ServerCapabilities = struct | `DeclarationRegistrationOptions of DeclarationRegistrationOptions.t ] - let declarationProvider_pvar_of_yojson (json : Json.t) : - declarationProvider_pvar = + let declarationProvider_pvar_of_yojson (json : Json.t) : declarationProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "declarationProvider_pvar" - [ (fun json -> - `DeclarationOptions (DeclarationOptions.t_of_yojson json)) + [ (fun json -> `DeclarationOptions (DeclarationOptions.t_of_yojson json)) ; (fun json -> `DeclarationRegistrationOptions (DeclarationRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_declarationProvider_pvar - (declarationProvider_pvar : declarationProvider_pvar) : Json.t = + (declarationProvider_pvar : declarationProvider_pvar) + : Json.t + = match declarationProvider_pvar with | `Bool j -> `Bool j | `DeclarationOptions s -> DeclarationOptions.yojson_of_t s - | `DeclarationRegistrationOptions s -> - DeclarationRegistrationOptions.yojson_of_t s + | `DeclarationRegistrationOptions s -> DeclarationRegistrationOptions.yojson_of_t s + ;; type definitionProvider_pvar = [ `Bool of bool | `DefinitionOptions of DefinitionOptions.t ] - let definitionProvider_pvar_of_yojson (json : Json.t) : - definitionProvider_pvar = + let definitionProvider_pvar_of_yojson (json : Json.t) : definitionProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "definitionProvider_pvar" - [ (fun json -> `DefinitionOptions (DefinitionOptions.t_of_yojson json)) - ] + [ (fun json -> `DefinitionOptions (DefinitionOptions.t_of_yojson json)) ] json + ;; let yojson_of_definitionProvider_pvar - (definitionProvider_pvar : definitionProvider_pvar) : Json.t = + (definitionProvider_pvar : definitionProvider_pvar) + : Json.t + = match definitionProvider_pvar with | `Bool j -> `Bool j | `DefinitionOptions s -> DefinitionOptions.yojson_of_t s + ;; type diagnosticProvider_pvar = [ `DiagnosticOptions of DiagnosticOptions.t | `DiagnosticRegistrationOptions of DiagnosticRegistrationOptions.t ] - let diagnosticProvider_pvar_of_yojson (json : Json.t) : - diagnosticProvider_pvar = + let diagnosticProvider_pvar_of_yojson (json : Json.t) : diagnosticProvider_pvar = Json.Of.untagged_union "diagnosticProvider_pvar" [ (fun json -> `DiagnosticOptions (DiagnosticOptions.t_of_yojson json)) ; (fun json -> - `DiagnosticRegistrationOptions - (DiagnosticRegistrationOptions.t_of_yojson json)) + `DiagnosticRegistrationOptions (DiagnosticRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_diagnosticProvider_pvar - (diagnosticProvider_pvar : diagnosticProvider_pvar) : Json.t = + (diagnosticProvider_pvar : diagnosticProvider_pvar) + : Json.t + = match diagnosticProvider_pvar with | `DiagnosticOptions s -> DiagnosticOptions.yojson_of_t s - | `DiagnosticRegistrationOptions s -> - DiagnosticRegistrationOptions.yojson_of_t s + | `DiagnosticRegistrationOptions s -> DiagnosticRegistrationOptions.yojson_of_t s + ;; type documentFormattingProvider_pvar = [ `Bool of bool | `DocumentFormattingOptions of DocumentFormattingOptions.t ] - let documentFormattingProvider_pvar_of_yojson (json : Json.t) : - documentFormattingProvider_pvar = + let documentFormattingProvider_pvar_of_yojson (json : Json.t) + : documentFormattingProvider_pvar + = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "documentFormattingProvider_pvar" [ (fun json -> - `DocumentFormattingOptions - (DocumentFormattingOptions.t_of_yojson json)) + `DocumentFormattingOptions (DocumentFormattingOptions.t_of_yojson json)) ] json + ;; let yojson_of_documentFormattingProvider_pvar - (documentFormattingProvider_pvar : documentFormattingProvider_pvar) : - Json.t = + (documentFormattingProvider_pvar : documentFormattingProvider_pvar) + : Json.t + = match documentFormattingProvider_pvar with | `Bool j -> `Bool j | `DocumentFormattingOptions s -> DocumentFormattingOptions.yojson_of_t s + ;; type documentHighlightProvider_pvar = [ `Bool of bool | `DocumentHighlightOptions of DocumentHighlightOptions.t ] - let documentHighlightProvider_pvar_of_yojson (json : Json.t) : - documentHighlightProvider_pvar = + let documentHighlightProvider_pvar_of_yojson (json : Json.t) + : documentHighlightProvider_pvar + = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "documentHighlightProvider_pvar" [ (fun json -> - `DocumentHighlightOptions - (DocumentHighlightOptions.t_of_yojson json)) + `DocumentHighlightOptions (DocumentHighlightOptions.t_of_yojson json)) ] json + ;; let yojson_of_documentHighlightProvider_pvar - (documentHighlightProvider_pvar : documentHighlightProvider_pvar) : Json.t - = + (documentHighlightProvider_pvar : documentHighlightProvider_pvar) + : Json.t + = match documentHighlightProvider_pvar with | `Bool j -> `Bool j | `DocumentHighlightOptions s -> DocumentHighlightOptions.yojson_of_t s + ;; type documentRangeFormattingProvider_pvar = [ `Bool of bool | `DocumentRangeFormattingOptions of DocumentRangeFormattingOptions.t ] - let documentRangeFormattingProvider_pvar_of_yojson (json : Json.t) : - documentRangeFormattingProvider_pvar = + let documentRangeFormattingProvider_pvar_of_yojson (json : Json.t) + : documentRangeFormattingProvider_pvar + = match json with | `Bool j -> `Bool j | _ -> @@ -39224,37 +39580,40 @@ module ServerCapabilities = struct (DocumentRangeFormattingOptions.t_of_yojson json)) ] json + ;; let yojson_of_documentRangeFormattingProvider_pvar - (documentRangeFormattingProvider_pvar : - documentRangeFormattingProvider_pvar) : Json.t = + (documentRangeFormattingProvider_pvar : documentRangeFormattingProvider_pvar) + : Json.t + = match documentRangeFormattingProvider_pvar with | `Bool j -> `Bool j - | `DocumentRangeFormattingOptions s -> - DocumentRangeFormattingOptions.yojson_of_t s + | `DocumentRangeFormattingOptions s -> DocumentRangeFormattingOptions.yojson_of_t s + ;; type documentSymbolProvider_pvar = [ `Bool of bool | `DocumentSymbolOptions of DocumentSymbolOptions.t ] - let documentSymbolProvider_pvar_of_yojson (json : Json.t) : - documentSymbolProvider_pvar = + let documentSymbolProvider_pvar_of_yojson (json : Json.t) : documentSymbolProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "documentSymbolProvider_pvar" - [ (fun json -> - `DocumentSymbolOptions (DocumentSymbolOptions.t_of_yojson json)) - ] + [ (fun json -> `DocumentSymbolOptions (DocumentSymbolOptions.t_of_yojson json)) ] json + ;; let yojson_of_documentSymbolProvider_pvar - (documentSymbolProvider_pvar : documentSymbolProvider_pvar) : Json.t = + (documentSymbolProvider_pvar : documentSymbolProvider_pvar) + : Json.t + = match documentSymbolProvider_pvar with | `Bool j -> `Bool j | `DocumentSymbolOptions s -> DocumentSymbolOptions.yojson_of_t s + ;; type foldingRangeProvider_pvar = [ `Bool of bool @@ -39262,28 +39621,29 @@ module ServerCapabilities = struct | `FoldingRangeRegistrationOptions of FoldingRangeRegistrationOptions.t ] - let foldingRangeProvider_pvar_of_yojson (json : Json.t) : - foldingRangeProvider_pvar = + let foldingRangeProvider_pvar_of_yojson (json : Json.t) : foldingRangeProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "foldingRangeProvider_pvar" - [ (fun json -> - `FoldingRangeOptions (FoldingRangeOptions.t_of_yojson json)) + [ (fun json -> `FoldingRangeOptions (FoldingRangeOptions.t_of_yojson json)) ; (fun json -> `FoldingRangeRegistrationOptions (FoldingRangeRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_foldingRangeProvider_pvar - (foldingRangeProvider_pvar : foldingRangeProvider_pvar) : Json.t = + (foldingRangeProvider_pvar : foldingRangeProvider_pvar) + : Json.t + = match foldingRangeProvider_pvar with | `Bool j -> `Bool j | `FoldingRangeOptions s -> FoldingRangeOptions.yojson_of_t s - | `FoldingRangeRegistrationOptions s -> - FoldingRangeRegistrationOptions.yojson_of_t s + | `FoldingRangeRegistrationOptions s -> FoldingRangeRegistrationOptions.yojson_of_t s + ;; type hoverProvider_pvar = [ `Bool of bool @@ -39298,12 +39658,13 @@ module ServerCapabilities = struct "hoverProvider_pvar" [ (fun json -> `HoverOptions (HoverOptions.t_of_yojson json)) ] json + ;; - let yojson_of_hoverProvider_pvar (hoverProvider_pvar : hoverProvider_pvar) : - Json.t = + let yojson_of_hoverProvider_pvar (hoverProvider_pvar : hoverProvider_pvar) : Json.t = match hoverProvider_pvar with | `Bool j -> `Bool j | `HoverOptions s -> HoverOptions.yojson_of_t s + ;; type implementationProvider_pvar = [ `Bool of bool @@ -39311,28 +39672,30 @@ module ServerCapabilities = struct | `ImplementationRegistrationOptions of ImplementationRegistrationOptions.t ] - let implementationProvider_pvar_of_yojson (json : Json.t) : - implementationProvider_pvar = + let implementationProvider_pvar_of_yojson (json : Json.t) : implementationProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "implementationProvider_pvar" - [ (fun json -> - `ImplementationOptions (ImplementationOptions.t_of_yojson json)) + [ (fun json -> `ImplementationOptions (ImplementationOptions.t_of_yojson json)) ; (fun json -> `ImplementationRegistrationOptions (ImplementationRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_implementationProvider_pvar - (implementationProvider_pvar : implementationProvider_pvar) : Json.t = + (implementationProvider_pvar : implementationProvider_pvar) + : Json.t + = match implementationProvider_pvar with | `Bool j -> `Bool j | `ImplementationOptions s -> ImplementationOptions.yojson_of_t s | `ImplementationRegistrationOptions s -> ImplementationRegistrationOptions.yojson_of_t s + ;; type inlayHintProvider_pvar = [ `Bool of bool @@ -39340,8 +39703,7 @@ module ServerCapabilities = struct | `InlayHintRegistrationOptions of InlayHintRegistrationOptions.t ] - let inlayHintProvider_pvar_of_yojson (json : Json.t) : inlayHintProvider_pvar - = + let inlayHintProvider_pvar_of_yojson (json : Json.t) : inlayHintProvider_pvar = match json with | `Bool j -> `Bool j | _ -> @@ -39349,26 +39711,28 @@ module ServerCapabilities = struct "inlayHintProvider_pvar" [ (fun json -> `InlayHintOptions (InlayHintOptions.t_of_yojson json)) ; (fun json -> - `InlayHintRegistrationOptions - (InlayHintRegistrationOptions.t_of_yojson json)) + `InlayHintRegistrationOptions (InlayHintRegistrationOptions.t_of_yojson json)) ] json + ;; - let yojson_of_inlayHintProvider_pvar - (inlayHintProvider_pvar : inlayHintProvider_pvar) : Json.t = + let yojson_of_inlayHintProvider_pvar (inlayHintProvider_pvar : inlayHintProvider_pvar) + : Json.t + = match inlayHintProvider_pvar with | `Bool j -> `Bool j | `InlayHintOptions s -> InlayHintOptions.yojson_of_t s - | `InlayHintRegistrationOptions s -> - InlayHintRegistrationOptions.yojson_of_t s + | `InlayHintRegistrationOptions s -> InlayHintRegistrationOptions.yojson_of_t s + ;; type inlineCompletionProvider_pvar = [ `Bool of bool | `InlineCompletionOptions of InlineCompletionOptions.t ] - let inlineCompletionProvider_pvar_of_yojson (json : Json.t) : - inlineCompletionProvider_pvar = + let inlineCompletionProvider_pvar_of_yojson (json : Json.t) + : inlineCompletionProvider_pvar + = match json with | `Bool j -> `Bool j | _ -> @@ -39378,12 +39742,16 @@ module ServerCapabilities = struct `InlineCompletionOptions (InlineCompletionOptions.t_of_yojson json)) ] json + ;; let yojson_of_inlineCompletionProvider_pvar - (inlineCompletionProvider_pvar : inlineCompletionProvider_pvar) : Json.t = + (inlineCompletionProvider_pvar : inlineCompletionProvider_pvar) + : Json.t + = match inlineCompletionProvider_pvar with | `Bool j -> `Bool j | `InlineCompletionOptions s -> InlineCompletionOptions.yojson_of_t s + ;; type inlineValueProvider_pvar = [ `Bool of bool @@ -39391,60 +39759,63 @@ module ServerCapabilities = struct | `InlineValueRegistrationOptions of InlineValueRegistrationOptions.t ] - let inlineValueProvider_pvar_of_yojson (json : Json.t) : - inlineValueProvider_pvar = + let inlineValueProvider_pvar_of_yojson (json : Json.t) : inlineValueProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "inlineValueProvider_pvar" - [ (fun json -> - `InlineValueOptions (InlineValueOptions.t_of_yojson json)) + [ (fun json -> `InlineValueOptions (InlineValueOptions.t_of_yojson json)) ; (fun json -> `InlineValueRegistrationOptions (InlineValueRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_inlineValueProvider_pvar - (inlineValueProvider_pvar : inlineValueProvider_pvar) : Json.t = + (inlineValueProvider_pvar : inlineValueProvider_pvar) + : Json.t + = match inlineValueProvider_pvar with | `Bool j -> `Bool j | `InlineValueOptions s -> InlineValueOptions.yojson_of_t s - | `InlineValueRegistrationOptions s -> - InlineValueRegistrationOptions.yojson_of_t s + | `InlineValueRegistrationOptions s -> InlineValueRegistrationOptions.yojson_of_t s + ;; type linkedEditingRangeProvider_pvar = [ `Bool of bool | `LinkedEditingRangeOptions of LinkedEditingRangeOptions.t - | `LinkedEditingRangeRegistrationOptions of - LinkedEditingRangeRegistrationOptions.t + | `LinkedEditingRangeRegistrationOptions of LinkedEditingRangeRegistrationOptions.t ] - let linkedEditingRangeProvider_pvar_of_yojson (json : Json.t) : - linkedEditingRangeProvider_pvar = + let linkedEditingRangeProvider_pvar_of_yojson (json : Json.t) + : linkedEditingRangeProvider_pvar + = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "linkedEditingRangeProvider_pvar" [ (fun json -> - `LinkedEditingRangeOptions - (LinkedEditingRangeOptions.t_of_yojson json)) + `LinkedEditingRangeOptions (LinkedEditingRangeOptions.t_of_yojson json)) ; (fun json -> `LinkedEditingRangeRegistrationOptions (LinkedEditingRangeRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_linkedEditingRangeProvider_pvar - (linkedEditingRangeProvider_pvar : linkedEditingRangeProvider_pvar) : - Json.t = + (linkedEditingRangeProvider_pvar : linkedEditingRangeProvider_pvar) + : Json.t + = match linkedEditingRangeProvider_pvar with | `Bool j -> `Bool j | `LinkedEditingRangeOptions s -> LinkedEditingRangeOptions.yojson_of_t s | `LinkedEditingRangeRegistrationOptions s -> LinkedEditingRangeRegistrationOptions.yojson_of_t s + ;; type monikerProvider_pvar = [ `Bool of bool @@ -39460,17 +39831,19 @@ module ServerCapabilities = struct "monikerProvider_pvar" [ (fun json -> `MonikerOptions (MonikerOptions.t_of_yojson json)) ; (fun json -> - `MonikerRegistrationOptions - (MonikerRegistrationOptions.t_of_yojson json)) + `MonikerRegistrationOptions (MonikerRegistrationOptions.t_of_yojson json)) ] json + ;; - let yojson_of_monikerProvider_pvar - (monikerProvider_pvar : monikerProvider_pvar) : Json.t = + let yojson_of_monikerProvider_pvar (monikerProvider_pvar : monikerProvider_pvar) + : Json.t + = match monikerProvider_pvar with | `Bool j -> `Bool j | `MonikerOptions s -> MonikerOptions.yojson_of_t s | `MonikerRegistrationOptions s -> MonikerRegistrationOptions.yojson_of_t s + ;; type notebookDocumentSync_pvar = [ `NotebookDocumentSyncOptions of NotebookDocumentSyncOptions.t @@ -39478,34 +39851,34 @@ module ServerCapabilities = struct NotebookDocumentSyncRegistrationOptions.t ] - let notebookDocumentSync_pvar_of_yojson (json : Json.t) : - notebookDocumentSync_pvar = + let notebookDocumentSync_pvar_of_yojson (json : Json.t) : notebookDocumentSync_pvar = Json.Of.untagged_union "notebookDocumentSync_pvar" [ (fun json -> - `NotebookDocumentSyncOptions - (NotebookDocumentSyncOptions.t_of_yojson json)) + `NotebookDocumentSyncOptions (NotebookDocumentSyncOptions.t_of_yojson json)) ; (fun json -> `NotebookDocumentSyncRegistrationOptions (NotebookDocumentSyncRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_notebookDocumentSync_pvar - (notebookDocumentSync_pvar : notebookDocumentSync_pvar) : Json.t = + (notebookDocumentSync_pvar : notebookDocumentSync_pvar) + : Json.t + = match notebookDocumentSync_pvar with - | `NotebookDocumentSyncOptions s -> - NotebookDocumentSyncOptions.yojson_of_t s + | `NotebookDocumentSyncOptions s -> NotebookDocumentSyncOptions.yojson_of_t s | `NotebookDocumentSyncRegistrationOptions s -> NotebookDocumentSyncRegistrationOptions.yojson_of_t s + ;; type referencesProvider_pvar = [ `Bool of bool | `ReferenceOptions of ReferenceOptions.t ] - let referencesProvider_pvar_of_yojson (json : Json.t) : - referencesProvider_pvar = + let referencesProvider_pvar_of_yojson (json : Json.t) : referencesProvider_pvar = match json with | `Bool j -> `Bool j | _ -> @@ -39513,12 +39886,16 @@ module ServerCapabilities = struct "referencesProvider_pvar" [ (fun json -> `ReferenceOptions (ReferenceOptions.t_of_yojson json)) ] json + ;; let yojson_of_referencesProvider_pvar - (referencesProvider_pvar : referencesProvider_pvar) : Json.t = + (referencesProvider_pvar : referencesProvider_pvar) + : Json.t + = match referencesProvider_pvar with | `Bool j -> `Bool j | `ReferenceOptions s -> ReferenceOptions.yojson_of_t s + ;; type renameProvider_pvar = [ `Bool of bool @@ -39533,12 +39910,13 @@ module ServerCapabilities = struct "renameProvider_pvar" [ (fun json -> `RenameOptions (RenameOptions.t_of_yojson json)) ] json + ;; - let yojson_of_renameProvider_pvar (renameProvider_pvar : renameProvider_pvar) - : Json.t = + let yojson_of_renameProvider_pvar (renameProvider_pvar : renameProvider_pvar) : Json.t = match renameProvider_pvar with | `Bool j -> `Bool j | `RenameOptions s -> RenameOptions.yojson_of_t s + ;; type selectionRangeProvider_pvar = [ `Bool of bool @@ -39546,52 +39924,56 @@ module ServerCapabilities = struct | `SelectionRangeRegistrationOptions of SelectionRangeRegistrationOptions.t ] - let selectionRangeProvider_pvar_of_yojson (json : Json.t) : - selectionRangeProvider_pvar = + let selectionRangeProvider_pvar_of_yojson (json : Json.t) : selectionRangeProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "selectionRangeProvider_pvar" - [ (fun json -> - `SelectionRangeOptions (SelectionRangeOptions.t_of_yojson json)) + [ (fun json -> `SelectionRangeOptions (SelectionRangeOptions.t_of_yojson json)) ; (fun json -> `SelectionRangeRegistrationOptions (SelectionRangeRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_selectionRangeProvider_pvar - (selectionRangeProvider_pvar : selectionRangeProvider_pvar) : Json.t = + (selectionRangeProvider_pvar : selectionRangeProvider_pvar) + : Json.t + = match selectionRangeProvider_pvar with | `Bool j -> `Bool j | `SelectionRangeOptions s -> SelectionRangeOptions.yojson_of_t s | `SelectionRangeRegistrationOptions s -> SelectionRangeRegistrationOptions.yojson_of_t s + ;; type semanticTokensProvider_pvar = [ `SemanticTokensOptions of SemanticTokensOptions.t | `SemanticTokensRegistrationOptions of SemanticTokensRegistrationOptions.t ] - let semanticTokensProvider_pvar_of_yojson (json : Json.t) : - semanticTokensProvider_pvar = + let semanticTokensProvider_pvar_of_yojson (json : Json.t) : semanticTokensProvider_pvar = Json.Of.untagged_union "semanticTokensProvider_pvar" - [ (fun json -> - `SemanticTokensOptions (SemanticTokensOptions.t_of_yojson json)) + [ (fun json -> `SemanticTokensOptions (SemanticTokensOptions.t_of_yojson json)) ; (fun json -> `SemanticTokensRegistrationOptions (SemanticTokensRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_semanticTokensProvider_pvar - (semanticTokensProvider_pvar : semanticTokensProvider_pvar) : Json.t = + (semanticTokensProvider_pvar : semanticTokensProvider_pvar) + : Json.t + = match semanticTokensProvider_pvar with | `SemanticTokensOptions s -> SemanticTokensOptions.yojson_of_t s | `SemanticTokensRegistrationOptions s -> SemanticTokensRegistrationOptions.yojson_of_t s + ;; type textDocumentSync_pvar = [ `TextDocumentSyncOptions of TextDocumentSyncOptions.t @@ -39601,18 +39983,19 @@ module ServerCapabilities = struct let textDocumentSync_pvar_of_yojson (json : Json.t) : textDocumentSync_pvar = Json.Of.untagged_union "textDocumentSync_pvar" - [ (fun json -> - `TextDocumentSyncOptions (TextDocumentSyncOptions.t_of_yojson json)) - ; (fun json -> - `TextDocumentSyncKind (TextDocumentSyncKind.t_of_yojson json)) + [ (fun json -> `TextDocumentSyncOptions (TextDocumentSyncOptions.t_of_yojson json)) + ; (fun json -> `TextDocumentSyncKind (TextDocumentSyncKind.t_of_yojson json)) ] json + ;; - let yojson_of_textDocumentSync_pvar - (textDocumentSync_pvar : textDocumentSync_pvar) : Json.t = + let yojson_of_textDocumentSync_pvar (textDocumentSync_pvar : textDocumentSync_pvar) + : Json.t + = match textDocumentSync_pvar with | `TextDocumentSyncOptions s -> TextDocumentSyncOptions.yojson_of_t s | `TextDocumentSyncKind s -> TextDocumentSyncKind.yojson_of_t s + ;; type typeDefinitionProvider_pvar = [ `Bool of bool @@ -39620,28 +40003,30 @@ module ServerCapabilities = struct | `TypeDefinitionRegistrationOptions of TypeDefinitionRegistrationOptions.t ] - let typeDefinitionProvider_pvar_of_yojson (json : Json.t) : - typeDefinitionProvider_pvar = + let typeDefinitionProvider_pvar_of_yojson (json : Json.t) : typeDefinitionProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "typeDefinitionProvider_pvar" - [ (fun json -> - `TypeDefinitionOptions (TypeDefinitionOptions.t_of_yojson json)) + [ (fun json -> `TypeDefinitionOptions (TypeDefinitionOptions.t_of_yojson json)) ; (fun json -> `TypeDefinitionRegistrationOptions (TypeDefinitionRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_typeDefinitionProvider_pvar - (typeDefinitionProvider_pvar : typeDefinitionProvider_pvar) : Json.t = + (typeDefinitionProvider_pvar : typeDefinitionProvider_pvar) + : Json.t + = match typeDefinitionProvider_pvar with | `Bool j -> `Bool j | `TypeDefinitionOptions s -> TypeDefinitionOptions.yojson_of_t s | `TypeDefinitionRegistrationOptions s -> TypeDefinitionRegistrationOptions.yojson_of_t s + ;; type typeHierarchyProvider_pvar = [ `Bool of bool @@ -39649,138 +40034,134 @@ module ServerCapabilities = struct | `TypeHierarchyRegistrationOptions of TypeHierarchyRegistrationOptions.t ] - let typeHierarchyProvider_pvar_of_yojson (json : Json.t) : - typeHierarchyProvider_pvar = + let typeHierarchyProvider_pvar_of_yojson (json : Json.t) : typeHierarchyProvider_pvar = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "typeHierarchyProvider_pvar" - [ (fun json -> - `TypeHierarchyOptions (TypeHierarchyOptions.t_of_yojson json)) + [ (fun json -> `TypeHierarchyOptions (TypeHierarchyOptions.t_of_yojson json)) ; (fun json -> `TypeHierarchyRegistrationOptions (TypeHierarchyRegistrationOptions.t_of_yojson json)) ] json + ;; let yojson_of_typeHierarchyProvider_pvar - (typeHierarchyProvider_pvar : typeHierarchyProvider_pvar) : Json.t = + (typeHierarchyProvider_pvar : typeHierarchyProvider_pvar) + : Json.t + = match typeHierarchyProvider_pvar with | `Bool j -> `Bool j | `TypeHierarchyOptions s -> TypeHierarchyOptions.yojson_of_t s | `TypeHierarchyRegistrationOptions s -> TypeHierarchyRegistrationOptions.yojson_of_t s + ;; type workspaceSymbolProvider_pvar = [ `Bool of bool | `WorkspaceSymbolOptions of WorkspaceSymbolOptions.t ] - let workspaceSymbolProvider_pvar_of_yojson (json : Json.t) : - workspaceSymbolProvider_pvar = + let workspaceSymbolProvider_pvar_of_yojson (json : Json.t) + : workspaceSymbolProvider_pvar + = match json with | `Bool j -> `Bool j | _ -> Json.Of.untagged_union "workspaceSymbolProvider_pvar" - [ (fun json -> - `WorkspaceSymbolOptions (WorkspaceSymbolOptions.t_of_yojson json)) + [ (fun json -> `WorkspaceSymbolOptions (WorkspaceSymbolOptions.t_of_yojson json)) ] json + ;; let yojson_of_workspaceSymbolProvider_pvar - (workspaceSymbolProvider_pvar : workspaceSymbolProvider_pvar) : Json.t = + (workspaceSymbolProvider_pvar : workspaceSymbolProvider_pvar) + : Json.t + = match workspaceSymbolProvider_pvar with | `Bool j -> `Bool j | `WorkspaceSymbolOptions s -> WorkspaceSymbolOptions.yojson_of_t s + ;; type t = { callHierarchyProvider : callHierarchyProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; codeActionProvider : codeActionProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; codeLensProvider : CodeLensOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; colorProvider : colorProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; completionProvider : CompletionOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; declarationProvider : declarationProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; definitionProvider : definitionProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; diagnosticProvider : diagnosticProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; documentFormattingProvider : - documentFormattingProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; documentHighlightProvider : - documentHighlightProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; documentFormattingProvider : documentFormattingProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] + ; documentHighlightProvider : documentHighlightProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; documentLinkProvider : DocumentLinkOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; documentOnTypeFormattingProvider : DocumentOnTypeFormattingOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; documentRangeFormattingProvider : documentRangeFormattingProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; documentSymbolProvider : - documentSymbolProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; documentSymbolProvider : documentSymbolProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; executeCommandProvider : ExecuteCommandOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; experimental : Json.t option [@yojson.option] ; foldingRangeProvider : foldingRangeProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; hoverProvider : hoverProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; implementationProvider : - implementationProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; implementationProvider : implementationProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; inlayHintProvider : inlayHintProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; inlineCompletionProvider : - inlineCompletionProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; inlineCompletionProvider : inlineCompletionProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; inlineValueProvider : inlineValueProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; linkedEditingRangeProvider : - linkedEditingRangeProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; linkedEditingRangeProvider : linkedEditingRangeProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; monikerProvider : monikerProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; notebookDocumentSync : notebookDocumentSync_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; positionEncoding : PositionEncodingKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; referencesProvider : referencesProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; renameProvider : renameProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; selectionRangeProvider : - selectionRangeProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; semanticTokensProvider : - semanticTokensProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; selectionRangeProvider : selectionRangeProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] + ; semanticTokensProvider : semanticTokensProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; signatureHelpProvider : SignatureHelpOptions.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocument : textDocument Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocumentSync : textDocumentSync_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; typeDefinitionProvider : - typeDefinitionProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; typeDefinitionProvider : typeDefinitionProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] ; typeHierarchyProvider : typeHierarchyProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workspace : workspace Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; workspaceSymbolProvider : - workspaceSymbolProvider_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; workspaceSymbolProvider : workspaceSymbolProvider_pvar Json.Nullable_option.t + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -39789,7 +40170,7 @@ module ServerCapabilities = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ServerCapabilities.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let callHierarchyProvider_field = ref Ppx_yojson_conv_lib.Option.None and codeActionProvider_field = ref Ppx_yojson_conv_lib.Option.None and codeLensProvider_field = ref Ppx_yojson_conv_lib.Option.None @@ -39798,14 +40179,11 @@ module ServerCapabilities = struct and declarationProvider_field = ref Ppx_yojson_conv_lib.Option.None and definitionProvider_field = ref Ppx_yojson_conv_lib.Option.None and diagnosticProvider_field = ref Ppx_yojson_conv_lib.Option.None - and documentFormattingProvider_field = - ref Ppx_yojson_conv_lib.Option.None + and documentFormattingProvider_field = ref Ppx_yojson_conv_lib.Option.None and documentHighlightProvider_field = ref Ppx_yojson_conv_lib.Option.None and documentLinkProvider_field = ref Ppx_yojson_conv_lib.Option.None - and documentOnTypeFormattingProvider_field = - ref Ppx_yojson_conv_lib.Option.None - and documentRangeFormattingProvider_field = - ref Ppx_yojson_conv_lib.Option.None + and documentOnTypeFormattingProvider_field = ref Ppx_yojson_conv_lib.Option.None + and documentRangeFormattingProvider_field = ref Ppx_yojson_conv_lib.Option.None and documentSymbolProvider_field = ref Ppx_yojson_conv_lib.Option.None and executeCommandProvider_field = ref Ppx_yojson_conv_lib.Option.None and experimental_field = ref Ppx_yojson_conv_lib.Option.None @@ -39815,8 +40193,7 @@ module ServerCapabilities = struct and inlayHintProvider_field = ref Ppx_yojson_conv_lib.Option.None and inlineCompletionProvider_field = ref Ppx_yojson_conv_lib.Option.None and inlineValueProvider_field = ref Ppx_yojson_conv_lib.Option.None - and linkedEditingRangeProvider_field = - ref Ppx_yojson_conv_lib.Option.None + and linkedEditingRangeProvider_field = ref Ppx_yojson_conv_lib.Option.None and monikerProvider_field = ref Ppx_yojson_conv_lib.Option.None and notebookDocumentSync_field = ref Ppx_yojson_conv_lib.Option.None and positionEncoding_field = ref Ppx_yojson_conv_lib.Option.None @@ -39836,690 +40213,654 @@ module ServerCapabilities = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "callHierarchyProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) callHierarchyProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - callHierarchyProvider_pvar_of_yojson - _field_yojson - in - callHierarchyProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "codeActionProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) codeActionProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - codeActionProvider_pvar_of_yojson - _field_yojson - in - codeActionProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "codeLensProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) codeLensProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CodeLensOptions.t_of_yojson - _field_yojson - in - codeLensProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "colorProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) colorProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - colorProvider_pvar_of_yojson - _field_yojson - in - colorProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "completionProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) completionProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - CompletionOptions.t_of_yojson - _field_yojson - in - completionProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "declarationProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) declarationProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - declarationProvider_pvar_of_yojson - _field_yojson - in - declarationProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "definitionProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) definitionProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - definitionProvider_pvar_of_yojson - _field_yojson - in - definitionProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "diagnosticProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) diagnosticProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - diagnosticProvider_pvar_of_yojson - _field_yojson - in - diagnosticProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentFormattingProvider" -> ( - match - Ppx_yojson_conv_lib.( ! ) documentFormattingProvider_field - with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - documentFormattingProvider_pvar_of_yojson - _field_yojson - in - documentFormattingProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentHighlightProvider" -> ( - match - Ppx_yojson_conv_lib.( ! ) documentHighlightProvider_field - with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - documentHighlightProvider_pvar_of_yojson - _field_yojson - in - documentHighlightProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentLinkProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) documentLinkProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentLinkOptions.t_of_yojson - _field_yojson - in - documentLinkProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentOnTypeFormattingProvider" -> ( - match - Ppx_yojson_conv_lib.( ! ) documentOnTypeFormattingProvider_field - with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentOnTypeFormattingOptions.t_of_yojson - _field_yojson - in - documentOnTypeFormattingProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentRangeFormattingProvider" -> ( - match - Ppx_yojson_conv_lib.( ! ) documentRangeFormattingProvider_field - with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - documentRangeFormattingProvider_pvar_of_yojson - _field_yojson - in - documentRangeFormattingProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentSymbolProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSymbolProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - documentSymbolProvider_pvar_of_yojson - _field_yojson - in - documentSymbolProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "executeCommandProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) executeCommandProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ExecuteCommandOptions.t_of_yojson - _field_yojson - in - executeCommandProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "experimental" -> ( - match Ppx_yojson_conv_lib.( ! ) experimental_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - experimental_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "foldingRangeProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) foldingRangeProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - foldingRangeProvider_pvar_of_yojson - _field_yojson - in - foldingRangeProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "hoverProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) hoverProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - hoverProvider_pvar_of_yojson - _field_yojson - in - hoverProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "implementationProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) implementationProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - implementationProvider_pvar_of_yojson - _field_yojson - in - implementationProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlayHintProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) inlayHintProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - inlayHintProvider_pvar_of_yojson - _field_yojson - in - inlayHintProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlineCompletionProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) inlineCompletionProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - inlineCompletionProvider_pvar_of_yojson - _field_yojson - in - inlineCompletionProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlineValueProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) inlineValueProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - inlineValueProvider_pvar_of_yojson - _field_yojson - in - inlineValueProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "linkedEditingRangeProvider" -> ( - match - Ppx_yojson_conv_lib.( ! ) linkedEditingRangeProvider_field - with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - linkedEditingRangeProvider_pvar_of_yojson - _field_yojson - in - linkedEditingRangeProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "monikerProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) monikerProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - monikerProvider_pvar_of_yojson - _field_yojson - in - monikerProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "notebookDocumentSync" -> ( - match Ppx_yojson_conv_lib.( ! ) notebookDocumentSync_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - notebookDocumentSync_pvar_of_yojson - _field_yojson - in - notebookDocumentSync_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "positionEncoding" -> ( - match Ppx_yojson_conv_lib.( ! ) positionEncoding_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - PositionEncodingKind.t_of_yojson - _field_yojson - in - positionEncoding_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "referencesProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) referencesProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - referencesProvider_pvar_of_yojson - _field_yojson - in - referencesProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "renameProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) renameProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - renameProvider_pvar_of_yojson - _field_yojson - in - renameProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "selectionRangeProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) selectionRangeProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - selectionRangeProvider_pvar_of_yojson - _field_yojson - in - selectionRangeProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "semanticTokensProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) semanticTokensProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - semanticTokensProvider_pvar_of_yojson - _field_yojson - in - semanticTokensProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "signatureHelpProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) signatureHelpProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SignatureHelpOptions.t_of_yojson - _field_yojson - in - signatureHelpProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - textDocument_of_yojson - _field_yojson - in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocumentSync" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocumentSync_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - textDocumentSync_pvar_of_yojson - _field_yojson - in - textDocumentSync_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "typeDefinitionProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) typeDefinitionProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - typeDefinitionProvider_pvar_of_yojson - _field_yojson - in - typeDefinitionProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "typeHierarchyProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) typeHierarchyProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - typeHierarchyProvider_pvar_of_yojson - _field_yojson - in - typeHierarchyProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workspace" -> ( - match Ppx_yojson_conv_lib.( ! ) workspace_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - workspace_of_yojson - _field_yojson - in - workspace_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workspaceSymbolProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) workspaceSymbolProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - workspaceSymbolProvider_pvar_of_yojson - _field_yojson - in - workspaceSymbolProvider_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( callHierarchyProvider_value - , codeActionProvider_value - , codeLensProvider_value - , colorProvider_value - , completionProvider_value - , declarationProvider_value - , definitionProvider_value - , diagnosticProvider_value - , documentFormattingProvider_value - , documentHighlightProvider_value - , documentLinkProvider_value - , documentOnTypeFormattingProvider_value - , documentRangeFormattingProvider_value - , documentSymbolProvider_value - , executeCommandProvider_value - , experimental_value - , foldingRangeProvider_value - , hoverProvider_value - , implementationProvider_value - , inlayHintProvider_value - , inlineCompletionProvider_value - , inlineValueProvider_value - , linkedEditingRangeProvider_value - , monikerProvider_value - , notebookDocumentSync_value - , positionEncoding_value - , referencesProvider_value - , renameProvider_value - , selectionRangeProvider_value - , semanticTokensProvider_value - , signatureHelpProvider_value - , textDocument_value - , textDocumentSync_value - , typeDefinitionProvider_value - , typeHierarchyProvider_value - , workspace_value - , workspaceSymbolProvider_value ) = - ( Ppx_yojson_conv_lib.( ! ) callHierarchyProvider_field - , Ppx_yojson_conv_lib.( ! ) codeActionProvider_field - , Ppx_yojson_conv_lib.( ! ) codeLensProvider_field - , Ppx_yojson_conv_lib.( ! ) colorProvider_field - , Ppx_yojson_conv_lib.( ! ) completionProvider_field - , Ppx_yojson_conv_lib.( ! ) declarationProvider_field - , Ppx_yojson_conv_lib.( ! ) definitionProvider_field - , Ppx_yojson_conv_lib.( ! ) diagnosticProvider_field - , Ppx_yojson_conv_lib.( ! ) documentFormattingProvider_field - , Ppx_yojson_conv_lib.( ! ) documentHighlightProvider_field - , Ppx_yojson_conv_lib.( ! ) documentLinkProvider_field - , Ppx_yojson_conv_lib.( ! ) documentOnTypeFormattingProvider_field - , Ppx_yojson_conv_lib.( ! ) documentRangeFormattingProvider_field - , Ppx_yojson_conv_lib.( ! ) documentSymbolProvider_field - , Ppx_yojson_conv_lib.( ! ) executeCommandProvider_field - , Ppx_yojson_conv_lib.( ! ) experimental_field - , Ppx_yojson_conv_lib.( ! ) foldingRangeProvider_field - , Ppx_yojson_conv_lib.( ! ) hoverProvider_field - , Ppx_yojson_conv_lib.( ! ) implementationProvider_field - , Ppx_yojson_conv_lib.( ! ) inlayHintProvider_field - , Ppx_yojson_conv_lib.( ! ) inlineCompletionProvider_field - , Ppx_yojson_conv_lib.( ! ) inlineValueProvider_field - , Ppx_yojson_conv_lib.( ! ) linkedEditingRangeProvider_field - , Ppx_yojson_conv_lib.( ! ) monikerProvider_field - , Ppx_yojson_conv_lib.( ! ) notebookDocumentSync_field - , Ppx_yojson_conv_lib.( ! ) positionEncoding_field - , Ppx_yojson_conv_lib.( ! ) referencesProvider_field - , Ppx_yojson_conv_lib.( ! ) renameProvider_field - , Ppx_yojson_conv_lib.( ! ) selectionRangeProvider_field - , Ppx_yojson_conv_lib.( ! ) semanticTokensProvider_field - , Ppx_yojson_conv_lib.( ! ) signatureHelpProvider_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) textDocumentSync_field - , Ppx_yojson_conv_lib.( ! ) typeDefinitionProvider_field - , Ppx_yojson_conv_lib.( ! ) typeHierarchyProvider_field - , Ppx_yojson_conv_lib.( ! ) workspace_field - , Ppx_yojson_conv_lib.( ! ) workspaceSymbolProvider_field ) - in - { callHierarchyProvider = - (match callHierarchyProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; codeActionProvider = - (match codeActionProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; codeLensProvider = - (match codeLensProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; colorProvider = - (match colorProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; completionProvider = - (match completionProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; declarationProvider = - (match declarationProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; definitionProvider = - (match definitionProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; diagnosticProvider = - (match diagnosticProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentFormattingProvider = - (match documentFormattingProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentHighlightProvider = - (match documentHighlightProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentLinkProvider = - (match documentLinkProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentOnTypeFormattingProvider = - (match documentOnTypeFormattingProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentRangeFormattingProvider = - (match documentRangeFormattingProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentSymbolProvider = - (match documentSymbolProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; executeCommandProvider = - (match executeCommandProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; experimental = experimental_value - ; foldingRangeProvider = - (match foldingRangeProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; hoverProvider = - (match hoverProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; implementationProvider = - (match implementationProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlayHintProvider = - (match inlayHintProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlineCompletionProvider = - (match inlineCompletionProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlineValueProvider = - (match inlineValueProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; linkedEditingRangeProvider = - (match linkedEditingRangeProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; monikerProvider = - (match monikerProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; notebookDocumentSync = - (match notebookDocumentSync_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; positionEncoding = - (match positionEncoding_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; referencesProvider = - (match referencesProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; renameProvider = - (match renameProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; selectionRangeProvider = - (match selectionRangeProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; semanticTokensProvider = - (match semanticTokensProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; signatureHelpProvider = - (match signatureHelpProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = - (match textDocument_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocumentSync = - (match textDocumentSync_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; typeDefinitionProvider = - (match typeDefinitionProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; typeHierarchyProvider = - (match typeHierarchyProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workspace = - (match workspace_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workspaceSymbolProvider = - (match workspaceSymbolProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "callHierarchyProvider" -> + (match Ppx_yojson_conv_lib.( ! ) callHierarchyProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + callHierarchyProvider_pvar_of_yojson + _field_yojson + in + callHierarchyProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "codeActionProvider" -> + (match Ppx_yojson_conv_lib.( ! ) codeActionProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + codeActionProvider_pvar_of_yojson + _field_yojson + in + codeActionProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "codeLensProvider" -> + (match Ppx_yojson_conv_lib.( ! ) codeLensProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CodeLensOptions.t_of_yojson + _field_yojson + in + codeLensProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "colorProvider" -> + (match Ppx_yojson_conv_lib.( ! ) colorProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + colorProvider_pvar_of_yojson + _field_yojson + in + colorProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "completionProvider" -> + (match Ppx_yojson_conv_lib.( ! ) completionProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + CompletionOptions.t_of_yojson + _field_yojson + in + completionProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "declarationProvider" -> + (match Ppx_yojson_conv_lib.( ! ) declarationProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + declarationProvider_pvar_of_yojson + _field_yojson + in + declarationProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "definitionProvider" -> + (match Ppx_yojson_conv_lib.( ! ) definitionProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + definitionProvider_pvar_of_yojson + _field_yojson + in + definitionProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "diagnosticProvider" -> + (match Ppx_yojson_conv_lib.( ! ) diagnosticProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + diagnosticProvider_pvar_of_yojson + _field_yojson + in + diagnosticProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentFormattingProvider" -> + (match Ppx_yojson_conv_lib.( ! ) documentFormattingProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + documentFormattingProvider_pvar_of_yojson + _field_yojson + in + documentFormattingProvider_field + := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentHighlightProvider" -> + (match Ppx_yojson_conv_lib.( ! ) documentHighlightProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + documentHighlightProvider_pvar_of_yojson + _field_yojson + in + documentHighlightProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentLinkProvider" -> + (match Ppx_yojson_conv_lib.( ! ) documentLinkProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentLinkOptions.t_of_yojson + _field_yojson + in + documentLinkProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentOnTypeFormattingProvider" -> + (match Ppx_yojson_conv_lib.( ! ) documentOnTypeFormattingProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentOnTypeFormattingOptions.t_of_yojson + _field_yojson + in + documentOnTypeFormattingProvider_field + := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentRangeFormattingProvider" -> + (match Ppx_yojson_conv_lib.( ! ) documentRangeFormattingProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + documentRangeFormattingProvider_pvar_of_yojson + _field_yojson + in + documentRangeFormattingProvider_field + := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentSymbolProvider" -> + (match Ppx_yojson_conv_lib.( ! ) documentSymbolProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + documentSymbolProvider_pvar_of_yojson + _field_yojson + in + documentSymbolProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "executeCommandProvider" -> + (match Ppx_yojson_conv_lib.( ! ) executeCommandProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ExecuteCommandOptions.t_of_yojson + _field_yojson + in + executeCommandProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "experimental" -> + (match Ppx_yojson_conv_lib.( ! ) experimental_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + experimental_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "foldingRangeProvider" -> + (match Ppx_yojson_conv_lib.( ! ) foldingRangeProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + foldingRangeProvider_pvar_of_yojson + _field_yojson + in + foldingRangeProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "hoverProvider" -> + (match Ppx_yojson_conv_lib.( ! ) hoverProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + hoverProvider_pvar_of_yojson + _field_yojson + in + hoverProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "implementationProvider" -> + (match Ppx_yojson_conv_lib.( ! ) implementationProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + implementationProvider_pvar_of_yojson + _field_yojson + in + implementationProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlayHintProvider" -> + (match Ppx_yojson_conv_lib.( ! ) inlayHintProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + inlayHintProvider_pvar_of_yojson + _field_yojson + in + inlayHintProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlineCompletionProvider" -> + (match Ppx_yojson_conv_lib.( ! ) inlineCompletionProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + inlineCompletionProvider_pvar_of_yojson + _field_yojson + in + inlineCompletionProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlineValueProvider" -> + (match Ppx_yojson_conv_lib.( ! ) inlineValueProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + inlineValueProvider_pvar_of_yojson + _field_yojson + in + inlineValueProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "linkedEditingRangeProvider" -> + (match Ppx_yojson_conv_lib.( ! ) linkedEditingRangeProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + linkedEditingRangeProvider_pvar_of_yojson + _field_yojson + in + linkedEditingRangeProvider_field + := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "monikerProvider" -> + (match Ppx_yojson_conv_lib.( ! ) monikerProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + monikerProvider_pvar_of_yojson + _field_yojson + in + monikerProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "notebookDocumentSync" -> + (match Ppx_yojson_conv_lib.( ! ) notebookDocumentSync_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + notebookDocumentSync_pvar_of_yojson + _field_yojson + in + notebookDocumentSync_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "positionEncoding" -> + (match Ppx_yojson_conv_lib.( ! ) positionEncoding_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + PositionEncodingKind.t_of_yojson + _field_yojson + in + positionEncoding_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "referencesProvider" -> + (match Ppx_yojson_conv_lib.( ! ) referencesProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + referencesProvider_pvar_of_yojson + _field_yojson + in + referencesProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "renameProvider" -> + (match Ppx_yojson_conv_lib.( ! ) renameProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + renameProvider_pvar_of_yojson + _field_yojson + in + renameProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "selectionRangeProvider" -> + (match Ppx_yojson_conv_lib.( ! ) selectionRangeProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + selectionRangeProvider_pvar_of_yojson + _field_yojson + in + selectionRangeProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "semanticTokensProvider" -> + (match Ppx_yojson_conv_lib.( ! ) semanticTokensProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + semanticTokensProvider_pvar_of_yojson + _field_yojson + in + semanticTokensProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "signatureHelpProvider" -> + (match Ppx_yojson_conv_lib.( ! ) signatureHelpProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SignatureHelpOptions.t_of_yojson + _field_yojson + in + signatureHelpProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson textDocument_of_yojson _field_yojson + in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocumentSync" -> + (match Ppx_yojson_conv_lib.( ! ) textDocumentSync_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + textDocumentSync_pvar_of_yojson + _field_yojson + in + textDocumentSync_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "typeDefinitionProvider" -> + (match Ppx_yojson_conv_lib.( ! ) typeDefinitionProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + typeDefinitionProvider_pvar_of_yojson + _field_yojson + in + typeDefinitionProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "typeHierarchyProvider" -> + (match Ppx_yojson_conv_lib.( ! ) typeHierarchyProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + typeHierarchyProvider_pvar_of_yojson + _field_yojson + in + typeHierarchyProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workspace" -> + (match Ppx_yojson_conv_lib.( ! ) workspace_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson workspace_of_yojson _field_yojson + in + workspace_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workspaceSymbolProvider" -> + (match Ppx_yojson_conv_lib.( ! ) workspaceSymbolProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + workspaceSymbolProvider_pvar_of_yojson + _field_yojson + in + workspaceSymbolProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( callHierarchyProvider_value + , codeActionProvider_value + , codeLensProvider_value + , colorProvider_value + , completionProvider_value + , declarationProvider_value + , definitionProvider_value + , diagnosticProvider_value + , documentFormattingProvider_value + , documentHighlightProvider_value + , documentLinkProvider_value + , documentOnTypeFormattingProvider_value + , documentRangeFormattingProvider_value + , documentSymbolProvider_value + , executeCommandProvider_value + , experimental_value + , foldingRangeProvider_value + , hoverProvider_value + , implementationProvider_value + , inlayHintProvider_value + , inlineCompletionProvider_value + , inlineValueProvider_value + , linkedEditingRangeProvider_value + , monikerProvider_value + , notebookDocumentSync_value + , positionEncoding_value + , referencesProvider_value + , renameProvider_value + , selectionRangeProvider_value + , semanticTokensProvider_value + , signatureHelpProvider_value + , textDocument_value + , textDocumentSync_value + , typeDefinitionProvider_value + , typeHierarchyProvider_value + , workspace_value + , workspaceSymbolProvider_value ) + = + ( Ppx_yojson_conv_lib.( ! ) callHierarchyProvider_field + , Ppx_yojson_conv_lib.( ! ) codeActionProvider_field + , Ppx_yojson_conv_lib.( ! ) codeLensProvider_field + , Ppx_yojson_conv_lib.( ! ) colorProvider_field + , Ppx_yojson_conv_lib.( ! ) completionProvider_field + , Ppx_yojson_conv_lib.( ! ) declarationProvider_field + , Ppx_yojson_conv_lib.( ! ) definitionProvider_field + , Ppx_yojson_conv_lib.( ! ) diagnosticProvider_field + , Ppx_yojson_conv_lib.( ! ) documentFormattingProvider_field + , Ppx_yojson_conv_lib.( ! ) documentHighlightProvider_field + , Ppx_yojson_conv_lib.( ! ) documentLinkProvider_field + , Ppx_yojson_conv_lib.( ! ) documentOnTypeFormattingProvider_field + , Ppx_yojson_conv_lib.( ! ) documentRangeFormattingProvider_field + , Ppx_yojson_conv_lib.( ! ) documentSymbolProvider_field + , Ppx_yojson_conv_lib.( ! ) executeCommandProvider_field + , Ppx_yojson_conv_lib.( ! ) experimental_field + , Ppx_yojson_conv_lib.( ! ) foldingRangeProvider_field + , Ppx_yojson_conv_lib.( ! ) hoverProvider_field + , Ppx_yojson_conv_lib.( ! ) implementationProvider_field + , Ppx_yojson_conv_lib.( ! ) inlayHintProvider_field + , Ppx_yojson_conv_lib.( ! ) inlineCompletionProvider_field + , Ppx_yojson_conv_lib.( ! ) inlineValueProvider_field + , Ppx_yojson_conv_lib.( ! ) linkedEditingRangeProvider_field + , Ppx_yojson_conv_lib.( ! ) monikerProvider_field + , Ppx_yojson_conv_lib.( ! ) notebookDocumentSync_field + , Ppx_yojson_conv_lib.( ! ) positionEncoding_field + , Ppx_yojson_conv_lib.( ! ) referencesProvider_field + , Ppx_yojson_conv_lib.( ! ) renameProvider_field + , Ppx_yojson_conv_lib.( ! ) selectionRangeProvider_field + , Ppx_yojson_conv_lib.( ! ) semanticTokensProvider_field + , Ppx_yojson_conv_lib.( ! ) signatureHelpProvider_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) textDocumentSync_field + , Ppx_yojson_conv_lib.( ! ) typeDefinitionProvider_field + , Ppx_yojson_conv_lib.( ! ) typeHierarchyProvider_field + , Ppx_yojson_conv_lib.( ! ) workspace_field + , Ppx_yojson_conv_lib.( ! ) workspaceSymbolProvider_field ) + in + { callHierarchyProvider = + (match callHierarchyProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; codeActionProvider = + (match codeActionProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; codeLensProvider = + (match codeLensProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; colorProvider = + (match colorProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; completionProvider = + (match completionProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; declarationProvider = + (match declarationProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; definitionProvider = + (match definitionProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; diagnosticProvider = + (match diagnosticProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentFormattingProvider = + (match documentFormattingProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentHighlightProvider = + (match documentHighlightProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentLinkProvider = + (match documentLinkProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentOnTypeFormattingProvider = + (match documentOnTypeFormattingProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentRangeFormattingProvider = + (match documentRangeFormattingProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentSymbolProvider = + (match documentSymbolProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; executeCommandProvider = + (match executeCommandProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; experimental = experimental_value + ; foldingRangeProvider = + (match foldingRangeProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; hoverProvider = + (match hoverProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; implementationProvider = + (match implementationProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlayHintProvider = + (match inlayHintProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlineCompletionProvider = + (match inlineCompletionProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlineValueProvider = + (match inlineValueProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; linkedEditingRangeProvider = + (match linkedEditingRangeProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; monikerProvider = + (match monikerProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; notebookDocumentSync = + (match notebookDocumentSync_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; positionEncoding = + (match positionEncoding_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; referencesProvider = + (match referencesProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; renameProvider = + (match renameProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; selectionRangeProvider = + (match selectionRangeProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; semanticTokensProvider = + (match semanticTokensProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; signatureHelpProvider = + (match signatureHelpProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = + (match textDocument_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocumentSync = + (match textDocumentSync_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; typeDefinitionProvider = + (match typeDefinitionProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; typeHierarchyProvider = + (match typeHierarchyProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workspace = + (match workspace_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workspaceSymbolProvider = + (match workspaceSymbolProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -40565,442 +40906,456 @@ module ServerCapabilities = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workspaceSymbolProvider then bnds - else + if None = v_workspaceSymbolProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_workspaceSymbolProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_workspaceSymbolProvider_pvar) v_workspaceSymbolProvider in - let bnd = ("workspaceSymbolProvider", arg) in - bnd :: bnds + let bnd = "workspaceSymbolProvider", arg in + bnd :: bnds) in let bnds = - if None = v_workspace then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_workspace) v_workspace - in - let bnd = ("workspace", arg) in - bnd :: bnds + if None = v_workspace + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_workspace) v_workspace in + let bnd = "workspace", arg in + bnd :: bnds) in let bnds = - if None = v_typeHierarchyProvider then bnds - else + if None = v_typeHierarchyProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_typeHierarchyProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_typeHierarchyProvider_pvar) v_typeHierarchyProvider in - let bnd = ("typeHierarchyProvider", arg) in - bnd :: bnds + let bnd = "typeHierarchyProvider", arg in + bnd :: bnds) in let bnds = - if None = v_typeDefinitionProvider then bnds - else + if None = v_typeDefinitionProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_typeDefinitionProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_typeDefinitionProvider_pvar) v_typeDefinitionProvider in - let bnd = ("typeDefinitionProvider", arg) in - bnd :: bnds + let bnd = "typeDefinitionProvider", arg in + bnd :: bnds) in let bnds = - if None = v_textDocumentSync then bnds - else + if None = v_textDocumentSync + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_textDocumentSync_pvar) v_textDocumentSync in - let bnd = ("textDocumentSync", arg) in - bnd :: bnds + let bnd = "textDocumentSync", arg in + bnd :: bnds) in let bnds = - if None = v_textDocument then bnds - else + if None = v_textDocument + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_textDocument) - v_textDocument + (Json.Nullable_option.yojson_of_t yojson_of_textDocument) v_textDocument in - let bnd = ("textDocument", arg) in - bnd :: bnds + let bnd = "textDocument", arg in + bnd :: bnds) in let bnds = - if None = v_signatureHelpProvider then bnds - else + if None = v_signatureHelpProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t SignatureHelpOptions.yojson_of_t) v_signatureHelpProvider in - let bnd = ("signatureHelpProvider", arg) in - bnd :: bnds + let bnd = "signatureHelpProvider", arg in + bnd :: bnds) in let bnds = - if None = v_semanticTokensProvider then bnds - else + if None = v_semanticTokensProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_semanticTokensProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_semanticTokensProvider_pvar) v_semanticTokensProvider in - let bnd = ("semanticTokensProvider", arg) in - bnd :: bnds + let bnd = "semanticTokensProvider", arg in + bnd :: bnds) in let bnds = - if None = v_selectionRangeProvider then bnds - else + if None = v_selectionRangeProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_selectionRangeProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_selectionRangeProvider_pvar) v_selectionRangeProvider in - let bnd = ("selectionRangeProvider", arg) in - bnd :: bnds + let bnd = "selectionRangeProvider", arg in + bnd :: bnds) in let bnds = - if None = v_renameProvider then bnds - else + if None = v_renameProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_renameProvider_pvar) v_renameProvider in - let bnd = ("renameProvider", arg) in - bnd :: bnds + let bnd = "renameProvider", arg in + bnd :: bnds) in let bnds = - if None = v_referencesProvider then bnds - else + if None = v_referencesProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_referencesProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_referencesProvider_pvar) v_referencesProvider in - let bnd = ("referencesProvider", arg) in - bnd :: bnds + let bnd = "referencesProvider", arg in + bnd :: bnds) in let bnds = - if None = v_positionEncoding then bnds - else + if None = v_positionEncoding + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t PositionEncodingKind.yojson_of_t) v_positionEncoding in - let bnd = ("positionEncoding", arg) in - bnd :: bnds + let bnd = "positionEncoding", arg in + bnd :: bnds) in let bnds = - if None = v_notebookDocumentSync then bnds - else + if None = v_notebookDocumentSync + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_notebookDocumentSync_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_notebookDocumentSync_pvar) v_notebookDocumentSync in - let bnd = ("notebookDocumentSync", arg) in - bnd :: bnds + let bnd = "notebookDocumentSync", arg in + bnd :: bnds) in let bnds = - if None = v_monikerProvider then bnds - else + if None = v_monikerProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_monikerProvider_pvar) v_monikerProvider in - let bnd = ("monikerProvider", arg) in - bnd :: bnds + let bnd = "monikerProvider", arg in + bnd :: bnds) in let bnds = - if None = v_linkedEditingRangeProvider then bnds - else + if None = v_linkedEditingRangeProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_linkedEditingRangeProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_linkedEditingRangeProvider_pvar) v_linkedEditingRangeProvider in - let bnd = ("linkedEditingRangeProvider", arg) in - bnd :: bnds + let bnd = "linkedEditingRangeProvider", arg in + bnd :: bnds) in let bnds = - if None = v_inlineValueProvider then bnds - else + if None = v_inlineValueProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_inlineValueProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_inlineValueProvider_pvar) v_inlineValueProvider in - let bnd = ("inlineValueProvider", arg) in - bnd :: bnds + let bnd = "inlineValueProvider", arg in + bnd :: bnds) in let bnds = - if None = v_inlineCompletionProvider then bnds - else + if None = v_inlineCompletionProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_inlineCompletionProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_inlineCompletionProvider_pvar) v_inlineCompletionProvider in - let bnd = ("inlineCompletionProvider", arg) in - bnd :: bnds + let bnd = "inlineCompletionProvider", arg in + bnd :: bnds) in let bnds = - if None = v_inlayHintProvider then bnds - else + if None = v_inlayHintProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_inlayHintProvider_pvar) v_inlayHintProvider in - let bnd = ("inlayHintProvider", arg) in - bnd :: bnds + let bnd = "inlayHintProvider", arg in + bnd :: bnds) in let bnds = - if None = v_implementationProvider then bnds - else + if None = v_implementationProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_implementationProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_implementationProvider_pvar) v_implementationProvider in - let bnd = ("implementationProvider", arg) in - bnd :: bnds + let bnd = "implementationProvider", arg in + bnd :: bnds) in let bnds = - if None = v_hoverProvider then bnds - else + if None = v_hoverProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_hoverProvider_pvar) v_hoverProvider in - let bnd = ("hoverProvider", arg) in - bnd :: bnds + let bnd = "hoverProvider", arg in + bnd :: bnds) in let bnds = - if None = v_foldingRangeProvider then bnds - else + if None = v_foldingRangeProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_foldingRangeProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_foldingRangeProvider_pvar) v_foldingRangeProvider in - let bnd = ("foldingRangeProvider", arg) in - bnd :: bnds + let bnd = "foldingRangeProvider", arg in + bnd :: bnds) in let bnds = match v_experimental with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("experimental", arg) in + let bnd = "experimental", arg in bnd :: bnds in let bnds = - if None = v_executeCommandProvider then bnds - else + if None = v_executeCommandProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - ExecuteCommandOptions.yojson_of_t) + (Json.Nullable_option.yojson_of_t ExecuteCommandOptions.yojson_of_t) v_executeCommandProvider in - let bnd = ("executeCommandProvider", arg) in - bnd :: bnds + let bnd = "executeCommandProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentSymbolProvider then bnds - else + if None = v_documentSymbolProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_documentSymbolProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_documentSymbolProvider_pvar) v_documentSymbolProvider in - let bnd = ("documentSymbolProvider", arg) in - bnd :: bnds + let bnd = "documentSymbolProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentRangeFormattingProvider then bnds - else + if None = v_documentRangeFormattingProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_documentRangeFormattingProvider_pvar) v_documentRangeFormattingProvider in - let bnd = ("documentRangeFormattingProvider", arg) in - bnd :: bnds + let bnd = "documentRangeFormattingProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentOnTypeFormattingProvider then bnds - else + if None = v_documentOnTypeFormattingProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentOnTypeFormattingOptions.yojson_of_t) v_documentOnTypeFormattingProvider in - let bnd = ("documentOnTypeFormattingProvider", arg) in - bnd :: bnds + let bnd = "documentOnTypeFormattingProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentLinkProvider then bnds - else + if None = v_documentLinkProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentLinkOptions.yojson_of_t) v_documentLinkProvider in - let bnd = ("documentLinkProvider", arg) in - bnd :: bnds + let bnd = "documentLinkProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentHighlightProvider then bnds - else + if None = v_documentHighlightProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_documentHighlightProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_documentHighlightProvider_pvar) v_documentHighlightProvider in - let bnd = ("documentHighlightProvider", arg) in - bnd :: bnds + let bnd = "documentHighlightProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentFormattingProvider then bnds - else + if None = v_documentFormattingProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_documentFormattingProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_documentFormattingProvider_pvar) v_documentFormattingProvider in - let bnd = ("documentFormattingProvider", arg) in - bnd :: bnds + let bnd = "documentFormattingProvider", arg in + bnd :: bnds) in let bnds = - if None = v_diagnosticProvider then bnds - else + if None = v_diagnosticProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_diagnosticProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_diagnosticProvider_pvar) v_diagnosticProvider in - let bnd = ("diagnosticProvider", arg) in - bnd :: bnds + let bnd = "diagnosticProvider", arg in + bnd :: bnds) in let bnds = - if None = v_definitionProvider then bnds - else + if None = v_definitionProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_definitionProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_definitionProvider_pvar) v_definitionProvider in - let bnd = ("definitionProvider", arg) in - bnd :: bnds + let bnd = "definitionProvider", arg in + bnd :: bnds) in let bnds = - if None = v_declarationProvider then bnds - else + if None = v_declarationProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_declarationProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_declarationProvider_pvar) v_declarationProvider in - let bnd = ("declarationProvider", arg) in - bnd :: bnds + let bnd = "declarationProvider", arg in + bnd :: bnds) in let bnds = - if None = v_completionProvider then bnds - else + if None = v_completionProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t CompletionOptions.yojson_of_t) v_completionProvider in - let bnd = ("completionProvider", arg) in - bnd :: bnds + let bnd = "completionProvider", arg in + bnd :: bnds) in let bnds = - if None = v_colorProvider then bnds - else + if None = v_colorProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_colorProvider_pvar) v_colorProvider in - let bnd = ("colorProvider", arg) in - bnd :: bnds + let bnd = "colorProvider", arg in + bnd :: bnds) in let bnds = - if None = v_codeLensProvider then bnds - else + if None = v_codeLensProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t CodeLensOptions.yojson_of_t) v_codeLensProvider in - let bnd = ("codeLensProvider", arg) in - bnd :: bnds + let bnd = "codeLensProvider", arg in + bnd :: bnds) in let bnds = - if None = v_codeActionProvider then bnds - else + if None = v_codeActionProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_codeActionProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_codeActionProvider_pvar) v_codeActionProvider in - let bnd = ("codeActionProvider", arg) in - bnd :: bnds + let bnd = "codeActionProvider", arg in + bnd :: bnds) in let bnds = - if None = v_callHierarchyProvider then bnds - else + if None = v_callHierarchyProvider + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - yojson_of_callHierarchyProvider_pvar) + (Json.Nullable_option.yojson_of_t yojson_of_callHierarchyProvider_pvar) v_callHierarchyProvider in - let bnd = ("callHierarchyProvider", arg) in - bnd :: bnds + let bnd = "callHierarchyProvider", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) - - let _ = yojson_of_t - - [@@@end] - - let create ?(callHierarchyProvider : callHierarchyProvider_pvar option) - ?(codeActionProvider : codeActionProvider_pvar option) - ?(codeLensProvider : CodeLensOptions.t option) - ?(colorProvider : colorProvider_pvar option) - ?(completionProvider : CompletionOptions.t option) - ?(declarationProvider : declarationProvider_pvar option) - ?(definitionProvider : definitionProvider_pvar option) - ?(diagnosticProvider : diagnosticProvider_pvar option) - ?(documentFormattingProvider : documentFormattingProvider_pvar option) - ?(documentHighlightProvider : documentHighlightProvider_pvar option) - ?(documentLinkProvider : DocumentLinkOptions.t option) - ?(documentOnTypeFormattingProvider : - DocumentOnTypeFormattingOptions.t option) - ?(documentRangeFormattingProvider : - documentRangeFormattingProvider_pvar option) - ?(documentSymbolProvider : documentSymbolProvider_pvar option) - ?(executeCommandProvider : ExecuteCommandOptions.t option) - ?(experimental : Json.t option) - ?(foldingRangeProvider : foldingRangeProvider_pvar option) - ?(hoverProvider : hoverProvider_pvar option) - ?(implementationProvider : implementationProvider_pvar option) - ?(inlayHintProvider : inlayHintProvider_pvar option) - ?(inlineCompletionProvider : inlineCompletionProvider_pvar option) - ?(inlineValueProvider : inlineValueProvider_pvar option) - ?(linkedEditingRangeProvider : linkedEditingRangeProvider_pvar option) - ?(monikerProvider : monikerProvider_pvar option) - ?(notebookDocumentSync : notebookDocumentSync_pvar option) - ?(positionEncoding : PositionEncodingKind.t option) - ?(referencesProvider : referencesProvider_pvar option) - ?(renameProvider : renameProvider_pvar option) - ?(selectionRangeProvider : selectionRangeProvider_pvar option) - ?(semanticTokensProvider : semanticTokensProvider_pvar option) - ?(signatureHelpProvider : SignatureHelpOptions.t option) - ?(textDocument : textDocument option) - ?(textDocumentSync : textDocumentSync_pvar option) - ?(typeDefinitionProvider : typeDefinitionProvider_pvar option) - ?(typeHierarchyProvider : typeHierarchyProvider_pvar option) - ?(workspace : workspace option) - ?(workspaceSymbolProvider : workspaceSymbolProvider_pvar option) - (() : unit) : t = + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; + + let _ = yojson_of_t + + [@@@end] + + let create + ?(callHierarchyProvider : callHierarchyProvider_pvar option) + ?(codeActionProvider : codeActionProvider_pvar option) + ?(codeLensProvider : CodeLensOptions.t option) + ?(colorProvider : colorProvider_pvar option) + ?(completionProvider : CompletionOptions.t option) + ?(declarationProvider : declarationProvider_pvar option) + ?(definitionProvider : definitionProvider_pvar option) + ?(diagnosticProvider : diagnosticProvider_pvar option) + ?(documentFormattingProvider : documentFormattingProvider_pvar option) + ?(documentHighlightProvider : documentHighlightProvider_pvar option) + ?(documentLinkProvider : DocumentLinkOptions.t option) + ?(documentOnTypeFormattingProvider : DocumentOnTypeFormattingOptions.t option) + ?(documentRangeFormattingProvider : documentRangeFormattingProvider_pvar option) + ?(documentSymbolProvider : documentSymbolProvider_pvar option) + ?(executeCommandProvider : ExecuteCommandOptions.t option) + ?(experimental : Json.t option) + ?(foldingRangeProvider : foldingRangeProvider_pvar option) + ?(hoverProvider : hoverProvider_pvar option) + ?(implementationProvider : implementationProvider_pvar option) + ?(inlayHintProvider : inlayHintProvider_pvar option) + ?(inlineCompletionProvider : inlineCompletionProvider_pvar option) + ?(inlineValueProvider : inlineValueProvider_pvar option) + ?(linkedEditingRangeProvider : linkedEditingRangeProvider_pvar option) + ?(monikerProvider : monikerProvider_pvar option) + ?(notebookDocumentSync : notebookDocumentSync_pvar option) + ?(positionEncoding : PositionEncodingKind.t option) + ?(referencesProvider : referencesProvider_pvar option) + ?(renameProvider : renameProvider_pvar option) + ?(selectionRangeProvider : selectionRangeProvider_pvar option) + ?(semanticTokensProvider : semanticTokensProvider_pvar option) + ?(signatureHelpProvider : SignatureHelpOptions.t option) + ?(textDocument : textDocument option) + ?(textDocumentSync : textDocumentSync_pvar option) + ?(typeDefinitionProvider : typeDefinitionProvider_pvar option) + ?(typeHierarchyProvider : typeHierarchyProvider_pvar option) + ?(workspace : workspace option) + ?(workspaceSymbolProvider : workspaceSymbolProvider_pvar option) + (() : unit) + : t + = { callHierarchyProvider ; codeActionProvider ; codeLensProvider @@ -41039,13 +41394,13 @@ module ServerCapabilities = struct ; workspace ; workspaceSymbolProvider } + ;; end module InitializeResult = struct type serverInfo = { name : string - ; version : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -41054,7 +41409,7 @@ module InitializeResult = struct let serverInfo_of_yojson = (let _tp_loc = "lsp/src/types.ml.InitializeResult.serverInfo" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let name_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -41062,66 +41417,65 @@ module InitializeResult = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | Ppx_yojson_conv_lib.Option.Some name_value, version_value -> - { name = name_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> serverInfo) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | Ppx_yojson_conv_lib.Option.Some name_value, version_value -> + { name = name_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> serverInfo) + ;; let _ = serverInfo_of_yojson @@ -41130,33 +41484,35 @@ module InitializeResult = struct | { name = v_name; version = v_version } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_name in ("name", arg) :: bnds in `Assoc bnds - : serverInfo -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : serverInfo -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_serverInfo [@@@end] let create_serverInfo ~(name : string) ?(version : string option) (() : unit) - : serverInfo = + : serverInfo + = { name; version } + ;; type t = { capabilities : ServerCapabilities.t ; serverInfo : serverInfo Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -41165,7 +41521,7 @@ module InitializeResult = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InitializeResult.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let capabilities_field = ref Ppx_yojson_conv_lib.Option.None and serverInfo_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -41173,69 +41529,65 @@ module InitializeResult = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "capabilities" -> ( - match Ppx_yojson_conv_lib.( ! ) capabilities_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = ServerCapabilities.t_of_yojson _field_yojson in - capabilities_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "serverInfo" -> ( - match Ppx_yojson_conv_lib.( ! ) serverInfo_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - serverInfo_of_yojson - _field_yojson - in - serverInfo_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "capabilities" -> + (match Ppx_yojson_conv_lib.( ! ) capabilities_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = ServerCapabilities.t_of_yojson _field_yojson in + capabilities_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "serverInfo" -> + (match Ppx_yojson_conv_lib.( ! ) serverInfo_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson serverInfo_of_yojson _field_yojson + in + serverInfo_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) capabilities_field - , Ppx_yojson_conv_lib.( ! ) serverInfo_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some capabilities_value - , serverInfo_value ) -> - { capabilities = capabilities_value - ; serverInfo = - (match serverInfo_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) capabilities_field) - Ppx_yojson_conv_lib.Option.None - , "capabilities" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) capabilities_field + , Ppx_yojson_conv_lib.( ! ) serverInfo_field ) + with + | Ppx_yojson_conv_lib.Option.Some capabilities_value, serverInfo_value -> + { capabilities = capabilities_value + ; serverInfo = + (match serverInfo_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) capabilities_field) + Ppx_yojson_conv_lib.Option.None + , "capabilities" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -41244,36 +41596,41 @@ module InitializeResult = struct | { capabilities = v_capabilities; serverInfo = v_serverInfo } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_serverInfo then bnds - else + if None = v_serverInfo + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_serverInfo) - v_serverInfo + (Json.Nullable_option.yojson_of_t yojson_of_serverInfo) v_serverInfo in - let bnd = ("serverInfo", arg) in - bnd :: bnds + let bnd = "serverInfo", arg in + bnd :: bnds) in let bnds = let arg = ServerCapabilities.yojson_of_t v_capabilities in ("capabilities", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(capabilities : ServerCapabilities.t) - ?(serverInfo : serverInfo option) (() : unit) : t = + let create + ~(capabilities : ServerCapabilities.t) + ?(serverInfo : serverInfo option) + (() : unit) + : t + = { capabilities; serverInfo } + ;; end module InitializedParams_ = struct type clientInfo = { name : string - ; version : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -41282,7 +41639,7 @@ module InitializedParams_ = struct let clientInfo_of_yojson = (let _tp_loc = "lsp/src/types.ml.InitializedParams_.clientInfo" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let name_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -41290,66 +41647,65 @@ module InitializedParams_ = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | Ppx_yojson_conv_lib.Option.Some name_value, version_value -> - { name = name_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> clientInfo) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | Ppx_yojson_conv_lib.Option.Some name_value, version_value -> + { name = name_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> clientInfo) + ;; let _ = clientInfo_of_yojson @@ -41358,46 +41714,46 @@ module InitializedParams_ = struct | { name = v_name; version = v_version } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_name in ("name", arg) :: bnds in `Assoc bnds - : clientInfo -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : clientInfo -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_clientInfo [@@@end] let create_clientInfo ~(name : string) ?(version : string option) (() : unit) - : clientInfo = + : clientInfo + = { name; version } + ;; type t = { capabilities : ClientCapabilities.t ; clientInfo : clientInfo Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; initializationOptions : Json.t option [@yojson.option] - ; locale : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; processId : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; locale : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; processId : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; rootPath : string Json.Nullable_option.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; rootUri : DocumentUri.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; trace : TraceValues.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -41406,7 +41762,7 @@ module InitializedParams_ = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InitializedParams_.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let capabilities_field = ref Ppx_yojson_conv_lib.Option.None and clientInfo_field = ref Ppx_yojson_conv_lib.Option.None and initializationOptions_field = ref Ppx_yojson_conv_lib.Option.None @@ -41421,178 +41777,170 @@ module InitializedParams_ = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "capabilities" -> ( - match Ppx_yojson_conv_lib.( ! ) capabilities_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = ClientCapabilities.t_of_yojson _field_yojson in - capabilities_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "clientInfo" -> ( - match Ppx_yojson_conv_lib.( ! ) clientInfo_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - clientInfo_of_yojson - _field_yojson - in - clientInfo_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "initializationOptions" -> ( - match Ppx_yojson_conv_lib.( ! ) initializationOptions_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - initializationOptions_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "locale" -> ( - match Ppx_yojson_conv_lib.( ! ) locale_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - locale_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "processId" -> ( - match Ppx_yojson_conv_lib.( ! ) processId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - processId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rootPath" -> ( - match Ppx_yojson_conv_lib.( ! ) rootPath_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Nullable_option.t_of_yojson string_of_yojson) - _field_yojson - in - rootPath_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "rootUri" -> ( - match Ppx_yojson_conv_lib.( ! ) rootUri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentUri.t_of_yojson - _field_yojson - in - rootUri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "trace" -> ( - match Ppx_yojson_conv_lib.( ! ) trace_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - TraceValues.t_of_yojson - _field_yojson - in - trace_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) capabilities_field - , Ppx_yojson_conv_lib.( ! ) clientInfo_field - , Ppx_yojson_conv_lib.( ! ) initializationOptions_field - , Ppx_yojson_conv_lib.( ! ) locale_field - , Ppx_yojson_conv_lib.( ! ) processId_field - , Ppx_yojson_conv_lib.( ! ) rootPath_field - , Ppx_yojson_conv_lib.( ! ) rootUri_field - , Ppx_yojson_conv_lib.( ! ) trace_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some capabilities_value - , clientInfo_value - , initializationOptions_value - , locale_value - , processId_value - , rootPath_value - , rootUri_value - , trace_value - , workDoneToken_value ) -> - { capabilities = capabilities_value - ; clientInfo = - (match clientInfo_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; initializationOptions = initializationOptions_value - ; locale = - (match locale_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; processId = - (match processId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rootPath = - (match rootPath_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; rootUri = - (match rootUri_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; trace = - (match trace_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "capabilities" -> + (match Ppx_yojson_conv_lib.( ! ) capabilities_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = ClientCapabilities.t_of_yojson _field_yojson in + capabilities_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "clientInfo" -> + (match Ppx_yojson_conv_lib.( ! ) clientInfo_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson clientInfo_of_yojson _field_yojson + in + clientInfo_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "initializationOptions" -> + (match Ppx_yojson_conv_lib.( ! ) initializationOptions_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + initializationOptions_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "locale" -> + (match Ppx_yojson_conv_lib.( ! ) locale_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + locale_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "processId" -> + (match Ppx_yojson_conv_lib.( ! ) processId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + processId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rootPath" -> + (match Ppx_yojson_conv_lib.( ! ) rootPath_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Nullable_option.t_of_yojson string_of_yojson) + _field_yojson + in + rootPath_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "rootUri" -> + (match Ppx_yojson_conv_lib.( ! ) rootUri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson DocumentUri.t_of_yojson _field_yojson + in + rootUri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "trace" -> + (match Ppx_yojson_conv_lib.( ! ) trace_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson TraceValues.t_of_yojson _field_yojson + in + trace_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) capabilities_field) - Ppx_yojson_conv_lib.Option.None - , "capabilities" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) capabilities_field + , Ppx_yojson_conv_lib.( ! ) clientInfo_field + , Ppx_yojson_conv_lib.( ! ) initializationOptions_field + , Ppx_yojson_conv_lib.( ! ) locale_field + , Ppx_yojson_conv_lib.( ! ) processId_field + , Ppx_yojson_conv_lib.( ! ) rootPath_field + , Ppx_yojson_conv_lib.( ! ) rootUri_field + , Ppx_yojson_conv_lib.( ! ) trace_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some capabilities_value + , clientInfo_value + , initializationOptions_value + , locale_value + , processId_value + , rootPath_value + , rootUri_value + , trace_value + , workDoneToken_value ) -> + { capabilities = capabilities_value + ; clientInfo = + (match clientInfo_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; initializationOptions = initializationOptions_value + ; locale = + (match locale_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; processId = + (match processId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rootPath = + (match rootPath_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; rootUri = + (match rootUri_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; trace = + (match trace_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) capabilities_field) + Ppx_yojson_conv_lib.Option.None + , "capabilities" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -41610,98 +41958,104 @@ module InitializedParams_ = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = - if None = v_trace then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t TraceValues.yojson_of_t) v_trace - in - let bnd = ("trace", arg) in - bnd :: bnds + if None = v_trace + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t TraceValues.yojson_of_t) v_trace in + let bnd = "trace", arg in + bnd :: bnds) in let bnds = - if None = v_rootUri then bnds - else + if None = v_rootUri + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t DocumentUri.yojson_of_t) - v_rootUri + (Json.Nullable_option.yojson_of_t DocumentUri.yojson_of_t) v_rootUri in - let bnd = ("rootUri", arg) in - bnd :: bnds + let bnd = "rootUri", arg in + bnd :: bnds) in let bnds = - if None = v_rootPath then bnds - else + if None = v_rootPath + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Nullable_option.yojson_of_t yojson_of_string)) v_rootPath in - let bnd = ("rootPath", arg) in - bnd :: bnds + let bnd = "rootPath", arg in + bnd :: bnds) in let bnds = - if None = v_processId then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_processId - in - let bnd = ("processId", arg) in - bnd :: bnds + if None = v_processId + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_processId in + let bnd = "processId", arg in + bnd :: bnds) in let bnds = - if None = v_locale then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_locale - in - let bnd = ("locale", arg) in - bnd :: bnds + if None = v_locale + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_locale in + let bnd = "locale", arg in + bnd :: bnds) in let bnds = match v_initializationOptions with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("initializationOptions", arg) in + let bnd = "initializationOptions", arg in bnd :: bnds in let bnds = - if None = v_clientInfo then bnds - else + if None = v_clientInfo + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_clientInfo) - v_clientInfo + (Json.Nullable_option.yojson_of_t yojson_of_clientInfo) v_clientInfo in - let bnd = ("clientInfo", arg) in - bnd :: bnds + let bnd = "clientInfo", arg in + bnd :: bnds) in let bnds = let arg = ClientCapabilities.yojson_of_t v_capabilities in ("capabilities", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(capabilities : ClientCapabilities.t) - ?(clientInfo : clientInfo option) ?(initializationOptions : Json.t option) - ?(locale : string option) ?(processId : int option) - ?(rootPath : string option option) ?(rootUri : DocumentUri.t option) - ?(trace : TraceValues.t option) ?(workDoneToken : ProgressToken.t option) - (() : unit) : t = + let create + ~(capabilities : ClientCapabilities.t) + ?(clientInfo : clientInfo option) + ?(initializationOptions : Json.t option) + ?(locale : string option) + ?(processId : int option) + ?(rootPath : string option option) + ?(rootUri : DocumentUri.t option) + ?(trace : TraceValues.t option) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { capabilities ; clientInfo ; initializationOptions @@ -41712,6 +42066,7 @@ module InitializedParams_ = struct ; trace ; workDoneToken } + ;; end module InlayHintLabelPart = struct @@ -41728,19 +42083,21 @@ module InlayHintLabelPart = struct "tooltip_pvar" [ (fun json -> `MarkupContent (MarkupContent.t_of_yojson json)) ] json + ;; let yojson_of_tooltip_pvar (tooltip_pvar : tooltip_pvar) : Json.t = match tooltip_pvar with | `String j -> `String j | `MarkupContent s -> MarkupContent.yojson_of_t s + ;; type t = { command : Command.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; location : Location.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tooltip : tooltip_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; value : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -41750,7 +42107,7 @@ module InlayHintLabelPart = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlayHintLabelPart.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let command_field = ref Ppx_yojson_conv_lib.Option.None and location_field = ref Ppx_yojson_conv_lib.Option.None and tooltip_field = ref Ppx_yojson_conv_lib.Option.None @@ -41760,103 +42117,96 @@ module InlayHintLabelPart = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "command" -> ( - match Ppx_yojson_conv_lib.( ! ) command_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Command.t_of_yojson - _field_yojson - in - command_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "location" -> ( - match Ppx_yojson_conv_lib.( ! ) location_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Location.t_of_yojson - _field_yojson - in - location_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tooltip" -> ( - match Ppx_yojson_conv_lib.( ! ) tooltip_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - tooltip_pvar_of_yojson - _field_yojson - in - tooltip_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "value" -> ( - match Ppx_yojson_conv_lib.( ! ) value_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - value_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) command_field - , Ppx_yojson_conv_lib.( ! ) location_field - , Ppx_yojson_conv_lib.( ! ) tooltip_field - , Ppx_yojson_conv_lib.( ! ) value_field ) - with - | ( command_value - , location_value - , tooltip_value - , Ppx_yojson_conv_lib.Option.Some value_value ) -> - { command = - (match command_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; location = - (match location_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tooltip = - (match tooltip_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; value = value_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) value_field) - Ppx_yojson_conv_lib.Option.None - , "value" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "command" -> + (match Ppx_yojson_conv_lib.( ! ) command_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Command.t_of_yojson _field_yojson + in + command_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "location" -> + (match Ppx_yojson_conv_lib.( ! ) location_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Location.t_of_yojson _field_yojson + in + location_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tooltip" -> + (match Ppx_yojson_conv_lib.( ! ) tooltip_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson tooltip_pvar_of_yojson _field_yojson + in + tooltip_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "value" -> + (match Ppx_yojson_conv_lib.( ! ) value_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + value_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) command_field + , Ppx_yojson_conv_lib.( ! ) location_field + , Ppx_yojson_conv_lib.( ! ) tooltip_field + , Ppx_yojson_conv_lib.( ! ) value_field ) + with + | ( command_value + , location_value + , tooltip_value + , Ppx_yojson_conv_lib.Option.Some value_value ) -> + { command = + (match command_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; location = + (match location_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tooltip = + (match tooltip_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; value = value_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) value_field) + Ppx_yojson_conv_lib.Option.None + , "value" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -41873,42 +42223,49 @@ module InlayHintLabelPart = struct ("value", arg) :: bnds in let bnds = - if None = v_tooltip then bnds - else + if None = v_tooltip + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_tooltip_pvar) v_tooltip in - let bnd = ("tooltip", arg) in - bnd :: bnds + let bnd = "tooltip", arg in + bnd :: bnds) in let bnds = - if None = v_location then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Location.yojson_of_t) v_location - in - let bnd = ("location", arg) in - bnd :: bnds + if None = v_location + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Location.yojson_of_t) v_location in + let bnd = "location", arg in + bnd :: bnds) in let bnds = - if None = v_command then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command - in - let bnd = ("command", arg) in - bnd :: bnds + if None = v_command + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command in + let bnd = "command", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(command : Command.t option) ?(location : Location.t option) - ?(tooltip : tooltip_pvar option) ~(value : string) (() : unit) : t = + let create + ?(command : Command.t option) + ?(location : Location.t option) + ?(tooltip : tooltip_pvar option) + ~(value : string) + (() : unit) + : t + = { command; location; tooltip; value } + ;; end module InlayHint = struct @@ -41923,14 +42280,15 @@ module InlayHint = struct | _ -> Json.Of.untagged_union "label_pvar" - [ (fun json -> `List (Json.Of.list InlayHintLabelPart.t_of_yojson json)) - ] + [ (fun json -> `List (Json.Of.list InlayHintLabelPart.t_of_yojson json)) ] json + ;; let yojson_of_label_pvar (label_pvar : label_pvar) : Json.t = match label_pvar with | `String j -> `String j | `List s -> Json.To.list InlayHintLabelPart.yojson_of_t s + ;; type tooltip_pvar = [ `String of string @@ -41945,26 +42303,28 @@ module InlayHint = struct "tooltip_pvar" [ (fun json -> `MarkupContent (MarkupContent.t_of_yojson json)) ] json + ;; let yojson_of_tooltip_pvar (tooltip_pvar : tooltip_pvar) : Json.t = match tooltip_pvar with | `String j -> `String j | `MarkupContent s -> MarkupContent.yojson_of_t s + ;; type t = { data : Json.t option [@yojson.option] ; kind : InlayHintKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; label : label_pvar ; paddingLeft : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; paddingRight : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textEdits : TextEdit.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; tooltip : tooltip_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -41973,7 +42333,7 @@ module InlayHint = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlayHint.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let data_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None and label_field = ref Ppx_yojson_conv_lib.Option.None @@ -41987,157 +42347,154 @@ module InlayHint = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InlayHintKind.t_of_yojson - _field_yojson - in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = label_pvar_of_yojson _field_yojson in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "paddingLeft" -> ( - match Ppx_yojson_conv_lib.( ! ) paddingLeft_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - paddingLeft_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "paddingRight" -> ( - match Ppx_yojson_conv_lib.( ! ) paddingRight_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - paddingRight_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textEdits" -> ( - match Ppx_yojson_conv_lib.( ! ) textEdits_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson TextEdit.t_of_yojson) - _field_yojson - in - textEdits_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tooltip" -> ( - match Ppx_yojson_conv_lib.( ! ) tooltip_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - tooltip_pvar_of_yojson - _field_yojson - in - tooltip_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) label_field - , Ppx_yojson_conv_lib.( ! ) paddingLeft_field - , Ppx_yojson_conv_lib.( ! ) paddingRight_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textEdits_field - , Ppx_yojson_conv_lib.( ! ) tooltip_field ) - with - | ( data_value - , kind_value - , Ppx_yojson_conv_lib.Option.Some label_value - , paddingLeft_value - , paddingRight_value - , Ppx_yojson_conv_lib.Option.Some position_value - , textEdits_value - , tooltip_value ) -> - { data = data_value - ; kind = - (match kind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; label = label_value - ; paddingLeft = - (match paddingLeft_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; paddingRight = - (match paddingRight_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textEdits = - (match textEdits_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; tooltip = - (match tooltip_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) label_field) - Ppx_yojson_conv_lib.Option.None - , "label" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + InlayHintKind.t_of_yojson + _field_yojson + in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = label_pvar_of_yojson _field_yojson in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "paddingLeft" -> + (match Ppx_yojson_conv_lib.( ! ) paddingLeft_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + paddingLeft_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "paddingRight" -> + (match Ppx_yojson_conv_lib.( ! ) paddingRight_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + paddingRight_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textEdits" -> + (match Ppx_yojson_conv_lib.( ! ) textEdits_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson TextEdit.t_of_yojson) + _field_yojson + in + textEdits_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tooltip" -> + (match Ppx_yojson_conv_lib.( ! ) tooltip_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson tooltip_pvar_of_yojson _field_yojson + in + tooltip_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) label_field + , Ppx_yojson_conv_lib.( ! ) paddingLeft_field + , Ppx_yojson_conv_lib.( ! ) paddingRight_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textEdits_field + , Ppx_yojson_conv_lib.( ! ) tooltip_field ) + with + | ( data_value + , kind_value + , Ppx_yojson_conv_lib.Option.Some label_value + , paddingLeft_value + , paddingRight_value + , Ppx_yojson_conv_lib.Option.Some position_value + , textEdits_value + , tooltip_value ) -> + { data = data_value + ; kind = + (match kind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; label = label_value + ; paddingLeft = + (match paddingLeft_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; paddingRight = + (match paddingRight_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textEdits = + (match textEdits_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; tooltip = + (match tooltip_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) label_field) + Ppx_yojson_conv_lib.Option.None + , "label" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -42154,89 +42511,90 @@ module InlayHint = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_tooltip then bnds - else + if None = v_tooltip + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_tooltip_pvar) v_tooltip in - let bnd = ("tooltip", arg) in - bnd :: bnds + let bnd = "tooltip", arg in + bnd :: bnds) in let bnds = - if None = v_textEdits then bnds - else + if None = v_textEdits + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list TextEdit.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list TextEdit.yojson_of_t)) v_textEdits in - let bnd = ("textEdits", arg) in - bnd :: bnds + let bnd = "textEdits", arg in + bnd :: bnds) in let bnds = let arg = Position.yojson_of_t v_position in ("position", arg) :: bnds in let bnds = - if None = v_paddingRight then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_paddingRight - in - let bnd = ("paddingRight", arg) in - bnd :: bnds + if None = v_paddingRight + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_paddingRight in + let bnd = "paddingRight", arg in + bnd :: bnds) in let bnds = - if None = v_paddingLeft then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_paddingLeft - in - let bnd = ("paddingLeft", arg) in - bnd :: bnds + if None = v_paddingLeft + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_paddingLeft in + let bnd = "paddingLeft", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_label_pvar v_label in ("label", arg) :: bnds in let bnds = - if None = v_kind then bnds - else + if None = v_kind + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t InlayHintKind.yojson_of_t) v_kind in - let bnd = ("kind", arg) in - bnd :: bnds + let bnd = "kind", arg in + bnd :: bnds) in let bnds = match v_data with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(data : Json.t option) ?(kind : InlayHintKind.t option) - ~(label : label_pvar) ?(paddingLeft : bool option) - ?(paddingRight : bool option) ~(position : Position.t) - ?(textEdits : TextEdit.t list option) ?(tooltip : tooltip_pvar option) - (() : unit) : t = - { data - ; kind - ; label - ; paddingLeft - ; paddingRight - ; position - ; textEdits - ; tooltip - } + let create + ?(data : Json.t option) + ?(kind : InlayHintKind.t option) + ~(label : label_pvar) + ?(paddingLeft : bool option) + ?(paddingRight : bool option) + ~(position : Position.t) + ?(textEdits : TextEdit.t list option) + ?(tooltip : tooltip_pvar option) + (() : unit) + : t + = + { data; kind; label; paddingLeft; paddingRight; position; textEdits; tooltip } + ;; end module InlayHintParams = struct @@ -42244,7 +42602,7 @@ module InlayHintParams = struct { range : Range.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -42253,7 +42611,7 @@ module InlayHintParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlayHintParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let range_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -42262,102 +42620,99 @@ module InlayHintParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { range = range_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { range = v_range - ; textDocument = v_textDocument - ; workDoneToken = v_workDoneToken - } -> + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { range = range_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { range = v_range; textDocument = v_textDocument; workDoneToken = v_workDoneToken } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -42368,15 +42723,22 @@ module InlayHintParams = struct ("range", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(range : Range.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(range : Range.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { range; textDocument; workDoneToken } + ;; end module SelectedCompletionInfo = struct @@ -42391,7 +42753,7 @@ module SelectedCompletionInfo = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SelectedCompletionInfo.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let range_field = ref Ppx_yojson_conv_lib.Option.None and text_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -42399,64 +42761,63 @@ module SelectedCompletionInfo = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "text" -> ( - match Ppx_yojson_conv_lib.( ! ) text_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - text_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "text" -> + (match Ppx_yojson_conv_lib.( ! ) text_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + text_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) text_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some text_value ) -> - { range = range_value; text = text_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) text_field) - Ppx_yojson_conv_lib.Option.None - , "text" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) text_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some text_value ) -> + { range = range_value; text = text_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) text_field) + Ppx_yojson_conv_lib.Option.None + , "text" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -42473,7 +42834,8 @@ module SelectedCompletionInfo = struct ("range", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -42485,7 +42847,7 @@ end module InlineCompletionContext = struct type t = { selectedCompletionInfo : SelectedCompletionInfo.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; triggerKind : InlineCompletionTriggerKind.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -42495,7 +42857,7 @@ module InlineCompletionContext = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineCompletionContext.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let selectedCompletionInfo_field = ref Ppx_yojson_conv_lib.Option.None and triggerKind_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -42503,167 +42865,165 @@ module InlineCompletionContext = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "selectedCompletionInfo" -> ( - match Ppx_yojson_conv_lib.( ! ) selectedCompletionInfo_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SelectedCompletionInfo.t_of_yojson - _field_yojson - in - selectedCompletionInfo_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerKind" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - InlineCompletionTriggerKind.t_of_yojson _field_yojson - in - triggerKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "selectedCompletionInfo" -> + (match Ppx_yojson_conv_lib.( ! ) selectedCompletionInfo_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SelectedCompletionInfo.t_of_yojson + _field_yojson + in + selectedCompletionInfo_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerKind" -> + (match Ppx_yojson_conv_lib.( ! ) triggerKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = InlineCompletionTriggerKind.t_of_yojson _field_yojson in + triggerKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) selectedCompletionInfo_field - , Ppx_yojson_conv_lib.( ! ) triggerKind_field ) - with - | ( selectedCompletionInfo_value - , Ppx_yojson_conv_lib.Option.Some triggerKind_value ) -> - { selectedCompletionInfo = - (match selectedCompletionInfo_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; triggerKind = triggerKind_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) triggerKind_field) - Ppx_yojson_conv_lib.Option.None - , "triggerKind" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { selectedCompletionInfo = v_selectedCompletionInfo - ; triggerKind = v_triggerKind - } -> + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) selectedCompletionInfo_field + , Ppx_yojson_conv_lib.( ! ) triggerKind_field ) + with + | ( selectedCompletionInfo_value + , Ppx_yojson_conv_lib.Option.Some triggerKind_value ) -> + { selectedCompletionInfo = + (match selectedCompletionInfo_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; triggerKind = triggerKind_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) triggerKind_field) + Ppx_yojson_conv_lib.Option.None + , "triggerKind" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { selectedCompletionInfo = v_selectedCompletionInfo; triggerKind = v_triggerKind } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = let arg = InlineCompletionTriggerKind.yojson_of_t v_triggerKind in ("triggerKind", arg) :: bnds in let bnds = - if None = v_selectedCompletionInfo then bnds - else + if None = v_selectedCompletionInfo + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - SelectedCompletionInfo.yojson_of_t) + (Json.Nullable_option.yojson_of_t SelectedCompletionInfo.yojson_of_t) v_selectedCompletionInfo in - let bnd = ("selectedCompletionInfo", arg) in - bnd :: bnds + let bnd = "selectedCompletionInfo", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(selectedCompletionInfo : SelectedCompletionInfo.t option) - ~(triggerKind : InlineCompletionTriggerKind.t) (() : unit) : t = + let create + ?(selectedCompletionInfo : SelectedCompletionInfo.t option) + ~(triggerKind : InlineCompletionTriggerKind.t) + (() : unit) + : t + = { selectedCompletionInfo; triggerKind } + ;; end module StringValue = struct - type t = { value : string } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { value : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.StringValue.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let value_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "value" -> ( - match Ppx_yojson_conv_lib.( ! ) value_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - value_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "value" -> + (match Ppx_yojson_conv_lib.( ! ) value_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + value_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) value_field with - | Ppx_yojson_conv_lib.Option.Some value_value -> - { value = value_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) value_field) - Ppx_yojson_conv_lib.Option.None - , "value" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) value_field with + | Ppx_yojson_conv_lib.Option.Some value_value -> { value = value_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) value_field) + Ppx_yojson_conv_lib.Option.None + , "value" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -42676,19 +43036,19 @@ module StringValue = struct ("value", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] let create ~(value : string) : t = { value } - - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "snippet" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "snippet" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "snippet" t_of_yojson json + ;; end module InlineCompletionItem = struct @@ -42705,20 +43065,21 @@ module InlineCompletionItem = struct "insertText_pvar" [ (fun json -> `StringValue (StringValue.t_of_yojson json)) ] json + ;; let yojson_of_insertText_pvar (insertText_pvar : insertText_pvar) : Json.t = match insertText_pvar with | `String j -> `String j | `StringValue s -> StringValue.yojson_of_t s + ;; type t = { command : Command.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; filterText : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; insertText : insertText_pvar - ; range : Range.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; range : Range.t Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -42727,7 +43088,7 @@ module InlineCompletionItem = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineCompletionItem.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let command_field = ref Ppx_yojson_conv_lib.Option.None and filterText_field = ref Ppx_yojson_conv_lib.Option.None and insertText_field = ref Ppx_yojson_conv_lib.Option.None @@ -42737,101 +43098,96 @@ module InlineCompletionItem = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "command" -> ( - match Ppx_yojson_conv_lib.( ! ) command_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Command.t_of_yojson - _field_yojson - in - command_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "filterText" -> ( - match Ppx_yojson_conv_lib.( ! ) filterText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - filterText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "insertText" -> ( - match Ppx_yojson_conv_lib.( ! ) insertText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = insertText_pvar_of_yojson _field_yojson in - insertText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Range.t_of_yojson - _field_yojson - in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) command_field - , Ppx_yojson_conv_lib.( ! ) filterText_field - , Ppx_yojson_conv_lib.( ! ) insertText_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | ( command_value - , filterText_value - , Ppx_yojson_conv_lib.Option.Some insertText_value - , range_value ) -> - { command = - (match command_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; filterText = - (match filterText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; insertText = insertText_value - ; range = - (match range_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "command" -> + (match Ppx_yojson_conv_lib.( ! ) command_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Command.t_of_yojson _field_yojson + in + command_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "filterText" -> + (match Ppx_yojson_conv_lib.( ! ) filterText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + filterText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "insertText" -> + (match Ppx_yojson_conv_lib.( ! ) insertText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = insertText_pvar_of_yojson _field_yojson in + insertText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Range.t_of_yojson _field_yojson + in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) insertText_field) - Ppx_yojson_conv_lib.Option.None - , "insertText" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) command_field + , Ppx_yojson_conv_lib.( ! ) filterText_field + , Ppx_yojson_conv_lib.( ! ) insertText_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | ( command_value + , filterText_value + , Ppx_yojson_conv_lib.Option.Some insertText_value + , range_value ) -> + { command = + (match command_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; filterText = + (match filterText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; insertText = insertText_value + ; range = + (match range_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) insertText_field) + Ppx_yojson_conv_lib.Option.None + , "insertText" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -42844,47 +43200,51 @@ module InlineCompletionItem = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_range then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_range - in - let bnd = ("range", arg) in - bnd :: bnds + if None = v_range + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_range in + let bnd = "range", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_insertText_pvar v_insertText in ("insertText", arg) :: bnds in let bnds = - if None = v_filterText then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_filterText - in - let bnd = ("filterText", arg) in - bnd :: bnds + if None = v_filterText + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_filterText in + let bnd = "filterText", arg in + bnd :: bnds) in let bnds = - if None = v_command then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command - in - let bnd = ("command", arg) in - bnd :: bnds + if None = v_command + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Command.yojson_of_t) v_command in + let bnd = "command", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(command : Command.t option) ?(filterText : string option) - ~(insertText : insertText_pvar) ?(range : Range.t option) (() : unit) : t - = + let create + ?(command : Command.t option) + ?(filterText : string option) + ~(insertText : insertText_pvar) + ?(range : Range.t option) + (() : unit) + : t + = { command; filterText; insertText; range } + ;; end module InlineCompletionList = struct @@ -42896,58 +43256,56 @@ module InlineCompletionList = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineCompletionList.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let items_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "items" -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson InlineCompletionItem.t_of_yojson _field_yojson - in - items_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "items" -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson InlineCompletionItem.t_of_yojson _field_yojson + in + items_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.Some items_value -> - { items = items_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) items_field) - Ppx_yojson_conv_lib.Option.None - , "items" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.Some items_value -> { items = items_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) items_field) + Ppx_yojson_conv_lib.Option.None + , "items" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -42960,7 +43318,8 @@ module InlineCompletionList = struct ("items", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -42975,7 +43334,7 @@ module InlineCompletionParams = struct ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -42984,7 +43343,7 @@ module InlineCompletionParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineCompletionParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let context_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -42994,97 +43353,96 @@ module InlineCompletionParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "context" -> ( - match Ppx_yojson_conv_lib.( ! ) context_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = InlineCompletionContext.t_of_yojson _field_yojson in - context_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) context_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some context_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { context = context_value - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "context" -> + (match Ppx_yojson_conv_lib.( ! ) context_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = InlineCompletionContext.t_of_yojson _field_yojson in + context_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) context_field) - Ppx_yojson_conv_lib.Option.None - , "context" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) context_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some context_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { context = context_value + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) context_field) + Ppx_yojson_conv_lib.Option.None + , "context" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -43097,14 +43455,14 @@ module InlineCompletionParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -43119,26 +43477,32 @@ module InlineCompletionParams = struct ("context", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(context : InlineCompletionContext.t) ~(position : Position.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(context : InlineCompletionContext.t) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { context; position; textDocument; workDoneToken } + ;; end module InlineCompletionRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -43147,7 +43511,7 @@ module InlineCompletionRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineCompletionRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and id_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -43156,77 +43520,76 @@ module InlineCompletionRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, id_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, id_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -43238,48 +43601,57 @@ module InlineCompletionRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(id : string option) ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(id : string option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; id; workDoneProgress } + ;; end module InlineValueEvaluatableExpression = struct type t = { expression : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; range : Range.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -43289,7 +43661,7 @@ module InlineValueEvaluatableExpression = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineValueEvaluatableExpression.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let expression_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -43297,66 +43669,65 @@ module InlineValueEvaluatableExpression = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "expression" -> ( - match Ppx_yojson_conv_lib.( ! ) expression_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - expression_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "expression" -> + (match Ppx_yojson_conv_lib.( ! ) expression_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + expression_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) expression_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | expression_value, Ppx_yojson_conv_lib.Option.Some range_value -> - { expression = - (match expression_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; range = range_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) expression_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | expression_value, Ppx_yojson_conv_lib.Option.Some range_value -> + { expression = + (match expression_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; range = range_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -43369,16 +43740,16 @@ module InlineValueEvaluatableExpression = struct ("range", arg) :: bnds in let bnds = - if None = v_expression then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_expression - in - let bnd = ("expression", arg) in - bnd :: bnds + if None = v_expression + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_expression in + let bnd = "expression", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -43386,6 +43757,7 @@ module InlineValueEvaluatableExpression = struct let create ?(expression : string option) ~(range : Range.t) (() : unit) : t = { expression; range } + ;; end module InlineValueVariableLookup = struct @@ -43393,7 +43765,7 @@ module InlineValueVariableLookup = struct { caseSensitiveLookup : bool ; range : Range.t ; variableName : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -43402,7 +43774,7 @@ module InlineValueVariableLookup = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineValueVariableLookup.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let caseSensitiveLookup_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and variableName_field = ref Ppx_yojson_conv_lib.Option.None @@ -43411,82 +43783,80 @@ module InlineValueVariableLookup = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "caseSensitiveLookup" -> ( - match Ppx_yojson_conv_lib.( ! ) caseSensitiveLookup_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - caseSensitiveLookup_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "variableName" -> ( - match Ppx_yojson_conv_lib.( ! ) variableName_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - variableName_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) caseSensitiveLookup_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) variableName_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some caseSensitiveLookup_value - , Ppx_yojson_conv_lib.Option.Some range_value - , variableName_value ) -> - { caseSensitiveLookup = caseSensitiveLookup_value - ; range = range_value - ; variableName = - (match variableName_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) caseSensitiveLookup_field) - Ppx_yojson_conv_lib.Option.None - , "caseSensitiveLookup" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "caseSensitiveLookup" -> + (match Ppx_yojson_conv_lib.( ! ) caseSensitiveLookup_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + caseSensitiveLookup_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "variableName" -> + (match Ppx_yojson_conv_lib.( ! ) variableName_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + variableName_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) caseSensitiveLookup_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) variableName_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some caseSensitiveLookup_value + , Ppx_yojson_conv_lib.Option.Some range_value + , variableName_value ) -> + { caseSensitiveLookup = caseSensitiveLookup_value + ; range = range_value + ; variableName = + (match variableName_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) caseSensitiveLookup_field) + Ppx_yojson_conv_lib.Option.None + , "caseSensitiveLookup" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -43498,13 +43868,12 @@ module InlineValueVariableLookup = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_variableName then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_variableName - in - let bnd = ("variableName", arg) in - bnd :: bnds + if None = v_variableName + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_variableName in + let bnd = "variableName", arg in + bnd :: bnds) in let bnds = let arg = Range.yojson_of_t v_range in @@ -43515,15 +43884,22 @@ module InlineValueVariableLookup = struct ("caseSensitiveLookup", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(caseSensitiveLookup : bool) ~(range : Range.t) - ?(variableName : string option) (() : unit) : t = + let create + ~(caseSensitiveLookup : bool) + ~(range : Range.t) + ?(variableName : string option) + (() : unit) + : t + = { caseSensitiveLookup; range; variableName } + ;; end module InlineValueText = struct @@ -43538,7 +43914,7 @@ module InlineValueText = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineValueText.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let range_field = ref Ppx_yojson_conv_lib.Option.None and text_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -43546,64 +43922,63 @@ module InlineValueText = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "text" -> ( - match Ppx_yojson_conv_lib.( ! ) text_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - text_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "text" -> + (match Ppx_yojson_conv_lib.( ! ) text_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + text_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) text_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some text_value ) -> - { range = range_value; text = text_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) text_field) - Ppx_yojson_conv_lib.Option.None - , "text" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) text_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some text_value ) -> + { range = range_value; text = text_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) text_field) + Ppx_yojson_conv_lib.Option.None + , "text" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -43620,7 +43995,8 @@ module InlineValueText = struct ("range", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -43641,13 +44017,13 @@ module InlineValue = struct "t" [ (fun json -> `InlineValueText (InlineValueText.t_of_yojson json)) ; (fun json -> - `InlineValueVariableLookup - (InlineValueVariableLookup.t_of_yojson json)) + `InlineValueVariableLookup (InlineValueVariableLookup.t_of_yojson json)) ; (fun json -> `InlineValueEvaluatableExpression (InlineValueEvaluatableExpression.t_of_yojson json)) ] json + ;; let yojson_of_t (t : t) : Json.t = match t with @@ -43655,6 +44031,7 @@ module InlineValue = struct | `InlineValueVariableLookup s -> InlineValueVariableLookup.yojson_of_t s | `InlineValueEvaluatableExpression s -> InlineValueEvaluatableExpression.yojson_of_t s + ;; end module InlineValueContext = struct @@ -43669,7 +44046,7 @@ module InlineValueContext = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineValueContext.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let frameId_field = ref Ppx_yojson_conv_lib.Option.None and stoppedLocation_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -43677,66 +44054,63 @@ module InlineValueContext = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "frameId" -> ( - match Ppx_yojson_conv_lib.( ! ) frameId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - frameId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "stoppedLocation" -> ( - match Ppx_yojson_conv_lib.( ! ) stoppedLocation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - stoppedLocation_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "frameId" -> + (match Ppx_yojson_conv_lib.( ! ) frameId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + frameId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "stoppedLocation" -> + (match Ppx_yojson_conv_lib.( ! ) stoppedLocation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + stoppedLocation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) frameId_field - , Ppx_yojson_conv_lib.( ! ) stoppedLocation_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some frameId_value - , Ppx_yojson_conv_lib.Option.Some stoppedLocation_value ) -> - { frameId = frameId_value - ; stoppedLocation = stoppedLocation_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) frameId_field) - Ppx_yojson_conv_lib.Option.None - , "frameId" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) stoppedLocation_field) - Ppx_yojson_conv_lib.Option.None - , "stoppedLocation" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) frameId_field + , Ppx_yojson_conv_lib.( ! ) stoppedLocation_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some frameId_value + , Ppx_yojson_conv_lib.Option.Some stoppedLocation_value ) -> + { frameId = frameId_value; stoppedLocation = stoppedLocation_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) frameId_field) + Ppx_yojson_conv_lib.Option.None + , "frameId" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) stoppedLocation_field) + Ppx_yojson_conv_lib.Option.None + , "stoppedLocation" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -43753,7 +44127,8 @@ module InlineValueContext = struct ("frameId", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -43761,6 +44136,7 @@ module InlineValueContext = struct let create ~(frameId : int) ~(stoppedLocation : Range.t) : t = { frameId; stoppedLocation } + ;; end module InlineValueParams = struct @@ -43769,7 +44145,7 @@ module InlineValueParams = struct ; range : Range.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -43778,7 +44154,7 @@ module InlineValueParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.InlineValueParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let context_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -43788,97 +44164,96 @@ module InlineValueParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "context" -> ( - match Ppx_yojson_conv_lib.( ! ) context_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = InlineValueContext.t_of_yojson _field_yojson in - context_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) context_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some context_value - , Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { context = context_value - ; range = range_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "context" -> + (match Ppx_yojson_conv_lib.( ! ) context_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = InlineValueContext.t_of_yojson _field_yojson in + context_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) context_field) - Ppx_yojson_conv_lib.Option.None - , "context" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) context_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some context_value + , Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { context = context_value + ; range = range_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) context_field) + Ppx_yojson_conv_lib.Option.None + , "context" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -43891,14 +44266,14 @@ module InlineValueParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -43913,16 +44288,23 @@ module InlineValueParams = struct ("context", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(context : InlineValueContext.t) ~(range : Range.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(context : InlineValueContext.t) + ~(range : Range.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { context; range; textDocument; workDoneToken } + ;; end module LinkedEditingRangeParams = struct @@ -43930,7 +44312,7 @@ module LinkedEditingRangeParams = struct { position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -43939,7 +44321,7 @@ module LinkedEditingRangeParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.LinkedEditingRangeParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -43948,83 +44330,82 @@ module LinkedEditingRangeParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -44036,14 +44417,14 @@ module LinkedEditingRangeParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -44054,22 +44435,29 @@ module LinkedEditingRangeParams = struct ("position", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { position; textDocument; workDoneToken } + ;; end module LinkedEditingRanges = struct type t = { ranges : Range.t list ; wordPattern : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -44078,7 +44466,7 @@ module LinkedEditingRanges = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.LinkedEditingRanges.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let ranges_field = ref Ppx_yojson_conv_lib.Option.None and wordPattern_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -44086,66 +44474,65 @@ module LinkedEditingRanges = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "ranges" -> ( - match Ppx_yojson_conv_lib.( ! ) ranges_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson Range.t_of_yojson _field_yojson in - ranges_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "wordPattern" -> ( - match Ppx_yojson_conv_lib.( ! ) wordPattern_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - wordPattern_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "ranges" -> + (match Ppx_yojson_conv_lib.( ! ) ranges_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Range.t_of_yojson _field_yojson in + ranges_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "wordPattern" -> + (match Ppx_yojson_conv_lib.( ! ) wordPattern_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + wordPattern_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) ranges_field - , Ppx_yojson_conv_lib.( ! ) wordPattern_field ) - with - | Ppx_yojson_conv_lib.Option.Some ranges_value, wordPattern_value -> - { ranges = ranges_value - ; wordPattern = - (match wordPattern_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) ranges_field) - Ppx_yojson_conv_lib.Option.None - , "ranges" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) ranges_field + , Ppx_yojson_conv_lib.( ! ) wordPattern_field ) + with + | Ppx_yojson_conv_lib.Option.Some ranges_value, wordPattern_value -> + { ranges = ranges_value + ; wordPattern = + (match wordPattern_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) ranges_field) + Ppx_yojson_conv_lib.Option.None + , "ranges" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -44154,28 +44541,28 @@ module LinkedEditingRanges = struct | { ranges = v_ranges; wordPattern = v_wordPattern } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_wordPattern then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_wordPattern - in - let bnd = ("wordPattern", arg) in - bnd :: bnds + if None = v_wordPattern + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_wordPattern in + let bnd = "wordPattern", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list Range.yojson_of_t v_ranges in ("ranges", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(ranges : Range.t list) ?(wordPattern : string option) (() : unit) - : t = + let create ~(ranges : Range.t list) ?(wordPattern : string option) (() : unit) : t = { ranges; wordPattern } + ;; end module LogMessageParams = struct @@ -44190,7 +44577,7 @@ module LogMessageParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.LogMessageParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let message_field = ref Ppx_yojson_conv_lib.Option.None and type__field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -44198,64 +44585,63 @@ module LogMessageParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "type" -> ( - match Ppx_yojson_conv_lib.( ! ) type__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = MessageType.t_of_yojson _field_yojson in - type__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "type" -> + (match Ppx_yojson_conv_lib.( ! ) type__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = MessageType.t_of_yojson _field_yojson in + type__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) message_field - , Ppx_yojson_conv_lib.( ! ) type__field ) - with - | ( Ppx_yojson_conv_lib.Option.Some message_value - , Ppx_yojson_conv_lib.Option.Some type__value ) -> - { message = message_value; type_ = type__value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) message_field) - Ppx_yojson_conv_lib.Option.None - , "message" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) type__field) - Ppx_yojson_conv_lib.Option.None - , "type_" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) message_field + , Ppx_yojson_conv_lib.( ! ) type__field ) + with + | ( Ppx_yojson_conv_lib.Option.Some message_value + , Ppx_yojson_conv_lib.Option.Some type__value ) -> + { message = message_value; type_ = type__value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) message_field) + Ppx_yojson_conv_lib.Option.None + , "message" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) type__field) + Ppx_yojson_conv_lib.Option.None + , "type_" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -44272,21 +44658,20 @@ module LogMessageParams = struct ("message", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(message : string) ~(type_ : MessageType.t) : t = - { message; type_ } + let create ~(message : string) ~(type_ : MessageType.t) : t = { message; type_ } end module LogTraceParams = struct type t = { message : string - ; verbose : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; verbose : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -44295,7 +44680,7 @@ module LogTraceParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.LogTraceParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let message_field = ref Ppx_yojson_conv_lib.Option.None and verbose_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -44303,66 +44688,65 @@ module LogTraceParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "verbose" -> ( - match Ppx_yojson_conv_lib.( ! ) verbose_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - verbose_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "verbose" -> + (match Ppx_yojson_conv_lib.( ! ) verbose_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + verbose_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) message_field - , Ppx_yojson_conv_lib.( ! ) verbose_field ) - with - | Ppx_yojson_conv_lib.Option.Some message_value, verbose_value -> - { message = message_value - ; verbose = - (match verbose_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) message_field) - Ppx_yojson_conv_lib.Option.None - , "message" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) message_field + , Ppx_yojson_conv_lib.( ! ) verbose_field ) + with + | Ppx_yojson_conv_lib.Option.Some message_value, verbose_value -> + { message = message_value + ; verbose = + (match verbose_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) message_field) + Ppx_yojson_conv_lib.Option.None + , "message" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -44371,20 +44755,20 @@ module LogTraceParams = struct | { message = v_message; verbose = v_verbose } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_verbose then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_verbose - in - let bnd = ("verbose", arg) in - bnd :: bnds + if None = v_verbose + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_verbose in + let bnd = "verbose", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_message in ("message", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -44392,67 +44776,65 @@ module LogTraceParams = struct let create ~(message : string) ?(verbose : string option) (() : unit) : t = { message; verbose } + ;; end module MessageActionItem = struct - type t = { title : string } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { title : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.MessageActionItem.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let title_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "title" -> ( - match Ppx_yojson_conv_lib.( ! ) title_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - title_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "title" -> + (match Ppx_yojson_conv_lib.( ! ) title_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + title_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) title_field with - | Ppx_yojson_conv_lib.Option.Some title_value -> - { title = title_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) title_field) - Ppx_yojson_conv_lib.Option.None - , "title" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) title_field with + | Ppx_yojson_conv_lib.Option.Some title_value -> { title = title_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) title_field) + Ppx_yojson_conv_lib.Option.None + , "title" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -44465,7 +44847,8 @@ module MessageActionItem = struct ("title", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -44478,7 +44861,7 @@ module Moniker = struct type t = { identifier : string ; kind : MonikerKind.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; scheme : string ; unique : UniquenessLevel.t } @@ -44489,7 +44872,7 @@ module Moniker = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Moniker.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let identifier_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None and scheme_field = ref Ppx_yojson_conv_lib.Option.None @@ -44499,107 +44882,101 @@ module Moniker = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "identifier" -> ( - match Ppx_yojson_conv_lib.( ! ) identifier_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - MonikerKind.t_of_yojson - _field_yojson - in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "scheme" -> ( - match Ppx_yojson_conv_lib.( ! ) scheme_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - scheme_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "unique" -> ( - match Ppx_yojson_conv_lib.( ! ) unique_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = UniquenessLevel.t_of_yojson _field_yojson in - unique_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) identifier_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) scheme_field - , Ppx_yojson_conv_lib.( ! ) unique_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some identifier_value - , kind_value - , Ppx_yojson_conv_lib.Option.Some scheme_value - , Ppx_yojson_conv_lib.Option.Some unique_value ) -> - { identifier = identifier_value - ; kind = - (match kind_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; scheme = scheme_value - ; unique = unique_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) identifier_field) - Ppx_yojson_conv_lib.Option.None - , "identifier" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) scheme_field) - Ppx_yojson_conv_lib.Option.None - , "scheme" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) unique_field) - Ppx_yojson_conv_lib.Option.None - , "unique" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { identifier = v_identifier - ; kind = v_kind - ; scheme = v_scheme - ; unique = v_unique - } -> + | "identifier" -> + (match Ppx_yojson_conv_lib.( ! ) identifier_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson MonikerKind.t_of_yojson _field_yojson + in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "scheme" -> + (match Ppx_yojson_conv_lib.( ! ) scheme_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + scheme_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "unique" -> + (match Ppx_yojson_conv_lib.( ! ) unique_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = UniquenessLevel.t_of_yojson _field_yojson in + unique_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) identifier_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) scheme_field + , Ppx_yojson_conv_lib.( ! ) unique_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some identifier_value + , kind_value + , Ppx_yojson_conv_lib.Option.Some scheme_value + , Ppx_yojson_conv_lib.Option.Some unique_value ) -> + { identifier = identifier_value + ; kind = + (match kind_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; scheme = scheme_value + ; unique = unique_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) identifier_field) + Ppx_yojson_conv_lib.Option.None + , "identifier" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) scheme_field) + Ppx_yojson_conv_lib.Option.None + , "scheme" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) unique_field) + Ppx_yojson_conv_lib.Option.None + , "unique" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { identifier = v_identifier; kind = v_kind; scheme = v_scheme; unique = v_unique } + -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = let arg = UniquenessLevel.yojson_of_t v_unique in @@ -44610,38 +44987,45 @@ module Moniker = struct ("scheme", arg) :: bnds in let bnds = - if None = v_kind then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t MonikerKind.yojson_of_t) v_kind - in - let bnd = ("kind", arg) in - bnd :: bnds + if None = v_kind + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t MonikerKind.yojson_of_t) v_kind in + let bnd = "kind", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_identifier in ("identifier", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(identifier : string) ?(kind : MonikerKind.t option) - ~(scheme : string) ~(unique : UniquenessLevel.t) (() : unit) : t = + let create + ~(identifier : string) + ?(kind : MonikerKind.t option) + ~(scheme : string) + ~(unique : UniquenessLevel.t) + (() : unit) + : t + = { identifier; kind; scheme; unique } + ;; end module MonikerParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -44650,7 +45034,7 @@ module MonikerParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.MonikerParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -44660,101 +45044,99 @@ module MonikerParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -44767,14 +45149,14 @@ module MonikerParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -44785,26 +45167,34 @@ module MonikerParams = struct ("position", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; position; textDocument; workDoneToken } + ;; end module ParameterInformation = struct @@ -44821,12 +45211,13 @@ module ParameterInformation = struct "documentation_pvar" [ (fun json -> `MarkupContent (MarkupContent.t_of_yojson json)) ] json + ;; - let yojson_of_documentation_pvar (documentation_pvar : documentation_pvar) : - Json.t = + let yojson_of_documentation_pvar (documentation_pvar : documentation_pvar) : Json.t = match documentation_pvar with | `String j -> `String j | `MarkupContent s -> MarkupContent.yojson_of_t s + ;; type label_pvar = [ `String of string @@ -44841,15 +45232,17 @@ module ParameterInformation = struct "label_pvar" [ (fun json -> `Offset (Json.Of.int_pair json)) ] json + ;; let yojson_of_label_pvar (label_pvar : label_pvar) : Json.t = match label_pvar with | `String j -> `String j | `Offset s -> Json.To.int_pair s + ;; type t = { documentation : documentation_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; label : label_pvar } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -44859,7 +45252,7 @@ module ParameterInformation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ParameterInformation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentation_field = ref Ppx_yojson_conv_lib.Option.None and label_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -44867,68 +45260,67 @@ module ParameterInformation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentation" -> ( - match Ppx_yojson_conv_lib.( ! ) documentation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - documentation_pvar_of_yojson - _field_yojson - in - documentation_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = label_pvar_of_yojson _field_yojson in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentation" -> + (match Ppx_yojson_conv_lib.( ! ) documentation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + documentation_pvar_of_yojson + _field_yojson + in + documentation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = label_pvar_of_yojson _field_yojson in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) documentation_field - , Ppx_yojson_conv_lib.( ! ) label_field ) - with - | documentation_value, Ppx_yojson_conv_lib.Option.Some label_value -> - { documentation = - (match documentation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; label = label_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) label_field) - Ppx_yojson_conv_lib.Option.None - , "label" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) documentation_field + , Ppx_yojson_conv_lib.( ! ) label_field ) + with + | documentation_value, Ppx_yojson_conv_lib.Option.Some label_value -> + { documentation = + (match documentation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; label = label_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) label_field) + Ppx_yojson_conv_lib.Option.None + , "label" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -44941,31 +45333,38 @@ module ParameterInformation = struct ("label", arg) :: bnds in let bnds = - if None = v_documentation then bnds - else + if None = v_documentation + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_documentation_pvar) v_documentation in - let bnd = ("documentation", arg) in - bnd :: bnds + let bnd = "documentation", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentation : documentation_pvar option) ~(label : label_pvar) - (() : unit) : t = + let create + ?(documentation : documentation_pvar option) + ~(label : label_pvar) + (() : unit) + : t + = { documentation; label } + ;; end module PartialResultParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -44974,57 +45373,55 @@ module PartialResultParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.PartialResultParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let partialResultToken_value = - Ppx_yojson_conv_lib.( ! ) partialResultToken_field - in - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let partialResultToken_value = + Ppx_yojson_conv_lib.( ! ) partialResultToken_field + in + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -45033,17 +45430,19 @@ module PartialResultParams = struct | { partialResultToken = v_partialResultToken } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -45051,6 +45450,7 @@ module PartialResultParams = struct let create ?(partialResultToken : ProgressToken.t option) (() : unit) : t = { partialResultToken } + ;; end module PrepareRenameParams = struct @@ -45058,7 +45458,7 @@ module PrepareRenameParams = struct { position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -45067,7 +45467,7 @@ module PrepareRenameParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.PrepareRenameParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -45076,83 +45476,82 @@ module PrepareRenameParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -45164,14 +45563,14 @@ module PrepareRenameParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -45182,15 +45581,22 @@ module PrepareRenameParams = struct ("position", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { position; textDocument; workDoneToken } + ;; end module PreviousResultId = struct @@ -45205,7 +45611,7 @@ module PreviousResultId = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.PreviousResultId.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let uri_field = ref Ppx_yojson_conv_lib.Option.None and value_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -45213,64 +45619,62 @@ module PreviousResultId = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "value" -> ( - match Ppx_yojson_conv_lib.( ! ) value_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - value_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "value" -> + (match Ppx_yojson_conv_lib.( ! ) value_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + value_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) value_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some uri_value - , Ppx_yojson_conv_lib.Option.Some value_value ) -> - { uri = uri_value; value = value_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) value_field) - Ppx_yojson_conv_lib.Option.None - , "value" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + Ppx_yojson_conv_lib.( ! ) uri_field, Ppx_yojson_conv_lib.( ! ) value_field + with + | ( Ppx_yojson_conv_lib.Option.Some uri_value + , Ppx_yojson_conv_lib.Option.Some value_value ) -> + { uri = uri_value; value = value_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) value_field) + Ppx_yojson_conv_lib.Option.None + , "value" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -45287,7 +45691,8 @@ module PreviousResultId = struct ("uri", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -45300,8 +45705,7 @@ module PublishDiagnosticsParams = struct type t = { diagnostics : Diagnostic.t list ; uri : DocumentUri.t - ; version : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -45310,7 +45714,7 @@ module PublishDiagnosticsParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.PublishDiagnosticsParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let diagnostics_field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None @@ -45319,83 +45723,80 @@ module PublishDiagnosticsParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "diagnostics" -> ( - match Ppx_yojson_conv_lib.( ! ) diagnostics_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson Diagnostic.t_of_yojson _field_yojson - in - diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) diagnostics_field - , Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some diagnostics_value - , Ppx_yojson_conv_lib.Option.Some uri_value - , version_value ) -> - { diagnostics = diagnostics_value - ; uri = uri_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) diagnostics_field) - Ppx_yojson_conv_lib.Option.None - , "diagnostics" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "diagnostics" -> + (match Ppx_yojson_conv_lib.( ! ) diagnostics_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Diagnostic.t_of_yojson _field_yojson in + diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) diagnostics_field + , Ppx_yojson_conv_lib.( ! ) uri_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some diagnostics_value + , Ppx_yojson_conv_lib.Option.Some uri_value + , version_value ) -> + { diagnostics = diagnostics_value + ; uri = uri_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) diagnostics_field) + Ppx_yojson_conv_lib.Option.None + , "diagnostics" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -45404,13 +45805,12 @@ module PublishDiagnosticsParams = struct | { diagnostics = v_diagnostics; uri = v_uri; version = v_version } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = DocumentUri.yojson_of_t v_uri in @@ -45421,15 +45821,22 @@ module PublishDiagnosticsParams = struct ("diagnostics", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(diagnostics : Diagnostic.t list) ~(uri : DocumentUri.t) - ?(version : int option) (() : unit) : t = + let create + ~(diagnostics : Diagnostic.t list) + ~(uri : DocumentUri.t) + ?(version : int option) + (() : unit) + : t + = { diagnostics; uri; version } + ;; end module ReferenceContext = struct @@ -45441,57 +45848,55 @@ module ReferenceContext = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ReferenceContext.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let includeDeclaration_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "includeDeclaration" -> ( - match Ppx_yojson_conv_lib.( ! ) includeDeclaration_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - includeDeclaration_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "includeDeclaration" -> + (match Ppx_yojson_conv_lib.( ! ) includeDeclaration_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + includeDeclaration_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) includeDeclaration_field with - | Ppx_yojson_conv_lib.Option.Some includeDeclaration_value -> - { includeDeclaration = includeDeclaration_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) includeDeclaration_field) - Ppx_yojson_conv_lib.Option.None - , "includeDeclaration" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) includeDeclaration_field with + | Ppx_yojson_conv_lib.Option.Some includeDeclaration_value -> + { includeDeclaration = includeDeclaration_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) includeDeclaration_field) + Ppx_yojson_conv_lib.Option.None + , "includeDeclaration" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -45504,7 +45909,8 @@ module ReferenceContext = struct ("includeDeclaration", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -45517,11 +45923,11 @@ module ReferenceParams = struct type t = { context : ReferenceContext.t ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -45530,7 +45936,7 @@ module ReferenceParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ReferenceParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let context_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None @@ -45541,115 +45947,113 @@ module ReferenceParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "context" -> ( - match Ppx_yojson_conv_lib.( ! ) context_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = ReferenceContext.t_of_yojson _field_yojson in - context_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) context_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some context_value - , partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { context = context_value - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "context" -> + (match Ppx_yojson_conv_lib.( ! ) context_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = ReferenceContext.t_of_yojson _field_yojson in + context_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) context_field) - Ppx_yojson_conv_lib.Option.None - , "context" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) context_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some context_value + , partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { context = context_value + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) context_field) + Ppx_yojson_conv_lib.Option.None + , "context" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -45663,14 +46067,14 @@ module ReferenceParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -45681,39 +46085,47 @@ module ReferenceParams = struct ("position", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = let arg = ReferenceContext.yojson_of_t v_context in ("context", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(context : ReferenceContext.t) - ?(partialResultToken : ProgressToken.t option) ~(position : Position.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(context : ReferenceContext.t) + ?(partialResultToken : ProgressToken.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { context; partialResultToken; position; textDocument; workDoneToken } + ;; end module ReferenceRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -45722,7 +46134,7 @@ module ReferenceRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ReferenceRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -45730,102 +46142,106 @@ module ReferenceRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { documentSelector = v_documentSelector - ; workDoneProgress = v_workDoneProgress - } -> + | { documentSelector = v_documentSelector; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(workDoneProgress : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; workDoneProgress } + ;; end module Registration = struct @@ -45841,7 +46257,7 @@ module Registration = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Registration.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let id_field = ref Ppx_yojson_conv_lib.Option.None and method__field = ref Ppx_yojson_conv_lib.Option.None and registerOptions_field = ref Ppx_yojson_conv_lib.Option.None @@ -45850,90 +46266,88 @@ module Registration = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "method" -> ( - match Ppx_yojson_conv_lib.( ! ) method__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - method__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "registerOptions" -> ( - match Ppx_yojson_conv_lib.( ! ) registerOptions_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - registerOptions_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "method" -> + (match Ppx_yojson_conv_lib.( ! ) method__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + method__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "registerOptions" -> + (match Ppx_yojson_conv_lib.( ! ) registerOptions_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + registerOptions_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) method__field - , Ppx_yojson_conv_lib.( ! ) registerOptions_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some id_value - , Ppx_yojson_conv_lib.Option.Some method__value - , registerOptions_value ) -> - { id = id_value - ; method_ = method__value - ; registerOptions = registerOptions_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) id_field) - Ppx_yojson_conv_lib.Option.None - , "id" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) method__field) - Ppx_yojson_conv_lib.Option.None - , "method_" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { id = v_id; method_ = v_method_; registerOptions = v_registerOptions } - -> + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) method__field + , Ppx_yojson_conv_lib.( ! ) registerOptions_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some id_value + , Ppx_yojson_conv_lib.Option.Some method__value + , registerOptions_value ) -> + { id = id_value + ; method_ = method__value + ; registerOptions = registerOptions_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) id_field) + Ppx_yojson_conv_lib.Option.None + , "id" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) method__field) + Ppx_yojson_conv_lib.Option.None + , "method_" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { id = v_id; method_ = v_method_; registerOptions = v_registerOptions } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = match v_registerOptions with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("registerOptions", arg) in + let bnd = "registerOptions", arg in bnd :: bnds in let bnds = @@ -45945,15 +46359,22 @@ module Registration = struct ("id", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(id : string) ~(method_ : string) - ?(registerOptions : Json.t option) (() : unit) : t = + let create + ~(id : string) + ~(method_ : string) + ?(registerOptions : Json.t option) + (() : unit) + : t + = { id; method_; registerOptions } + ;; end module RegistrationParams = struct @@ -45965,58 +46386,55 @@ module RegistrationParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RegistrationParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let registrations_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "registrations" -> ( - match Ppx_yojson_conv_lib.( ! ) registrations_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson Registration.t_of_yojson _field_yojson - in - registrations_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "registrations" -> + (match Ppx_yojson_conv_lib.( ! ) registrations_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Registration.t_of_yojson _field_yojson in + registrations_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) registrations_field with - | Ppx_yojson_conv_lib.Option.Some registrations_value -> - { registrations = registrations_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) registrations_field) - Ppx_yojson_conv_lib.Option.None - , "registrations" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) registrations_field with + | Ppx_yojson_conv_lib.Option.Some registrations_value -> + { registrations = registrations_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) registrations_field) + Ppx_yojson_conv_lib.Option.None + , "registrations" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -46029,7 +46447,8 @@ module RegistrationParams = struct ("registrations", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -46047,58 +46466,54 @@ module RenameFilesParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RenameFilesParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let files_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "files" -> ( - match Ppx_yojson_conv_lib.( ! ) files_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson FileRename.t_of_yojson _field_yojson - in - files_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "files" -> + (match Ppx_yojson_conv_lib.( ! ) files_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson FileRename.t_of_yojson _field_yojson in + files_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) files_field with - | Ppx_yojson_conv_lib.Option.Some files_value -> - { files = files_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) files_field) - Ppx_yojson_conv_lib.Option.None - , "files" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) files_field with + | Ppx_yojson_conv_lib.Option.Some files_value -> { files = files_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) files_field) + Ppx_yojson_conv_lib.Option.None + , "files" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -46111,7 +46526,8 @@ module RenameFilesParams = struct ("files", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -46126,7 +46542,7 @@ module RenameParams = struct ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -46135,7 +46551,7 @@ module RenameParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RenameParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let newName_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -46145,97 +46561,96 @@ module RenameParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "newName" -> ( - match Ppx_yojson_conv_lib.( ! ) newName_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - newName_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) newName_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some newName_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { newName = newName_value - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "newName" -> + (match Ppx_yojson_conv_lib.( ! ) newName_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + newName_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) newName_field) - Ppx_yojson_conv_lib.Option.None - , "newName" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) newName_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some newName_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { newName = newName_value + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) newName_field) + Ppx_yojson_conv_lib.Option.None + , "newName" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -46248,14 +46663,14 @@ module RenameParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -46270,26 +46685,33 @@ module RenameParams = struct ("newName", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(newName : string) ~(position : Position.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(newName : string) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { newName; position; textDocument; workDoneToken } + ;; end module RenameRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; prepareProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -46298,7 +46720,7 @@ module RenameRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.RenameRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and prepareProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None @@ -46307,79 +46729,76 @@ module RenameRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "prepareProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) prepareProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - prepareProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( documentSelector_value - , prepareProvider_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) prepareProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; prepareProvider = - (match prepareProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "prepareProvider" -> + (match Ppx_yojson_conv_lib.( ! ) prepareProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + prepareProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, prepareProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) prepareProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; prepareProvider = + (match prepareProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -46391,51 +46810,59 @@ module RenameRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_prepareProvider then bnds - else + if None = v_prepareProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_prepareProvider in - let bnd = ("prepareProvider", arg) in - bnd :: bnds + let bnd = "prepareProvider", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(prepareProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(prepareProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { documentSelector; prepareProvider; workDoneProgress } + ;; end module ResourceOperation = struct type t = { annotationId : ChangeAnnotationIdentifier.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; kind : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -46445,7 +46872,7 @@ module ResourceOperation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ResourceOperation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let annotationId_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -46453,68 +46880,67 @@ module ResourceOperation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "annotationId" -> ( - match Ppx_yojson_conv_lib.( ! ) annotationId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ChangeAnnotationIdentifier.t_of_yojson - _field_yojson - in - annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "annotationId" -> + (match Ppx_yojson_conv_lib.( ! ) annotationId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ChangeAnnotationIdentifier.t_of_yojson + _field_yojson + in + annotationId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) annotationId_field - , Ppx_yojson_conv_lib.( ! ) kind_field ) - with - | annotationId_value, Ppx_yojson_conv_lib.Option.Some kind_value -> - { annotationId = - (match annotationId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = kind_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) annotationId_field + , Ppx_yojson_conv_lib.( ! ) kind_field ) + with + | annotationId_value, Ppx_yojson_conv_lib.Option.Some kind_value -> + { annotationId = + (match annotationId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = kind_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -46527,32 +46953,37 @@ module ResourceOperation = struct ("kind", arg) :: bnds in let bnds = - if None = v_annotationId then bnds - else + if None = v_annotationId + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - ChangeAnnotationIdentifier.yojson_of_t) + (Json.Nullable_option.yojson_of_t ChangeAnnotationIdentifier.yojson_of_t) v_annotationId in - let bnd = ("annotationId", arg) in - bnd :: bnds + let bnd = "annotationId", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(annotationId : ChangeAnnotationIdentifier.t option) - ~(kind : string) (() : unit) : t = + let create + ?(annotationId : ChangeAnnotationIdentifier.t option) + ~(kind : string) + (() : unit) + : t + = { annotationId; kind } + ;; end module SelectionRange = struct type t = - { parent : t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { parent : t Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; range : Range.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -46562,7 +46993,7 @@ module SelectionRange = struct let rec t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SelectionRange.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let parent_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -46570,66 +47001,65 @@ module SelectionRange = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "parent" -> ( - match Ppx_yojson_conv_lib.( ! ) parent_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson t_of_yojson _field_yojson - in - parent_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "parent" -> + (match Ppx_yojson_conv_lib.( ! ) parent_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson t_of_yojson _field_yojson + in + parent_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) parent_field - , Ppx_yojson_conv_lib.( ! ) range_field ) - with - | parent_value, Ppx_yojson_conv_lib.Option.Some range_value -> - { parent = - (match parent_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; range = range_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) parent_field + , Ppx_yojson_conv_lib.( ! ) range_field ) + with + | parent_value, Ppx_yojson_conv_lib.Option.Some range_value -> + { parent = + (match parent_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; range = range_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -46642,31 +47072,32 @@ module SelectionRange = struct ("range", arg) :: bnds in let bnds = - if None = v_parent then bnds - else + if None = v_parent + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_t) v_parent in - let bnd = ("parent", arg) in - bnd :: bnds + let bnd = "parent", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(parent : t option) ~(range : Range.t) (() : unit) : t = - { parent; range } + let create ?(parent : t option) ~(range : Range.t) (() : unit) : t = { parent; range } end module SelectionRangeParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; positions : Position.t list ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -46675,7 +47106,7 @@ module SelectionRangeParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SelectionRangeParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and positions_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -46685,101 +47116,99 @@ module SelectionRangeParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "positions" -> ( - match Ppx_yojson_conv_lib.( ! ) positions_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = list_of_yojson Position.t_of_yojson _field_yojson in - positions_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) positions_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some positions_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; positions = positions_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "positions" -> + (match Ppx_yojson_conv_lib.( ! ) positions_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Position.t_of_yojson _field_yojson in + positions_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) positions_field) - Ppx_yojson_conv_lib.Option.None - , "positions" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) positions_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some positions_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; positions = positions_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) positions_field) + Ppx_yojson_conv_lib.Option.None + , "positions" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -46792,14 +47221,14 @@ module SelectionRangeParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -46810,33 +47239,41 @@ module SelectionRangeParams = struct ("positions", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(positions : Position.t list) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(positions : Position.t list) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; positions; textDocument; workDoneToken } + ;; end module SemanticTokens = struct type t = { data : int array ; resultId : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -46845,7 +47282,7 @@ module SemanticTokens = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokens.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let data_field = ref Ppx_yojson_conv_lib.Option.None and resultId_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -46853,66 +47290,65 @@ module SemanticTokens = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = array_of_yojson int_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resultId" -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = array_of_yojson int_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resultId" -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) resultId_field ) - with - | Ppx_yojson_conv_lib.Option.Some data_value, resultId_value -> - { data = data_value - ; resultId = - (match resultId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) data_field) - Ppx_yojson_conv_lib.Option.None - , "data" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) resultId_field ) + with + | Ppx_yojson_conv_lib.Option.Some data_value, resultId_value -> + { data = data_value + ; resultId = + (match resultId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) data_field) + Ppx_yojson_conv_lib.Option.None + , "data" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -46921,20 +47357,20 @@ module SemanticTokens = struct | { data = v_data; resultId = v_resultId } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_resultId then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId - in - let bnd = ("resultId", arg) in - bnd :: bnds + if None = v_resultId + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId in + let bnd = "resultId", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_array yojson_of_int v_data in ("data", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -46942,12 +47378,12 @@ module SemanticTokens = struct let create ~(data : int array) ?(resultId : string option) (() : unit) : t = { data; resultId } + ;; end module SemanticTokensEdit = struct type t = - { data : int array Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { data : int array Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; deleteCount : int ; start : int } @@ -46958,7 +47394,7 @@ module SemanticTokensEdit = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensEdit.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let data_field = ref Ppx_yojson_conv_lib.Option.None and deleteCount_field = ref Ppx_yojson_conv_lib.Option.None and start_field = ref Ppx_yojson_conv_lib.Option.None @@ -46967,83 +47403,82 @@ module SemanticTokensEdit = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (array_of_yojson int_of_yojson) - _field_yojson - in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "deleteCount" -> ( - match Ppx_yojson_conv_lib.( ! ) deleteCount_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - deleteCount_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "start" -> ( - match Ppx_yojson_conv_lib.( ! ) start_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = int_of_yojson _field_yojson in - start_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) deleteCount_field - , Ppx_yojson_conv_lib.( ! ) start_field ) - with - | ( data_value - , Ppx_yojson_conv_lib.Option.Some deleteCount_value - , Ppx_yojson_conv_lib.Option.Some start_value ) -> - { data = - (match data_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; deleteCount = deleteCount_value - ; start = start_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (array_of_yojson int_of_yojson) + _field_yojson + in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "deleteCount" -> + (match Ppx_yojson_conv_lib.( ! ) deleteCount_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + deleteCount_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "start" -> + (match Ppx_yojson_conv_lib.( ! ) start_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = int_of_yojson _field_yojson in + start_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) deleteCount_field) - Ppx_yojson_conv_lib.Option.None - , "deleteCount" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) start_field) - Ppx_yojson_conv_lib.Option.None - , "start" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) deleteCount_field + , Ppx_yojson_conv_lib.( ! ) start_field ) + with + | ( data_value + , Ppx_yojson_conv_lib.Option.Some deleteCount_value + , Ppx_yojson_conv_lib.Option.Some start_value ) -> + { data = + (match data_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; deleteCount = deleteCount_value + ; start = start_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) deleteCount_field) + Ppx_yojson_conv_lib.Option.None + , "deleteCount" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) start_field) + Ppx_yojson_conv_lib.Option.None + , "start" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -47060,32 +47495,35 @@ module SemanticTokensEdit = struct ("deleteCount", arg) :: bnds in let bnds = - if None = v_data then bnds - else + if None = v_data + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t (yojson_of_array yojson_of_int)) - v_data + (Json.Nullable_option.yojson_of_t (yojson_of_array yojson_of_int)) v_data in - let bnd = ("data", arg) in - bnd :: bnds + let bnd = "data", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(data : int array option) ~(deleteCount : int) ~(start : int) - (() : unit) : t = + let create ?(data : int array option) ~(deleteCount : int) ~(start : int) (() : unit) + : t + = { data; deleteCount; start } + ;; end module SemanticTokensDelta = struct type t = { edits : SemanticTokensEdit.t list ; resultId : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -47094,7 +47532,7 @@ module SemanticTokensDelta = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensDelta.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let edits_field = ref Ppx_yojson_conv_lib.Option.None and resultId_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -47102,68 +47540,67 @@ module SemanticTokensDelta = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "edits" -> ( - match Ppx_yojson_conv_lib.( ! ) edits_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson SemanticTokensEdit.t_of_yojson _field_yojson - in - edits_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resultId" -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "edits" -> + (match Ppx_yojson_conv_lib.( ! ) edits_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson SemanticTokensEdit.t_of_yojson _field_yojson + in + edits_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resultId" -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) edits_field - , Ppx_yojson_conv_lib.( ! ) resultId_field ) - with - | Ppx_yojson_conv_lib.Option.Some edits_value, resultId_value -> - { edits = edits_value - ; resultId = - (match resultId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) edits_field) - Ppx_yojson_conv_lib.Option.None - , "edits" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) edits_field + , Ppx_yojson_conv_lib.( ! ) resultId_field ) + with + | Ppx_yojson_conv_lib.Option.Some edits_value, resultId_value -> + { edits = edits_value + ; resultId = + (match resultId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) edits_field) + Ppx_yojson_conv_lib.Option.None + , "edits" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -47172,38 +47609,40 @@ module SemanticTokensDelta = struct | { edits = v_edits; resultId = v_resultId } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_resultId then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId - in - let bnd = ("resultId", arg) in - bnd :: bnds + if None = v_resultId + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId in + let bnd = "resultId", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list SemanticTokensEdit.yojson_of_t v_edits in ("edits", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(edits : SemanticTokensEdit.t list) ?(resultId : string option) - (() : unit) : t = + let create ~(edits : SemanticTokensEdit.t list) ?(resultId : string option) (() : unit) + : t + = { edits; resultId } + ;; end module SemanticTokensDeltaParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; previousResultId : string ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -47212,7 +47651,7 @@ module SemanticTokensDeltaParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensDeltaParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and previousResultId_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -47222,101 +47661,99 @@ module SemanticTokensDeltaParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "previousResultId" -> ( - match Ppx_yojson_conv_lib.( ! ) previousResultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - previousResultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) previousResultId_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some previousResultId_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; previousResultId = previousResultId_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "previousResultId" -> + (match Ppx_yojson_conv_lib.( ! ) previousResultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + previousResultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) previousResultId_field) - Ppx_yojson_conv_lib.Option.None - , "previousResultId" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) previousResultId_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some previousResultId_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; previousResultId = previousResultId_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) previousResultId_field) + Ppx_yojson_conv_lib.Option.None + , "previousResultId" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -47329,14 +47766,14 @@ module SemanticTokensDeltaParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -47347,26 +47784,34 @@ module SemanticTokensDeltaParams = struct ("previousResultId", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(previousResultId : string) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(previousResultId : string) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; previousResultId; textDocument; workDoneToken } + ;; end module SemanticTokensDeltaPartialResult = struct @@ -47378,58 +47823,56 @@ module SemanticTokensDeltaPartialResult = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensDeltaPartialResult.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let edits_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "edits" -> ( - match Ppx_yojson_conv_lib.( ! ) edits_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson SemanticTokensEdit.t_of_yojson _field_yojson - in - edits_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "edits" -> + (match Ppx_yojson_conv_lib.( ! ) edits_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson SemanticTokensEdit.t_of_yojson _field_yojson + in + edits_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) edits_field with - | Ppx_yojson_conv_lib.Option.Some edits_value -> - { edits = edits_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) edits_field) - Ppx_yojson_conv_lib.Option.None - , "edits" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) edits_field with + | Ppx_yojson_conv_lib.Option.Some edits_value -> { edits = edits_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) edits_field) + Ppx_yojson_conv_lib.Option.None + , "edits" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -47442,7 +47885,8 @@ module SemanticTokensDeltaPartialResult = struct ("edits", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -47454,10 +47898,10 @@ end module SemanticTokensParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -47466,7 +47910,7 @@ module SemanticTokensParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -47475,87 +47919,85 @@ module SemanticTokensParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -47567,100 +48009,105 @@ module SemanticTokensParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in ("textDocument", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; textDocument; workDoneToken } + ;; end module SemanticTokensPartialResult = struct - type t = { data : int array } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { data : int array } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensPartialResult.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let data_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = array_of_yojson int_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = array_of_yojson int_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.Some data_value -> { data = data_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) data_field) - Ppx_yojson_conv_lib.Option.None - , "data" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.Some data_value -> { data = data_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) data_field) + Ppx_yojson_conv_lib.Option.None + , "data" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -47673,7 +48120,8 @@ module SemanticTokensPartialResult = struct ("data", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -47685,11 +48133,11 @@ end module SemanticTokensRangeParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; range : Range.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -47698,7 +48146,7 @@ module SemanticTokensRangeParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SemanticTokensRangeParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and range_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -47708,101 +48156,99 @@ module SemanticTokensRangeParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; range = range_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; range = range_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -47815,14 +48261,14 @@ module SemanticTokensRangeParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -47833,26 +48279,34 @@ module SemanticTokensRangeParams = struct ("range", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) ~(range : Range.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(range : Range.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; range; textDocument; workDoneToken } + ;; end module SetTraceParams = struct @@ -47864,56 +48318,54 @@ module SetTraceParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SetTraceParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let value_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "value" -> ( - match Ppx_yojson_conv_lib.( ! ) value_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TraceValues.t_of_yojson _field_yojson in - value_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "value" -> + (match Ppx_yojson_conv_lib.( ! ) value_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TraceValues.t_of_yojson _field_yojson in + value_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) value_field with - | Ppx_yojson_conv_lib.Option.Some value_value -> - { value = value_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) value_field) - Ppx_yojson_conv_lib.Option.None - , "value" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) value_field with + | Ppx_yojson_conv_lib.Option.Some value_value -> { value = value_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) value_field) + Ppx_yojson_conv_lib.Option.None + , "value" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -47926,7 +48378,8 @@ module SetTraceParams = struct ("value", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -47938,11 +48391,10 @@ end module ShowDocumentParams = struct type t = { external_ : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] [@key "external"] + [@default None] [@yojson_drop_default ( = )] [@key "external"] ; selection : Range.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; takeFocus : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; takeFocus : bool Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; uri : DocumentUri.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -47952,7 +48404,7 @@ module ShowDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ShowDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let external__field = ref Ppx_yojson_conv_lib.Option.None and selection_field = ref Ppx_yojson_conv_lib.Option.None and takeFocus_field = ref Ppx_yojson_conv_lib.Option.None @@ -47962,99 +48414,96 @@ module ShowDocumentParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "external" -> ( - match Ppx_yojson_conv_lib.( ! ) external__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - external__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "selection" -> ( - match Ppx_yojson_conv_lib.( ! ) selection_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - Range.t_of_yojson - _field_yojson - in - selection_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "takeFocus" -> ( - match Ppx_yojson_conv_lib.( ! ) takeFocus_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - takeFocus_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) external__field - , Ppx_yojson_conv_lib.( ! ) selection_field - , Ppx_yojson_conv_lib.( ! ) takeFocus_field - , Ppx_yojson_conv_lib.( ! ) uri_field ) - with - | ( external__value - , selection_value - , takeFocus_value - , Ppx_yojson_conv_lib.Option.Some uri_value ) -> - { external_ = - (match external__value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; selection = - (match selection_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; takeFocus = - (match takeFocus_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; uri = uri_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "external" -> + (match Ppx_yojson_conv_lib.( ! ) external__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + external__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "selection" -> + (match Ppx_yojson_conv_lib.( ! ) selection_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Range.t_of_yojson _field_yojson + in + selection_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "takeFocus" -> + (match Ppx_yojson_conv_lib.( ! ) takeFocus_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + takeFocus_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) external__field + , Ppx_yojson_conv_lib.( ! ) selection_field + , Ppx_yojson_conv_lib.( ! ) takeFocus_field + , Ppx_yojson_conv_lib.( ! ) uri_field ) + with + | ( external__value + , selection_value + , takeFocus_value + , Ppx_yojson_conv_lib.Option.Some uri_value ) -> + { external_ = + (match external__value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; selection = + (match selection_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; takeFocus = + (match takeFocus_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; uri = uri_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -48071,103 +48520,106 @@ module ShowDocumentParams = struct ("uri", arg) :: bnds in let bnds = - if None = v_takeFocus then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_takeFocus - in - let bnd = ("takeFocus", arg) in - bnd :: bnds + if None = v_takeFocus + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_takeFocus in + let bnd = "takeFocus", arg in + bnd :: bnds) in let bnds = - if None = v_selection then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_selection - in - let bnd = ("selection", arg) in - bnd :: bnds + if None = v_selection + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Range.yojson_of_t) v_selection in + let bnd = "selection", arg in + bnd :: bnds) in let bnds = - if None = v_external_ then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_external_ - in - let bnd = ("external", arg) in - bnd :: bnds + if None = v_external_ + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_external_ in + let bnd = "external", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(external_ : bool option) ?(selection : Range.t option) - ?(takeFocus : bool option) ~(uri : DocumentUri.t) (() : unit) : t = + let create + ?(external_ : bool option) + ?(selection : Range.t option) + ?(takeFocus : bool option) + ~(uri : DocumentUri.t) + (() : unit) + : t + = { external_; selection; takeFocus; uri } + ;; end module ShowDocumentResult = struct - type t = { success : bool } - [@@deriving_inline yojson] [@@yojson.allow_extra_fields] + type t = { success : bool } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ShowDocumentResult.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let success_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "success" -> ( - match Ppx_yojson_conv_lib.( ! ) success_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - success_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "success" -> + (match Ppx_yojson_conv_lib.( ! ) success_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + success_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) success_field with - | Ppx_yojson_conv_lib.Option.Some success_value -> - { success = success_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) success_field) - Ppx_yojson_conv_lib.Option.None - , "success" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) success_field with + | Ppx_yojson_conv_lib.Option.Some success_value -> + { success = success_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) success_field) + Ppx_yojson_conv_lib.Option.None + , "success" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -48180,7 +48632,8 @@ module ShowDocumentResult = struct ("success", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -48201,7 +48654,7 @@ module ShowMessageParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ShowMessageParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let message_field = ref Ppx_yojson_conv_lib.Option.None and type__field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -48209,64 +48662,63 @@ module ShowMessageParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "type" -> ( - match Ppx_yojson_conv_lib.( ! ) type__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = MessageType.t_of_yojson _field_yojson in - type__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "type" -> + (match Ppx_yojson_conv_lib.( ! ) type__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = MessageType.t_of_yojson _field_yojson in + type__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) message_field - , Ppx_yojson_conv_lib.( ! ) type__field ) - with - | ( Ppx_yojson_conv_lib.Option.Some message_value - , Ppx_yojson_conv_lib.Option.Some type__value ) -> - { message = message_value; type_ = type__value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) message_field) - Ppx_yojson_conv_lib.Option.None - , "message" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) type__field) - Ppx_yojson_conv_lib.Option.None - , "type_" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) message_field + , Ppx_yojson_conv_lib.( ! ) type__field ) + with + | ( Ppx_yojson_conv_lib.Option.Some message_value + , Ppx_yojson_conv_lib.Option.Some type__value ) -> + { message = message_value; type_ = type__value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) message_field) + Ppx_yojson_conv_lib.Option.None + , "message" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) type__field) + Ppx_yojson_conv_lib.Option.None + , "type_" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -48283,20 +48735,20 @@ module ShowMessageParams = struct ("message", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(message : string) ~(type_ : MessageType.t) : t = - { message; type_ } + let create ~(message : string) ~(type_ : MessageType.t) : t = { message; type_ } end module ShowMessageRequestParams = struct type t = { actions : MessageActionItem.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; message : string ; type_ : MessageType.t [@key "type"] } @@ -48307,7 +48759,7 @@ module ShowMessageRequestParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.ShowMessageRequestParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let actions_field = ref Ppx_yojson_conv_lib.Option.None and message_field = ref Ppx_yojson_conv_lib.Option.None and type__field = ref Ppx_yojson_conv_lib.Option.None @@ -48316,83 +48768,82 @@ module ShowMessageRequestParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "actions" -> ( - match Ppx_yojson_conv_lib.( ! ) actions_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson MessageActionItem.t_of_yojson) - _field_yojson - in - actions_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "type" -> ( - match Ppx_yojson_conv_lib.( ! ) type__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = MessageType.t_of_yojson _field_yojson in - type__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) actions_field - , Ppx_yojson_conv_lib.( ! ) message_field - , Ppx_yojson_conv_lib.( ! ) type__field ) - with - | ( actions_value - , Ppx_yojson_conv_lib.Option.Some message_value - , Ppx_yojson_conv_lib.Option.Some type__value ) -> - { actions = - (match actions_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; message = message_value - ; type_ = type__value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) message_field) - Ppx_yojson_conv_lib.Option.None - , "message" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) type__field) - Ppx_yojson_conv_lib.Option.None - , "type_" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "actions" -> + (match Ppx_yojson_conv_lib.( ! ) actions_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson MessageActionItem.t_of_yojson) + _field_yojson + in + actions_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "type" -> + (match Ppx_yojson_conv_lib.( ! ) type__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = MessageType.t_of_yojson _field_yojson in + type__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) actions_field + , Ppx_yojson_conv_lib.( ! ) message_field + , Ppx_yojson_conv_lib.( ! ) type__field ) + with + | ( actions_value + , Ppx_yojson_conv_lib.Option.Some message_value + , Ppx_yojson_conv_lib.Option.Some type__value ) -> + { actions = + (match actions_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; message = message_value + ; type_ = type__value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) message_field) + Ppx_yojson_conv_lib.Option.None + , "message" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) type__field) + Ppx_yojson_conv_lib.Option.None + , "type_" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -48409,26 +48860,34 @@ module ShowMessageRequestParams = struct ("message", arg) :: bnds in let bnds = - if None = v_actions then bnds - else + if None = v_actions + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list MessageActionItem.yojson_of_t)) v_actions in - let bnd = ("actions", arg) in - bnd :: bnds + let bnd = "actions", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(actions : MessageActionItem.t list option) ~(message : string) - ~(type_ : MessageType.t) (() : unit) : t = + let create + ?(actions : MessageActionItem.t list option) + ~(message : string) + ~(type_ : MessageType.t) + (() : unit) + : t + = { actions; message; type_ } + ;; end module SignatureInformation = struct @@ -48445,21 +48904,22 @@ module SignatureInformation = struct "documentation_pvar" [ (fun json -> `MarkupContent (MarkupContent.t_of_yojson json)) ] json + ;; - let yojson_of_documentation_pvar (documentation_pvar : documentation_pvar) : - Json.t = + let yojson_of_documentation_pvar (documentation_pvar : documentation_pvar) : Json.t = match documentation_pvar with | `String j -> `String j | `MarkupContent s -> MarkupContent.yojson_of_t s + ;; type t = { activeParameter : int Json.Nullable_option.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; documentation : documentation_pvar Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; label : string ; parameters : ParameterInformation.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -48468,7 +48928,7 @@ module SignatureInformation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SignatureInformation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let activeParameter_field = ref Ppx_yojson_conv_lib.Option.None and documentation_field = ref Ppx_yojson_conv_lib.Option.None and label_field = ref Ppx_yojson_conv_lib.Option.None @@ -48478,103 +48938,102 @@ module SignatureInformation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "activeParameter" -> ( - match Ppx_yojson_conv_lib.( ! ) activeParameter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Nullable_option.t_of_yojson int_of_yojson) - _field_yojson - in - activeParameter_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "documentation" -> ( - match Ppx_yojson_conv_lib.( ! ) documentation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - documentation_pvar_of_yojson - _field_yojson - in - documentation_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "label" -> ( - match Ppx_yojson_conv_lib.( ! ) label_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - label_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "parameters" -> ( - match Ppx_yojson_conv_lib.( ! ) parameters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson ParameterInformation.t_of_yojson) - _field_yojson - in - parameters_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) activeParameter_field - , Ppx_yojson_conv_lib.( ! ) documentation_field - , Ppx_yojson_conv_lib.( ! ) label_field - , Ppx_yojson_conv_lib.( ! ) parameters_field ) - with - | ( activeParameter_value - , documentation_value - , Ppx_yojson_conv_lib.Option.Some label_value - , parameters_value ) -> - { activeParameter = - (match activeParameter_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; documentation = - (match documentation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; label = label_value - ; parameters = - (match parameters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) label_field) - Ppx_yojson_conv_lib.Option.None - , "label" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "activeParameter" -> + (match Ppx_yojson_conv_lib.( ! ) activeParameter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Nullable_option.t_of_yojson int_of_yojson) + _field_yojson + in + activeParameter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "documentation" -> + (match Ppx_yojson_conv_lib.( ! ) documentation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + documentation_pvar_of_yojson + _field_yojson + in + documentation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "label" -> + (match Ppx_yojson_conv_lib.( ! ) label_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + label_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "parameters" -> + (match Ppx_yojson_conv_lib.( ! ) parameters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson ParameterInformation.t_of_yojson) + _field_yojson + in + parameters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) activeParameter_field + , Ppx_yojson_conv_lib.( ! ) documentation_field + , Ppx_yojson_conv_lib.( ! ) label_field + , Ppx_yojson_conv_lib.( ! ) parameters_field ) + with + | ( activeParameter_value + , documentation_value + , Ppx_yojson_conv_lib.Option.Some label_value + , parameters_value ) -> + { activeParameter = + (match activeParameter_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; documentation = + (match documentation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; label = label_value + ; parameters = + (match parameters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) label_field) + Ppx_yojson_conv_lib.Option.None + , "label" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -48587,60 +49046,70 @@ module SignatureInformation = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_parameters then bnds - else + if None = v_parameters + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (yojson_of_list ParameterInformation.yojson_of_t)) v_parameters in - let bnd = ("parameters", arg) in - bnd :: bnds + let bnd = "parameters", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_label in ("label", arg) :: bnds in let bnds = - if None = v_documentation then bnds - else + if None = v_documentation + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_documentation_pvar) v_documentation in - let bnd = ("documentation", arg) in - bnd :: bnds + let bnd = "documentation", arg in + bnd :: bnds) in let bnds = - if None = v_activeParameter then bnds - else + if None = v_activeParameter + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Nullable_option.yojson_of_t yojson_of_int)) v_activeParameter in - let bnd = ("activeParameter", arg) in - bnd :: bnds + let bnd = "activeParameter", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(activeParameter : int option option) - ?(documentation : documentation_pvar option) ~(label : string) - ?(parameters : ParameterInformation.t list option) (() : unit) : t = + let create + ?(activeParameter : int option option) + ?(documentation : documentation_pvar option) + ~(label : string) + ?(parameters : ParameterInformation.t list option) + (() : unit) + : t + = { activeParameter; documentation; label; parameters } + ;; end module SignatureHelp = struct type t = { activeParameter : int Json.Nullable_option.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; activeSignature : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; signatures : SignatureInformation.t list } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -48650,7 +49119,7 @@ module SignatureHelp = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SignatureHelp.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let activeParameter_field = ref Ppx_yojson_conv_lib.Option.None and activeSignature_field = ref Ppx_yojson_conv_lib.Option.None and signatures_field = ref Ppx_yojson_conv_lib.Option.None @@ -48659,86 +49128,85 @@ module SignatureHelp = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "activeParameter" -> ( - match Ppx_yojson_conv_lib.( ! ) activeParameter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Nullable_option.t_of_yojson int_of_yojson) - _field_yojson - in - activeParameter_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "activeSignature" -> ( - match Ppx_yojson_conv_lib.( ! ) activeSignature_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - activeSignature_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "signatures" -> ( - match Ppx_yojson_conv_lib.( ! ) signatures_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson SignatureInformation.t_of_yojson _field_yojson - in - signatures_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) activeParameter_field - , Ppx_yojson_conv_lib.( ! ) activeSignature_field - , Ppx_yojson_conv_lib.( ! ) signatures_field ) - with - | ( activeParameter_value - , activeSignature_value - , Ppx_yojson_conv_lib.Option.Some signatures_value ) -> - { activeParameter = - (match activeParameter_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; activeSignature = - (match activeSignature_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; signatures = signatures_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) signatures_field) - Ppx_yojson_conv_lib.Option.None - , "signatures" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "activeParameter" -> + (match Ppx_yojson_conv_lib.( ! ) activeParameter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Nullable_option.t_of_yojson int_of_yojson) + _field_yojson + in + activeParameter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "activeSignature" -> + (match Ppx_yojson_conv_lib.( ! ) activeSignature_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + activeSignature_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "signatures" -> + (match Ppx_yojson_conv_lib.( ! ) signatures_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson SignatureInformation.t_of_yojson _field_yojson + in + signatures_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) activeParameter_field + , Ppx_yojson_conv_lib.( ! ) activeSignature_field + , Ppx_yojson_conv_lib.( ! ) signatures_field ) + with + | ( activeParameter_value + , activeSignature_value + , Ppx_yojson_conv_lib.Option.Some signatures_value ) -> + { activeParameter = + (match activeParameter_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; activeSignature = + (match activeSignature_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; signatures = signatures_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) signatures_field) + Ppx_yojson_conv_lib.Option.None + , "signatures" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -48750,51 +49218,55 @@ module SignatureHelp = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - let arg = - yojson_of_list SignatureInformation.yojson_of_t v_signatures - in + let arg = yojson_of_list SignatureInformation.yojson_of_t v_signatures in ("signatures", arg) :: bnds in let bnds = - if None = v_activeSignature then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_activeSignature - in - let bnd = ("activeSignature", arg) in - bnd :: bnds + if None = v_activeSignature + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_activeSignature in + let bnd = "activeSignature", arg in + bnd :: bnds) in let bnds = - if None = v_activeParameter then bnds - else + if None = v_activeParameter + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Nullable_option.yojson_of_t yojson_of_int)) v_activeParameter in - let bnd = ("activeParameter", arg) in - bnd :: bnds + let bnd = "activeParameter", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(activeParameter : int option option) - ?(activeSignature : int option) - ~(signatures : SignatureInformation.t list) (() : unit) : t = + let create + ?(activeParameter : int option option) + ?(activeSignature : int option) + ~(signatures : SignatureInformation.t list) + (() : unit) + : t + = { activeParameter; activeSignature; signatures } + ;; end module SignatureHelpContext = struct type t = { activeSignatureHelp : SignatureHelp.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; isRetrigger : bool ; triggerCharacter : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; triggerKind : SignatureHelpTriggerKind.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -48804,7 +49276,7 @@ module SignatureHelpContext = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SignatureHelpContext.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let activeSignatureHelp_field = ref Ppx_yojson_conv_lib.Option.None and isRetrigger_field = ref Ppx_yojson_conv_lib.Option.None and triggerCharacter_field = ref Ppx_yojson_conv_lib.Option.None @@ -48814,101 +49286,97 @@ module SignatureHelpContext = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "activeSignatureHelp" -> ( - match Ppx_yojson_conv_lib.( ! ) activeSignatureHelp_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SignatureHelp.t_of_yojson - _field_yojson - in - activeSignatureHelp_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "isRetrigger" -> ( - match Ppx_yojson_conv_lib.( ! ) isRetrigger_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - isRetrigger_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerCharacter" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerCharacter_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - triggerCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerKind" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - SignatureHelpTriggerKind.t_of_yojson _field_yojson - in - triggerKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) activeSignatureHelp_field - , Ppx_yojson_conv_lib.( ! ) isRetrigger_field - , Ppx_yojson_conv_lib.( ! ) triggerCharacter_field - , Ppx_yojson_conv_lib.( ! ) triggerKind_field ) - with - | ( activeSignatureHelp_value - , Ppx_yojson_conv_lib.Option.Some isRetrigger_value - , triggerCharacter_value - , Ppx_yojson_conv_lib.Option.Some triggerKind_value ) -> - { activeSignatureHelp = - (match activeSignatureHelp_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; isRetrigger = isRetrigger_value - ; triggerCharacter = - (match triggerCharacter_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; triggerKind = triggerKind_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) isRetrigger_field) - Ppx_yojson_conv_lib.Option.None - , "isRetrigger" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) triggerKind_field) - Ppx_yojson_conv_lib.Option.None - , "triggerKind" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "activeSignatureHelp" -> + (match Ppx_yojson_conv_lib.( ! ) activeSignatureHelp_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SignatureHelp.t_of_yojson + _field_yojson + in + activeSignatureHelp_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "isRetrigger" -> + (match Ppx_yojson_conv_lib.( ! ) isRetrigger_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + isRetrigger_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerCharacter" -> + (match Ppx_yojson_conv_lib.( ! ) triggerCharacter_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + triggerCharacter_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerKind" -> + (match Ppx_yojson_conv_lib.( ! ) triggerKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SignatureHelpTriggerKind.t_of_yojson _field_yojson in + triggerKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) activeSignatureHelp_field + , Ppx_yojson_conv_lib.( ! ) isRetrigger_field + , Ppx_yojson_conv_lib.( ! ) triggerCharacter_field + , Ppx_yojson_conv_lib.( ! ) triggerKind_field ) + with + | ( activeSignatureHelp_value + , Ppx_yojson_conv_lib.Option.Some isRetrigger_value + , triggerCharacter_value + , Ppx_yojson_conv_lib.Option.Some triggerKind_value ) -> + { activeSignatureHelp = + (match activeSignatureHelp_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; isRetrigger = isRetrigger_value + ; triggerCharacter = + (match triggerCharacter_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; triggerKind = triggerKind_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) isRetrigger_field) + Ppx_yojson_conv_lib.Option.None + , "isRetrigger" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) triggerKind_field) + Ppx_yojson_conv_lib.Option.None + , "triggerKind" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -48925,50 +49393,58 @@ module SignatureHelpContext = struct ("triggerKind", arg) :: bnds in let bnds = - if None = v_triggerCharacter then bnds - else + if None = v_triggerCharacter + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) - v_triggerCharacter + (Json.Nullable_option.yojson_of_t yojson_of_string) v_triggerCharacter in - let bnd = ("triggerCharacter", arg) in - bnd :: bnds + let bnd = "triggerCharacter", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_bool v_isRetrigger in ("isRetrigger", arg) :: bnds in let bnds = - if None = v_activeSignatureHelp then bnds - else + if None = v_activeSignatureHelp + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t SignatureHelp.yojson_of_t) v_activeSignatureHelp in - let bnd = ("activeSignatureHelp", arg) in - bnd :: bnds + let bnd = "activeSignatureHelp", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(activeSignatureHelp : SignatureHelp.t option) - ~(isRetrigger : bool) ?(triggerCharacter : string option) - ~(triggerKind : SignatureHelpTriggerKind.t) (() : unit) : t = + let create + ?(activeSignatureHelp : SignatureHelp.t option) + ~(isRetrigger : bool) + ?(triggerCharacter : string option) + ~(triggerKind : SignatureHelpTriggerKind.t) + (() : unit) + : t + = { activeSignatureHelp; isRetrigger; triggerCharacter; triggerKind } + ;; end module SignatureHelpParams = struct type t = { context : SignatureHelpContext.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -48977,7 +49453,7 @@ module SignatureHelpParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SignatureHelpParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let context_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -48987,100 +49463,99 @@ module SignatureHelpParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "context" -> ( - match Ppx_yojson_conv_lib.( ! ) context_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SignatureHelpContext.t_of_yojson - _field_yojson - in - context_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) context_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( context_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { context = - (match context_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "context" -> + (match Ppx_yojson_conv_lib.( ! ) context_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SignatureHelpContext.t_of_yojson + _field_yojson + in + context_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) context_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( context_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { context = + (match context_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -49093,14 +49568,14 @@ module SignatureHelpParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -49111,38 +49586,45 @@ module SignatureHelpParams = struct ("position", arg) :: bnds in let bnds = - if None = v_context then bnds - else + if None = v_context + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t SignatureHelpContext.yojson_of_t) - v_context + (Json.Nullable_option.yojson_of_t SignatureHelpContext.yojson_of_t) v_context in - let bnd = ("context", arg) in - bnd :: bnds + let bnd = "context", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(context : SignatureHelpContext.t option) ~(position : Position.t) - ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(context : SignatureHelpContext.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { context; position; textDocument; workDoneToken } + ;; end module SignatureHelpRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; retriggerCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; triggerCharacters : string list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -49151,7 +49633,7 @@ module SignatureHelpRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SignatureHelpRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and retriggerCharacters_field = ref Ppx_yojson_conv_lib.Option.None and triggerCharacters_field = ref Ppx_yojson_conv_lib.Option.None @@ -49161,99 +49643,98 @@ module SignatureHelpRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "retriggerCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) retriggerCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - retriggerCharacters_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "triggerCharacters" -> ( - match Ppx_yojson_conv_lib.( ! ) triggerCharacters_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson string_of_yojson) - _field_yojson - in - triggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( documentSelector_value - , retriggerCharacters_value - , triggerCharacters_value - , workDoneProgress_value ) = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) retriggerCharacters_field - , Ppx_yojson_conv_lib.( ! ) triggerCharacters_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; retriggerCharacters = - (match retriggerCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; triggerCharacters = - (match triggerCharacters_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "retriggerCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) retriggerCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + retriggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "triggerCharacters" -> + (match Ppx_yojson_conv_lib.( ! ) triggerCharacters_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson string_of_yojson) + _field_yojson + in + triggerCharacters_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( documentSelector_value + , retriggerCharacters_value + , triggerCharacters_value + , workDoneProgress_value ) + = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) retriggerCharacters_field + , Ppx_yojson_conv_lib.( ! ) triggerCharacters_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; retriggerCharacters = + (match retriggerCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; triggerCharacters = + (match triggerCharacters_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -49266,70 +49747,71 @@ module SignatureHelpRegistrationOptions = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_triggerCharacters then bnds - else + if None = v_triggerCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_triggerCharacters in - let bnd = ("triggerCharacters", arg) in - bnd :: bnds + let bnd = "triggerCharacters", arg in + bnd :: bnds) in let bnds = - if None = v_retriggerCharacters then bnds - else + if None = v_retriggerCharacters + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list yojson_of_string)) + (Json.Nullable_option.yojson_of_t (yojson_of_list yojson_of_string)) v_retriggerCharacters in - let bnd = ("retriggerCharacters", arg) in - bnd :: bnds + let bnd = "retriggerCharacters", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(retriggerCharacters : string list option) - ?(triggerCharacters : string list option) - ?(workDoneProgress : bool option) (() : unit) : t = - { documentSelector - ; retriggerCharacters - ; triggerCharacters - ; workDoneProgress - } + let create + ?(documentSelector : DocumentSelector.t option) + ?(retriggerCharacters : string list option) + ?(triggerCharacters : string list option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = + { documentSelector; retriggerCharacters; triggerCharacters; workDoneProgress } + ;; end module StaticRegistrationOptions = struct type t = - { id : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - } + { id : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () @@ -49337,52 +49819,51 @@ module StaticRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.StaticRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let id_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let id_value = Ppx_yojson_conv_lib.( ! ) id_field in - { id = - (match id_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let id_value = Ppx_yojson_conv_lib.( ! ) id_field in + { id = + (match id_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -49391,14 +49872,16 @@ module StaticRegistrationOptions = struct | { id = v_id } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_id then bnds - else + if None = v_id + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_id in - let bnd = ("id", arg) in - bnd :: bnds + let bnd = "id", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -49410,14 +49893,14 @@ end module SymbolInformation = struct type t = { containerName : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; deprecated : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; kind : SymbolKind.t ; location : Location.t ; name : string ; tags : SymbolTag.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -49426,7 +49909,7 @@ module SymbolInformation = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.SymbolInformation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let containerName_field = ref Ppx_yojson_conv_lib.Option.None and deprecated_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None @@ -49438,127 +49921,126 @@ module SymbolInformation = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "containerName" -> ( - match Ppx_yojson_conv_lib.( ! ) containerName_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - containerName_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "deprecated" -> ( - match Ppx_yojson_conv_lib.( ! ) deprecated_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - deprecated_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = SymbolKind.t_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "location" -> ( - match Ppx_yojson_conv_lib.( ! ) location_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Location.t_of_yojson _field_yojson in - location_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tags" -> ( - match Ppx_yojson_conv_lib.( ! ) tags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson SymbolTag.t_of_yojson) - _field_yojson - in - tags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) containerName_field - , Ppx_yojson_conv_lib.( ! ) deprecated_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) location_field - , Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) tags_field ) - with - | ( containerName_value - , deprecated_value - , Ppx_yojson_conv_lib.Option.Some kind_value - , Ppx_yojson_conv_lib.Option.Some location_value - , Ppx_yojson_conv_lib.Option.Some name_value - , tags_value ) -> - { containerName = - (match containerName_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; deprecated = - (match deprecated_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = kind_value - ; location = location_value - ; name = name_value - ; tags = - (match tags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) location_field) - Ppx_yojson_conv_lib.Option.None - , "location" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "containerName" -> + (match Ppx_yojson_conv_lib.( ! ) containerName_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + containerName_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "deprecated" -> + (match Ppx_yojson_conv_lib.( ! ) deprecated_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + deprecated_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SymbolKind.t_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "location" -> + (match Ppx_yojson_conv_lib.( ! ) location_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Location.t_of_yojson _field_yojson in + location_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tags" -> + (match Ppx_yojson_conv_lib.( ! ) tags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson SymbolTag.t_of_yojson) + _field_yojson + in + tags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) containerName_field + , Ppx_yojson_conv_lib.( ! ) deprecated_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) location_field + , Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) tags_field ) + with + | ( containerName_value + , deprecated_value + , Ppx_yojson_conv_lib.Option.Some kind_value + , Ppx_yojson_conv_lib.Option.Some location_value + , Ppx_yojson_conv_lib.Option.Some name_value + , tags_value ) -> + { containerName = + (match containerName_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; deprecated = + (match deprecated_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = kind_value + ; location = location_value + ; name = name_value + ; tags = + (match tags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) location_field) + Ppx_yojson_conv_lib.Option.None + , "location" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -49573,15 +50055,15 @@ module SymbolInformation = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_tags then bnds - else + if None = v_tags + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list SymbolTag.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list SymbolTag.yojson_of_t)) v_tags in - let bnd = ("tags", arg) in - bnd :: bnds + let bnd = "tags", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_name in @@ -49596,40 +50078,49 @@ module SymbolInformation = struct ("kind", arg) :: bnds in let bnds = - if None = v_deprecated then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_deprecated - in - let bnd = ("deprecated", arg) in - bnd :: bnds + if None = v_deprecated + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_deprecated in + let bnd = "deprecated", arg in + bnd :: bnds) in let bnds = - if None = v_containerName then bnds - else + if None = v_containerName + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_containerName in - let bnd = ("containerName", arg) in - bnd :: bnds + let bnd = "containerName", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(containerName : string option) ?(deprecated : bool option) - ~(kind : SymbolKind.t) ~(location : Location.t) ~(name : string) - ?(tags : SymbolTag.t list option) (() : unit) : t = + let create + ?(containerName : string option) + ?(deprecated : bool option) + ~(kind : SymbolKind.t) + ~(location : Location.t) + ~(name : string) + ?(tags : SymbolTag.t list option) + (() : unit) + : t + = { containerName; deprecated; kind; location; name; tags } + ;; end module TextDocumentChangeRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; syncKind : TextDocumentSyncKind.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -49639,7 +50130,7 @@ module TextDocumentChangeRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentChangeRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and syncKind_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -49647,69 +50138,67 @@ module TextDocumentChangeRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "syncKind" -> ( - match Ppx_yojson_conv_lib.( ! ) syncKind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentSyncKind.t_of_yojson _field_yojson in - syncKind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "syncKind" -> + (match Ppx_yojson_conv_lib.( ! ) syncKind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentSyncKind.t_of_yojson _field_yojson in + syncKind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) syncKind_field ) - with - | ( documentSelector_value - , Ppx_yojson_conv_lib.Option.Some syncKind_value ) -> - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; syncKind = syncKind_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) syncKind_field) - Ppx_yojson_conv_lib.Option.None - , "syncKind" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) syncKind_field ) + with + | documentSelector_value, Ppx_yojson_conv_lib.Option.Some syncKind_value -> + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; syncKind = syncKind_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) syncKind_field) + Ppx_yojson_conv_lib.Option.None + , "syncKind" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -49722,25 +50211,32 @@ module TextDocumentChangeRegistrationOptions = struct ("syncKind", arg) :: bnds in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ~(syncKind : TextDocumentSyncKind.t) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ~(syncKind : TextDocumentSyncKind.t) + (() : unit) + : t + = { documentSelector; syncKind } + ;; end module TextDocumentPositionParams = struct @@ -49755,7 +50251,7 @@ module TextDocumentPositionParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentPositionParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -49763,64 +50259,63 @@ module TextDocumentPositionParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> - { position = position_value; textDocument = textDocument_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> + { position = position_value; textDocument = textDocument_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -49837,21 +50332,22 @@ module TextDocumentPositionParams = struct ("position", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - : t = + let create ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) : t = { position; textDocument } + ;; end module TextDocumentRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -49860,56 +50356,55 @@ module TextDocumentRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value = - Ppx_yojson_conv_lib.( ! ) documentSelector_field - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value = + Ppx_yojson_conv_lib.( ! ) documentSelector_field + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -49918,17 +50413,19 @@ module TextDocumentRegistrationOptions = struct | { documentSelector = v_documentSelector } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -49936,14 +50433,15 @@ module TextDocumentRegistrationOptions = struct let create ?(documentSelector : DocumentSelector.t option) (() : unit) : t = { documentSelector } + ;; end module TextDocumentSaveRegistrationOptions = struct type t = { documentSelector : DocumentSelector.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; includeText : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -49952,7 +50450,7 @@ module TextDocumentSaveRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TextDocumentSaveRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let documentSelector_field = ref Ppx_yojson_conv_lib.Option.None and includeText_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -49960,63 +50458,62 @@ module TextDocumentSaveRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "documentSelector" -> ( - match Ppx_yojson_conv_lib.( ! ) documentSelector_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DocumentSelector.t_of_yojson - _field_yojson - in - documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "includeText" -> ( - match Ppx_yojson_conv_lib.( ! ) includeText_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - includeText_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "documentSelector" -> + (match Ppx_yojson_conv_lib.( ! ) documentSelector_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DocumentSelector.t_of_yojson + _field_yojson + in + documentSelector_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "includeText" -> + (match Ppx_yojson_conv_lib.( ! ) includeText_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + includeText_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let documentSelector_value, includeText_value = - ( Ppx_yojson_conv_lib.( ! ) documentSelector_field - , Ppx_yojson_conv_lib.( ! ) includeText_field ) - in - { documentSelector = - (match documentSelector_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; includeText = - (match includeText_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let documentSelector_value, includeText_value = + ( Ppx_yojson_conv_lib.( ! ) documentSelector_field + , Ppx_yojson_conv_lib.( ! ) includeText_field ) + in + { documentSelector = + (match documentSelector_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; includeText = + (match includeText_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -50025,44 +50522,50 @@ module TextDocumentSaveRegistrationOptions = struct | { documentSelector = v_documentSelector; includeText = v_includeText } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_includeText then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_includeText - in - let bnd = ("includeText", arg) in - bnd :: bnds + if None = v_includeText + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_includeText in + let bnd = "includeText", arg in + bnd :: bnds) in let bnds = - if None = v_documentSelector then bnds - else + if None = v_documentSelector + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DocumentSelector.yojson_of_t) v_documentSelector in - let bnd = ("documentSelector", arg) in - bnd :: bnds + let bnd = "documentSelector", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(documentSelector : DocumentSelector.t option) - ?(includeText : bool option) (() : unit) : t = + let create + ?(documentSelector : DocumentSelector.t option) + ?(includeText : bool option) + (() : unit) + : t + = { documentSelector; includeText } + ;; end module TypeDefinitionParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -50071,7 +50574,7 @@ module TypeDefinitionParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeDefinitionParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None @@ -50081,101 +50584,99 @@ module TypeDefinitionParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -50188,14 +50689,14 @@ module TypeDefinitionParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -50206,39 +50707,46 @@ module TypeDefinitionParams = struct ("position", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) - ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; position; textDocument; workDoneToken } + ;; end module TypeHierarchyItem = struct type t = { data : Json.t option [@yojson.option] - ; detail : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; detail : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; kind : SymbolKind.t ; name : string ; range : Range.t ; selectionRange : Range.t ; tags : SymbolTag.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; uri : DocumentUri.t } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -50248,7 +50756,7 @@ module TypeHierarchyItem = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeHierarchyItem.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let data_field = ref Ppx_yojson_conv_lib.Option.None and detail_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None @@ -50262,150 +50770,149 @@ module TypeHierarchyItem = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "detail" -> ( - match Ppx_yojson_conv_lib.( ! ) detail_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - detail_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = SymbolKind.t_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "range" -> ( - match Ppx_yojson_conv_lib.( ! ) range_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - range_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "selectionRange" -> ( - match Ppx_yojson_conv_lib.( ! ) selectionRange_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Range.t_of_yojson _field_yojson in - selectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tags" -> ( - match Ppx_yojson_conv_lib.( ! ) tags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson SymbolTag.t_of_yojson) - _field_yojson - in - tags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) detail_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) range_field - , Ppx_yojson_conv_lib.( ! ) selectionRange_field - , Ppx_yojson_conv_lib.( ! ) tags_field - , Ppx_yojson_conv_lib.( ! ) uri_field ) - with - | ( data_value - , detail_value - , Ppx_yojson_conv_lib.Option.Some kind_value - , Ppx_yojson_conv_lib.Option.Some name_value - , Ppx_yojson_conv_lib.Option.Some range_value - , Ppx_yojson_conv_lib.Option.Some selectionRange_value - , tags_value - , Ppx_yojson_conv_lib.Option.Some uri_value ) -> - { data = data_value - ; detail = - (match detail_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; kind = kind_value - ; name = name_value - ; range = range_value - ; selectionRange = selectionRange_value - ; tags = - (match tags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; uri = uri_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) range_field) - Ppx_yojson_conv_lib.Option.None - , "range" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) selectionRange_field) - Ppx_yojson_conv_lib.Option.None - , "selectionRange" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "detail" -> + (match Ppx_yojson_conv_lib.( ! ) detail_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + detail_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SymbolKind.t_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "range" -> + (match Ppx_yojson_conv_lib.( ! ) range_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + range_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "selectionRange" -> + (match Ppx_yojson_conv_lib.( ! ) selectionRange_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Range.t_of_yojson _field_yojson in + selectionRange_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tags" -> + (match Ppx_yojson_conv_lib.( ! ) tags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson SymbolTag.t_of_yojson) + _field_yojson + in + tags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) detail_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) range_field + , Ppx_yojson_conv_lib.( ! ) selectionRange_field + , Ppx_yojson_conv_lib.( ! ) tags_field + , Ppx_yojson_conv_lib.( ! ) uri_field ) + with + | ( data_value + , detail_value + , Ppx_yojson_conv_lib.Option.Some kind_value + , Ppx_yojson_conv_lib.Option.Some name_value + , Ppx_yojson_conv_lib.Option.Some range_value + , Ppx_yojson_conv_lib.Option.Some selectionRange_value + , tags_value + , Ppx_yojson_conv_lib.Option.Some uri_value ) -> + { data = data_value + ; detail = + (match detail_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; kind = kind_value + ; name = name_value + ; range = range_value + ; selectionRange = selectionRange_value + ; tags = + (match tags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; uri = uri_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) range_field) + Ppx_yojson_conv_lib.Option.None + , "range" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) selectionRange_field) + Ppx_yojson_conv_lib.Option.None + , "selectionRange" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -50426,15 +50933,15 @@ module TypeHierarchyItem = struct ("uri", arg) :: bnds in let bnds = - if None = v_tags then bnds - else + if None = v_tags + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list SymbolTag.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list SymbolTag.yojson_of_t)) v_tags in - let bnd = ("tags", arg) in - bnd :: bnds + let bnd = "tags", arg in + bnd :: bnds) in let bnds = let arg = Range.yojson_of_t v_selectionRange in @@ -50453,34 +50960,43 @@ module TypeHierarchyItem = struct ("kind", arg) :: bnds in let bnds = - if None = v_detail then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail - in - let bnd = ("detail", arg) in - bnd :: bnds + if None = v_detail + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_detail in + let bnd = "detail", arg in + bnd :: bnds) in let bnds = match v_data with | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(data : Json.t option) ?(detail : string option) - ~(kind : SymbolKind.t) ~(name : string) ~(range : Range.t) - ~(selectionRange : Range.t) ?(tags : SymbolTag.t list option) - ~(uri : DocumentUri.t) (() : unit) : t = + let create + ?(data : Json.t option) + ?(detail : string option) + ~(kind : SymbolKind.t) + ~(name : string) + ~(range : Range.t) + ~(selectionRange : Range.t) + ?(tags : SymbolTag.t list option) + ~(uri : DocumentUri.t) + (() : unit) + : t + = { data; detail; kind; name; range; selectionRange; tags; uri } + ;; end module TypeHierarchyPrepareParams = struct @@ -50488,7 +51004,7 @@ module TypeHierarchyPrepareParams = struct { position : Position.t ; textDocument : TextDocumentIdentifier.t ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -50497,7 +51013,7 @@ module TypeHierarchyPrepareParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeHierarchyPrepareParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let position_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -50506,83 +51022,82 @@ module TypeHierarchyPrepareParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) position_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some position_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value - , workDoneToken_value ) -> - { position = position_value - ; textDocument = textDocument_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) position_field) - Ppx_yojson_conv_lib.Option.None - , "position" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) position_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some position_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value + , workDoneToken_value ) -> + { position = position_value + ; textDocument = textDocument_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) position_field) + Ppx_yojson_conv_lib.Option.None + , "position" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -50594,14 +51109,14 @@ module TypeHierarchyPrepareParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = TextDocumentIdentifier.yojson_of_t v_textDocument in @@ -50612,24 +51127,31 @@ module TypeHierarchyPrepareParams = struct ("position", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(position : Position.t) ~(textDocument : TextDocumentIdentifier.t) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(position : Position.t) + ~(textDocument : TextDocumentIdentifier.t) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { position; textDocument; workDoneToken } + ;; end module TypeHierarchySubtypesParams = struct type t = { item : TypeHierarchyItem.t ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -50638,7 +51160,7 @@ module TypeHierarchySubtypesParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeHierarchySubtypesParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let item_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -50647,87 +51169,85 @@ module TypeHierarchySubtypesParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "item" -> ( - match Ppx_yojson_conv_lib.( ! ) item_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TypeHierarchyItem.t_of_yojson _field_yojson in - item_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) item_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some item_value - , partialResultToken_value - , workDoneToken_value ) -> - { item = item_value - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "item" -> + (match Ppx_yojson_conv_lib.( ! ) item_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TypeHierarchyItem.t_of_yojson _field_yojson in + item_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) item_field) - Ppx_yojson_conv_lib.Option.None - , "item" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) item_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some item_value + , partialResultToken_value + , workDoneToken_value ) -> + { item = item_value + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) item_field) + Ppx_yojson_conv_lib.Option.None + , "item" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -50739,49 +51259,56 @@ module TypeHierarchySubtypesParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = let arg = TypeHierarchyItem.yojson_of_t v_item in ("item", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(item : TypeHierarchyItem.t) - ?(partialResultToken : ProgressToken.t option) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(item : TypeHierarchyItem.t) + ?(partialResultToken : ProgressToken.t option) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { item; partialResultToken; workDoneToken } + ;; end module TypeHierarchySupertypesParams = struct type t = { item : TypeHierarchyItem.t ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -50790,7 +51317,7 @@ module TypeHierarchySupertypesParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.TypeHierarchySupertypesParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let item_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -50799,87 +51326,85 @@ module TypeHierarchySupertypesParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "item" -> ( - match Ppx_yojson_conv_lib.( ! ) item_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TypeHierarchyItem.t_of_yojson _field_yojson in - item_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) item_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some item_value - , partialResultToken_value - , workDoneToken_value ) -> - { item = item_value - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "item" -> + (match Ppx_yojson_conv_lib.( ! ) item_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TypeHierarchyItem.t_of_yojson _field_yojson in + item_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) item_field) - Ppx_yojson_conv_lib.Option.None - , "item" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) item_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some item_value + , partialResultToken_value + , workDoneToken_value ) -> + { item = item_value + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) item_field) + Ppx_yojson_conv_lib.Option.None + , "item" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -50891,40 +51416,47 @@ module TypeHierarchySupertypesParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = let arg = TypeHierarchyItem.yojson_of_t v_item in ("item", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(item : TypeHierarchyItem.t) - ?(partialResultToken : ProgressToken.t option) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ~(item : TypeHierarchyItem.t) + ?(partialResultToken : ProgressToken.t option) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { item; partialResultToken; workDoneToken } + ;; end module Unregistration = struct @@ -50939,7 +51471,7 @@ module Unregistration = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.Unregistration.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let id_field = ref Ppx_yojson_conv_lib.Option.None and method__field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -50947,64 +51479,63 @@ module Unregistration = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "id" -> ( - match Ppx_yojson_conv_lib.( ! ) id_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - id_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "method" -> ( - match Ppx_yojson_conv_lib.( ! ) method__field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - method__field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "id" -> + (match Ppx_yojson_conv_lib.( ! ) id_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + id_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "method" -> + (match Ppx_yojson_conv_lib.( ! ) method__field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + method__field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) id_field - , Ppx_yojson_conv_lib.( ! ) method__field ) - with - | ( Ppx_yojson_conv_lib.Option.Some id_value - , Ppx_yojson_conv_lib.Option.Some method__value ) -> - { id = id_value; method_ = method__value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) id_field) - Ppx_yojson_conv_lib.Option.None - , "id" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) method__field) - Ppx_yojson_conv_lib.Option.None - , "method_" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) id_field + , Ppx_yojson_conv_lib.( ! ) method__field ) + with + | ( Ppx_yojson_conv_lib.Option.Some id_value + , Ppx_yojson_conv_lib.Option.Some method__value ) -> + { id = id_value; method_ = method__value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) id_field) + Ppx_yojson_conv_lib.Option.None + , "id" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) method__field) + Ppx_yojson_conv_lib.Option.None + , "method_" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51021,7 +51552,8 @@ module Unregistration = struct ("id", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -51039,58 +51571,55 @@ module UnregistrationParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.UnregistrationParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let unregisterations_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "unregisterations" -> ( - match Ppx_yojson_conv_lib.( ! ) unregisterations_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson Unregistration.t_of_yojson _field_yojson - in - unregisterations_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "unregisterations" -> + (match Ppx_yojson_conv_lib.( ! ) unregisterations_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Unregistration.t_of_yojson _field_yojson in + unregisterations_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) unregisterations_field with - | Ppx_yojson_conv_lib.Option.Some unregisterations_value -> - { unregisterations = unregisterations_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) unregisterations_field) - Ppx_yojson_conv_lib.Option.None - , "unregisterations" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) unregisterations_field with + | Ppx_yojson_conv_lib.Option.Some unregisterations_value -> + { unregisterations = unregisterations_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) unregisterations_field) + Ppx_yojson_conv_lib.Option.None + , "unregisterations" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51099,20 +51628,18 @@ module UnregistrationParams = struct | { unregisterations = v_unregisterations } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - let arg = - yojson_of_list Unregistration.yojson_of_t v_unregisterations - in + let arg = yojson_of_list Unregistration.yojson_of_t v_unregisterations in ("unregisterations", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(unregisterations : Unregistration.t list) : t = - { unregisterations } + let create ~(unregisterations : Unregistration.t list) : t = { unregisterations } end module WillSaveTextDocumentParams = struct @@ -51127,7 +51654,7 @@ module WillSaveTextDocumentParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WillSaveTextDocumentParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let reason_field = ref Ppx_yojson_conv_lib.Option.None and textDocument_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -51135,64 +51662,63 @@ module WillSaveTextDocumentParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "reason" -> ( - match Ppx_yojson_conv_lib.( ! ) reason_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentSaveReason.t_of_yojson _field_yojson in - reason_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) textDocument_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "reason" -> + (match Ppx_yojson_conv_lib.( ! ) reason_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentSaveReason.t_of_yojson _field_yojson in + reason_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) textDocument_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + textDocument_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) reason_field - , Ppx_yojson_conv_lib.( ! ) textDocument_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some reason_value - , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> - { reason = reason_value; textDocument = textDocument_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) reason_field) - Ppx_yojson_conv_lib.Option.None - , "reason" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) textDocument_field) - Ppx_yojson_conv_lib.Option.None - , "textDocument" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) reason_field + , Ppx_yojson_conv_lib.( ! ) textDocument_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some reason_value + , Ppx_yojson_conv_lib.Option.Some textDocument_value ) -> + { reason = reason_value; textDocument = textDocument_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) reason_field) + Ppx_yojson_conv_lib.Option.None + , "reason" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) textDocument_field) + Ppx_yojson_conv_lib.Option.None + , "textDocument" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51209,25 +51735,28 @@ module WillSaveTextDocumentParams = struct ("reason", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(reason : TextDocumentSaveReason.t) - ~(textDocument : TextDocumentIdentifier.t) : t = + let create + ~(reason : TextDocumentSaveReason.t) + ~(textDocument : TextDocumentIdentifier.t) + : t + = { reason; textDocument } + ;; end module WorkDoneProgressBegin = struct type t = { cancellable : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; message : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; percentage : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; message : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; percentage : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; title : string } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -51237,7 +51766,7 @@ module WorkDoneProgressBegin = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkDoneProgressBegin.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let cancellable_field = ref Ppx_yojson_conv_lib.Option.None and message_field = ref Ppx_yojson_conv_lib.Option.None and percentage_field = ref Ppx_yojson_conv_lib.Option.None @@ -51247,97 +51776,96 @@ module WorkDoneProgressBegin = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "cancellable" -> ( - match Ppx_yojson_conv_lib.( ! ) cancellable_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - cancellable_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "percentage" -> ( - match Ppx_yojson_conv_lib.( ! ) percentage_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - percentage_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "title" -> ( - match Ppx_yojson_conv_lib.( ! ) title_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - title_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) cancellable_field - , Ppx_yojson_conv_lib.( ! ) message_field - , Ppx_yojson_conv_lib.( ! ) percentage_field - , Ppx_yojson_conv_lib.( ! ) title_field ) - with - | ( cancellable_value - , message_value - , percentage_value - , Ppx_yojson_conv_lib.Option.Some title_value ) -> - { cancellable = - (match cancellable_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; message = - (match message_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; percentage = - (match percentage_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; title = title_value - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "cancellable" -> + (match Ppx_yojson_conv_lib.( ! ) cancellable_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + cancellable_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "percentage" -> + (match Ppx_yojson_conv_lib.( ! ) percentage_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + percentage_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "title" -> + (match Ppx_yojson_conv_lib.( ! ) title_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + title_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) title_field) - Ppx_yojson_conv_lib.Option.None - , "title" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) cancellable_field + , Ppx_yojson_conv_lib.( ! ) message_field + , Ppx_yojson_conv_lib.( ! ) percentage_field + , Ppx_yojson_conv_lib.( ! ) title_field ) + with + | ( cancellable_value + , message_value + , percentage_value + , Ppx_yojson_conv_lib.Option.Some title_value ) -> + { cancellable = + (match cancellable_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; message = + (match message_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; percentage = + (match percentage_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; title = title_value + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) title_field) + Ppx_yojson_conv_lib.Option.None + , "title" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51354,48 +51882,53 @@ module WorkDoneProgressBegin = struct ("title", arg) :: bnds in let bnds = - if None = v_percentage then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_percentage - in - let bnd = ("percentage", arg) in - bnd :: bnds + if None = v_percentage + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_percentage in + let bnd = "percentage", arg in + bnd :: bnds) in let bnds = - if None = v_message then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_message - in - let bnd = ("message", arg) in - bnd :: bnds + if None = v_message + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_message in + let bnd = "message", arg in + bnd :: bnds) in let bnds = - if None = v_cancellable then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_cancellable - in - let bnd = ("cancellable", arg) in - bnd :: bnds + if None = v_cancellable + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_cancellable in + let bnd = "cancellable", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(cancellable : bool option) ?(message : string option) - ?(percentage : int option) ~(title : string) (() : unit) : t = + let create + ?(cancellable : bool option) + ?(message : string option) + ?(percentage : int option) + ~(title : string) + (() : unit) + : t + = { cancellable; message; percentage; title } + ;; - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "begin" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "begin" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "begin" t_of_yojson json + ;; end module WorkDoneProgressCancelParams = struct @@ -51407,56 +51940,54 @@ module WorkDoneProgressCancelParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkDoneProgressCancelParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let token_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "token" -> ( - match Ppx_yojson_conv_lib.( ! ) token_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = ProgressToken.t_of_yojson _field_yojson in - token_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "token" -> + (match Ppx_yojson_conv_lib.( ! ) token_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = ProgressToken.t_of_yojson _field_yojson in + token_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) token_field with - | Ppx_yojson_conv_lib.Option.Some token_value -> - { token = token_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) token_field) - Ppx_yojson_conv_lib.Option.None - , "token" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) token_field with + | Ppx_yojson_conv_lib.Option.Some token_value -> { token = token_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) token_field) + Ppx_yojson_conv_lib.Option.None + , "token" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51469,7 +52000,8 @@ module WorkDoneProgressCancelParams = struct ("token", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -51487,56 +52019,54 @@ module WorkDoneProgressCreateParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkDoneProgressCreateParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let token_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "token" -> ( - match Ppx_yojson_conv_lib.( ! ) token_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = ProgressToken.t_of_yojson _field_yojson in - token_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "token" -> + (match Ppx_yojson_conv_lib.( ! ) token_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = ProgressToken.t_of_yojson _field_yojson in + token_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) token_field with - | Ppx_yojson_conv_lib.Option.Some token_value -> - { token = token_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) token_field) - Ppx_yojson_conv_lib.Option.None - , "token" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) token_field with + | Ppx_yojson_conv_lib.Option.Some token_value -> { token = token_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) token_field) + Ppx_yojson_conv_lib.Option.None + , "token" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51549,7 +52079,8 @@ module WorkDoneProgressCreateParams = struct ("token", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -51560,8 +52091,7 @@ end module WorkDoneProgressEnd = struct type t = - { message : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { message : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -51570,52 +52100,51 @@ module WorkDoneProgressEnd = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkDoneProgressEnd.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let message_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let message_value = Ppx_yojson_conv_lib.( ! ) message_field in - { message = - (match message_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let message_value = Ppx_yojson_conv_lib.( ! ) message_field in + { message = + (match message_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51624,34 +52153,33 @@ module WorkDoneProgressEnd = struct | { message = v_message } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_message then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_message - in - let bnd = ("message", arg) in - bnd :: bnds + if None = v_message + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_message in + let bnd = "message", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] let create ?(message : string option) (() : unit) : t = { message } - - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "end" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "end" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "end" t_of_yojson json + ;; end module WorkDoneProgressOptions = struct type t = { workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -51660,54 +52188,53 @@ module WorkDoneProgressOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkDoneProgressOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneProgress_value = - Ppx_yojson_conv_lib.( ! ) workDoneProgress_field - in - { workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneProgress_value = + Ppx_yojson_conv_lib.( ! ) workDoneProgress_field + in + { workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51716,30 +52243,30 @@ module WorkDoneProgressOptions = struct | { workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneProgress : bool option) (() : unit) : t = - { workDoneProgress } + let create ?(workDoneProgress : bool option) (() : unit) : t = { workDoneProgress } end module WorkDoneProgressParams = struct type t = { workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -51748,56 +52275,53 @@ module WorkDoneProgressParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkDoneProgressParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workDoneToken_value = - Ppx_yojson_conv_lib.( ! ) workDoneToken_field - in - { workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workDoneToken_value = Ppx_yojson_conv_lib.( ! ) workDoneToken_field in + { workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -51806,34 +52330,32 @@ module WorkDoneProgressParams = struct | { workDoneToken = v_workDoneToken } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workDoneToken : ProgressToken.t option) (() : unit) : t = - { workDoneToken } + let create ?(workDoneToken : ProgressToken.t option) (() : unit) : t = { workDoneToken } end module WorkDoneProgressReport = struct type t = { cancellable : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; message : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] - ; percentage : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] + ; message : string Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] + ; percentage : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -51842,7 +52364,7 @@ module WorkDoneProgressReport = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkDoneProgressReport.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let cancellable_field = ref Ppx_yojson_conv_lib.Option.None and message_field = ref Ppx_yojson_conv_lib.Option.None and percentage_field = ref Ppx_yojson_conv_lib.Option.None @@ -51851,139 +52373,139 @@ module WorkDoneProgressReport = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "cancellable" -> ( - match Ppx_yojson_conv_lib.( ! ) cancellable_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - cancellable_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "message" -> ( - match Ppx_yojson_conv_lib.( ! ) message_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - message_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "percentage" -> ( - match Ppx_yojson_conv_lib.( ! ) percentage_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - percentage_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let cancellable_value, message_value, percentage_value = - ( Ppx_yojson_conv_lib.( ! ) cancellable_field - , Ppx_yojson_conv_lib.( ! ) message_field - , Ppx_yojson_conv_lib.( ! ) percentage_field ) - in - { cancellable = - (match cancellable_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; message = - (match message_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; percentage = - (match percentage_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + | "cancellable" -> + (match Ppx_yojson_conv_lib.( ! ) cancellable_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + cancellable_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "message" -> + (match Ppx_yojson_conv_lib.( ! ) message_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + message_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "percentage" -> + (match Ppx_yojson_conv_lib.( ! ) percentage_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + percentage_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let cancellable_value, message_value, percentage_value = + ( Ppx_yojson_conv_lib.( ! ) cancellable_field + , Ppx_yojson_conv_lib.( ! ) message_field + , Ppx_yojson_conv_lib.( ! ) percentage_field ) + in + { cancellable = + (match cancellable_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; message = + (match message_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; percentage = + (match percentage_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { cancellable = v_cancellable - ; message = v_message - ; percentage = v_percentage - } -> + | { cancellable = v_cancellable; message = v_message; percentage = v_percentage } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_percentage then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_percentage - in - let bnd = ("percentage", arg) in - bnd :: bnds + if None = v_percentage + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_percentage in + let bnd = "percentage", arg in + bnd :: bnds) in let bnds = - if None = v_message then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_message - in - let bnd = ("message", arg) in - bnd :: bnds + if None = v_message + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_message in + let bnd = "message", arg in + bnd :: bnds) in let bnds = - if None = v_cancellable then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) v_cancellable - in - let bnd = ("cancellable", arg) in - bnd :: bnds + if None = v_cancellable + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_cancellable in + let bnd = "cancellable", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(cancellable : bool option) ?(message : string option) - ?(percentage : int option) (() : unit) : t = + let create + ?(cancellable : bool option) + ?(message : string option) + ?(percentage : int option) + (() : unit) + : t + = { cancellable; message; percentage } + ;; - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "report" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "report" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "report" t_of_yojson json + ;; end module WorkspaceDiagnosticParams = struct type t = { identifier : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; previousResultIds : PreviousResultId.t list ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -51992,7 +52514,7 @@ module WorkspaceDiagnosticParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceDiagnosticParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let identifier_field = ref Ppx_yojson_conv_lib.Option.None and partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and previousResultIds_field = ref Ppx_yojson_conv_lib.Option.None @@ -52002,104 +52524,100 @@ module WorkspaceDiagnosticParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "identifier" -> ( - match Ppx_yojson_conv_lib.( ! ) identifier_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "previousResultIds" -> ( - match Ppx_yojson_conv_lib.( ! ) previousResultIds_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson PreviousResultId.t_of_yojson _field_yojson - in - previousResultIds_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) identifier_field - , Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) previousResultIds_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( identifier_value - , partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some previousResultIds_value - , workDoneToken_value ) -> - { identifier = - (match identifier_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; previousResultIds = previousResultIds_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "identifier" -> + (match Ppx_yojson_conv_lib.( ! ) identifier_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + identifier_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "previousResultIds" -> + (match Ppx_yojson_conv_lib.( ! ) previousResultIds_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson PreviousResultId.t_of_yojson _field_yojson in + previousResultIds_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) previousResultIds_field) - Ppx_yojson_conv_lib.Option.None - , "previousResultIds" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) identifier_field + , Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) previousResultIds_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( identifier_value + , partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some previousResultIds_value + , workDoneToken_value ) -> + { identifier = + (match identifier_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; previousResultIds = previousResultIds_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) previousResultIds_field) + Ppx_yojson_conv_lib.Option.None + , "previousResultIds" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -52112,71 +52630,72 @@ module WorkspaceDiagnosticParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = - let arg = - yojson_of_list PreviousResultId.yojson_of_t v_previousResultIds - in + let arg = yojson_of_list PreviousResultId.yojson_of_t v_previousResultIds in ("previousResultIds", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in let bnds = - if None = v_identifier then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_identifier - in - let bnd = ("identifier", arg) in - bnd :: bnds + if None = v_identifier + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_identifier in + let bnd = "identifier", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(identifier : string option) - ?(partialResultToken : ProgressToken.t option) - ~(previousResultIds : PreviousResultId.t list) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(identifier : string option) + ?(partialResultToken : ProgressToken.t option) + ~(previousResultIds : PreviousResultId.t list) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { identifier; partialResultToken; previousResultIds; workDoneToken } + ;; end module WorkspaceUnchangedDocumentDiagnosticReport = struct type t = { resultId : string ; uri : DocumentUri.t - ; version : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.WorkspaceUnchangedDocumentDiagnosticReport.t" - in + (let _tp_loc = "lsp/src/types.ml.WorkspaceUnchangedDocumentDiagnosticReport.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let resultId_field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None and version_field = ref Ppx_yojson_conv_lib.Option.None @@ -52185,81 +52704,80 @@ module WorkspaceUnchangedDocumentDiagnosticReport = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "resultId" -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) resultId_field - , Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some resultId_value - , Ppx_yojson_conv_lib.Option.Some uri_value - , version_value ) -> - { resultId = resultId_value - ; uri = uri_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) resultId_field) - Ppx_yojson_conv_lib.Option.None - , "resultId" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | "resultId" -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) resultId_field + , Ppx_yojson_conv_lib.( ! ) uri_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some resultId_value + , Ppx_yojson_conv_lib.Option.Some uri_value + , version_value ) -> + { resultId = resultId_value + ; uri = uri_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) resultId_field) + Ppx_yojson_conv_lib.Option.None + , "resultId" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -52268,13 +52786,12 @@ module WorkspaceUnchangedDocumentDiagnosticReport = struct | { resultId = v_resultId; uri = v_uri; version = v_version } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = DocumentUri.yojson_of_t v_uri in @@ -52285,31 +52802,39 @@ module WorkspaceUnchangedDocumentDiagnosticReport = struct ("resultId", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(resultId : string) ~(uri : DocumentUri.t) ?(version : int option) - (() : unit) : t = + let create + ~(resultId : string) + ~(uri : DocumentUri.t) + ?(version : int option) + (() : unit) + : t + = { resultId; uri; version } + ;; let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "unchanged" yojson_of_t t + ;; let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "unchanged" t_of_yojson json + ;; end module WorkspaceFullDocumentDiagnosticReport = struct type t = { items : Diagnostic.t list ; resultId : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; uri : DocumentUri.t - ; version : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; version : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -52318,7 +52843,7 @@ module WorkspaceFullDocumentDiagnosticReport = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceFullDocumentDiagnosticReport.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let items_field = ref Ppx_yojson_conv_lib.Option.None and resultId_field = ref Ppx_yojson_conv_lib.Option.None and uri_field = ref Ppx_yojson_conv_lib.Option.None @@ -52328,157 +52853,155 @@ module WorkspaceFullDocumentDiagnosticReport = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "items" -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson Diagnostic.t_of_yojson _field_yojson - in - items_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "resultId" -> ( - match Ppx_yojson_conv_lib.( ! ) resultId_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "uri" -> ( - match Ppx_yojson_conv_lib.( ! ) uri_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = DocumentUri.t_of_yojson _field_yojson in - uri_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "version" -> ( - match Ppx_yojson_conv_lib.( ! ) version_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - version_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) items_field - , Ppx_yojson_conv_lib.( ! ) resultId_field - , Ppx_yojson_conv_lib.( ! ) uri_field - , Ppx_yojson_conv_lib.( ! ) version_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some items_value - , resultId_value - , Ppx_yojson_conv_lib.Option.Some uri_value - , version_value ) -> - { items = items_value - ; resultId = - (match resultId_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; uri = uri_value - ; version = - (match version_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements - _tp_loc - yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) items_field) - Ppx_yojson_conv_lib.Option.None - , "items" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) uri_field) - Ppx_yojson_conv_lib.Option.None - , "uri" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) - - let _ = t_of_yojson - - let yojson_of_t = - (function - | { items = v_items - ; resultId = v_resultId - ; uri = v_uri - ; version = v_version - } -> - let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in - let bnds = - if None = v_version then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_version - in - let bnd = ("version", arg) in - bnd :: bnds + | "items" -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = list_of_yojson Diagnostic.t_of_yojson _field_yojson in + items_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "resultId" -> + (match Ppx_yojson_conv_lib.( ! ) resultId_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + resultId_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "uri" -> + (match Ppx_yojson_conv_lib.( ! ) uri_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = DocumentUri.t_of_yojson _field_yojson in + uri_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "version" -> + (match Ppx_yojson_conv_lib.( ! ) version_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + version_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) items_field + , Ppx_yojson_conv_lib.( ! ) resultId_field + , Ppx_yojson_conv_lib.( ! ) uri_field + , Ppx_yojson_conv_lib.( ! ) version_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some items_value + , resultId_value + , Ppx_yojson_conv_lib.Option.Some uri_value + , version_value ) -> + { items = items_value + ; resultId = + (match resultId_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; uri = uri_value + ; version = + (match version_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) items_field) + Ppx_yojson_conv_lib.Option.None + , "items" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) uri_field) + Ppx_yojson_conv_lib.Option.None + , "uri" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; + + let _ = t_of_yojson + + let yojson_of_t = + (function + | { items = v_items; resultId = v_resultId; uri = v_uri; version = v_version } -> + let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in + let bnds = + if None = v_version + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_version in + let bnd = "version", arg in + bnd :: bnds) in let bnds = let arg = DocumentUri.yojson_of_t v_uri in ("uri", arg) :: bnds in let bnds = - if None = v_resultId then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId - in - let bnd = ("resultId", arg) in - bnd :: bnds + if None = v_resultId + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_resultId in + let bnd = "resultId", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_list Diagnostic.yojson_of_t v_items in ("items", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ~(items : Diagnostic.t list) ?(resultId : string option) - ~(uri : DocumentUri.t) ?(version : int option) (() : unit) : t = + let create + ~(items : Diagnostic.t list) + ?(resultId : string option) + ~(uri : DocumentUri.t) + ?(version : int option) + (() : unit) + : t + = { items; resultId; uri; version } + ;; - let yojson_of_t (t : t) : Json.t = - Json.To.literal_field "kind" "full" yojson_of_t t + let yojson_of_t (t : t) : Json.t = Json.To.literal_field "kind" "full" yojson_of_t t let t_of_yojson (json : Json.t) : t = Json.Of.literal_field "t" "kind" "full" t_of_yojson json + ;; end module WorkspaceDocumentDiagnosticReport = struct type t = - [ `WorkspaceFullDocumentDiagnosticReport of - WorkspaceFullDocumentDiagnosticReport.t + [ `WorkspaceFullDocumentDiagnosticReport of WorkspaceFullDocumentDiagnosticReport.t | `WorkspaceUnchangedDocumentDiagnosticReport of WorkspaceUnchangedDocumentDiagnosticReport.t ] @@ -52494,6 +53017,7 @@ module WorkspaceDocumentDiagnosticReport = struct (WorkspaceUnchangedDocumentDiagnosticReport.t_of_yojson json)) ] json + ;; let yojson_of_t (t : t) : Json.t = match t with @@ -52501,6 +53025,7 @@ module WorkspaceDocumentDiagnosticReport = struct WorkspaceFullDocumentDiagnosticReport.yojson_of_t s | `WorkspaceUnchangedDocumentDiagnosticReport s -> WorkspaceUnchangedDocumentDiagnosticReport.yojson_of_t s + ;; end module WorkspaceDiagnosticReport = struct @@ -52512,60 +53037,58 @@ module WorkspaceDiagnosticReport = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceDiagnosticReport.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let items_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "items" -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson - WorkspaceDocumentDiagnosticReport.t_of_yojson - _field_yojson - in - items_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "items" -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson + WorkspaceDocumentDiagnosticReport.t_of_yojson + _field_yojson + in + items_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.Some items_value -> - { items = items_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) items_field) - Ppx_yojson_conv_lib.Option.None - , "items" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.Some items_value -> { items = items_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) items_field) + Ppx_yojson_conv_lib.Option.None + , "items" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -52574,13 +53097,12 @@ module WorkspaceDiagnosticReport = struct | { items = v_items } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - let arg = - yojson_of_list WorkspaceDocumentDiagnosticReport.yojson_of_t v_items - in + let arg = yojson_of_list WorkspaceDocumentDiagnosticReport.yojson_of_t v_items in ("items", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -52596,64 +53118,60 @@ module WorkspaceDiagnosticReportPartialResult = struct let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "lsp/src/types.ml.WorkspaceDiagnosticReportPartialResult.t" - in + (let _tp_loc = "lsp/src/types.ml.WorkspaceDiagnosticReportPartialResult.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let items_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "items" -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - list_of_yojson - WorkspaceDocumentDiagnosticReport.t_of_yojson - _field_yojson - in - items_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "items" -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + list_of_yojson + WorkspaceDocumentDiagnosticReport.t_of_yojson + _field_yojson + in + items_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) items_field with - | Ppx_yojson_conv_lib.Option.Some items_value -> - { items = items_value } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) items_field) - Ppx_yojson_conv_lib.Option.None - , "items" ) - ]))) + | [] -> + (match Ppx_yojson_conv_lib.( ! ) items_field with + | Ppx_yojson_conv_lib.Option.Some items_value -> { items = items_value } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) items_field) + Ppx_yojson_conv_lib.Option.None + , "items" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -52662,13 +53180,12 @@ module WorkspaceDiagnosticReportPartialResult = struct | { items = v_items } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - let arg = - yojson_of_list WorkspaceDocumentDiagnosticReport.yojson_of_t v_items - in + let arg = yojson_of_list WorkspaceDocumentDiagnosticReport.yojson_of_t v_items in ("items", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -52681,7 +53198,7 @@ module WorkspaceFoldersInitializeParams = struct type t = { workspaceFolders : WorkspaceFolder.t list Json.Nullable_option.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -52690,57 +53207,56 @@ module WorkspaceFoldersInitializeParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceFoldersInitializeParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let workspaceFolders_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "workspaceFolders" -> ( - match Ppx_yojson_conv_lib.( ! ) workspaceFolders_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (Json.Nullable_option.t_of_yojson - (list_of_yojson WorkspaceFolder.t_of_yojson)) - _field_yojson - in - workspaceFolders_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "workspaceFolders" -> + (match Ppx_yojson_conv_lib.( ! ) workspaceFolders_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (Json.Nullable_option.t_of_yojson + (list_of_yojson WorkspaceFolder.t_of_yojson)) + _field_yojson + in + workspaceFolders_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let workspaceFolders_value = - Ppx_yojson_conv_lib.( ! ) workspaceFolders_field - in - { workspaceFolders = - (match workspaceFolders_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let workspaceFolders_value = + Ppx_yojson_conv_lib.( ! ) workspaceFolders_field + in + { workspaceFolders = + (match workspaceFolders_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -52749,39 +53265,41 @@ module WorkspaceFoldersInitializeParams = struct | { workspaceFolders = v_workspaceFolders } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workspaceFolders then bnds - else + if None = v_workspaceFolders + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t (Json.Nullable_option.yojson_of_t (yojson_of_list WorkspaceFolder.yojson_of_t))) v_workspaceFolders in - let bnd = ("workspaceFolders", arg) in - bnd :: bnds + let bnd = "workspaceFolders", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(workspaceFolders : WorkspaceFolder.t list option option) - (() : unit) : t = + let create ?(workspaceFolders : WorkspaceFolder.t list option option) (() : unit) : t = { workspaceFolders } + ;; end module WorkspaceSymbol = struct type t = { containerName : string Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; data : Json.t option [@yojson.option] ; kind : SymbolKind.t ; location : Location.t ; name : string ; tags : SymbolTag.t list Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -52790,7 +53308,7 @@ module WorkspaceSymbol = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceSymbol.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let containerName_field = ref Ppx_yojson_conv_lib.Option.None and data_field = ref Ppx_yojson_conv_lib.Option.None and kind_field = ref Ppx_yojson_conv_lib.Option.None @@ -52802,122 +53320,121 @@ module WorkspaceSymbol = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "containerName" -> ( - match Ppx_yojson_conv_lib.( ! ) containerName_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson - in - containerName_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "data" -> ( - match Ppx_yojson_conv_lib.( ! ) data_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Json.t_of_yojson _field_yojson in - data_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "kind" -> ( - match Ppx_yojson_conv_lib.( ! ) kind_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = SymbolKind.t_of_yojson _field_yojson in - kind_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "location" -> ( - match Ppx_yojson_conv_lib.( ! ) location_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Location.t_of_yojson _field_yojson in - location_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "name" -> ( - match Ppx_yojson_conv_lib.( ! ) name_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - name_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "tags" -> ( - match Ppx_yojson_conv_lib.( ! ) tags_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - (list_of_yojson SymbolTag.t_of_yojson) - _field_yojson - in - tags_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) containerName_field - , Ppx_yojson_conv_lib.( ! ) data_field - , Ppx_yojson_conv_lib.( ! ) kind_field - , Ppx_yojson_conv_lib.( ! ) location_field - , Ppx_yojson_conv_lib.( ! ) name_field - , Ppx_yojson_conv_lib.( ! ) tags_field ) - with - | ( containerName_value - , data_value - , Ppx_yojson_conv_lib.Option.Some kind_value - , Ppx_yojson_conv_lib.Option.Some location_value - , Ppx_yojson_conv_lib.Option.Some name_value - , tags_value ) -> - { containerName = - (match containerName_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; data = data_value - ; kind = kind_value - ; location = location_value - ; name = name_value - ; tags = - (match tags_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "containerName" -> + (match Ppx_yojson_conv_lib.( ! ) containerName_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson string_of_yojson _field_yojson + in + containerName_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "data" -> + (match Ppx_yojson_conv_lib.( ! ) data_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Json.t_of_yojson _field_yojson in + data_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "kind" -> + (match Ppx_yojson_conv_lib.( ! ) kind_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = SymbolKind.t_of_yojson _field_yojson in + kind_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "location" -> + (match Ppx_yojson_conv_lib.( ! ) location_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Location.t_of_yojson _field_yojson in + location_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "name" -> + (match Ppx_yojson_conv_lib.( ! ) name_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + name_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "tags" -> + (match Ppx_yojson_conv_lib.( ! ) tags_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + (list_of_yojson SymbolTag.t_of_yojson) + _field_yojson + in + tags_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) kind_field) - Ppx_yojson_conv_lib.Option.None - , "kind" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) location_field) - Ppx_yojson_conv_lib.Option.None - , "location" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) name_field) - Ppx_yojson_conv_lib.Option.None - , "name" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) containerName_field + , Ppx_yojson_conv_lib.( ! ) data_field + , Ppx_yojson_conv_lib.( ! ) kind_field + , Ppx_yojson_conv_lib.( ! ) location_field + , Ppx_yojson_conv_lib.( ! ) name_field + , Ppx_yojson_conv_lib.( ! ) tags_field ) + with + | ( containerName_value + , data_value + , Ppx_yojson_conv_lib.Option.Some kind_value + , Ppx_yojson_conv_lib.Option.Some location_value + , Ppx_yojson_conv_lib.Option.Some name_value + , tags_value ) -> + { containerName = + (match containerName_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; data = data_value + ; kind = kind_value + ; location = location_value + ; name = name_value + ; tags = + (match tags_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) kind_field) + Ppx_yojson_conv_lib.Option.None + , "kind" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) location_field) + Ppx_yojson_conv_lib.Option.None + , "location" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) name_field) + Ppx_yojson_conv_lib.Option.None + , "name" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -52932,15 +53449,15 @@ module WorkspaceSymbol = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_tags then bnds - else + if None = v_tags + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t - (yojson_of_list SymbolTag.yojson_of_t)) + (Json.Nullable_option.yojson_of_t (yojson_of_list SymbolTag.yojson_of_t)) v_tags in - let bnd = ("tags", arg) in - bnd :: bnds + let bnd = "tags", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_name in @@ -52959,38 +53476,48 @@ module WorkspaceSymbol = struct | Ppx_yojson_conv_lib.Option.None -> bnds | Ppx_yojson_conv_lib.Option.Some v -> let arg = Json.yojson_of_t v in - let bnd = ("data", arg) in + let bnd = "data", arg in bnd :: bnds in let bnds = - if None = v_containerName then bnds - else + if None = v_containerName + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_string) v_containerName in - let bnd = ("containerName", arg) in - bnd :: bnds + let bnd = "containerName", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(containerName : string option) ?(data : Json.t option) - ~(kind : SymbolKind.t) ~(location : Location.t) ~(name : string) - ?(tags : SymbolTag.t list option) (() : unit) : t = + let create + ?(containerName : string option) + ?(data : Json.t option) + ~(kind : SymbolKind.t) + ~(location : Location.t) + ~(name : string) + ?(tags : SymbolTag.t list option) + (() : unit) + : t + = { containerName; data; kind; location; name; tags } + ;; end module WorkspaceSymbolParams = struct type t = { partialResultToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; query : string ; workDoneToken : ProgressToken.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -52999,7 +53526,7 @@ module WorkspaceSymbolParams = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceSymbolParams.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let partialResultToken_field = ref Ppx_yojson_conv_lib.Option.None and query_field = ref Ppx_yojson_conv_lib.Option.None and workDoneToken_field = ref Ppx_yojson_conv_lib.Option.None @@ -53008,87 +53535,85 @@ module WorkspaceSymbolParams = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "partialResultToken" -> ( - match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - partialResultToken_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "query" -> ( - match Ppx_yojson_conv_lib.( ! ) query_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = string_of_yojson _field_yojson in - query_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneToken" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ProgressToken.t_of_yojson - _field_yojson - in - workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); - iter tail - | [] -> () - in - iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field - , Ppx_yojson_conv_lib.( ! ) query_field - , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) - with - | ( partialResultToken_value - , Ppx_yojson_conv_lib.Option.Some query_value - , workDoneToken_value ) -> - { partialResultToken = - (match partialResultToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; query = query_value - ; workDoneToken = - (match workDoneToken_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + | "partialResultToken" -> + (match Ppx_yojson_conv_lib.( ! ) partialResultToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + partialResultToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "query" -> + (match Ppx_yojson_conv_lib.( ! ) query_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = string_of_yojson _field_yojson in + query_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneToken" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneToken_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + ProgressToken.t_of_yojson + _field_yojson + in + workDoneToken_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); + iter tail + | [] -> () + in + iter field_yojsons; + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) query_field) - Ppx_yojson_conv_lib.Option.None - , "query" ) - ]))) - | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) partialResultToken_field + , Ppx_yojson_conv_lib.( ! ) query_field + , Ppx_yojson_conv_lib.( ! ) workDoneToken_field ) + with + | ( partialResultToken_value + , Ppx_yojson_conv_lib.Option.Some query_value + , workDoneToken_value ) -> + { partialResultToken = + (match partialResultToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; query = query_value + ; workDoneToken = + (match workDoneToken_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) query_field) + Ppx_yojson_conv_lib.Option.None + , "query" ) + ]))) + | _ as yojson -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -53100,47 +53625,55 @@ module WorkspaceSymbolParams = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneToken then bnds - else + if None = v_workDoneToken + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) - v_workDoneToken + (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_workDoneToken in - let bnd = ("workDoneToken", arg) in - bnd :: bnds + let bnd = "workDoneToken", arg in + bnd :: bnds) in let bnds = let arg = yojson_of_string v_query in ("query", arg) :: bnds in let bnds = - if None = v_partialResultToken then bnds - else + if None = v_partialResultToken + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t ProgressToken.yojson_of_t) v_partialResultToken in - let bnd = ("partialResultToken", arg) in - bnd :: bnds + let bnd = "partialResultToken", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(partialResultToken : ProgressToken.t option) ~(query : string) - ?(workDoneToken : ProgressToken.t option) (() : unit) : t = + let create + ?(partialResultToken : ProgressToken.t option) + ~(query : string) + ?(workDoneToken : ProgressToken.t option) + (() : unit) + : t + = { partialResultToken; query; workDoneToken } + ;; end module WorkspaceSymbolRegistrationOptions = struct type t = { resolveProvider : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] ; workDoneProgress : bool Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -53149,7 +53682,7 @@ module WorkspaceSymbolRegistrationOptions = struct let t_of_yojson = (let _tp_loc = "lsp/src/types.ml.WorkspaceSymbolRegistrationOptions.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let resolveProvider_field = ref Ppx_yojson_conv_lib.Option.None and workDoneProgress_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -53157,99 +53690,103 @@ module WorkspaceSymbolRegistrationOptions = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "resolveProvider" -> ( - match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "workDoneProgress" -> ( - match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson - in - workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "resolveProvider" -> + (match Ppx_yojson_conv_lib.( ! ) resolveProvider_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + resolveProvider_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "workDoneProgress" -> + (match Ppx_yojson_conv_lib.( ! ) workDoneProgress_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson bool_of_yojson _field_yojson + in + workDoneProgress_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let resolveProvider_value, workDoneProgress_value = - ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field - , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) - in - { resolveProvider = - (match resolveProvider_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; workDoneProgress = - (match workDoneProgress_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let resolveProvider_value, workDoneProgress_value = + ( Ppx_yojson_conv_lib.( ! ) resolveProvider_field + , Ppx_yojson_conv_lib.( ! ) workDoneProgress_field ) + in + { resolveProvider = + (match resolveProvider_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; workDoneProgress = + (match workDoneProgress_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson let yojson_of_t = (function - | { resolveProvider = v_resolveProvider - ; workDoneProgress = v_workDoneProgress - } -> + | { resolveProvider = v_resolveProvider; workDoneProgress = v_workDoneProgress } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_workDoneProgress then bnds - else + if None = v_workDoneProgress + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t yojson_of_bool) - v_workDoneProgress + (Json.Nullable_option.yojson_of_t yojson_of_bool) v_workDoneProgress in - let bnd = ("workDoneProgress", arg) in - bnd :: bnds + let bnd = "workDoneProgress", arg in + bnd :: bnds) in let bnds = - if None = v_resolveProvider then bnds - else + if None = v_resolveProvider + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t yojson_of_bool) v_resolveProvider in - let bnd = ("resolveProvider", arg) in - bnd :: bnds + let bnd = "resolveProvider", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t [@@@end] - let create ?(resolveProvider : bool option) ?(workDoneProgress : bool option) - (() : unit) : t = + let create + ?(resolveProvider : bool option) + ?(workDoneProgress : bool option) + (() : unit) + : t + = { resolveProvider; workDoneProgress } + ;; end (*$*) @@ -53265,6 +53802,7 @@ module CodeActionResult = struct | `Command c -> Command.yojson_of_t c | `CodeAction a -> CodeAction.yojson_of_t a) xs + ;; let t_of_yojson (json : Json.t) : t = match json with @@ -53279,6 +53817,7 @@ module CodeActionResult = struct ]) json) | _ -> Json.error "CodeActionResult" json + ;; end module Locations = struct @@ -53291,15 +53830,17 @@ module Locations = struct match t with | `Location xs -> `List (List.map ~f:Location.yojson_of_t xs) | `LocationLink l -> `List (List.map ~f:LocationLink.yojson_of_t l) + ;; let t_of_yojson (json : Json.t) : t = match json with | `Assoc _ -> `Location [ Location.t_of_yojson json ] | `List [] -> `Location [] - | `List (x :: xs) -> ( - match Location.t_of_yojson x with - | loc -> `Location (loc :: List.map ~f:Location.t_of_yojson xs) - | exception Of_yojson_error (_, _) -> - `LocationLink (List.map ~f:LocationLink.t_of_yojson (x :: xs))) + | `List (x :: xs) -> + (match Location.t_of_yojson x with + | loc -> `Location (loc :: List.map ~f:Location.t_of_yojson xs) + | exception Of_yojson_error (_, _) -> + `LocationLink (List.map ~f:LocationLink.t_of_yojson (x :: xs))) | _ -> Json.error "Locations.t" json + ;; end diff --git a/lsp/src/types.mli b/lsp/src/types.mli index f470bf34c..16cd38f29 100644 --- a/lsp/src/types.mli +++ b/lsp/src/types.mli @@ -56,8 +56,7 @@ module TextDocumentFilter : sig ; pattern : string option } - val create : - ?language:string -> ?scheme:string -> ?pattern:string -> unit -> t + val create : ?language:string -> ?scheme:string -> ?pattern:string -> unit -> t end (*$ Lsp_gen.print_mli () *) @@ -478,8 +477,8 @@ module AnnotatedTextEdit : sig ; range : Range.t } - val create : - annotationId:ChangeAnnotationIdentifier.t + val create + : annotationId:ChangeAnnotationIdentifier.t -> newText:string -> range:Range.t -> t @@ -505,8 +504,8 @@ module DeleteFile : sig ; uri : DocumentUri.t } - val create : - ?annotationId:ChangeAnnotationIdentifier.t + val create + : ?annotationId:ChangeAnnotationIdentifier.t -> ?options:DeleteFileOptions.t -> uri:DocumentUri.t -> unit @@ -534,8 +533,8 @@ module RenameFile : sig ; options : RenameFileOptions.t option } - val create : - ?annotationId:ChangeAnnotationIdentifier.t + val create + : ?annotationId:ChangeAnnotationIdentifier.t -> newUri:DocumentUri.t -> oldUri:DocumentUri.t -> ?options:RenameFileOptions.t @@ -563,8 +562,8 @@ module CreateFile : sig ; uri : DocumentUri.t } - val create : - ?annotationId:ChangeAnnotationIdentifier.t + val create + : ?annotationId:ChangeAnnotationIdentifier.t -> ?options:CreateFileOptions.t -> uri:DocumentUri.t -> unit @@ -597,16 +596,12 @@ end module TextDocumentEdit : sig type t = - { edits : - [ `TextEdit of TextEdit.t | `AnnotatedTextEdit of AnnotatedTextEdit.t ] - list + { edits : [ `TextEdit of TextEdit.t | `AnnotatedTextEdit of AnnotatedTextEdit.t ] list ; textDocument : OptionalVersionedTextDocumentIdentifier.t } - val create : - edits: - [ `TextEdit of TextEdit.t | `AnnotatedTextEdit of AnnotatedTextEdit.t ] - list + val create + : edits:[ `TextEdit of TextEdit.t | `AnnotatedTextEdit of AnnotatedTextEdit.t ] list -> textDocument:OptionalVersionedTextDocumentIdentifier.t -> t @@ -620,8 +615,7 @@ module ChangeAnnotation : sig ; needsConfirmation : bool option } - val create : - ?description:string -> label:string -> ?needsConfirmation:bool -> unit -> t + val create : ?description:string -> label:string -> ?needsConfirmation:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -637,13 +631,12 @@ module WorkspaceEdit : sig | `RenameFile of RenameFile.t | `DeleteFile of DeleteFile.t ] - list - option + list + option } - val create : - ?changeAnnotations: - (ChangeAnnotationIdentifier.t, ChangeAnnotation.t) Json.Assoc.t + val create + : ?changeAnnotations:(ChangeAnnotationIdentifier.t, ChangeAnnotation.t) Json.Assoc.t -> ?changes:(DocumentUri.t, TextEdit.t list) Json.Assoc.t -> ?documentChanges: [ `TextDocumentEdit of TextDocumentEdit.t @@ -651,7 +644,7 @@ module WorkspaceEdit : sig | `RenameFile of RenameFile.t | `DeleteFile of DeleteFile.t ] - list + list -> unit -> t @@ -676,8 +669,7 @@ module ApplyWorkspaceEditResult : sig ; failureReason : string option } - val create : - applied:bool -> ?failedChange:int -> ?failureReason:string -> unit -> t + val create : applied:bool -> ?failedChange:int -> ?failureReason:string -> unit -> t include Json.Jsonable.S with type t := t end @@ -690,8 +682,8 @@ module BaseSymbolInformation : sig ; tags : SymbolTag.t list option } - val create : - ?containerName:string + val create + : ?containerName:string -> kind:SymbolKind.t -> name:string -> ?tags:SymbolTag.t list @@ -721,8 +713,8 @@ module CallHierarchyItem : sig ; uri : DocumentUri.t } - val create : - ?data:Json.t + val create + : ?data:Json.t -> ?detail:string -> kind:SymbolKind.t -> name:string @@ -754,8 +746,8 @@ module CallHierarchyIncomingCallsParams : sig ; workDoneToken : ProgressToken.t option } - val create : - item:CallHierarchyItem.t + val create + : item:CallHierarchyItem.t -> ?partialResultToken:ProgressToken.t -> ?workDoneToken:ProgressToken.t -> unit @@ -790,8 +782,8 @@ module CallHierarchyOutgoingCallsParams : sig ; workDoneToken : ProgressToken.t option } - val create : - item:CallHierarchyItem.t + val create + : item:CallHierarchyItem.t -> ?partialResultToken:ProgressToken.t -> ?workDoneToken:ProgressToken.t -> unit @@ -815,8 +807,8 @@ module CallHierarchyPrepareParams : sig ; workDoneToken : ProgressToken.t option } - val create : - position:Position.t + val create + : position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -829,17 +821,13 @@ module NotebookCellTextDocumentFilter : sig type t = { language : string option ; notebook : - [ `String of string - | `NotebookDocumentFilter of NotebookDocumentFilter.t - ] + [ `String of string | `NotebookDocumentFilter of NotebookDocumentFilter.t ] } - val create : - ?language:string + val create + : ?language:string -> notebook: - [ `String of string - | `NotebookDocumentFilter of NotebookDocumentFilter.t - ] + [ `String of string | `NotebookDocumentFilter of NotebookDocumentFilter.t ] -> unit -> t @@ -868,8 +856,8 @@ module CallHierarchyRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -889,8 +877,10 @@ end module WorkspaceEditClientCapabilities : sig type changeAnnotationSupport = { groupsOnLabel : bool option } - val create_changeAnnotationSupport : - ?groupsOnLabel:bool -> unit -> changeAnnotationSupport + val create_changeAnnotationSupport + : ?groupsOnLabel:bool + -> unit + -> changeAnnotationSupport type t = { changeAnnotationSupport : changeAnnotationSupport option @@ -900,8 +890,8 @@ module WorkspaceEditClientCapabilities : sig ; resourceOperations : ResourceOperationKind.t list option } - val create : - ?changeAnnotationSupport:changeAnnotationSupport + val create + : ?changeAnnotationSupport:changeAnnotationSupport -> ?documentChanges:bool -> ?failureHandling:FailureHandlingKind.t -> ?normalizesLineEndings:bool @@ -932,8 +922,8 @@ module WorkspaceSymbolClientCapabilities : sig ; tagSupport : tagSupport option } - val create : - ?dynamicRegistration:bool + val create + : ?dynamicRegistration:bool -> ?resolveSupport:resolveSupport -> ?symbolKind:symbolKind -> ?tagSupport:tagSupport @@ -986,8 +976,8 @@ module FileOperationClientCapabilities : sig ; willRename : bool option } - val create : - ?didCreate:bool + val create + : ?didCreate:bool -> ?didDelete:bool -> ?didRename:bool -> ?dynamicRegistration:bool @@ -1014,8 +1004,7 @@ module DidChangeWatchedFilesClientCapabilities : sig ; relativePatternSupport : bool option } - val create : - ?dynamicRegistration:bool -> ?relativePatternSupport:bool -> unit -> t + val create : ?dynamicRegistration:bool -> ?relativePatternSupport:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -1063,8 +1052,8 @@ module WorkspaceClientCapabilities : sig ; workspaceFolders : bool option } - val create : - ?applyEdit:bool + val create + : ?applyEdit:bool -> ?codeLens:CodeLensWorkspaceClientCapabilities.t -> ?configuration:bool -> ?diagnostics:DiagnosticWorkspaceClientCapabilities.t @@ -1088,8 +1077,10 @@ end module ShowMessageRequestClientCapabilities : sig type messageActionItem = { additionalPropertiesSupport : bool option } - val create_messageActionItem : - ?additionalPropertiesSupport:bool -> unit -> messageActionItem + val create_messageActionItem + : ?additionalPropertiesSupport:bool + -> unit + -> messageActionItem type t = { messageActionItem : messageActionItem option } @@ -1113,8 +1104,8 @@ module WindowClientCapabilities : sig ; workDoneProgress : bool option } - val create : - ?showDocument:ShowDocumentClientCapabilities.t + val create + : ?showDocument:ShowDocumentClientCapabilities.t -> ?showMessage:ShowMessageRequestClientCapabilities.t -> ?workDoneProgress:bool -> unit @@ -1150,8 +1141,8 @@ module TextDocumentSyncClientCapabilities : sig ; willSaveWaitUntil : bool option } - val create : - ?didSave:bool + val create + : ?didSave:bool -> ?dynamicRegistration:bool -> ?willSave:bool -> ?willSaveWaitUntil:bool @@ -1164,8 +1155,10 @@ end module SignatureHelpClientCapabilities : sig type parameterInformation = { labelOffsetSupport : bool option } - val create_parameterInformation : - ?labelOffsetSupport:bool -> unit -> parameterInformation + val create_parameterInformation + : ?labelOffsetSupport:bool + -> unit + -> parameterInformation type signatureInformation = { documentationFormat : MarkupKind.t list option @@ -1174,8 +1167,8 @@ module SignatureHelpClientCapabilities : sig ; noActiveParameterSupport : bool option } - val create_signatureInformation : - ?documentationFormat:MarkupKind.t list + val create_signatureInformation + : ?documentationFormat:MarkupKind.t list -> ?parameterInformation:parameterInformation -> ?activeParameterSupport:bool -> ?noActiveParameterSupport:bool @@ -1188,8 +1181,8 @@ module SignatureHelpClientCapabilities : sig ; signatureInformation : signatureInformation option } - val create : - ?contextSupport:bool + val create + : ?contextSupport:bool -> ?dynamicRegistration:bool -> ?signatureInformation:signatureInformation -> unit @@ -1208,8 +1201,11 @@ module SemanticTokensClientCapabilities : sig ; full : [ `Bool of bool | `Full of full ] option } - val create_requests : - ?range:bool -> ?full:[ `Bool of bool | `Full of full ] -> unit -> requests + val create_requests + : ?range:bool + -> ?full:[ `Bool of bool | `Full of full ] + -> unit + -> requests type t = { augmentsSyntaxTokens : bool option @@ -1223,8 +1219,8 @@ module SemanticTokensClientCapabilities : sig ; tokenTypes : string list } - val create : - ?augmentsSyntaxTokens:bool + val create + : ?augmentsSyntaxTokens:bool -> ?dynamicRegistration:bool -> formats:TokenFormat.t list -> ?multilineTokenSupport:bool @@ -1255,8 +1251,8 @@ module RenameClientCapabilities : sig ; prepareSupportDefaultBehavior : PrepareSupportDefaultBehavior.t option } - val create : - ?dynamicRegistration:bool + val create + : ?dynamicRegistration:bool -> ?honorsChangeAnnotations:bool -> ?prepareSupport:bool -> ?prepareSupportDefaultBehavior:PrepareSupportDefaultBehavior.t @@ -1298,8 +1294,8 @@ module PublishDiagnosticsClientCapabilities : sig ; versionSupport : bool option } - val create : - ?codeDescriptionSupport:bool + val create + : ?codeDescriptionSupport:bool -> ?dataSupport:bool -> ?relatedInformation:bool -> ?tagSupport:tagSupport @@ -1360,8 +1356,7 @@ module InlayHintClientCapabilities : sig ; resolveSupport : resolveSupport option } - val create : - ?dynamicRegistration:bool -> ?resolveSupport:resolveSupport -> unit -> t + val create : ?dynamicRegistration:bool -> ?resolveSupport:resolveSupport -> unit -> t include Json.Jsonable.S with type t := t end @@ -1383,8 +1378,7 @@ module HoverClientCapabilities : sig ; dynamicRegistration : bool option } - val create : - ?contentFormat:MarkupKind.t list -> ?dynamicRegistration:bool -> unit -> t + val create : ?contentFormat:MarkupKind.t list -> ?dynamicRegistration:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -1400,8 +1394,10 @@ end module FoldingRangeClientCapabilities : sig type foldingRangeKind = { valueSet : FoldingRangeKind.t list option } - val create_foldingRangeKind : - ?valueSet:FoldingRangeKind.t list -> unit -> foldingRangeKind + val create_foldingRangeKind + : ?valueSet:FoldingRangeKind.t list + -> unit + -> foldingRangeKind type foldingRange = { collapsedText : bool option } @@ -1415,8 +1411,8 @@ module FoldingRangeClientCapabilities : sig ; rangeLimit : int option } - val create : - ?dynamicRegistration:bool + val create + : ?dynamicRegistration:bool -> ?foldingRange:foldingRange -> ?foldingRangeKind:foldingRangeKind -> ?lineFoldingOnly:bool @@ -1444,8 +1440,8 @@ module DocumentSymbolClientCapabilities : sig ; tagSupport : tagSupport option } - val create : - ?dynamicRegistration:bool + val create + : ?dynamicRegistration:bool -> ?hierarchicalDocumentSymbolSupport:bool -> ?labelSupport:bool -> ?symbolKind:symbolKind @@ -1482,8 +1478,8 @@ module DiagnosticClientCapabilities : sig ; relatedDocumentSupport : bool option } - val create : - ?dynamicRegistration:bool + val create + : ?dynamicRegistration:bool -> ?markupMessageSupport:bool -> ?relatedDocumentSupport:bool -> unit @@ -1517,18 +1513,20 @@ end module CompletionClientCapabilities : sig type completionList = { itemDefaults : string list option } - val create_completionList : - ?itemDefaults:string list -> unit -> completionList + val create_completionList : ?itemDefaults:string list -> unit -> completionList type completionItemKind = { valueSet : CompletionItemKind.t list option } - val create_completionItemKind : - ?valueSet:CompletionItemKind.t list -> unit -> completionItemKind + val create_completionItemKind + : ?valueSet:CompletionItemKind.t list + -> unit + -> completionItemKind type insertTextModeSupport = { valueSet : InsertTextMode.t list } - val create_insertTextModeSupport : - valueSet:InsertTextMode.t list -> insertTextModeSupport + val create_insertTextModeSupport + : valueSet:InsertTextMode.t list + -> insertTextModeSupport type resolveSupport = { properties : string list } @@ -1551,8 +1549,8 @@ module CompletionClientCapabilities : sig ; labelDetailsSupport : bool option } - val create_completionItem : - ?snippetSupport:bool + val create_completionItem + : ?snippetSupport:bool -> ?commitCharactersSupport:bool -> ?documentationFormat:MarkupKind.t list -> ?deprecatedSupport:bool @@ -1574,8 +1572,8 @@ module CompletionClientCapabilities : sig ; insertTextMode : InsertTextMode.t option } - val create : - ?completionItem:completionItem + val create + : ?completionItem:completionItem -> ?completionItemKind:completionItemKind -> ?completionList:completionList -> ?contextSupport:bool @@ -1614,8 +1612,9 @@ module CodeActionClientCapabilities : sig type codeActionLiteralSupport = { codeActionKind : codeActionKind } - val create_codeActionLiteralSupport : - codeActionKind:codeActionKind -> codeActionLiteralSupport + val create_codeActionLiteralSupport + : codeActionKind:codeActionKind + -> codeActionLiteralSupport type t = { codeActionLiteralSupport : codeActionLiteralSupport option @@ -1627,8 +1626,8 @@ module CodeActionClientCapabilities : sig ; resolveSupport : resolveSupport option } - val create : - ?codeActionLiteralSupport:codeActionLiteralSupport + val create + : ?codeActionLiteralSupport:codeActionLiteralSupport -> ?dataSupport:bool -> ?disabledSupport:bool -> ?dynamicRegistration:bool @@ -1676,8 +1675,8 @@ module TextDocumentClientCapabilities : sig ; typeHierarchy : TypeHierarchyClientCapabilities.t option } - val create : - ?callHierarchy:CallHierarchyClientCapabilities.t + val create + : ?callHierarchy:CallHierarchyClientCapabilities.t -> ?codeAction:CodeActionClientCapabilities.t -> ?codeLens:CodeLensClientCapabilities.t -> ?colorProvider:DocumentColorClientCapabilities.t @@ -1720,8 +1719,7 @@ module NotebookDocumentSyncClientCapabilities : sig ; executionSummarySupport : bool option } - val create : - ?dynamicRegistration:bool -> ?executionSummarySupport:bool -> unit -> t + val create : ?dynamicRegistration:bool -> ?executionSummarySupport:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -1752,8 +1750,7 @@ module MarkdownClientCapabilities : sig ; version : string option } - val create : - ?allowedTags:string list -> parser:string -> ?version:string -> unit -> t + val create : ?allowedTags:string list -> parser:string -> ?version:string -> unit -> t include Json.Jsonable.S with type t := t end @@ -1764,8 +1761,10 @@ module GeneralClientCapabilities : sig ; retryOnContentModified : string list } - val create_staleRequestSupport : - cancel:bool -> retryOnContentModified:string list -> staleRequestSupport + val create_staleRequestSupport + : cancel:bool + -> retryOnContentModified:string list + -> staleRequestSupport type t = { markdown : MarkdownClientCapabilities.t option @@ -1774,8 +1773,8 @@ module GeneralClientCapabilities : sig ; staleRequestSupport : staleRequestSupport option } - val create : - ?markdown:MarkdownClientCapabilities.t + val create + : ?markdown:MarkdownClientCapabilities.t -> ?positionEncodings:PositionEncodingKind.t list -> ?regularExpressions:RegularExpressionsClientCapabilities.t -> ?staleRequestSupport:staleRequestSupport @@ -1795,8 +1794,8 @@ module ClientCapabilities : sig ; workspace : WorkspaceClientCapabilities.t option } - val create : - ?experimental:Json.t + val create + : ?experimental:Json.t -> ?general:GeneralClientCapabilities.t -> ?notebookDocument:NotebookDocumentClientCapabilities.t -> ?textDocument:TextDocumentClientCapabilities.t @@ -1862,8 +1861,8 @@ module Diagnostic : sig ; tags : DiagnosticTag.t list option } - val create : - ?code:Jsonrpc.Id.t + val create + : ?code:Jsonrpc.Id.t -> ?codeDescription:CodeDescription.t -> ?data:Json.t -> message:[ `String of string | `MarkupContent of MarkupContent.t ] @@ -1885,8 +1884,7 @@ module Command : sig ; title : string } - val create : - ?arguments:Json.t list -> command:string -> title:string -> unit -> t + val create : ?arguments:Json.t list -> command:string -> title:string -> unit -> t include Json.Jsonable.S with type t := t end @@ -1907,8 +1905,8 @@ module CodeAction : sig ; title : string } - val create : - ?command:Command.t + val create + : ?command:Command.t -> ?data:Json.t -> ?diagnostics:Diagnostic.t list -> ?disabled:disabled @@ -1929,8 +1927,8 @@ module CodeActionContext : sig ; triggerKind : CodeActionTriggerKind.t option } - val create : - diagnostics:Diagnostic.t list + val create + : diagnostics:Diagnostic.t list -> ?only:CodeActionKind.t list -> ?triggerKind:CodeActionTriggerKind.t -> unit @@ -1946,8 +1944,8 @@ module CodeActionOptions : sig ; workDoneProgress : bool option } - val create : - ?codeActionKinds:CodeActionKind.t list + val create + : ?codeActionKinds:CodeActionKind.t list -> ?resolveProvider:bool -> ?workDoneProgress:bool -> unit @@ -1965,8 +1963,8 @@ module CodeActionParams : sig ; workDoneToken : ProgressToken.t option } - val create : - context:CodeActionContext.t + val create + : context:CodeActionContext.t -> ?partialResultToken:ProgressToken.t -> range:Range.t -> textDocument:TextDocumentIdentifier.t @@ -1985,8 +1983,8 @@ module CodeActionRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?codeActionKinds:CodeActionKind.t list + val create + : ?codeActionKinds:CodeActionKind.t list -> ?documentSelector:DocumentSelector.t -> ?resolveProvider:bool -> ?workDoneProgress:bool @@ -2026,8 +2024,8 @@ module CodeLensParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -2043,8 +2041,8 @@ module CodeLensRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?resolveProvider:bool -> ?workDoneProgress:bool -> unit @@ -2084,8 +2082,8 @@ module ColorPresentation : sig ; textEdit : TextEdit.t option } - val create : - ?additionalTextEdits:TextEdit.t list + val create + : ?additionalTextEdits:TextEdit.t list -> label:string -> ?textEdit:TextEdit.t -> unit @@ -2103,8 +2101,8 @@ module ColorPresentationParams : sig ; workDoneToken : ProgressToken.t option } - val create : - color:Color.t + val create + : color:Color.t -> ?partialResultToken:ProgressToken.t -> range:Range.t -> textDocument:TextDocumentIdentifier.t @@ -2121,8 +2119,11 @@ module CompletionContext : sig ; triggerKind : CompletionTriggerKind.t } - val create : - ?triggerCharacter:string -> triggerKind:CompletionTriggerKind.t -> unit -> t + val create + : ?triggerCharacter:string + -> triggerKind:CompletionTriggerKind.t + -> unit + -> t include Json.Jsonable.S with type t := t end @@ -2158,8 +2159,7 @@ module CompletionItem : sig ; data : Json.t option ; deprecated : bool option ; detail : string option - ; documentation : - [ `String of string | `MarkupContent of MarkupContent.t ] option + ; documentation : [ `String of string | `MarkupContent of MarkupContent.t ] option ; filterText : string option ; insertText : string option ; insertTextFormat : InsertTextFormat.t option @@ -2171,13 +2171,12 @@ module CompletionItem : sig ; sortText : string option ; tags : CompletionItemTag.t list option ; textEdit : - [ `TextEdit of TextEdit.t | `InsertReplaceEdit of InsertReplaceEdit.t ] - option + [ `TextEdit of TextEdit.t | `InsertReplaceEdit of InsertReplaceEdit.t ] option ; textEditText : string option } - val create : - ?additionalTextEdits:TextEdit.t list + val create + : ?additionalTextEdits:TextEdit.t list -> ?command:Command.t -> ?commitCharacters:string list -> ?data:Json.t @@ -2194,8 +2193,7 @@ module CompletionItem : sig -> ?preselect:bool -> ?sortText:string -> ?tags:CompletionItemTag.t list - -> ?textEdit: - [ `TextEdit of TextEdit.t | `InsertReplaceEdit of InsertReplaceEdit.t ] + -> ?textEdit:[ `TextEdit of TextEdit.t | `InsertReplaceEdit of InsertReplaceEdit.t ] -> ?textEditText:string -> unit -> t @@ -2219,8 +2217,8 @@ module CompletionList : sig ; data : Json.t option } - val create_itemDefaults : - ?commitCharacters:string list + val create_itemDefaults + : ?commitCharacters:string list -> ?editRange:[ `Range of Range.t | `EditRange of editRange ] -> ?insertTextFormat:InsertTextFormat.t -> ?insertTextMode:InsertTextMode.t @@ -2234,8 +2232,8 @@ module CompletionList : sig ; items : CompletionItem.t list } - val create : - isIncomplete:bool + val create + : isIncomplete:bool -> ?itemDefaults:itemDefaults -> items:CompletionItem.t list -> unit @@ -2247,8 +2245,7 @@ end module CompletionOptions : sig type completionItem = { labelDetailsSupport : bool option } - val create_completionItem : - ?labelDetailsSupport:bool -> unit -> completionItem + val create_completionItem : ?labelDetailsSupport:bool -> unit -> completionItem type t = { allCommitCharacters : string list option @@ -2258,8 +2255,8 @@ module CompletionOptions : sig ; workDoneProgress : bool option } - val create : - ?allCommitCharacters:string list + val create + : ?allCommitCharacters:string list -> ?completionItem:completionItem -> ?resolveProvider:bool -> ?triggerCharacters:string list @@ -2279,8 +2276,8 @@ module CompletionParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?context:CompletionContext.t + val create + : ?context:CompletionContext.t -> ?partialResultToken:ProgressToken.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t @@ -2294,8 +2291,7 @@ end module CompletionRegistrationOptions : sig type completionItem = { labelDetailsSupport : bool option } - val create_completionItem : - ?labelDetailsSupport:bool -> unit -> completionItem + val create_completionItem : ?labelDetailsSupport:bool -> unit -> completionItem type t = { allCommitCharacters : string list option @@ -2306,8 +2302,8 @@ module CompletionRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?allCommitCharacters:string list + val create + : ?allCommitCharacters:string list -> ?completionItem:completionItem -> ?documentSelector:DocumentSelector.t -> ?resolveProvider:bool @@ -2371,8 +2367,8 @@ module LocationLink : sig ; targetUri : DocumentUri.t } - val create : - ?originSelectionRange:Range.t + val create + : ?originSelectionRange:Range.t -> targetRange:Range.t -> targetSelectionRange:Range.t -> targetUri:DocumentUri.t @@ -2404,8 +2400,8 @@ module DeclarationParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -2422,8 +2418,8 @@ module DeclarationRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -2463,8 +2459,8 @@ module DefinitionParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -2480,8 +2476,7 @@ module DefinitionRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t + val create : ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -2510,8 +2505,8 @@ module DiagnosticOptions : sig ; workspaceDiagnostics : bool } - val create : - ?identifier:string + val create + : ?identifier:string -> interFileDependencies:bool -> ?workDoneProgress:bool -> workspaceDiagnostics:bool @@ -2531,8 +2526,8 @@ module DiagnosticRegistrationOptions : sig ; workspaceDiagnostics : bool } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?identifier:string -> interFileDependencies:bool @@ -2563,8 +2558,7 @@ end module DidChangeConfigurationRegistrationOptions : sig type t = { section : [ `String of string | `List of string list ] option } - val create : - ?section:[ `String of string | `List of string list ] -> unit -> t + val create : ?section:[ `String of string | `List of string list ] -> unit -> t include Json.Jsonable.S with type t := t end @@ -2622,8 +2616,8 @@ module NotebookCell : sig ; metadata : Json.Object.t option } - val create : - document:DocumentUri.t + val create + : document:DocumentUri.t -> ?executionSummary:ExecutionSummary.t -> kind:NotebookCellKind.t -> ?metadata:Json.Object.t @@ -2641,8 +2635,7 @@ module TextDocumentItem : sig ; version : int } - val create : - languageId:string -> text:string -> uri:DocumentUri.t -> version:int -> t + val create : languageId:string -> text:string -> uri:DocumentUri.t -> version:int -> t include Json.Jsonable.S with type t := t end @@ -2654,8 +2647,7 @@ module NotebookCellArrayChange : sig ; start : int } - val create : - ?cells:NotebookCell.t list -> deleteCount:int -> start:int -> unit -> t + val create : ?cells:NotebookCell.t list -> deleteCount:int -> start:int -> unit -> t include Json.Jsonable.S with type t := t end @@ -2666,8 +2658,8 @@ module NotebookDocumentChangeEvent : sig ; changes : TextDocumentContentChangeEvent.t list } - val create_textContent : - document:VersionedTextDocumentIdentifier.t + val create_textContent + : document:VersionedTextDocumentIdentifier.t -> changes:TextDocumentContentChangeEvent.t list -> textContent @@ -2677,8 +2669,8 @@ module NotebookDocumentChangeEvent : sig ; didClose : TextDocumentIdentifier.t list option } - val create_structure : - array:NotebookCellArrayChange.t + val create_structure + : array:NotebookCellArrayChange.t -> ?didOpen:TextDocumentItem.t list -> ?didClose:TextDocumentIdentifier.t list -> unit @@ -2690,8 +2682,8 @@ module NotebookDocumentChangeEvent : sig ; textContent : textContent list option } - val create_cells : - ?structure:structure + val create_cells + : ?structure:structure -> ?data:NotebookCell.t list -> ?textContent:textContent list -> unit @@ -2713,8 +2705,8 @@ module DidChangeNotebookDocumentParams : sig ; notebookDocument : VersionedNotebookDocumentIdentifier.t } - val create : - change:NotebookDocumentChangeEvent.t + val create + : change:NotebookDocumentChangeEvent.t -> notebookDocument:VersionedNotebookDocumentIdentifier.t -> t @@ -2727,8 +2719,8 @@ module DidChangeTextDocumentParams : sig ; textDocument : VersionedTextDocumentIdentifier.t } - val create : - contentChanges:TextDocumentContentChangeEvent.t list + val create + : contentChanges:TextDocumentContentChangeEvent.t list -> textDocument:VersionedTextDocumentIdentifier.t -> t @@ -2816,8 +2808,7 @@ module WorkspaceFoldersChangeEvent : sig ; removed : WorkspaceFolder.t list } - val create : - added:WorkspaceFolder.t list -> removed:WorkspaceFolder.t list -> t + val create : added:WorkspaceFolder.t list -> removed:WorkspaceFolder.t list -> t include Json.Jsonable.S with type t := t end @@ -2844,8 +2835,8 @@ module DidCloseNotebookDocumentParams : sig ; notebookDocument : NotebookDocumentIdentifier.t } - val create : - cellTextDocuments:TextDocumentIdentifier.t list + val create + : cellTextDocuments:TextDocumentIdentifier.t list -> notebookDocument:NotebookDocumentIdentifier.t -> t @@ -2869,8 +2860,8 @@ module NotebookDocument : sig ; version : int } - val create : - cells:NotebookCell.t list + val create + : cells:NotebookCell.t list -> ?metadata:Json.Object.t -> notebookType:string -> uri:DocumentUri.t @@ -2887,8 +2878,8 @@ module DidOpenNotebookDocumentParams : sig ; notebookDocument : NotebookDocument.t } - val create : - cellTextDocuments:TextDocumentItem.t list + val create + : cellTextDocuments:TextDocumentItem.t list -> notebookDocument:NotebookDocument.t -> t @@ -2917,8 +2908,7 @@ module DidSaveTextDocumentParams : sig ; textDocument : TextDocumentIdentifier.t } - val create : - ?text:string -> textDocument:TextDocumentIdentifier.t -> unit -> t + val create : ?text:string -> textDocument:TextDocumentIdentifier.t -> unit -> t include Json.Jsonable.S with type t := t end @@ -2938,8 +2928,8 @@ module DocumentColorParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -2955,8 +2945,8 @@ module DocumentColorRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -2974,8 +2964,8 @@ module DocumentDiagnosticParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?identifier:string + val create + : ?identifier:string -> ?partialResultToken:ProgressToken.t -> ?previousResultId:string -> textDocument:TextDocumentIdentifier.t @@ -3009,23 +2999,21 @@ module RelatedUnchangedDocumentDiagnosticReport : sig type t = { relatedDocuments : ( DocumentUri.t - , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t - | `UnchangedDocumentDiagnosticReport of - UnchangedDocumentDiagnosticReport.t - ] ) - Json.Assoc.t - option + , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t + | `UnchangedDocumentDiagnosticReport of UnchangedDocumentDiagnosticReport.t + ] ) + Json.Assoc.t + option ; resultId : string } - val create : - ?relatedDocuments: + val create + : ?relatedDocuments: ( DocumentUri.t - , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t - | `UnchangedDocumentDiagnosticReport of - UnchangedDocumentDiagnosticReport.t - ] ) - Json.Assoc.t + , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t + | `UnchangedDocumentDiagnosticReport of UnchangedDocumentDiagnosticReport.t + ] ) + Json.Assoc.t -> resultId:string -> unit -> t @@ -3038,24 +3026,22 @@ module RelatedFullDocumentDiagnosticReport : sig { items : Diagnostic.t list ; relatedDocuments : ( DocumentUri.t - , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t - | `UnchangedDocumentDiagnosticReport of - UnchangedDocumentDiagnosticReport.t - ] ) - Json.Assoc.t - option + , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t + | `UnchangedDocumentDiagnosticReport of UnchangedDocumentDiagnosticReport.t + ] ) + Json.Assoc.t + option ; resultId : string option } - val create : - items:Diagnostic.t list + val create + : items:Diagnostic.t list -> ?relatedDocuments: ( DocumentUri.t - , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t - | `UnchangedDocumentDiagnosticReport of - UnchangedDocumentDiagnosticReport.t - ] ) - Json.Assoc.t + , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t + | `UnchangedDocumentDiagnosticReport of UnchangedDocumentDiagnosticReport.t + ] ) + Json.Assoc.t -> ?resultId:string -> unit -> t @@ -3065,8 +3051,7 @@ end module DocumentDiagnosticReport : sig type t = - [ `RelatedFullDocumentDiagnosticReport of - RelatedFullDocumentDiagnosticReport.t + [ `RelatedFullDocumentDiagnosticReport of RelatedFullDocumentDiagnosticReport.t | `RelatedUnchangedDocumentDiagnosticReport of RelatedUnchangedDocumentDiagnosticReport.t ] @@ -3078,21 +3063,19 @@ module DocumentDiagnosticReportPartialResult : sig type t = { relatedDocuments : ( DocumentUri.t - , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t - | `UnchangedDocumentDiagnosticReport of - UnchangedDocumentDiagnosticReport.t - ] ) - Json.Assoc.t + , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t + | `UnchangedDocumentDiagnosticReport of UnchangedDocumentDiagnosticReport.t + ] ) + Json.Assoc.t } - val create : - relatedDocuments: + val create + : relatedDocuments: ( DocumentUri.t - , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t - | `UnchangedDocumentDiagnosticReport of - UnchangedDocumentDiagnosticReport.t - ] ) - Json.Assoc.t + , [ `FullDocumentDiagnosticReport of FullDocumentDiagnosticReport.t + | `UnchangedDocumentDiagnosticReport of UnchangedDocumentDiagnosticReport.t + ] ) + Json.Assoc.t -> t include Json.Jsonable.S with type t := t @@ -3115,8 +3098,8 @@ module FormattingOptions : sig ; trimTrailingWhitespace : bool option } - val create : - ?insertFinalNewline:bool + val create + : ?insertFinalNewline:bool -> insertSpaces:bool -> tabSize:int -> ?trimFinalNewlines:bool @@ -3134,8 +3117,8 @@ module DocumentFormattingParams : sig ; workDoneToken : ProgressToken.t option } - val create : - options:FormattingOptions.t + val create + : options:FormattingOptions.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -3150,8 +3133,7 @@ module DocumentFormattingRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t + val create : ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -3183,8 +3165,8 @@ module DocumentHighlightParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -3200,8 +3182,7 @@ module DocumentHighlightRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t + val create : ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -3214,8 +3195,8 @@ module DocumentLink : sig ; tooltip : string option } - val create : - ?data:Json.t + val create + : ?data:Json.t -> range:Range.t -> ?target:DocumentUri.t -> ?tooltip:string @@ -3243,8 +3224,8 @@ module DocumentLinkParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -3260,8 +3241,8 @@ module DocumentLinkRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?resolveProvider:bool -> ?workDoneProgress:bool -> unit @@ -3276,8 +3257,8 @@ module DocumentOnTypeFormattingOptions : sig ; moreTriggerCharacter : string list option } - val create : - firstTriggerCharacter:string + val create + : firstTriggerCharacter:string -> ?moreTriggerCharacter:string list -> unit -> t @@ -3293,8 +3274,8 @@ module DocumentOnTypeFormattingParams : sig ; textDocument : TextDocumentIdentifier.t } - val create : - ch:string + val create + : ch:string -> options:FormattingOptions.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t @@ -3310,8 +3291,8 @@ module DocumentOnTypeFormattingRegistrationOptions : sig ; moreTriggerCharacter : string list option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> firstTriggerCharacter:string -> ?moreTriggerCharacter:string list -> unit @@ -3339,8 +3320,8 @@ module DocumentRangeFormattingParams : sig ; workDoneToken : ProgressToken.t option } - val create : - options:FormattingOptions.t + val create + : options:FormattingOptions.t -> range:Range.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -3357,8 +3338,8 @@ module DocumentRangeFormattingRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?rangesSupport:bool -> ?workDoneProgress:bool -> unit @@ -3375,8 +3356,8 @@ module DocumentRangesFormattingParams : sig ; workDoneToken : ProgressToken.t option } - val create : - options:FormattingOptions.t + val create + : options:FormattingOptions.t -> ranges:Range.t list -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -3398,8 +3379,8 @@ module DocumentSymbol : sig ; tags : SymbolTag.t list option } - val create : - ?children:t list + val create + : ?children:t list -> ?deprecated:bool -> ?detail:string -> kind:SymbolKind.t @@ -3431,8 +3412,8 @@ module DocumentSymbolParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -3448,8 +3429,8 @@ module DocumentSymbolRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?label:string -> ?workDoneProgress:bool -> unit @@ -3476,8 +3457,8 @@ module ExecuteCommandParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?arguments:Json.t list + val create + : ?arguments:Json.t list -> command:string -> ?workDoneToken:ProgressToken.t -> unit @@ -3512,8 +3493,8 @@ module FileOperationPattern : sig ; options : FileOperationPatternOptions.t option } - val create : - glob:string + val create + : glob:string -> ?matches:FileOperationPatternKind.t -> ?options:FileOperationPatternOptions.t -> unit @@ -3551,8 +3532,8 @@ module FileOperationOptions : sig ; willRename : FileOperationRegistrationOptions.t option } - val create : - ?didCreate:FileOperationRegistrationOptions.t + val create + : ?didCreate:FileOperationRegistrationOptions.t -> ?didDelete:FileOperationRegistrationOptions.t -> ?didRename:FileOperationRegistrationOptions.t -> ?willCreate:FileOperationRegistrationOptions.t @@ -3585,8 +3566,8 @@ module FoldingRange : sig ; startLine : int } - val create : - ?collapsedText:string + val create + : ?collapsedText:string -> ?endCharacter:int -> endLine:int -> ?kind:FoldingRangeKind.t @@ -3613,8 +3594,8 @@ module FoldingRangeParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -3630,8 +3611,8 @@ module FoldingRangeRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -3650,8 +3631,8 @@ module Hover : sig ; range : Range.t option } - val create : - contents: + val create + : contents: [ `MarkupContent of MarkupContent.t | `MarkedString of MarkedString.t | `List of MarkedString.t list @@ -3678,8 +3659,8 @@ module HoverParams : sig ; workDoneToken : ProgressToken.t option } - val create : - position:Position.t + val create + : position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -3694,8 +3675,7 @@ module HoverRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t + val create : ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -3716,8 +3696,8 @@ module ImplementationParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -3734,8 +3714,8 @@ module ImplementationRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -3773,8 +3753,8 @@ module InitializeParams : sig ; workspaceFolders : WorkspaceFolder.t list option option } - val create : - capabilities:ClientCapabilities.t + val create + : capabilities:ClientCapabilities.t -> ?clientInfo:clientInfo -> ?initializationOptions:Json.t -> ?locale:string @@ -3807,8 +3787,8 @@ module WorkspaceFoldersServerCapabilities : sig ; supported : bool option } - val create : - ?changeNotifications:[ `String of string | `Bool of bool ] + val create + : ?changeNotifications:[ `String of string | `Bool of bool ] -> ?supported:bool -> unit -> t @@ -3823,8 +3803,8 @@ module TypeHierarchyRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -3848,8 +3828,8 @@ module TypeDefinitionRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -3883,8 +3863,8 @@ module TextDocumentSyncOptions : sig ; willSaveWaitUntil : bool option } - val create : - ?change:TextDocumentSyncKind.t + val create + : ?change:TextDocumentSyncKind.t -> ?openClose:bool -> ?save:[ `Bool of bool | `SaveOptions of SaveOptions.t ] -> ?willSave:bool @@ -3902,8 +3882,8 @@ module SignatureHelpOptions : sig ; workDoneProgress : bool option } - val create : - ?retriggerCharacters:string list + val create + : ?retriggerCharacters:string list -> ?triggerCharacters:string list -> ?workDoneProgress:bool -> unit @@ -3937,8 +3917,8 @@ module SemanticTokensRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?full:[ `Bool of bool | `Full of full ] -> ?id:string -> legend:SemanticTokensLegend.t @@ -3962,8 +3942,8 @@ module SemanticTokensOptions : sig ; workDoneProgress : bool option } - val create : - ?full:[ `Bool of bool | `Full of full ] + val create + : ?full:[ `Bool of bool | `Full of full ] -> legend:SemanticTokensLegend.t -> ?range:bool -> ?workDoneProgress:bool @@ -3980,8 +3960,8 @@ module SelectionRangeRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -4023,8 +4003,7 @@ module MonikerRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t + val create : ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -4044,8 +4023,8 @@ module LinkedEditingRangeRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -4069,8 +4048,8 @@ module InlineValueRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -4103,8 +4082,8 @@ module InlayHintRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?resolveProvider:bool -> ?workDoneProgress:bool @@ -4131,8 +4110,8 @@ module ServerCapabilities : sig ; fileOperations : FileOperationOptions.t option } - val create_workspace : - ?workspaceFolders:WorkspaceFoldersServerCapabilities.t + val create_workspace + : ?workspaceFolders:WorkspaceFoldersServerCapabilities.t -> ?fileOperations:FileOperationOptions.t -> unit -> workspace @@ -4149,55 +4128,46 @@ module ServerCapabilities : sig { callHierarchyProvider : [ `Bool of bool | `CallHierarchyOptions of CallHierarchyOptions.t - | `CallHierarchyRegistrationOptions of - CallHierarchyRegistrationOptions.t + | `CallHierarchyRegistrationOptions of CallHierarchyRegistrationOptions.t ] - option + option ; codeActionProvider : [ `Bool of bool | `CodeActionOptions of CodeActionOptions.t ] option ; codeLensProvider : CodeLensOptions.t option ; colorProvider : [ `Bool of bool | `DocumentColorOptions of DocumentColorOptions.t - | `DocumentColorRegistrationOptions of - DocumentColorRegistrationOptions.t + | `DocumentColorRegistrationOptions of DocumentColorRegistrationOptions.t ] - option + option ; completionProvider : CompletionOptions.t option ; declarationProvider : [ `Bool of bool | `DeclarationOptions of DeclarationOptions.t | `DeclarationRegistrationOptions of DeclarationRegistrationOptions.t ] - option + option ; definitionProvider : [ `Bool of bool | `DefinitionOptions of DefinitionOptions.t ] option ; diagnosticProvider : [ `DiagnosticOptions of DiagnosticOptions.t | `DiagnosticRegistrationOptions of DiagnosticRegistrationOptions.t ] - option + option ; documentFormattingProvider : - [ `Bool of bool - | `DocumentFormattingOptions of DocumentFormattingOptions.t - ] - option + [ `Bool of bool | `DocumentFormattingOptions of DocumentFormattingOptions.t ] + option ; documentHighlightProvider : - [ `Bool of bool - | `DocumentHighlightOptions of DocumentHighlightOptions.t - ] - option + [ `Bool of bool | `DocumentHighlightOptions of DocumentHighlightOptions.t ] option ; documentLinkProvider : DocumentLinkOptions.t option - ; documentOnTypeFormattingProvider : - DocumentOnTypeFormattingOptions.t option + ; documentOnTypeFormattingProvider : DocumentOnTypeFormattingOptions.t option ; documentRangeFormattingProvider : [ `Bool of bool | `DocumentRangeFormattingOptions of DocumentRangeFormattingOptions.t ] - option + option ; documentSymbolProvider : - [ `Bool of bool | `DocumentSymbolOptions of DocumentSymbolOptions.t ] - option + [ `Bool of bool | `DocumentSymbolOptions of DocumentSymbolOptions.t ] option ; executeCommandProvider : ExecuteCommandOptions.t option ; experimental : Json.t option ; foldingRangeProvider : @@ -4205,111 +4175,98 @@ module ServerCapabilities : sig | `FoldingRangeOptions of FoldingRangeOptions.t | `FoldingRangeRegistrationOptions of FoldingRangeRegistrationOptions.t ] - option + option ; hoverProvider : [ `Bool of bool | `HoverOptions of HoverOptions.t ] option ; implementationProvider : [ `Bool of bool | `ImplementationOptions of ImplementationOptions.t - | `ImplementationRegistrationOptions of - ImplementationRegistrationOptions.t + | `ImplementationRegistrationOptions of ImplementationRegistrationOptions.t ] - option + option ; inlayHintProvider : [ `Bool of bool | `InlayHintOptions of InlayHintOptions.t | `InlayHintRegistrationOptions of InlayHintRegistrationOptions.t ] - option + option ; inlineCompletionProvider : - [ `Bool of bool - | `InlineCompletionOptions of InlineCompletionOptions.t - ] - option + [ `Bool of bool | `InlineCompletionOptions of InlineCompletionOptions.t ] option ; inlineValueProvider : [ `Bool of bool | `InlineValueOptions of InlineValueOptions.t | `InlineValueRegistrationOptions of InlineValueRegistrationOptions.t ] - option + option ; linkedEditingRangeProvider : [ `Bool of bool | `LinkedEditingRangeOptions of LinkedEditingRangeOptions.t | `LinkedEditingRangeRegistrationOptions of LinkedEditingRangeRegistrationOptions.t ] - option + option ; monikerProvider : [ `Bool of bool | `MonikerOptions of MonikerOptions.t | `MonikerRegistrationOptions of MonikerRegistrationOptions.t ] - option + option ; notebookDocumentSync : [ `NotebookDocumentSyncOptions of NotebookDocumentSyncOptions.t | `NotebookDocumentSyncRegistrationOptions of NotebookDocumentSyncRegistrationOptions.t ] - option + option ; positionEncoding : PositionEncodingKind.t option ; referencesProvider : [ `Bool of bool | `ReferenceOptions of ReferenceOptions.t ] option - ; renameProvider : - [ `Bool of bool | `RenameOptions of RenameOptions.t ] option + ; renameProvider : [ `Bool of bool | `RenameOptions of RenameOptions.t ] option ; selectionRangeProvider : [ `Bool of bool | `SelectionRangeOptions of SelectionRangeOptions.t - | `SelectionRangeRegistrationOptions of - SelectionRangeRegistrationOptions.t + | `SelectionRangeRegistrationOptions of SelectionRangeRegistrationOptions.t ] - option + option ; semanticTokensProvider : [ `SemanticTokensOptions of SemanticTokensOptions.t - | `SemanticTokensRegistrationOptions of - SemanticTokensRegistrationOptions.t + | `SemanticTokensRegistrationOptions of SemanticTokensRegistrationOptions.t ] - option + option ; signatureHelpProvider : SignatureHelpOptions.t option ; textDocument : textDocument option ; textDocumentSync : [ `TextDocumentSyncOptions of TextDocumentSyncOptions.t | `TextDocumentSyncKind of TextDocumentSyncKind.t ] - option + option ; typeDefinitionProvider : [ `Bool of bool | `TypeDefinitionOptions of TypeDefinitionOptions.t - | `TypeDefinitionRegistrationOptions of - TypeDefinitionRegistrationOptions.t + | `TypeDefinitionRegistrationOptions of TypeDefinitionRegistrationOptions.t ] - option + option ; typeHierarchyProvider : [ `Bool of bool | `TypeHierarchyOptions of TypeHierarchyOptions.t - | `TypeHierarchyRegistrationOptions of - TypeHierarchyRegistrationOptions.t + | `TypeHierarchyRegistrationOptions of TypeHierarchyRegistrationOptions.t ] - option + option ; workspace : workspace option ; workspaceSymbolProvider : - [ `Bool of bool | `WorkspaceSymbolOptions of WorkspaceSymbolOptions.t ] - option + [ `Bool of bool | `WorkspaceSymbolOptions of WorkspaceSymbolOptions.t ] option } - val create : - ?callHierarchyProvider: + val create + : ?callHierarchyProvider: [ `Bool of bool | `CallHierarchyOptions of CallHierarchyOptions.t - | `CallHierarchyRegistrationOptions of - CallHierarchyRegistrationOptions.t + | `CallHierarchyRegistrationOptions of CallHierarchyRegistrationOptions.t ] - -> ?codeActionProvider: - [ `Bool of bool | `CodeActionOptions of CodeActionOptions.t ] + -> ?codeActionProvider:[ `Bool of bool | `CodeActionOptions of CodeActionOptions.t ] -> ?codeLensProvider:CodeLensOptions.t -> ?colorProvider: [ `Bool of bool | `DocumentColorOptions of DocumentColorOptions.t - | `DocumentColorRegistrationOptions of - DocumentColorRegistrationOptions.t + | `DocumentColorRegistrationOptions of DocumentColorRegistrationOptions.t ] -> ?completionProvider:CompletionOptions.t -> ?declarationProvider: @@ -4317,20 +4274,15 @@ module ServerCapabilities : sig | `DeclarationOptions of DeclarationOptions.t | `DeclarationRegistrationOptions of DeclarationRegistrationOptions.t ] - -> ?definitionProvider: - [ `Bool of bool | `DefinitionOptions of DefinitionOptions.t ] + -> ?definitionProvider:[ `Bool of bool | `DefinitionOptions of DefinitionOptions.t ] -> ?diagnosticProvider: [ `DiagnosticOptions of DiagnosticOptions.t | `DiagnosticRegistrationOptions of DiagnosticRegistrationOptions.t ] -> ?documentFormattingProvider: - [ `Bool of bool - | `DocumentFormattingOptions of DocumentFormattingOptions.t - ] + [ `Bool of bool | `DocumentFormattingOptions of DocumentFormattingOptions.t ] -> ?documentHighlightProvider: - [ `Bool of bool - | `DocumentHighlightOptions of DocumentHighlightOptions.t - ] + [ `Bool of bool | `DocumentHighlightOptions of DocumentHighlightOptions.t ] -> ?documentLinkProvider:DocumentLinkOptions.t -> ?documentOnTypeFormattingProvider:DocumentOnTypeFormattingOptions.t -> ?documentRangeFormattingProvider: @@ -4350,8 +4302,7 @@ module ServerCapabilities : sig -> ?implementationProvider: [ `Bool of bool | `ImplementationOptions of ImplementationOptions.t - | `ImplementationRegistrationOptions of - ImplementationRegistrationOptions.t + | `ImplementationRegistrationOptions of ImplementationRegistrationOptions.t ] -> ?inlayHintProvider: [ `Bool of bool @@ -4359,9 +4310,7 @@ module ServerCapabilities : sig | `InlayHintRegistrationOptions of InlayHintRegistrationOptions.t ] -> ?inlineCompletionProvider: - [ `Bool of bool - | `InlineCompletionOptions of InlineCompletionOptions.t - ] + [ `Bool of bool | `InlineCompletionOptions of InlineCompletionOptions.t ] -> ?inlineValueProvider: [ `Bool of bool | `InlineValueOptions of InlineValueOptions.t @@ -4384,19 +4333,16 @@ module ServerCapabilities : sig NotebookDocumentSyncRegistrationOptions.t ] -> ?positionEncoding:PositionEncodingKind.t - -> ?referencesProvider: - [ `Bool of bool | `ReferenceOptions of ReferenceOptions.t ] + -> ?referencesProvider:[ `Bool of bool | `ReferenceOptions of ReferenceOptions.t ] -> ?renameProvider:[ `Bool of bool | `RenameOptions of RenameOptions.t ] -> ?selectionRangeProvider: [ `Bool of bool | `SelectionRangeOptions of SelectionRangeOptions.t - | `SelectionRangeRegistrationOptions of - SelectionRangeRegistrationOptions.t + | `SelectionRangeRegistrationOptions of SelectionRangeRegistrationOptions.t ] -> ?semanticTokensProvider: [ `SemanticTokensOptions of SemanticTokensOptions.t - | `SemanticTokensRegistrationOptions of - SemanticTokensRegistrationOptions.t + | `SemanticTokensRegistrationOptions of SemanticTokensRegistrationOptions.t ] -> ?signatureHelpProvider:SignatureHelpOptions.t -> ?textDocument:textDocument @@ -4407,14 +4353,12 @@ module ServerCapabilities : sig -> ?typeDefinitionProvider: [ `Bool of bool | `TypeDefinitionOptions of TypeDefinitionOptions.t - | `TypeDefinitionRegistrationOptions of - TypeDefinitionRegistrationOptions.t + | `TypeDefinitionRegistrationOptions of TypeDefinitionRegistrationOptions.t ] -> ?typeHierarchyProvider: [ `Bool of bool | `TypeHierarchyOptions of TypeHierarchyOptions.t - | `TypeHierarchyRegistrationOptions of - TypeHierarchyRegistrationOptions.t + | `TypeHierarchyRegistrationOptions of TypeHierarchyRegistrationOptions.t ] -> ?workspace:workspace -> ?workspaceSymbolProvider: @@ -4438,8 +4382,7 @@ module InitializeResult : sig ; serverInfo : serverInfo option } - val create : - capabilities:ServerCapabilities.t -> ?serverInfo:serverInfo -> unit -> t + val create : capabilities:ServerCapabilities.t -> ?serverInfo:serverInfo -> unit -> t include Json.Jsonable.S with type t := t end @@ -4464,8 +4407,8 @@ module InitializedParams_ : sig ; workDoneToken : ProgressToken.t option } - val create : - capabilities:ClientCapabilities.t + val create + : capabilities:ClientCapabilities.t -> ?clientInfo:clientInfo -> ?initializationOptions:Json.t -> ?locale:string @@ -4488,8 +4431,8 @@ module InlayHintLabelPart : sig ; value : string } - val create : - ?command:Command.t + val create + : ?command:Command.t -> ?location:Location.t -> ?tooltip:[ `String of string | `MarkupContent of MarkupContent.t ] -> value:string @@ -4511,8 +4454,8 @@ module InlayHint : sig ; tooltip : [ `String of string | `MarkupContent of MarkupContent.t ] option } - val create : - ?data:Json.t + val create + : ?data:Json.t -> ?kind:InlayHintKind.t -> label:[ `String of string | `List of InlayHintLabelPart.t list ] -> ?paddingLeft:bool @@ -4533,8 +4476,8 @@ module InlayHintParams : sig ; workDoneToken : ProgressToken.t option } - val create : - range:Range.t + val create + : range:Range.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -4560,8 +4503,8 @@ module InlineCompletionContext : sig ; triggerKind : InlineCompletionTriggerKind.t } - val create : - ?selectedCompletionInfo:SelectedCompletionInfo.t + val create + : ?selectedCompletionInfo:SelectedCompletionInfo.t -> triggerKind:InlineCompletionTriggerKind.t -> unit -> t @@ -4585,8 +4528,8 @@ module InlineCompletionItem : sig ; range : Range.t option } - val create : - ?command:Command.t + val create + : ?command:Command.t -> ?filterText:string -> insertText:[ `String of string | `StringValue of StringValue.t ] -> ?range:Range.t @@ -4612,8 +4555,8 @@ module InlineCompletionParams : sig ; workDoneToken : ProgressToken.t option } - val create : - context:InlineCompletionContext.t + val create + : context:InlineCompletionContext.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -4630,8 +4573,8 @@ module InlineCompletionRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?id:string -> ?workDoneProgress:bool -> unit @@ -4658,8 +4601,8 @@ module InlineValueVariableLookup : sig ; variableName : string option } - val create : - caseSensitiveLookup:bool + val create + : caseSensitiveLookup:bool -> range:Range.t -> ?variableName:string -> unit @@ -4708,8 +4651,8 @@ module InlineValueParams : sig ; workDoneToken : ProgressToken.t option } - val create : - context:InlineValueContext.t + val create + : context:InlineValueContext.t -> range:Range.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -4726,8 +4669,8 @@ module LinkedEditingRangeParams : sig ; workDoneToken : ProgressToken.t option } - val create : - position:Position.t + val create + : position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -4785,8 +4728,8 @@ module Moniker : sig ; unique : UniquenessLevel.t } - val create : - identifier:string + val create + : identifier:string -> ?kind:MonikerKind.t -> scheme:string -> unique:UniquenessLevel.t @@ -4804,8 +4747,8 @@ module MonikerParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -4817,13 +4760,12 @@ end module ParameterInformation : sig type t = - { documentation : - [ `String of string | `MarkupContent of MarkupContent.t ] option + { documentation : [ `String of string | `MarkupContent of MarkupContent.t ] option ; label : [ `String of string | `Offset of int * int ] } - val create : - ?documentation:[ `String of string | `MarkupContent of MarkupContent.t ] + val create + : ?documentation:[ `String of string | `MarkupContent of MarkupContent.t ] -> label:[ `String of string | `Offset of int * int ] -> unit -> t @@ -4846,8 +4788,8 @@ module PrepareRenameParams : sig ; workDoneToken : ProgressToken.t option } - val create : - position:Position.t + val create + : position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -4874,8 +4816,8 @@ module PublishDiagnosticsParams : sig ; version : int option } - val create : - diagnostics:Diagnostic.t list + val create + : diagnostics:Diagnostic.t list -> uri:DocumentUri.t -> ?version:int -> unit @@ -4901,8 +4843,8 @@ module ReferenceParams : sig ; workDoneToken : ProgressToken.t option } - val create : - context:ReferenceContext.t + val create + : context:ReferenceContext.t -> ?partialResultToken:ProgressToken.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t @@ -4919,8 +4861,7 @@ module ReferenceRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t + val create : ?documentSelector:DocumentSelector.t -> ?workDoneProgress:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -4932,8 +4873,7 @@ module Registration : sig ; registerOptions : Json.t option } - val create : - id:string -> method_:string -> ?registerOptions:Json.t -> unit -> t + val create : id:string -> method_:string -> ?registerOptions:Json.t -> unit -> t include Json.Jsonable.S with type t := t end @@ -4962,8 +4902,8 @@ module RenameParams : sig ; workDoneToken : ProgressToken.t option } - val create : - newName:string + val create + : newName:string -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -4980,8 +4920,8 @@ module RenameRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?prepareProvider:bool -> ?workDoneProgress:bool -> unit @@ -4996,8 +4936,7 @@ module ResourceOperation : sig ; kind : string } - val create : - ?annotationId:ChangeAnnotationIdentifier.t -> kind:string -> unit -> t + val create : ?annotationId:ChangeAnnotationIdentifier.t -> kind:string -> unit -> t include Json.Jsonable.S with type t := t end @@ -5021,8 +4960,8 @@ module SelectionRangeParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> positions:Position.t list -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -5074,8 +5013,8 @@ module SemanticTokensDeltaParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> previousResultId:string -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -5100,8 +5039,8 @@ module SemanticTokensParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -5126,8 +5065,8 @@ module SemanticTokensRangeParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> range:Range.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -5153,8 +5092,8 @@ module ShowDocumentParams : sig ; uri : DocumentUri.t } - val create : - ?external_:bool + val create + : ?external_:bool -> ?selection:Range.t -> ?takeFocus:bool -> uri:DocumentUri.t @@ -5190,8 +5129,8 @@ module ShowMessageRequestParams : sig ; type_ : MessageType.t } - val create : - ?actions:MessageActionItem.t list + val create + : ?actions:MessageActionItem.t list -> message:string -> type_:MessageType.t -> unit @@ -5203,14 +5142,13 @@ end module SignatureInformation : sig type t = { activeParameter : int option option - ; documentation : - [ `String of string | `MarkupContent of MarkupContent.t ] option + ; documentation : [ `String of string | `MarkupContent of MarkupContent.t ] option ; label : string ; parameters : ParameterInformation.t list option } - val create : - ?activeParameter:int option + val create + : ?activeParameter:int option -> ?documentation:[ `String of string | `MarkupContent of MarkupContent.t ] -> label:string -> ?parameters:ParameterInformation.t list @@ -5227,8 +5165,8 @@ module SignatureHelp : sig ; signatures : SignatureInformation.t list } - val create : - ?activeParameter:int option + val create + : ?activeParameter:int option -> ?activeSignature:int -> signatures:SignatureInformation.t list -> unit @@ -5245,8 +5183,8 @@ module SignatureHelpContext : sig ; triggerKind : SignatureHelpTriggerKind.t } - val create : - ?activeSignatureHelp:SignatureHelp.t + val create + : ?activeSignatureHelp:SignatureHelp.t -> isRetrigger:bool -> ?triggerCharacter:string -> triggerKind:SignatureHelpTriggerKind.t @@ -5264,8 +5202,8 @@ module SignatureHelpParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?context:SignatureHelpContext.t + val create + : ?context:SignatureHelpContext.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -5283,8 +5221,8 @@ module SignatureHelpRegistrationOptions : sig ; workDoneProgress : bool option } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> ?retriggerCharacters:string list -> ?triggerCharacters:string list -> ?workDoneProgress:bool @@ -5312,8 +5250,8 @@ module SymbolInformation : sig ; tags : SymbolTag.t list option } - val create : - ?containerName:string + val create + : ?containerName:string -> ?deprecated:bool -> kind:SymbolKind.t -> location:Location.t @@ -5331,8 +5269,8 @@ module TextDocumentChangeRegistrationOptions : sig ; syncKind : TextDocumentSyncKind.t } - val create : - ?documentSelector:DocumentSelector.t + val create + : ?documentSelector:DocumentSelector.t -> syncKind:TextDocumentSyncKind.t -> unit -> t @@ -5365,8 +5303,7 @@ module TextDocumentSaveRegistrationOptions : sig ; includeText : bool option } - val create : - ?documentSelector:DocumentSelector.t -> ?includeText:bool -> unit -> t + val create : ?documentSelector:DocumentSelector.t -> ?includeText:bool -> unit -> t include Json.Jsonable.S with type t := t end @@ -5379,8 +5316,8 @@ module TypeDefinitionParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t @@ -5402,8 +5339,8 @@ module TypeHierarchyItem : sig ; uri : DocumentUri.t } - val create : - ?data:Json.t + val create + : ?data:Json.t -> ?detail:string -> kind:SymbolKind.t -> name:string @@ -5424,8 +5361,8 @@ module TypeHierarchyPrepareParams : sig ; workDoneToken : ProgressToken.t option } - val create : - position:Position.t + val create + : position:Position.t -> textDocument:TextDocumentIdentifier.t -> ?workDoneToken:ProgressToken.t -> unit @@ -5441,8 +5378,8 @@ module TypeHierarchySubtypesParams : sig ; workDoneToken : ProgressToken.t option } - val create : - item:TypeHierarchyItem.t + val create + : item:TypeHierarchyItem.t -> ?partialResultToken:ProgressToken.t -> ?workDoneToken:ProgressToken.t -> unit @@ -5458,8 +5395,8 @@ module TypeHierarchySupertypesParams : sig ; workDoneToken : ProgressToken.t option } - val create : - item:TypeHierarchyItem.t + val create + : item:TypeHierarchyItem.t -> ?partialResultToken:ProgressToken.t -> ?workDoneToken:ProgressToken.t -> unit @@ -5493,8 +5430,8 @@ module WillSaveTextDocumentParams : sig ; textDocument : TextDocumentIdentifier.t } - val create : - reason:TextDocumentSaveReason.t + val create + : reason:TextDocumentSaveReason.t -> textDocument:TextDocumentIdentifier.t -> t @@ -5509,8 +5446,8 @@ module WorkDoneProgressBegin : sig ; title : string } - val create : - ?cancellable:bool + val create + : ?cancellable:bool -> ?message:string -> ?percentage:int -> title:string @@ -5567,8 +5504,7 @@ module WorkDoneProgressReport : sig ; percentage : int option } - val create : - ?cancellable:bool -> ?message:string -> ?percentage:int -> unit -> t + val create : ?cancellable:bool -> ?message:string -> ?percentage:int -> unit -> t include Json.Jsonable.S with type t := t end @@ -5581,8 +5517,8 @@ module WorkspaceDiagnosticParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?identifier:string + val create + : ?identifier:string -> ?partialResultToken:ProgressToken.t -> previousResultIds:PreviousResultId.t list -> ?workDoneToken:ProgressToken.t @@ -5612,8 +5548,8 @@ module WorkspaceFullDocumentDiagnosticReport : sig ; version : int option } - val create : - items:Diagnostic.t list + val create + : items:Diagnostic.t list -> ?resultId:string -> uri:DocumentUri.t -> ?version:int @@ -5625,8 +5561,7 @@ end module WorkspaceDocumentDiagnosticReport : sig type t = - [ `WorkspaceFullDocumentDiagnosticReport of - WorkspaceFullDocumentDiagnosticReport.t + [ `WorkspaceFullDocumentDiagnosticReport of WorkspaceFullDocumentDiagnosticReport.t | `WorkspaceUnchangedDocumentDiagnosticReport of WorkspaceUnchangedDocumentDiagnosticReport.t ] @@ -5668,8 +5603,8 @@ module WorkspaceSymbol : sig ; tags : SymbolTag.t list option } - val create : - ?containerName:string + val create + : ?containerName:string -> ?data:Json.t -> kind:SymbolKind.t -> location:Location.t @@ -5688,8 +5623,8 @@ module WorkspaceSymbolParams : sig ; workDoneToken : ProgressToken.t option } - val create : - ?partialResultToken:ProgressToken.t + val create + : ?partialResultToken:ProgressToken.t -> query:string -> ?workDoneToken:ProgressToken.t -> unit diff --git a/lsp/src/uri0.ml b/lsp/src/uri0.ml index ac5630fb2..270674dea 100644 --- a/lsp/src/uri0.ml +++ b/lsp/src/uri0.ml @@ -17,44 +17,48 @@ type t = Uri_lexer.t = let backslash_to_slash = String.map ~f:(function - | '\\' -> '/' - | c -> c) + | '\\' -> '/' + | c -> c) +;; let slash_to_backslash = String.map ~f:(function - | '/' -> '\\' - | c -> c) + | '/' -> '\\' + | c -> c) +;; let of_path path = let path = if !Private.win32 then backslash_to_slash path else path in Uri_lexer.of_path path +;; let to_path { path; authority; scheme } = let path = let len = String.length path in - if len = 0 then "/" - else + if len = 0 + then "/" + else ( let buff = Buffer.create 64 in - (if (not (String.is_empty authority)) && len > 1 && scheme = "file" then ( - Buffer.add_string buff "//"; - Buffer.add_string buff authority; - Buffer.add_string buff path) - else if len < 3 then Buffer.add_string buff path - else - let c0 = path.[0] in - let c1 = path.[1] in - let c2 = path.[2] in - if - c0 = '/' - && ((c1 >= 'A' && c1 <= 'Z') || (c1 >= 'a' && c1 <= 'z')) - && c2 = ':' - then ( - Buffer.add_char buff (Char.lowercase_ascii c1); - Buffer.add_substring buff path 2 (String.length path - 2)) - else Buffer.add_string buff path); - Buffer.contents buff + if (not (String.is_empty authority)) && len > 1 && scheme = "file" + then ( + Buffer.add_string buff "//"; + Buffer.add_string buff authority; + Buffer.add_string buff path) + else if len < 3 + then Buffer.add_string buff path + else ( + let c0 = path.[0] in + let c1 = path.[1] in + let c2 = path.[2] in + if c0 = '/' && ((c1 >= 'A' && c1 <= 'Z') || (c1 >= 'a' && c1 <= 'z')) && c2 = ':' + then ( + Buffer.add_char buff (Char.lowercase_ascii c1); + Buffer.add_substring buff path 2 (String.length path - 2)) + else Buffer.add_string buff path); + Buffer.contents buff) in if !Private.win32 then slash_to_backslash path else path +;; let of_string = Uri_lexer.of_string @@ -68,6 +72,7 @@ let safe_chars = a.(c) <- true done; a +;; let slash_code = 47 @@ -76,64 +81,64 @@ let encode ?(allow_slash = false) s = let len = String.length s in let buf = Buffer.create len in let rec scan start cur = - if cur >= len then Buffer.add_substring buf s start (cur - start) - else + if cur >= len + then Buffer.add_substring buf s start (cur - start) + else ( let c = Char.code s.[cur] in - if (allow_slash && c = slash_code) || safe_chars.(c) then - scan start (cur + 1) + if (allow_slash && c = slash_code) || safe_chars.(c) + then scan start (cur + 1) else ( if cur > start then Buffer.add_substring buf s start (cur - start); Buffer.add_string buf (Printf.sprintf "%%%02X" c); - scan (cur + 1) (cur + 1)) + scan (cur + 1) (cur + 1))) in scan 0 0; Buffer.contents buf +;; let to_string { scheme; authority; path } = let buff = Buffer.create 64 in - - if not (String.is_empty scheme) then ( + if not (String.is_empty scheme) + then ( Buffer.add_string buff scheme; Buffer.add_char buff ':'); - - if (not (String.is_empty authority)) || scheme = "file" then - Buffer.add_string buff "//"; - + if (not (String.is_empty authority)) || scheme = "file" then Buffer.add_string buff "//"; (*TODO: implement full logic: https://github.com/microsoft/vscode-uri/blob/96acdc0be5f9d5f2640e1c1f6733bbf51ec95177/src/uri.ts#L605 *) - (if not (String.is_empty authority) then - let s = String.lowercase_ascii authority in - Buffer.add_string buff (encode s)); - - (if not (String.is_empty path) then - let encode = encode ~allow_slash:true in - let encoded_colon = "%3A" in - let len = String.length path in - if len >= 3 && path.[0] = '/' && path.[2] = ':' then ( - let drive_letter = Char.lowercase_ascii path.[1] in - if drive_letter >= 'a' && drive_letter <= 'z' then ( - Buffer.add_char buff '/'; - Buffer.add_char buff drive_letter; - Buffer.add_string buff encoded_colon; - let s = String.sub path ~pos:3 ~len:(len - 3) in - Buffer.add_string buff (encode s))) - else if len >= 2 && path.[1] = ':' then ( - let drive_letter = Char.lowercase_ascii path.[0] in - if drive_letter >= 'a' && drive_letter <= 'z' then ( - Buffer.add_char buff drive_letter; - Buffer.add_string buff encoded_colon; - let s = String.sub path ~pos:2 ~len:(len - 2) in - Buffer.add_string buff (encode s))) - else Buffer.add_string buff (encode path)); - + if not (String.is_empty authority) + then ( + let s = String.lowercase_ascii authority in + Buffer.add_string buff (encode s)); + if not (String.is_empty path) + then ( + let encode = encode ~allow_slash:true in + let encoded_colon = "%3A" in + let len = String.length path in + if len >= 3 && path.[0] = '/' && path.[2] = ':' + then ( + let drive_letter = Char.lowercase_ascii path.[1] in + if drive_letter >= 'a' && drive_letter <= 'z' + then ( + Buffer.add_char buff '/'; + Buffer.add_char buff drive_letter; + Buffer.add_string buff encoded_colon; + let s = String.sub path ~pos:3 ~len:(len - 3) in + Buffer.add_string buff (encode s))) + else if len >= 2 && path.[1] = ':' + then ( + let drive_letter = Char.lowercase_ascii path.[0] in + if drive_letter >= 'a' && drive_letter <= 'z' + then ( + Buffer.add_char buff drive_letter; + Buffer.add_string buff encoded_colon; + let s = String.sub path ~pos:2 ~len:(len - 2) in + Buffer.add_string buff (encode s))) + else Buffer.add_string buff (encode path)); Buffer.contents buff +;; let yojson_of_t t = `String (to_string t) - let t_of_yojson json = Json.Conv.string_of_yojson json |> of_string - let equal = ( = ) - let compare (x : t) (y : t) = Stdlib.compare x y - let hash = Hashtbl.hash diff --git a/lsp/src/uri0.mli b/lsp/src/uri0.mli index 217604ad1..a83af3fe5 100644 --- a/lsp/src/uri0.mli +++ b/lsp/src/uri0.mli @@ -5,15 +5,10 @@ type t include Json.Jsonable.S with type t := t val compare : t -> t -> int - val equal : t -> t -> bool - val hash : t -> int - val to_path : t -> string - val of_path : string -> t - val to_string : t -> string module Private : sig diff --git a/lsp/src/uri_lexer.mli b/lsp/src/uri_lexer.mli index fc3eb0e3d..3b3ef7ddb 100644 --- a/lsp/src/uri_lexer.mli +++ b/lsp/src/uri_lexer.mli @@ -5,5 +5,4 @@ type t = } val of_string : string -> t - val of_path : string -> t diff --git a/lsp/test/diff_tests.ml b/lsp/test/diff_tests.ml index 390aca1bf..5ce731998 100644 --- a/lsp/test/diff_tests.ml +++ b/lsp/test/diff_tests.ml @@ -23,16 +23,17 @@ let test ~from ~to_ = (DidOpenTextDocumentParams.create ~textDocument) in let to_' = - Text_document.apply_text_document_edits text_document edits - |> Text_document.text + Text_document.apply_text_document_edits text_document edits |> Text_document.text in - if not @@ String.equal to_ to_' then - printfn "[FAILURE]\nresult: %S\nexpected: %S" to_' to_ + if not @@ String.equal to_ to_' + then printfn "[FAILURE]\nresult: %S\nexpected: %S" to_' to_ +;; let%expect_test "empty strings" = test ~from:"" ~to_:""; [%expect {| [] |}] +;; let%expect_test "from empty" = test ~from:"" ~to_:"foobar"; @@ -59,6 +60,7 @@ let%expect_test "from empty" = } } ] |}] +;; let%expect_test "from empty - with newline" = test ~from:"" ~to_:"foobar\n"; @@ -73,6 +75,7 @@ let%expect_test "from empty - with newline" = } } ] |}] +;; let%expect_test "to empty" = test ~from:"foobar" ~to_:""; @@ -87,11 +90,13 @@ let%expect_test "to empty" = } } ] |}] +;; let%expect_test "no change" = test ~from:"foobar" ~to_:"foobar"; [%expect {| [] |}] +;; let%expect_test "multiline" = test ~from:"foo" ~to_:"baz\nbar\nxx\n"; @@ -106,6 +111,7 @@ let%expect_test "multiline" = } } ] |}] +;; let%expect_test "change a character" = test ~from:"xxx y xx" ~to_:"xxx z xx"; @@ -120,6 +126,7 @@ let%expect_test "change a character" = } } ] |}] +;; let%expect_test "delete empty line" = test ~from:"xxx\n\nyyy\n" ~to_:"xxx\nyyy\n"; @@ -134,6 +141,7 @@ let%expect_test "delete empty line" = } } ] |}] +;; let%expect_test "regerssion test 1" = Printexc.record_backtrace false; @@ -163,6 +171,7 @@ z } } ] |}] +;; let%expect_test "regerssion test 2" = test ~from:"1\nz\n2" ~to_:"2\n1\n"; @@ -184,6 +193,7 @@ let%expect_test "regerssion test 2" = } } ] |}] +;; let%expect_test "regression test 3" = (* the diff given here is wierd *) @@ -206,6 +216,7 @@ let%expect_test "regression test 3" = } } ] |}] +;; let%expect_test "regression test 4" = (* the diff given here is wierd *) @@ -228,6 +239,7 @@ let%expect_test "regression test 4" = } } ] |}] +;; let%expect_test "regression test 5" = test ~from:"\nXXX\n\n" ~to_:"XXX\n"; @@ -249,3 +261,4 @@ let%expect_test "regression test 5" = } } ] |}] +;; diff --git a/lsp/test/string_zipper_tests.ml b/lsp/test/string_zipper_tests.ml index 7b948704d..61e166e23 100644 --- a/lsp/test/string_zipper_tests.ml +++ b/lsp/test/string_zipper_tests.ml @@ -2,19 +2,19 @@ open Stdune module String_zipper = Lsp.Private.String_zipper module Substring = Lsp.Private.Substring -let to_dyn - { String_zipper.Private.left; rel_pos; current; right; line; abs_pos } = +let to_dyn { String_zipper.Private.left; rel_pos; current; right; line; abs_pos } = let open Dyn in let sub x = string (Substring.to_string x) in let subs = list sub in record - [ ("left", subs left) - ; ("rel_pos", int rel_pos) - ; ("abs_pos", int abs_pos) - ; ("current", sub current) - ; ("right", subs right) - ; ("line", int line) + [ "left", subs left + ; "rel_pos", int rel_pos + ; "abs_pos", int abs_pos + ; "current", sub current + ; "right", subs right + ; "line", int line ] +;; type op = [ `Goto_line of int @@ -25,7 +25,7 @@ let test ?(which = `All) mode start operations = let results = List.fold_left operations - ~init:[ (`Hide, start) ] + ~init:[ `Hide, start ] ~f:(fun acc (op : [ op | `Hide of op ]) -> let final = let _, last = List.hd acc in @@ -35,11 +35,12 @@ let test ?(which = `All) mode start operations = | `Goto_line g -> String_zipper.goto_line last g in match op with - | `Hide op -> (`Hide, commit_op op) - | #op as x -> (`Show, commit_op x) + | `Hide op -> `Hide, commit_op op + | #op as x -> `Show, commit_op x in final :: acc) - |> List.rev |> List.tl + |> List.rev + |> List.tl in let results = match which with @@ -47,22 +48,19 @@ let test ?(which = `All) mode start operations = | `Last -> [ List.rev results |> List.hd ] in List.filter_map results ~f:(fun (display, res) -> - match display with - | `Hide -> None - | `Show -> Some res) + match display with + | `Hide -> None + | `Show -> Some res) |> List.iter ~f:(fun res -> - let res = - match mode with - | `Dyn -> - String_zipper.Private.reflect res |> to_dyn |> Dyn.to_string - | `String -> - let line = (String_zipper.Private.reflect res).line in - Printf.sprintf - "line %d: %S" - line - (String_zipper.to_string_debug res) - in - Printf.printf "%s\n" res) + let res = + match mode with + | `Dyn -> String_zipper.Private.reflect res |> to_dyn |> Dyn.to_string + | `String -> + let line = (String_zipper.Private.reflect res).line in + Printf.sprintf "line %d: %S" line (String_zipper.to_string_debug res) + in + Printf.printf "%s\n" res) +;; let%expect_test "goto line" = let foo = String_zipper.of_string "foo\nX\nY" in @@ -100,6 +98,7 @@ let%expect_test "goto line" = line 0: "|bazfoo\nX\nY" line 1: "bazfoo\n|X\nY" line 1: "bazfoo\n|1X\nY" |}] +;; let%expect_test "insertions" = let foo = String_zipper.of_string "foo" in @@ -113,6 +112,7 @@ let%expect_test "insertions" = [%expect {| line 0: "|afoo" line 0: "|bafoo" |}] +;; let%expect_test "mixed insert goto" = let foo = String_zipper.of_string "foo" in @@ -122,6 +122,7 @@ let%expect_test "mixed insert goto" = line 0: "|XXXfoo" line 0: "|YYYXXXfoo" line 0: "|zzzYYYXXXfoo" |}] +;; let%expect_test "drop_until" = let t = String_zipper.of_string "foo\nbar\nxxx" in @@ -142,6 +143,7 @@ let%expect_test "drop_until" = let t = String_zipper.drop_until t t in printfn "%S" (String_zipper.to_string_debug t); [%expect {| "123\n|" |}] +;; let%expect_test "squashing" = let str = "foo\nbar" in @@ -152,6 +154,7 @@ let%expect_test "squashing" = printfn "squashing: %S" (String_zipper.to_string_debug t); [%expect {| squashing: "foo\n|bar" |}] +;; let%expect_test "add buffer between" = let str = "foo\nbar" in @@ -162,6 +165,7 @@ let%expect_test "add buffer between" = printfn "result: %S" (Buffer.contents b); [%expect {| result: "foo\n" |}] +;; let%expect_test "drop_until bug" = let t = String_zipper.of_string "foo\nbar\nxxx" in @@ -174,3 +178,4 @@ let%expect_test "drop_until bug" = printfn "abs_pos: %d" (String_zipper.Private.reflect t).abs_pos; [%expect {| abs_pos: 8 |}] +;; diff --git a/lsp/test/substring_tests.ml b/lsp/test/substring_tests.ml index 245ec7528..11a1116b7 100644 --- a/lsp/test/substring_tests.ml +++ b/lsp/test/substring_tests.ml @@ -2,7 +2,6 @@ module Substring = Lsp.Private.Substring module List = ListLabels let () = Printexc.record_backtrace false - let printf = Printf.printf let make_sub pre sub post = @@ -11,13 +10,15 @@ let make_sub pre sub post = let res = Substring.take res (String.length sub) in assert (sub = Substring.to_string res); res +;; let common_variations sub = List.map - [ ("foo", ""); ("", "baz"); ("a", "b"); ("\n", ""); ("", "\n") ] + [ "foo", ""; "", "baz"; "a", "b"; "\n", ""; "", "\n" ] ~f:(fun (pre, post) -> let name = Printf.sprintf "(%S, %S, %S)" pre sub post in - (name, make_sub pre sub post)) + name, make_sub pre sub post) +;; let%expect_test "split_at" = let test sub i = @@ -33,6 +34,7 @@ let%expect_test "split_at" = [%expect {| l = "foo" r = "|bar" |}]; test s 1; [%expect {| l = "f" r = "oo|bar" |}] +;; let%expect_test "index_from" = let test sub pos char = @@ -48,6 +50,7 @@ let%expect_test "index_from" = [%expect {| drop 3 = "|bar" |}]; test s 4 '|'; [%expect {| Not found |}] +;; let%expect_test "rsplit_at" = let test sub i = @@ -64,6 +67,7 @@ let%expect_test "rsplit_at" = test s 7; [%expect {| "" "foo|bar" |}] +;; let test f sub ~pos ~len = let res = f (Substring.of_string sub) ~pos ~len in @@ -74,10 +78,12 @@ let test f sub ~pos ~len = print res; let variations = common_variations sub in List.iter variations ~f:(fun (name, sub) -> - let res' = f sub ~pos ~len in - if res <> res' then ( - printf "[FAIL] %s:\n" name; - print res')) + let res' = f sub ~pos ~len in + if res <> res' + then ( + printf "[FAIL] %s:\n" name; + print res')) +;; let%expect_test "move_left" = let test = test Substring.move_left in @@ -101,6 +107,7 @@ let%expect_test "move_left" = [%expect {| [definitive] newlines = 0 consumed = 1 |}] +;; let%expect_test "move_right" = let test = test Substring.move_right in @@ -120,6 +127,7 @@ let%expect_test "move_right" = [%expect {| [definitive] newlines = 1 consumed = 2 |}] +;; let%expect_test "rindex_from" = let test sub pos = @@ -139,10 +147,11 @@ let%expect_test "rindex_from" = print res; let variations = common_variations sub in List.iter variations ~f:(fun (name, sub) -> - let res' = f sub in - if res <> res' then ( - printf "[FAIL] %s:\n" name; - print res')) + let res' = f sub in + if res <> res' + then ( + printf "[FAIL] %s:\n" name; + print res')) in test "foo" 0; [%expect {| @@ -178,3 +187,4 @@ let%expect_test "rindex_from" = {| [definitive] exception: Invalid_argument("Substring.rindex_from: out of bounds") |}] +;; diff --git a/lsp/test/text_document_tests.ml b/lsp/test/text_document_tests.ml index af0a72cdd..2edae8a5e 100644 --- a/lsp/test/text_document_tests.ml +++ b/lsp/test/text_document_tests.ml @@ -13,19 +13,19 @@ let tuple_range start end_ = (let line, character = end_ in { Position.line; character }) } +;; let make_document ?(position_encoding = `UTF8) uri ~text = let td = let version = 1 in let languageId = "fake language" in let textDocument = { TextDocumentItem.uri; version; languageId; text } in - Text_document.make - ~position_encoding - { DidOpenTextDocumentParams.textDocument } + Text_document.make ~position_encoding { DidOpenTextDocumentParams.textDocument } in Text_document.apply_content_changes td [ TextDocumentContentChangeEvent.create ~text () ] +;; let test_general text changes = let test position_encoding = @@ -34,79 +34,84 @@ let test_general text changes = let version = 1 in let languageId = "fake language" in let textDocument = { TextDocumentItem.uri; version; languageId; text } in - Text_document.make - ~position_encoding - { DidOpenTextDocumentParams.textDocument } + Text_document.make ~position_encoding { DidOpenTextDocumentParams.textDocument } in let td = Text_document.apply_content_changes td (ListLabels.map changes ~f:(fun (range, text) -> - TextDocumentContentChangeEvent.create ?range ~text ())) + TextDocumentContentChangeEvent.create ?range ~text ())) in Text_document.text td in let utf8 = test `UTF8 in let utf16 = test `UTF16 in - if String.equal utf16 utf8 then printf "result: %s\n" (String.escaped utf8) + if String.equal utf16 utf8 + then printf "result: %s\n" (String.escaped utf8) else ( print_endline "[FAILURE] utf16 and utf8 disagree"; printf "utf16: %s\n" (String.escaped utf16); printf "utf8: %s\n" (String.escaped utf8)) +;; -let test text range ~change = test_general text [ (Some range, change) ] +let test text range ~change = test_general text [ Some range, change ] let test_multiple text changes = - test_general - text - (List.map changes ~f:(fun (range, text) -> (Some range, text))) + test_general text (List.map changes ~f:(fun (range, text) -> Some range, text)) +;; let%expect_test "first line insert" = let range = tuple_range (0, 1) (0, 3) in test "foo bar baz" range ~change:"XXXX"; [%expect {| result: fXXXX bar baz |}] +;; let%expect_test "null edit" = test "foo bar" (tuple_range (0, 2) (0, 2)) ~change:""; [%expect {| result: foo bar |}] +;; let%expect_test "no range" = - test_general "foo bar baz" [ (None, "XXXX") ]; + test_general "foo bar baz" [ None, "XXXX" ]; [%expect {| result: XXXX |}] +;; let%expect_test "char by char" = test_multiple "" - [ (tuple_range (0, 0) (0, 0), "f") - ; (tuple_range (0, 1) (0, 1), "o") - ; (tuple_range (0, 2) (0, 2), "o") + [ tuple_range (0, 0) (0, 0), "f" + ; tuple_range (0, 1) (0, 1), "o" + ; tuple_range (0, 2) (0, 2), "o" ]; [%expect {| result: foo |}] +;; let%expect_test "char by char - 2" = test_multiple "char by char - 2\n" - [ (tuple_range (1, 10) (1, 10), "b") - ; (tuple_range (1, 10) (1, 10), "a") - ; (tuple_range (1, 10) (1, 10), "r") - ; (tuple_range (1, 1) (1, 2), "") + [ tuple_range (1, 10) (1, 10), "b" + ; tuple_range (1, 10) (1, 10), "a" + ; tuple_range (1, 10) (1, 10), "r" + ; tuple_range (1, 1) (1, 2), "" ]; [%expect {| result: char by char - 2\nbr |}] +;; let%expect_test "char by char - 3" = test_multiple "first line skip\nchar by char - 2\n" - [ (tuple_range (1, 4) (1, 5), "") - ; (tuple_range (1, 3) (1, 4), "") - ; (tuple_range (1, 3) (1, 3), "x") + [ tuple_range (1, 4) (1, 5), "" + ; tuple_range (1, 3) (1, 4), "" + ; tuple_range (1, 3) (1, 3), "x" ]; [%expect {| result: first line skip\nchaxby char - 2\n |}] +;; let%expect_test "insert last" = test "x" (tuple_range (0, 1) (0, 1)) ~change:"y"; @@ -118,18 +123,21 @@ let%expect_test "insert last" = test "x\ny" (tuple_range (1, 10) (1, 10)) ~change:"z"; [%expect {| result: x\nyz |}] +;; let%expect_test "replace second line" = let range = tuple_range (1, 0) (2, 0) in test "foo\nbar\nbaz\n" range ~change:"XXXX\n"; [%expect {| result: foo\nXXXX\nbaz\n |}] +;; let%expect_test "edit in second line" = let range = tuple_range (1, 1) (1, 2) in test "foo\nbar\nbaz\n" range ~change:"-XXX-"; [%expect {| result: foo\nb-XXX-r\nbaz\n |}] +;; let%expect_test "insert at the end" = let range = tuple_range (3, 0) (3, 0) in @@ -140,29 +148,34 @@ let%expect_test "insert at the end" = test "foo\nbar\nbaz\n" range ~change:"XXX"; [%expect {| result: foo\nbar\nbaz\nXXX |}] +;; let%expect_test "insert at the beginning" = let range = tuple_range (0, 0) (0, 0) in test "foo\n\bar\nbaz\n" range ~change:"XXX\n"; [%expect {| result: XXX\nfoo\n\bar\nbaz\n |}] +;; let%expect_test "insert in the middle" = test "ab" (tuple_range (0, 1) (0, 1)) ~change:"---"; [%expect {| result: a---b |}] +;; let%expect_test "replace first line" = let range = tuple_range (0, 0) (1, 0) in test "foo\nbar\n" range ~change:"baz\n"; [%expect {| result: baz\nbar\n |}] +;; let%expect_test "beyond max char" = let range = tuple_range (0, 0) (0, 100) in test "foo\nbar\n" range ~change:"baz"; [%expect {| result: baz\nbar\n |}] +;; let%expect_test "entire line without newline" = test "xxx\n" (tuple_range (0, 0) (0, 3)) ~change:"baz"; @@ -174,58 +187,65 @@ let%expect_test "entire line without newline" = test "xxx\n" (tuple_range (0, 0) (1, 0)) ~change:"baz"; [%expect {| result: baz |}] +;; let%expect_test "replace two lines" = test "a\nb\nc\n" (tuple_range (0, 0) (2, 0)) ~change:"XXX\n"; [%expect {| result: XXX\nc\n |}] +;; let%expect_test "join lines" = test "a\nb" (tuple_range (0, 1) (1, 0)) ~change:""; [%expect {| result: ab |}] +;; let%expect_test "remove text" = test "a---b" (tuple_range (0, 1) (0, 4)) ~change:""; [%expect {| result: ab |}] +;; let%expect_test "remove newline - 1" = test "\n" (tuple_range (0, 0) (0, 1)) ~change:""; [%expect {| result: \n |}] +;; let%expect_test "remove newlines - 2" = - test_multiple "\nXXX\n" [ (tuple_range (0, 0) (0, 1), "") ]; + test_multiple "\nXXX\n" [ tuple_range (0, 0) (0, 1), "" ]; [%expect {| result: \nXXX\n |}] +;; let%expect_test "remove newlines - 3" = test_multiple "\nXXX\n\n" - [ (tuple_range (0, 0) (0, 1), ""); (tuple_range (0, 1) (0, 2), "") ]; + [ tuple_range (0, 0) (0, 1), ""; tuple_range (0, 1) (0, 2), "" ]; [%expect {| result: \nXXX\n\n |}] +;; let%expect_test "update when inserting a line at the end of the doc" = test "let x = 1;\n\nlet y = 2;" (tuple_range (2, 10) (2, 10)) ~change:"\n-ZZZ"; [%expect {| result: let x = 1;\n\nlet y = 2;\n-ZZZ |}] +;; let%expect_test "update when inserting a line at the end of the doc" = test_multiple "1\n2\n3\n" - [ (tuple_range (1, 9) (1, 9), "l"); (tuple_range (1, 9) (1, 10), "") ]; + [ tuple_range (1, 9) (1, 9), "l"; tuple_range (1, 9) (1, 10), "" ]; [%expect {| result: 1\n2l\n3\n |}] +;; let%expect_test "absolute_position" = let text = "foo|bar\nbaz.x" in let td = make_document (Uri.of_path "foo.ml") ~text in let test (line, character) = - let offset = - Text_document.absolute_position td (Position.create ~line ~character) - in + let offset = Text_document.absolute_position td (Position.create ~line ~character) in printf "position: %d/%d\n" offset (String.length text) in test (0, 0); @@ -240,6 +260,7 @@ let%expect_test "absolute_position" = [%expect {| position: 7/13 |}]; test (100, 0); [%expect {| position: 13/13 |}] +;; let%expect_test "replace second line first line is \\n" = let range = tuple_range (1, 2) (1, 2) in @@ -249,6 +270,7 @@ let%expect_test "replace second line first line is \\n" = new_doc |> Text_document.text |> String.escaped |> print_endline; [%expect {| \nfochangeo\nbar\nbaz\n |}] +;; let%expect_test "get position after change" = let range = tuple_range (1, 2) (1, 2) in @@ -261,3 +283,4 @@ let%expect_test "get position after change" = [%expect {| \nfochangeo\nbar\nbaz\n pos: 22 |}] +;; diff --git a/lsp/test/uri_tests.ml b/lsp/test/uri_tests.ml index e8f4d776d..73fc850ef 100644 --- a/lsp/test/uri_tests.ml +++ b/lsp/test/uri_tests.ml @@ -7,6 +7,7 @@ let run_with_modes f = print_endline "Windows:"; Lsp.Uri.Private.win32 := true; f () +;; let test_uri_parsing = let test s = @@ -14,6 +15,7 @@ let test_uri_parsing = Printf.printf "%s -> %s\n" s (Uri.to_path uri) in fun uris -> run_with_modes (fun () -> List.iter test uris) +;; let%expect_test "test uri parsing" = test_uri_parsing [ "file:///Users/foo"; "file:///c:/Users/foo" ]; @@ -25,6 +27,7 @@ let%expect_test "test uri parsing" = Windows: file:///Users/foo -> \Users\foo file:///c:/Users/foo -> c:\Users\foo |}] +;; let uri_of_path = let test path = @@ -32,6 +35,7 @@ let uri_of_path = Printf.printf "%s -> %s\n" path (Uri.to_string uri) in fun uris -> run_with_modes (fun () -> List.iter test uris) +;; let%expect_test "uri of path" = uri_of_path [ "/foo/bar.ml"; "foo/bar.mli" ]; @@ -43,6 +47,7 @@ let%expect_test "uri of path" = Windows: /foo/bar.ml -> file:///foo/bar.ml foo/bar.mli -> file:///foo/bar.mli |}] +;; let%expect_test "of_path -> to_string" = let test_of_path_to_string = @@ -101,6 +106,7 @@ let%expect_test "of_path -> to_string" = a.file -> file:///a.file /Users/jrieken/Code/_samples/18500/Mödel + Other Thîngß/model.js -> file:///Users/jrieken/Code/_samples/18500/M%C3%B6del%20%2B%20Other%20Th%C3%AEng%C3%9F/model.js |}] +;; let%expect_test "of_path -> to_path" = let test_of_path_to_path = @@ -159,6 +165,7 @@ let%expect_test "of_path -> to_path" = c:\test with %25\c#code -> c:\test with %25\c#code hello -> \hello |}] +;; let%expect_test "of_string -> to_path" = let test_of_string_to_path = @@ -196,6 +203,7 @@ let%expect_test "of_string -> to_path" = /shares/pröjects/c%23/#l12 -> \shares\pröjects\c#\ \shares/pröjects/c%23/#l12 -> \\shares\pröjects\c#\ |}] +;; let%expect_test "of_string -> to_string" = let test_of_string_to_string = @@ -245,6 +253,7 @@ let%expect_test "of_string -> to_string" = file:///pro%2Fjects/ -> file:///pro/jects/ vscode://mount/test.ml -> vscode://mount/test.ml |}] +;; let%expect_test "of_string -> to_path" = let test_of_string_to_path = @@ -276,3 +285,4 @@ let%expect_test "of_string -> to_path" = -> \ file://LöC%2FAL/host:8080/projects/ -> \\LöC\AL\host:8080\projects\ |}] +;; diff --git a/ocaml-lsp-server/bench/documents.ml b/ocaml-lsp-server/bench/documents.ml index 6b262e9e7..80a6c36fd 100644 --- a/ocaml-lsp-server/bench/documents.ml +++ b/ocaml-lsp-server/bench/documents.ml @@ -1,5 +1,4 @@ -let document = - "let mem = ListLabels.mem\n\nlet _ = mem ~se" |> Merlin_kernel.Msource.make +let document = "let mem = ListLabels.mem\n\nlet _ = mem ~se" |> Merlin_kernel.Msource.make let long_document_text = {|let prefix_of_position ~short_path source position = @@ -96,3 +95,4 @@ module Complete_by_prefix = struct in Query_commands.dispatch pipeline comp |} +;; diff --git a/ocaml-lsp-server/bench/ocaml_lsp_bench.ml b/ocaml-lsp-server/bench/ocaml_lsp_bench.ml index b7607feb5..882688077 100644 --- a/ocaml-lsp-server/bench/ocaml_lsp_bench.ml +++ b/ocaml-lsp-server/bench/ocaml_lsp_bench.ml @@ -10,18 +10,11 @@ let () = Command_unix.run (Bench.make_command [ Bench.Test.create ~name:"get_prefix" (fun _ -> - Testing.Compl.prefix_of_position - ~short_path:false - document - position - |> ignore) + Testing.Compl.prefix_of_position ~short_path:false document position |> ignore) ; Bench.Test.create ~name:"get_prefix_long" (fun _ -> - Testing.Compl.prefix_of_position - ~short_path:false - long_document - long_position - |> ignore) + Testing.Compl.prefix_of_position ~short_path:false long_document long_position + |> ignore) ; Bench.Test.create ~name:"get_offset_long" (fun _ -> - Merlin_kernel.Msource.get_offset long_document long_position - |> ignore) + Merlin_kernel.Msource.get_offset long_document long_position |> ignore) ]) +;; diff --git a/ocaml-lsp-server/bin/main.ml b/ocaml-lsp-server/bin/main.ml index ff52dfa4e..6aef73d00 100644 --- a/ocaml-lsp-server/bin/main.ml +++ b/ocaml-lsp-server/bin/main.ml @@ -7,11 +7,11 @@ let () = let read_dot_merlin = ref false in let arg = Lsp.Cli.Arg.create () in let spec = - [ ("--version", Arg.Set version, "print version") + [ "--version", Arg.Set version, "print version" ; ( "--fallback-read-dot-merlin" , Arg.Set read_dot_merlin - , "read Merlin config from .merlin files. The `dot-merlin-reader` \ - package must be installed" ) + , "read Merlin config from .merlin files. The `dot-merlin-reader` package must be \ + installed" ) ] @ Cli.Arg.spec arg in @@ -19,10 +19,7 @@ let () = "ocamllsp [ --stdio | --socket PORT | --port PORT | --pipe PIPE ] [ \ --clientProcessId pid ]" in - Arg.parse - spec - (fun _ -> raise @@ Arg.Bad "anonymous arguments aren't allowed") - usage; + Arg.parse spec (fun _ -> raise @@ Arg.Bad "anonymous arguments aren't allowed") usage; let channel = match Cli.Arg.channel arg with | Ok c -> c @@ -32,9 +29,10 @@ let () = exit 1 in let version = !version in - if version then + if version + then ( let version = Ocaml_lsp_server.Version.get () in - print_endline version + print_endline version) else let module Exn_with_backtrace = Stdune.Exn_with_backtrace in match @@ -45,3 +43,4 @@ let () = | Error exn -> Format.eprintf "%a@." Exn_with_backtrace.pp_uncaught exn; exit 1 +;; diff --git a/ocaml-lsp-server/src/bin.ml b/ocaml-lsp-server/src/bin.ml index 3929ffa07..922e66ff1 100644 --- a/ocaml-lsp-server/src/bin.ml +++ b/ocaml-lsp-server/src/bin.ml @@ -2,8 +2,7 @@ open Import module Bin = Stdune.Bin let _PATH = - lazy - (Bin.parse_path - (Option.value ~default:"" (Unix_env.get Unix_env.initial "PATH"))) + lazy (Bin.parse_path (Option.value ~default:"" (Unix_env.get Unix_env.initial "PATH"))) +;; let which = Bin.which ~path:(Lazy.force _PATH) diff --git a/ocaml-lsp-server/src/check_for_comments.ml b/ocaml-lsp-server/src/check_for_comments.ml index 335d4c761..ec7a61e5f 100644 --- a/ocaml-lsp-server/src/check_for_comments.ml +++ b/ocaml-lsp-server/src/check_for_comments.ml @@ -5,12 +5,13 @@ let position_in_comment ~position ~merlin = let start = Position.of_lexical_position loc.loc_start in let end_ = Position.of_lexical_position loc.loc_end in match Option.both start end_ with - | Some (start, end_) -> ( + | Some (start, end_) -> let range = Range.create ~start ~end_ in - match Position.compare_inclusion position range with - | `Inside -> true - | `Outside _ -> false) + (match Position.compare_inclusion position range with + | `Inside -> true + | `Outside _ -> false) | None -> false in Document.Merlin.with_pipeline_exn ~name:"get-comments" merlin (fun pipeline -> - Mpipeline.reader_comments pipeline |> List.exists ~f:loc_contains_position) + Mpipeline.reader_comments pipeline |> List.exists ~f:loc_contains_position) +;; diff --git a/ocaml-lsp-server/src/check_for_comments.mli b/ocaml-lsp-server/src/check_for_comments.mli index 6c7d7c1c2..2c773d3f7 100644 --- a/ocaml-lsp-server/src/check_for_comments.mli +++ b/ocaml-lsp-server/src/check_for_comments.mli @@ -1,3 +1,2 @@ (** Returns [true] if [position] occurs inside a comment in the document *) -val position_in_comment : - position:Position.t -> merlin:Document.Merlin.t -> bool Fiber.t +val position_in_comment : position:Position.t -> merlin:Document.Merlin.t -> bool Fiber.t diff --git a/ocaml-lsp-server/src/client.ml b/ocaml-lsp-server/src/client.ml index d0ea4ef74..91308cb95 100644 --- a/ocaml-lsp-server/src/client.ml +++ b/ocaml-lsp-server/src/client.ml @@ -9,6 +9,7 @@ module Experimental_capabilities = struct Json.field fields "jumpToNextHole" Json.Conv.bool_of_yojson |> Option.value ~default:false | _ -> false + ;; let supportsJumpToNextHole t = t end @@ -16,10 +17,8 @@ end module Vscode = struct module Commands = struct let triggerSuggest = - Command.create - ~title:"Trigger Suggest" - ~command:"editor.action.triggerSuggest" - () + Command.create ~title:"Trigger Suggest" ~command:"editor.action.triggerSuggest" () + ;; end end @@ -27,11 +26,9 @@ module Custom_commands = struct let next_hole ?in_range ~notify_if_no_hole () = let arguments = let arg_obj_fields = - let notif_json = - Some ("shouldNotifyIfNoHole", Json.bool notify_if_no_hole) - in + let notif_json = Some ("shouldNotifyIfNoHole", Json.bool notify_if_no_hole) in let in_range_json = - Option.map in_range ~f:(fun r -> ("inRange", Range.yojson_of_t r)) + Option.map in_range ~f:(fun r -> "inRange", Range.yojson_of_t r) in List.filter_opt [ in_range_json; notif_json ] in @@ -42,9 +39,6 @@ module Custom_commands = struct command is intended *) [ `Assoc fields ] in - Command.create - ~title:"Jump to Next Hole" - ~command:"ocaml.next-hole" - ~arguments - () + Command.create ~title:"Jump to Next Hole" ~command:"ocaml.next-hole" ~arguments () + ;; end diff --git a/ocaml-lsp-server/src/client.mli b/ocaml-lsp-server/src/client.mli index 4e289ed51..90cb29a03 100644 --- a/ocaml-lsp-server/src/client.mli +++ b/ocaml-lsp-server/src/client.mli @@ -9,7 +9,6 @@ module Experimental_capabilities : sig type t val of_opt_json : Json.t option -> t - val supportsJumpToNextHole : t -> bool end @@ -38,6 +37,5 @@ module Custom_commands : sig @param notify_if_no_hole specifies whether we want the client to show the user a message if there is no hole to jump to *) - val next_hole : - ?in_range:Range.t -> notify_if_no_hole:bool -> unit -> Command.t + val next_hole : ?in_range:Range.t -> notify_if_no_hole:bool -> unit -> Command.t end diff --git a/ocaml-lsp-server/src/code_actions.ml b/ocaml-lsp-server/src/code_actions.ml index 2d90ac73d..36d8dd5a2 100644 --- a/ocaml-lsp-server/src/code_actions.ml +++ b/ocaml-lsp-server/src/code_actions.ml @@ -10,12 +10,13 @@ module Code_action_error = struct let empty = Initial let combine x y = - match (x, y) with + match x, y with | Initial, _ -> y (* [Initial] cedes to any *) | _, Initial -> x | Exn _, _ -> x (* [Exn] takes over any *) | _, Exn _ -> y | Need_merlin_extend _, Need_merlin_extend _ -> y + ;; end module Code_action_error_monoid = struct @@ -60,15 +61,16 @@ let compute_ocaml_code_actions (params : CodeActionParams.t) state doc = enabled_actions in let* batch_results = - if List.is_empty batchable then Fiber.return [] + if List.is_empty batchable + then Fiber.return [] else Document.Merlin.with_pipeline_exn ~name:"batched-code-actions" (Document.merlin_exn doc) (fun pipeline -> - List.filter_map batchable ~f:(fun ca -> - try ca pipeline doc params - with Merlin_extend.Extend_main.Handshake.Error _ -> None)) + List.filter_map batchable ~f:(fun ca -> + try ca pipeline doc params with + | Merlin_extend.Extend_main.Handshake.Error _ -> None)) in let code_action ca = let+ res = @@ -88,10 +90,10 @@ let compute_ocaml_code_actions (params : CodeActionParams.t) state doc = | Error (Exn exn) -> Exn_with_backtrace.reraise exn in let+ non_batch_results = - Fiber.parallel_map non_batchable ~f:code_action - |> Fiber.map ~f:List.filter_opt + Fiber.parallel_map non_batchable ~f:code_action |> Fiber.map ~f:List.filter_opt in batch_results @ non_batch_results +;; let compute server (params : CodeActionParams.t) = let state : State.t = Server.state server in @@ -100,16 +102,14 @@ let compute server (params : CodeActionParams.t) = let store = state.store in Document_store.get_opt store uri in - let dune_actions = - Dune.code_actions (State.dune state) params.textDocument.uri - in + let dune_actions = Dune.code_actions (State.dune state) params.textDocument.uri in let actions = function | [] -> None | xs -> Some (List.map ~f:(fun a -> `CodeAction a) xs) in match doc with | None -> Fiber.return (Reply.now (actions dune_actions), state) - | Some doc -> ( + | Some doc -> let open_related = let capabilities = let open Option.O in @@ -118,22 +118,20 @@ let compute server (params : CodeActionParams.t) = in Action_open_related.for_uri capabilities doc in - match Document.syntax doc with - | Ocamllex | Menhir | Cram | Dune -> - Fiber.return (Reply.now (actions (dune_actions @ open_related)), state) - | Ocaml | Reason -> - let reply () = - let+ code_action_results = - compute_ocaml_code_actions params state doc - in - List.concat [ code_action_results; dune_actions; open_related ] - |> actions - in - let later f = - Fiber.return - ( Reply.later (fun k -> - let* resp = f () in - k resp) - , state ) - in - later reply) + (match Document.syntax doc with + | Ocamllex | Menhir | Cram | Dune -> + Fiber.return (Reply.now (actions (dune_actions @ open_related)), state) + | Ocaml | Reason -> + let reply () = + let+ code_action_results = compute_ocaml_code_actions params state doc in + List.concat [ code_action_results; dune_actions; open_related ] |> actions + in + let later f = + Fiber.return + ( Reply.later (fun k -> + let* resp = f () in + k resp) + , state ) + in + later reply) +;; diff --git a/ocaml-lsp-server/src/code_actions.mli b/ocaml-lsp-server/src/code_actions.mli index b319bea2f..547d02f7b 100644 --- a/ocaml-lsp-server/src/code_actions.mli +++ b/ocaml-lsp-server/src/code_actions.mli @@ -1,6 +1,6 @@ open Import -val compute : - State.t Server.t +val compute + : State.t Server.t -> CodeActionParams.t -> ([> `CodeAction of CodeAction.t ] list option Reply.t * State.t) Fiber.t diff --git a/ocaml-lsp-server/src/code_actions/action_add_rec.ml b/ocaml-lsp-server/src/code_actions/action_add_rec.ml index a9d9ea4d2..f064daf39 100644 --- a/ocaml-lsp-server/src/code_actions/action_add_rec.ml +++ b/ocaml-lsp-server/src/code_actions/action_add_rec.ml @@ -5,55 +5,42 @@ let action_title = "Add missing `rec` keyword" let let_bound_vars bindings = List.filter_map bindings ~f:(fun vb -> - match vb.Typedtree.vb_pat.pat_desc with - | Typedtree.Tpat_var (id, loc) -> Some (id, loc) - | _ -> None) + match vb.Typedtree.vb_pat.pat_desc with + | Typedtree.Tpat_var (id, loc) -> Some (id, loc) + | _ -> None) +;; (** If the cursor position is inside a let binding which should have a ret tag and does not, return the Location.t of the binding. *) let has_missing_rec pipeline pos_start = let open Option.O in (* Find identifier under cursor *) - let* ident = - Compl.reconstruct_ident (Mpipeline.raw_source pipeline) pos_start - in - + let* ident = Compl.reconstruct_ident (Mpipeline.raw_source pipeline) pos_start in (* Find most enclosing nonrecursive let binding that binds ident *) let typer = Mpipeline.typer_result pipeline in let browse = Mbrowse.of_typedtree (Mtyper.get_typedtree typer) in Mbrowse.enclosing (Mpipeline.get_lexing_pos pipeline pos_start) [ browse ] |> List.find_map ~f:(function - | ( _ - , Browse_raw.Structure_item - ({ str_desc = Tstr_value (Nonrecursive, bound); _ }, _) ) - | ( _ - , Browse_raw.Expression - { exp_desc = Texp_let (Nonrecursive, bound, _); _ } ) -> - let bound_vars = let_bound_vars bound in - if - List.exists bound_vars ~f:(fun (id, _) -> - String.equal ident (Ident.name id)) - then - (* Return the location of the first pattern in the let binding (the - rec goes right before it) *) - let+ first_pat = List.hd_opt bound in - let first_pat_loc = first_pat.vb_pat.pat_loc in - { first_pat_loc with loc_end = first_pat_loc.loc_start } - else None - | _ -> None) + | _, Browse_raw.Structure_item ({ str_desc = Tstr_value (Nonrecursive, bound); _ }, _) + | _, Browse_raw.Expression { exp_desc = Texp_let (Nonrecursive, bound, _); _ } -> + let bound_vars = let_bound_vars bound in + if List.exists bound_vars ~f:(fun (id, _) -> String.equal ident (Ident.name id)) + then + (* Return the location of the first pattern in the let binding (the + rec goes right before it) *) + let+ first_pat = List.hd_opt bound in + let first_pat_loc = first_pat.vb_pat.pat_loc in + { first_pat_loc with loc_end = first_pat_loc.loc_start } + else None + | _ -> None) +;; let code_action_add_rec uri diagnostics doc loc = let edit = - let textedit : TextEdit.t = - { range = Range.of_loc loc; newText = "rec " } - in + let textedit : TextEdit.t = { range = Range.of_loc loc; newText = "rec " } in let version = Document.version doc in - let textDocument = - OptionalVersionedTextDocumentIdentifier.create ~uri ~version () - in - let edit = - TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] - in + let textDocument = OptionalVersionedTextDocumentIdentifier.create ~uri ~version () in + let edit = TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] in WorkspaceEdit.create ~documentChanges:[ `TextDocumentEdit edit ] () in CodeAction.create @@ -63,26 +50,27 @@ let code_action_add_rec uri diagnostics doc loc = ~edit ~isPreferred:false () +;; let code_action pipeline doc (params : CodeActionParams.t) = let pos_start = Position.logical params.range.start in let* diagnostic = List.find params.context.diagnostics ~f:(fun (d : Diagnostic.t) -> - let is_unbound () = - String.is_prefix - ~prefix:"Unbound value" - (match d.message with - | `String m -> m - | `MarkupContent { value; _ } -> value) - and in_range () = - match Position.compare_inclusion params.range.start d.range with - | `Outside _ -> false - | `Inside -> true - in - in_range () && is_unbound ()) + let is_unbound () = + String.is_prefix + ~prefix:"Unbound value" + (match d.message with + | `String m -> m + | `MarkupContent { value; _ } -> value) + and in_range () = + match Position.compare_inclusion params.range.start d.range with + | `Outside _ -> false + | `Inside -> true + in + in_range () && is_unbound ()) in has_missing_rec pipeline pos_start - |> Option.map - ~f:(code_action_add_rec params.textDocument.uri [ diagnostic ] doc) + |> Option.map ~f:(code_action_add_rec params.textDocument.uri [ diagnostic ] doc) +;; let t = Code_action.batchable QuickFix code_action diff --git a/ocaml-lsp-server/src/code_actions/action_construct.ml b/ocaml-lsp-server/src/code_actions/action_construct.ml index ac5c50264..3fd5ea045 100644 --- a/ocaml-lsp-server/src/code_actions/action_construct.ml +++ b/ocaml-lsp-server/src/code_actions/action_construct.ml @@ -14,8 +14,9 @@ let code_action pipeline doc (params : CodeActionParams.t) = let src = Document.source doc in Compl.prefix_of_position ~short_path:false src pos in - if not (Typed_hole.can_be_hole prefix) then None - else + if not (Typed_hole.can_be_hole prefix) + then None + else ( let structures = let typedtree = let typer = Mpipeline.typer_result pipeline in @@ -24,8 +25,9 @@ let code_action pipeline doc (params : CodeActionParams.t) = let pos = Mpipeline.get_lexing_pos pipeline pos in Mbrowse.enclosing pos [ Mbrowse.of_typedtree typedtree ] in - if not (Typed_hole.is_a_hole structures) then None - else + if not (Typed_hole.is_a_hole structures) + then None + else ( (* ocaml-lsp can provide [Construct] values as completion entries, so this code action requests the client [1] to trigger completion request at the cursor's current position [2] @@ -48,6 +50,7 @@ let code_action pipeline doc (params : CodeActionParams.t) = ~command:Client.Vscode.Commands.triggerSuggest () in - Some code_action + Some code_action)) +;; let t = Code_action.batchable (Other action_kind) code_action diff --git a/ocaml-lsp-server/src/code_actions/action_destruct.ml b/ocaml-lsp-server/src/code_actions/action_destruct.ml index 4414305b8..e457c9b63 100644 --- a/ocaml-lsp-server/src/code_actions/action_destruct.ml +++ b/ocaml-lsp-server/src/code_actions/action_destruct.ml @@ -2,26 +2,21 @@ open Import open Fiber.O let action_kind = "destruct (enumerate cases)" - let kind = CodeActionKind.Other action_kind -let code_action_of_case_analysis ~supportsJumpToNextHole doc uri (loc, newText) - = +let code_action_of_case_analysis ~supportsJumpToNextHole doc uri (loc, newText) = let range : Range.t = Range.of_loc loc in let textedit : TextEdit.t = { range; newText } in let edit : WorkspaceEdit.t = let version = Document.version doc in - let textDocument = - OptionalVersionedTextDocumentIdentifier.create ~uri ~version () - in - let edit = - TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] - in + let textDocument = OptionalVersionedTextDocumentIdentifier.create ~uri ~version () in + let edit = TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] in WorkspaceEdit.create ~documentChanges:[ `TextDocumentEdit edit ] () in let title = String.capitalize_ascii action_kind in let command = - if supportsJumpToNextHole then + if supportsJumpToNextHole + then Some (Client.Custom_commands.next_hole ~in_range:(Range.resize_for_edit textedit) @@ -36,49 +31,46 @@ let code_action_of_case_analysis ~supportsJumpToNextHole doc uri (loc, newText) ?command ~isPreferred:false () +;; let code_action (state : State.t) doc (params : CodeActionParams.t) = let uri = params.textDocument.uri in match Document.kind doc with | `Other -> Fiber.return None | `Merlin m when Document.Merlin.kind m = Intf -> Fiber.return None - | `Merlin merlin -> ( + | `Merlin merlin -> let command = let start = Position.logical params.range.start in let finish = Position.logical params.range.end_ in Query_protocol.Case_analysis (start, finish) in let* res = Document.Merlin.dispatch ~name:"destruct" merlin command in - match res with - | Ok (loc, newText) -> - let+ newText = - let+ formatted_text = - Ocamlformat_rpc.format_type state.ocamlformat_rpc ~typ:newText - in - match formatted_text with - | Ok formatted_text -> formatted_text - | Error _ -> newText - in - let supportsJumpToNextHole = - State.experimental_client_capabilities state - |> Client.Experimental_capabilities.supportsJumpToNextHole - in - Some - (code_action_of_case_analysis - ~supportsJumpToNextHole - doc - uri - (loc, newText)) - | Error - { exn = - ( Merlin_analysis.Destruct.Wrong_parent _ - | Query_commands.No_nodes - | Merlin_analysis.Destruct.Not_allowed _ - | Merlin_analysis.Destruct.Useless_refine - | Merlin_analysis.Destruct.Ill_typed - | Merlin_analysis.Destruct.Nothing_to_do ) - ; backtrace = _ - } -> Fiber.return None - | Error exn -> Exn_with_backtrace.reraise exn) + (match res with + | Ok (loc, newText) -> + let+ newText = + let+ formatted_text = + Ocamlformat_rpc.format_type state.ocamlformat_rpc ~typ:newText + in + match formatted_text with + | Ok formatted_text -> formatted_text + | Error _ -> newText + in + let supportsJumpToNextHole = + State.experimental_client_capabilities state + |> Client.Experimental_capabilities.supportsJumpToNextHole + in + Some (code_action_of_case_analysis ~supportsJumpToNextHole doc uri (loc, newText)) + | Error + { exn = + ( Merlin_analysis.Destruct.Wrong_parent _ + | Query_commands.No_nodes + | Merlin_analysis.Destruct.Not_allowed _ + | Merlin_analysis.Destruct.Useless_refine + | Merlin_analysis.Destruct.Ill_typed + | Merlin_analysis.Destruct.Nothing_to_do ) + ; backtrace = _ + } -> Fiber.return None + | Error exn -> Exn_with_backtrace.reraise exn) +;; let t state = { Code_action.kind; run = `Non_batchable (code_action state) } diff --git a/ocaml-lsp-server/src/code_actions/action_destruct.mli b/ocaml-lsp-server/src/code_actions/action_destruct.mli index 100cd7fcc..e09b9e390 100644 --- a/ocaml-lsp-server/src/code_actions/action_destruct.mli +++ b/ocaml-lsp-server/src/code_actions/action_destruct.mli @@ -1,5 +1,4 @@ open Import val kind : CodeActionKind.t - val t : State.t -> Code_action.t diff --git a/ocaml-lsp-server/src/code_actions/action_destruct_line.ml b/ocaml-lsp-server/src/code_actions/action_destruct_line.ml index 35ea43e5f..5502bc052 100644 --- a/ocaml-lsp-server/src/code_actions/action_destruct_line.ml +++ b/ocaml-lsp-server/src/code_actions/action_destruct_line.ml @@ -2,7 +2,6 @@ open Import open Fiber.O let action_kind = "destruct-line (enumerate cases, use existing match)" - let kind = CodeActionKind.Other action_kind (* TODO: All of the pre- and post-processing here is done by simple regexes and other @@ -15,14 +14,12 @@ type statement_kind = | CaseLine (* [|...->...] *) | Hole (* [|..._...->...] AND the range indicates a query at the underscore. *) - | OffsetHole of - int (* [| _ ->...] BUT the hole is here, not at the query location. *) + | OffsetHole of int (* [| _ ->...] BUT the hole is here, not at the query location. *) type destructable_statement = { code : string ; kind : statement_kind - ; query_range : Range.t - (* Range sent to Merlin based on our pre-processing. *) + ; query_range : Range.t (* Range sent to Merlin based on our pre-processing. *) ; reply_range : Range.t (* Where Merlin's reply will go. *) } @@ -32,11 +29,10 @@ let get_line (doc : Document.t) (range : Range.t) = let start_line = range.start.line + 1 in let source = Document.source doc in let (`Offset pos) = Msource.get_offset source (`Logical (start_line, 0)) in - let (`Offset next) = - Msource.get_offset source (`Logical (start_line + 1, 0)) - in + let (`Offset next) = Msource.get_offset source (`Logical (start_line + 1, 0)) in let len = next - pos in String.sub text ~pos ~len +;; (** Trims leading and trailing whitespace plus some number of additional characters from the head and tail of a string. Used to transform [match x] @@ -44,40 +40,39 @@ let get_line (doc : Document.t) (range : Range.t) = let strip_head_and_tail str ~head_offset ~tail_offset = let str = String.strip str in let l = String.length str in - let substr = - String.sub str ~pos:head_offset ~len:(l - head_offset - tail_offset) - in + let substr = String.sub str ~pos:head_offset ~len:(l - head_offset - tail_offset) in String.strip substr +;; (** Finds the start and end indices of a substring for extraction. *) let substr_endpoints_exn ~str ~substr = let start_index = String.substr_index_exn str ~pattern:substr in let end_index = start_index + String.length substr in - (start_index, end_index) + start_index, end_index +;; (** Assumes [case_line] passes the check for a CaseLine, but hasn't had whitespace removed. Checks that the cursor is before the arrow and the position before or after the cursor has an underscore. *) let is_hole (case_line : string) (cursor_pos : int) = let arrow_pos = String.substr_index_exn case_line ~pattern:"->" in - if cursor_pos <= 0 || cursor_pos >= arrow_pos then false - (* We're only looking for '_' if the cursor is between "|" and "->". *) - else if - Char.equal case_line.[cursor_pos] '_' - || Char.equal case_line.[cursor_pos - 1] '_' + if cursor_pos <= 0 || cursor_pos >= arrow_pos + then false (* We're only looking for '_' if the cursor is between "|" and "->". *) + else if Char.equal case_line.[cursor_pos] '_' + || Char.equal case_line.[cursor_pos - 1] '_' then true else false +;; (** Finds the index of a lhs underscore in [case_line], if any. *) let find_hole (case_line : string) = let start_of_lhs = 1 + String.substr_index_exn case_line ~pattern:"|" in let end_of_lhs = String.substr_index_exn case_line ~pattern:"->" in let lhs = - String.strip - (String.sub case_line ~pos:start_of_lhs ~len:(end_of_lhs - start_of_lhs)) + String.strip (String.sub case_line ~pos:start_of_lhs ~len:(end_of_lhs - start_of_lhs)) in - if String.equal "_" lhs then String.substr_index case_line ~pattern:"_" - else None + if String.equal "_" lhs then String.substr_index case_line ~pattern:"_" else None +;; let get_statement_kind = let space_without_nl = Re.set " \t" in @@ -96,31 +91,29 @@ let get_statement_kind = seq [ str "|"; rep any; str "->"; rep any ] in let regexes = - [ (match_with_regex, `MatchWithLine) - ; (match_regex, `MatchLine) - ; (case_regex, `CaseLine) - ] - |> List.map ~f:(fun (re, kind) -> (Re.(seq [ bos; re ] |> compile), kind)) + [ match_with_regex, `MatchWithLine; match_regex, `MatchLine; case_regex, `CaseLine ] + |> List.map ~f:(fun (re, kind) -> Re.(seq [ bos; re ] |> compile), kind) in fun (code_line : string) (range : Range.t) -> let logical_line = String.strip code_line in (* Line starts with [match], ends with [with], and has at least one other word. *) List.find_map regexes ~f:(fun (re, name) -> - Option.some_if (Re.execp re logical_line) name) + Option.some_if (Re.execp re logical_line) name) |> Option.bind ~f:(function - | `MatchWithLine -> Some MatchWithLine - | `MatchLine -> Some MatchLine - | `CaseLine -> ( - if is_hole code_line range.start.character then Some Hole - else - match find_hole code_line with - | None -> Some CaseLine - | Some offset -> Some (OffsetHole offset))) + | `MatchWithLine -> Some MatchWithLine + | `MatchLine -> Some MatchLine + | `CaseLine -> + if is_hole code_line range.start.character + then Some Hole + else ( + match find_hole code_line with + | None -> Some CaseLine + | Some offset -> Some (OffsetHole offset))) +;; (** Given a line of the form [match x] or [match x with] or [| x -> y], create a query range corresponding to [x]. *) -let get_query_range (code : string) (kind : statement_kind) (range : Range.t) : - Range.t = +let get_query_range (code : string) (kind : statement_kind) (range : Range.t) : Range.t = let expr = match kind with | MatchLine -> strip_head_and_tail code ~head_offset:5 ~tail_offset:0 @@ -133,38 +126,35 @@ let get_query_range (code : string) (kind : statement_kind) (range : Range.t) : in let start_index, end_index = match kind with - | Hole -> (range.start.character, range.end_.character) - | OffsetHole offset -> (offset, offset) + | Hole -> range.start.character, range.end_.character + | OffsetHole offset -> offset, offset | _ -> substr_endpoints_exn ~str:code ~substr:expr in { start = { range.start with character = start_index } ; end_ = { range.end_ with character = end_index } } +;; (** Finds the portion of the text that will be overwritten by Merlin's reply. For a MatchLine or a MatchWithLine, Merlin's reply will include "match" and "with", so to avoid duplication, we want the existing "match" and (possibly) "with" to be included in the range that gets replaced. *) -let get_reply_range (code : string) (kind : statement_kind) - (query_range : Range.t) = +let get_reply_range (code : string) (kind : statement_kind) (query_range : Range.t) = match kind with | CaseLine | Hole | OffsetHole _ -> query_range | MatchLine | MatchWithLine -> let logical_line = String.strip code in - let start_char, end_char = - substr_endpoints_exn ~str:code ~substr:logical_line - in + let start_char, end_char = substr_endpoints_exn ~str:code ~substr:logical_line in { start = { query_range.start with character = start_char } ; end_ = { query_range.end_ with character = end_char } } +;; (** Adjusts the location Merlin gave us to ensure the right text gets overwritten. *) -let adjust_reply_location ~(statement : destructable_statement) (loc : Loc.t) : - Loc.t = +let adjust_reply_location ~(statement : destructable_statement) (loc : Loc.t) : Loc.t = let start_offset = - statement.reply_range.start.character - - statement.query_range.start.character + statement.reply_range.start.character - statement.query_range.start.character in let end_offset = statement.reply_range.end_.character - statement.query_range.end_.character @@ -172,24 +162,26 @@ let adjust_reply_location ~(statement : destructable_statement) (loc : Loc.t) : let loc_start = { loc.loc_start with pos_cnum = loc.loc_start.pos_cnum + start_offset } in - let loc_end = - { loc.loc_end with pos_cnum = loc.loc_end.pos_cnum + end_offset } - in + let loc_end = { loc.loc_end with pos_cnum = loc.loc_end.pos_cnum + end_offset } in { loc with loc_start; loc_end } +;; (** Tries to find a statement we know how to handle on the line where the range starts. *) -let extract_statement (doc : Document.t) (ca_range : Range.t) : - destructable_statement option = - if ca_range.start.line <> ca_range.end_.line then None - else +let extract_statement (doc : Document.t) (ca_range : Range.t) + : destructable_statement option + = + if ca_range.start.line <> ca_range.end_.line + then None + else ( let code = get_line doc ca_range in match get_statement_kind code ca_range with | None -> None | Some kind -> let query_range = get_query_range code kind ca_range in let reply_range = get_reply_range code kind query_range in - Some { code; kind; query_range; reply_range } + Some { code; kind; query_range; reply_range }) +;; (** Strips " -> _ " off the rhs and " | " off the lhs of a case-line if present. *) let strip_case_line line = @@ -199,33 +191,35 @@ let strip_case_line line = |> String.strip |> String.chop_suffix_if_exists ~suffix:"->" |> String.strip +;; let strip_parens line = String.chop_prefix_if_exists line ~prefix:"(" |> String.chop_suffix_if_exists ~suffix:")" +;; (** Combines match-case lines that have already been stripped. *) let format_match_cases lines ~indent = "\n" ^ (List.filter_map lines ~f:(fun l -> - match strip_parens (strip_case_line l) with - | "" -> None - | l -> Some (indent ^ "| " ^ l ^ " -> _")) - |> String.concat ~sep:"\n") + match strip_parens (strip_case_line l) with + | "" -> None + | l -> Some (indent ^ "| " ^ l ^ " -> _")) + |> String.concat ~sep:"\n") +;; (** Finds the "with" in the Merlin reply and splits after it. *) let separate_match_line new_code = let end_of_match = String.substr_index_exn new_code ~pattern:"with" in let match_line = String.prefix new_code (end_of_match + 4) in let rest = Base.String.drop_prefix new_code (end_of_match + 4) in - (match_line, rest) + match_line, rest +;; -let format_merlin_reply ~(statement : destructable_statement) - (new_code : string) = +let format_merlin_reply ~(statement : destructable_statement) (new_code : string) = let indent = match - String.lfindi statement.code ~f:(fun _ c -> - not (Base.Char.is_whitespace c)) + String.lfindi statement.code ~f:(fun _ c -> not (Base.Char.is_whitespace c)) with | None -> "" | Some i -> String.sub statement.code ~pos:0 ~len:i @@ -238,33 +232,30 @@ let format_merlin_reply ~(statement : destructable_statement) let lines = String.split ~on:'|' rest in match_line ^ format_match_cases lines ~indent | CaseLine -> format_match_cases (String.split ~on:'|' new_code) ~indent - | Hole | OffsetHole _ -> ( + | Hole | OffsetHole _ -> let lines = String.split ~on:'|' new_code in - match (List.hd lines, List.tl lines) with - | None, _ | _, None -> new_code - | Some first_line, Some other_lines -> - let other_lines = - List.map other_lines ~f:(fun l -> indent ^ "| " ^ strip_case_line l) - in - String.concat ~sep:" -> _\n" (String.strip first_line :: other_lines)) + (match List.hd lines, List.tl lines with + | None, _ | _, None -> new_code + | Some first_line, Some other_lines -> + let other_lines = + List.map other_lines ~f:(fun l -> indent ^ "| " ^ strip_case_line l) + in + String.concat ~sep:" -> _\n" (String.strip first_line :: other_lines)) +;; -let code_action_of_case_analysis ~supportsJumpToNextHole doc uri (loc, newText) - = +let code_action_of_case_analysis ~supportsJumpToNextHole doc uri (loc, newText) = let range : Range.t = Range.of_loc loc in let textedit : TextEdit.t = { range; newText } in let edit : WorkspaceEdit.t = let version = Document.version doc in - let textDocument = - OptionalVersionedTextDocumentIdentifier.create ~uri ~version () - in - let edit = - TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] - in + let textDocument = OptionalVersionedTextDocumentIdentifier.create ~uri ~version () in + let edit = TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] in WorkspaceEdit.create ~documentChanges:[ `TextDocumentEdit edit ] () in let title = String.capitalize action_kind in let command = - if supportsJumpToNextHole then + if supportsJumpToNextHole + then Some (Client.Custom_commands.next_hole ~in_range:(Range.resize_for_edit textedit) @@ -279,6 +270,7 @@ let code_action_of_case_analysis ~supportsJumpToNextHole doc uri (loc, newText) ?command ~isPreferred:false () +;; let dispatch_destruct (merlin : Document.Merlin.t) (range : Range.t) = let command = @@ -287,41 +279,38 @@ let dispatch_destruct (merlin : Document.Merlin.t) (range : Range.t) = Query_protocol.Case_analysis (start, finish) in Document.Merlin.dispatch ~name:"destruct" merlin command +;; -let code_action (state : State.t) (doc : Document.t) - (params : CodeActionParams.t) = +let code_action (state : State.t) (doc : Document.t) (params : CodeActionParams.t) = let uri = params.textDocument.uri in match Document.kind doc with | `Other -> Fiber.return None - | `Merlin merlin -> ( - match (Document.Merlin.kind merlin, extract_statement doc params.range) with - | Intf, _ | _, None -> Fiber.return None - | Impl, Some statement -> ( - let+ res = dispatch_destruct merlin statement.query_range in - match res with - | Ok (loc, newText) -> - let loc = adjust_reply_location ~statement loc in - let newText = format_merlin_reply ~statement newText in - let supportsJumpToNextHole = - State.experimental_client_capabilities state - |> Client.Experimental_capabilities.supportsJumpToNextHole - in - Some - (code_action_of_case_analysis - ~supportsJumpToNextHole - doc - uri - (loc, newText)) - | Error - { exn = - ( Merlin_analysis.Destruct.Wrong_parent _ - | Query_commands.No_nodes - | Merlin_analysis.Destruct.Not_allowed _ - | Merlin_analysis.Destruct.Useless_refine - | Merlin_analysis.Destruct.Ill_typed - | Merlin_analysis.Destruct.Nothing_to_do ) - ; backtrace = _ - } -> None - | Error exn -> Exn_with_backtrace.reraise exn)) + | `Merlin merlin -> + (match Document.Merlin.kind merlin, extract_statement doc params.range with + | Intf, _ | _, None -> Fiber.return None + | Impl, Some statement -> + let+ res = dispatch_destruct merlin statement.query_range in + (match res with + | Ok (loc, newText) -> + let loc = adjust_reply_location ~statement loc in + let newText = format_merlin_reply ~statement newText in + let supportsJumpToNextHole = + State.experimental_client_capabilities state + |> Client.Experimental_capabilities.supportsJumpToNextHole + in + Some + (code_action_of_case_analysis ~supportsJumpToNextHole doc uri (loc, newText)) + | Error + { exn = + ( Merlin_analysis.Destruct.Wrong_parent _ + | Query_commands.No_nodes + | Merlin_analysis.Destruct.Not_allowed _ + | Merlin_analysis.Destruct.Useless_refine + | Merlin_analysis.Destruct.Ill_typed + | Merlin_analysis.Destruct.Nothing_to_do ) + ; backtrace = _ + } -> None + | Error exn -> Exn_with_backtrace.reraise exn)) +;; let t state = { Code_action.kind; run = `Non_batchable (code_action state) } diff --git a/ocaml-lsp-server/src/code_actions/action_destruct_line.mli b/ocaml-lsp-server/src/code_actions/action_destruct_line.mli index fd63cdb23..896f88834 100644 --- a/ocaml-lsp-server/src/code_actions/action_destruct_line.mli +++ b/ocaml-lsp-server/src/code_actions/action_destruct_line.mli @@ -45,5 +45,4 @@ open Import | (_::_, _::_) -> _] *) val kind : CodeActionKind.t - val t : State.t -> Code_action.t diff --git a/ocaml-lsp-server/src/code_actions/action_extract.ml b/ocaml-lsp-server/src/code_actions/action_extract.ml index 27687aba6..bc8e9f032 100644 --- a/ocaml-lsp-server/src/code_actions/action_extract.ml +++ b/ocaml-lsp-server/src/code_actions/action_extract.ml @@ -6,49 +6,53 @@ let range_contains_loc range loc = match Range.of_loc_opt loc with | Some range' -> Range.contains range range' | None -> false +;; let range_contained_by_loc range loc = match Range.of_loc_opt loc with | Some range' -> Range.contains range' range | None -> false +;; let largest_enclosed_expression typedtree range = let exception Found of Typedtree.expression in let module I = Ocaml_typing.Tast_iterator in let expr_iter (iter : I.iterator) (expr : Typedtree.expression) = - if range_contains_loc range expr.exp_loc then raise (Found expr) + if range_contains_loc range expr.exp_loc + then raise (Found expr) else I.default_iterator.expr iter expr in let iterator = { I.default_iterator with expr = expr_iter } in try iterator.structure iterator typedtree; None - with Found e -> Some e + with + | Found e -> Some e +;; let enclosing_structure_item typedtree range = let exception Found of Typedtree.structure_item in let module I = Ocaml_typing.Tast_iterator in - let structure_item_iter (iter : I.iterator) (item : Typedtree.structure_item) - = - if range_contained_by_loc range item.str_loc then + let structure_item_iter (iter : I.iterator) (item : Typedtree.structure_item) = + if range_contained_by_loc range item.str_loc + then ( match item.str_desc with | Tstr_value _ -> raise (Found item) - | _ -> I.default_iterator.structure_item iter item - in - let iterator = - { I.default_iterator with structure_item = structure_item_iter } + | _ -> I.default_iterator.structure_item iter item) in + let iterator = { I.default_iterator with structure_item = structure_item_iter } in try iterator.structure iterator typedtree; None - with Found e -> Some e + with + | Found e -> Some e +;; let tightest_enclosing_binder_position typedtree range = let exception Found of Position.t in let module I = Ocaml_typing.Tast_iterator in let found_loc loc = - Position.of_lexical_position loc - |> Option.iter ~f:(fun p -> raise (Found p)) + Position.of_lexical_position loc |> Option.iter ~f:(fun p -> raise (Found p)) in let found_if_expr_contains (expr : Typedtree.expression) = let loc = expr.exp_loc in @@ -56,10 +60,11 @@ let tightest_enclosing_binder_position typedtree range = in let found_if_case_contains cases = List.iter cases ~f:(fun (case : _ Typedtree.case) -> - found_if_expr_contains case.c_rhs) + found_if_expr_contains case.c_rhs) in let expr_iter (iter : I.iterator) (expr : Typedtree.expression) = - if range_contained_by_loc range expr.exp_loc then ( + if range_contained_by_loc range expr.exp_loc + then ( I.default_iterator.expr iter expr; match expr.exp_desc with | Texp_let (_, _, body) @@ -74,32 +79,31 @@ let tightest_enclosing_binder_position typedtree range = | Texp_try (_, cases) -> found_if_case_contains cases | _ -> ()) in - let structure_item_iter (iter : I.iterator) (item : Typedtree.structure_item) - = - if range_contained_by_loc range item.str_loc then ( + let structure_item_iter (iter : I.iterator) (item : Typedtree.structure_item) = + if range_contained_by_loc range item.str_loc + then ( I.default_iterator.structure_item iter item; match item.str_desc with | Tstr_value (_, bindings) -> List.iter bindings ~f:(fun (binding : Typedtree.value_binding) -> - found_if_expr_contains binding.vb_expr) + found_if_expr_contains binding.vb_expr) | _ -> ()) in let iterator = - { I.default_iterator with - expr = expr_iter - ; structure_item = structure_item_iter - } + { I.default_iterator with expr = expr_iter; structure_item = structure_item_iter } in try iterator.structure iterator typedtree; None - with Found e -> Some e + with + | Found e -> Some e +;; module LongidentSet = Set.Make (struct - type t = Longident.t + type t = Longident.t - let compare = compare -end) + let compare = compare + end) (** [free expr] returns the free variables in [expr]. *) let free (expr : Typedtree.expression) = @@ -107,31 +111,31 @@ let free (expr : Typedtree.expression) = let idents = ref [] in let expr_iter (iter : I.iterator) (expr : Typedtree.expression) = match expr.exp_desc with - | Texp_ident (path, { txt = ident; _ }, _) -> - idents := (ident, path) :: !idents + | Texp_ident (path, { txt = ident; _ }, _) -> idents := (ident, path) :: !idents | _ -> I.default_iterator.expr iter expr; - (* if a variable was bound but is no longer, it must be associated with a binder inside the expression *) - idents := - List.filter !idents ~f:(fun (ident, path) -> - match Env.find_value_by_name ident expr.exp_env with - | path', _ -> Path.same path path' - | exception Not_found -> false) + idents + := List.filter !idents ~f:(fun (ident, path) -> + match Env.find_value_by_name ident expr.exp_env with + | path', _ -> Path.same path path' + | exception Not_found -> false) in let iter = { I.default_iterator with expr = expr_iter } in iter.expr iter expr; !idents +;; let must_pass expr env = List.filter (free expr) ~f:(fun (ident, path) -> - match Env.find_value_by_name ident env with - | path', _ -> - (* new environment binds ident to a different path than the old one *) - not (Path.same path path') - | exception Not_found -> true) + match Env.find_value_by_name ident env with + | path', _ -> + (* new environment binds ident to a different path than the old one *) + not (Path.same path path') + | exception Not_found -> true) |> List.map ~f:fst +;; let extract_local doc typedtree range = let* to_extract = largest_enclosed_expression typedtree range in @@ -145,6 +149,7 @@ let extract_local doc typedtree range = [ TextEdit.create ~newText ~range:insert_range ; TextEdit.create ~newText:new_name ~range:extract_range ] +;; let extract_function doc typedtree range = let* to_extract = largest_enclosed_expression typedtree range in @@ -156,8 +161,8 @@ let extract_function doc typedtree range = let free_vars = must_pass to_extract parent_item.str_env in let+ args = List.map free_vars ~f:(function - | Longident.Lident id -> Some id - | _ -> None) + | Longident.Lident id -> Some id + | _ -> None) |> Option.List.all in let s = String.concat ~sep:" " args in @@ -171,6 +176,7 @@ let extract_function doc typedtree range = [ TextEdit.create ~newText:new_function ~range:insert_range ; TextEdit.create ~newText:new_call ~range:extract_range ] +;; let run_extract_local pipeline doc (params : CodeActionParams.t) = let typer = Mpipeline.typer_result pipeline in @@ -186,6 +192,7 @@ let run_extract_local pipeline doc (params : CodeActionParams.t) = ~edit:(Document.edit doc edits) ~isPreferred:false () +;; let run_extract_function pipeline doc (params : CodeActionParams.t) = let typer = Mpipeline.typer_result pipeline in @@ -201,7 +208,7 @@ let run_extract_function pipeline doc (params : CodeActionParams.t) = ~edit:(Document.edit doc edits) ~isPreferred:false () +;; let local = Code_action.batchable RefactorExtract run_extract_local - let function_ = Code_action.batchable RefactorExtract run_extract_function diff --git a/ocaml-lsp-server/src/code_actions/action_extract.mli b/ocaml-lsp-server/src/code_actions/action_extract.mli index 335dce1ee..4ceb52ebd 100644 --- a/ocaml-lsp-server/src/code_actions/action_extract.mli +++ b/ocaml-lsp-server/src/code_actions/action_extract.mli @@ -1,3 +1,2 @@ val local : Code_action.t - val function_ : Code_action.t diff --git a/ocaml-lsp-server/src/code_actions/action_inferred_intf.ml b/ocaml-lsp-server/src/code_actions/action_inferred_intf.ml index f232ab883..2c41b4ecc 100644 --- a/ocaml-lsp-server/src/code_actions/action_inferred_intf.ml +++ b/ocaml-lsp-server/src/code_actions/action_inferred_intf.ml @@ -23,26 +23,27 @@ let code_action_of_intf doc intf range = ~edit ~isPreferred:false () +;; let code_action (state : State.t) doc (params : CodeActionParams.t) = match Document.kind doc with | `Other -> Fiber.return None | `Merlin m when Document.Merlin.kind m = Impl -> Fiber.return None - | `Merlin _ -> ( + | `Merlin _ -> let* intf = Inference.infer_intf state doc in - match intf with - | None -> Fiber.return None - | Some intf -> - let+ formatted_intf = - Ocamlformat_rpc.format_type state.ocamlformat_rpc ~typ:intf - in - let intf = - match formatted_intf with - | Ok formatted_intf -> formatted_intf - | Error _ -> intf - in - Some (code_action_of_intf doc intf params.range)) + (match intf with + | None -> Fiber.return None + | Some intf -> + let+ formatted_intf = + Ocamlformat_rpc.format_type state.ocamlformat_rpc ~typ:intf + in + let intf = + match formatted_intf with + | Ok formatted_intf -> formatted_intf + | Error _ -> intf + in + Some (code_action_of_intf doc intf params.range)) +;; let kind = CodeActionKind.Other action_kind - let t state = { Code_action.kind; run = `Non_batchable (code_action state) } diff --git a/ocaml-lsp-server/src/code_actions/action_inferred_intf.mli b/ocaml-lsp-server/src/code_actions/action_inferred_intf.mli index 100cd7fcc..e09b9e390 100644 --- a/ocaml-lsp-server/src/code_actions/action_inferred_intf.mli +++ b/ocaml-lsp-server/src/code_actions/action_inferred_intf.mli @@ -1,5 +1,4 @@ open Import val kind : CodeActionKind.t - val t : State.t -> Code_action.t diff --git a/ocaml-lsp-server/src/code_actions/action_inline.ml b/ocaml-lsp-server/src/code_actions/action_inline.ml index 34b64011f..e3f4ef7be 100644 --- a/ocaml-lsp-server/src/code_actions/action_inline.ml +++ b/ocaml-lsp-server/src/code_actions/action_inline.ml @@ -5,12 +5,13 @@ let action_title = "Inline into uses" type inline_task = { inlined_var : Ident.t - ; inlined_expr : Typedtree.expression (** the expression to inline *) + ; inlined_expr : Typedtree.expression (** the expression to inline *) } let find_path_by_name id env = - try Some (fst (Ocaml_typing.Env.find_value_by_name id env)) - with Not_found -> None + try Some (fst (Ocaml_typing.Env.find_value_by_name id env)) with + | Not_found -> None +;; let check_shadowing (inlined_expr : Typedtree.expression) new_env = let module I = Ocaml_typing.Tast_iterator in @@ -18,17 +19,18 @@ let check_shadowing (inlined_expr : Typedtree.expression) new_env = let exception Env_mismatch of (Longident.t * [ `Unbound | `Shadowed ]) in let expr_iter (iter : I.iterator) (expr : Typedtree.expression) = match expr.exp_desc with - | Texp_ident (path, { txt = ident; _ }, _) -> ( + | Texp_ident (path, { txt = ident; _ }, _) -> let in_orig_env = find_path_by_name ident orig_env |> Option.map ~f:(Path.same path) |> Option.value ~default:false in - if in_orig_env then + if in_orig_env + then ( match find_path_by_name ident new_env with | Some path' -> - if not (Path.same path path') then - raise_notrace (Env_mismatch (ident, `Shadowed)) + if not (Path.same path path') + then raise_notrace (Env_mismatch (ident, `Shadowed)) | None -> raise_notrace (Env_mismatch (ident, `Unbound))) | _ -> I.default_iterator.expr iter expr in @@ -36,7 +38,9 @@ let check_shadowing (inlined_expr : Typedtree.expression) new_env = try iter.expr iter inlined_expr; Ok () - with Env_mismatch m -> Error m + with + | Env_mismatch m -> Error m +;; let string_of_error (ident, reason) = let reason = @@ -44,22 +48,21 @@ let string_of_error (ident, reason) = | `Unbound -> "unbound" | `Shadowed -> "shadowed" in - Format.asprintf - "'%a' is %s in inlining context" - Pprintast.longident - ident - reason + Format.asprintf "'%a' is %s in inlining context" Pprintast.longident ident reason +;; let contains loc pos = match Position.compare_inclusion pos (Range.of_loc loc) with | `Outside _ -> false | `Inside -> true +;; let find_inline_task typedtree pos = let exception Found of inline_task in let module I = Ocaml_typing.Tast_iterator in let expr_iter (iter : I.iterator) (expr : Typedtree.expression) = - if contains expr.exp_loc pos then + if contains expr.exp_loc pos + then ( match expr.exp_desc with | Texp_let ( Nonrecursive @@ -69,13 +72,12 @@ let find_inline_task typedtree pos = } ] , _ ) - when contains loc pos -> - raise_notrace (Found { inlined_var; inlined_expr }) - | _ -> I.default_iterator.expr iter expr + when contains loc pos -> raise_notrace (Found { inlined_var; inlined_expr }) + | _ -> I.default_iterator.expr iter expr) in - let structure_item_iter (iter : I.iterator) (item : Typedtree.structure_item) - = - if contains item.str_loc pos then + let structure_item_iter (iter : I.iterator) (item : Typedtree.structure_item) = + if contains item.str_loc pos + then ( match item.str_desc with | Tstr_value ( Nonrecursive @@ -84,20 +86,18 @@ let find_inline_task typedtree pos = ; _ } ] ) - when contains loc pos -> - raise_notrace (Found { inlined_var; inlined_expr }) - | _ -> I.default_iterator.structure_item iter item + when contains loc pos -> raise_notrace (Found { inlined_var; inlined_expr }) + | _ -> I.default_iterator.structure_item iter item) in let iterator = - { I.default_iterator with - expr = expr_iter - ; structure_item = structure_item_iter - } + { I.default_iterator with expr = expr_iter; structure_item = structure_item_iter } in try iterator.structure iterator typedtree; None - with Found task -> Some task + with + | Found task -> Some task +;; (** [find_parsetree_loc pl loc] finds an expression node in the parsetree with location [loc] *) @@ -105,18 +105,22 @@ let find_parsetree_loc pipeline loc = let exception Found of Parsetree.expression in try let expr_iter (iter : Ast_iterator.iterator) (expr : Parsetree.expression) = - if Loc.compare expr.pexp_loc loc = 0 then raise_notrace (Found expr) + if Loc.compare expr.pexp_loc loc = 0 + then raise_notrace (Found expr) else Ast_iterator.default_iterator.expr iter expr in let iterator = { Ast_iterator.default_iterator with expr = expr_iter } in (match Mpipeline.reader_parsetree pipeline with - | `Implementation s -> iterator.structure iterator s - | `Interface _ -> ()); + | `Implementation s -> iterator.structure iterator s + | `Interface _ -> ()); None - with Found e -> Some e + with + | Found e -> Some e +;; let find_parsetree_loc_exn pipeline loc = Option.value_exn (find_parsetree_loc pipeline loc) +;; (** [strip_attribute name e] removes all instances of the attribute called [name] in [e]. *) @@ -126,18 +130,18 @@ let strip_attribute attr_name expr = { (M.default_mapper.expr map expr) with pexp_attributes = List.filter expr.pexp_attributes ~f:(fun (a : Parsetree.attribute) -> - not (String.equal a.attr_name.txt attr_name)) + not (String.equal a.attr_name.txt attr_name)) } in let mapper = { M.default_mapper with expr = expr_map } in mapper.expr mapper expr +;; (** Overapproximation of the number of uses of a [Path.t] in an expression. *) module Uses : sig type t val find : t -> Path.t -> int option - val of_typedtree : Typedtree.expression -> t end = struct type t = int Path.Map.t @@ -150,18 +154,19 @@ end = struct let expr_iter (iter : I.iterator) (expr : Typedtree.expression) = match expr.exp_desc with | Texp_ident (path, _, _) -> - uses := - Path.Map.update - path - (function - | Some c -> Some (c + 1) - | None -> Some 1) - !uses + uses + := Path.Map.update + path + (function + | Some c -> Some (c + 1) + | None -> Some 1) + !uses | _ -> I.default_iterator.expr iter expr in let iterator = { I.default_iterator with expr = expr_iter } in iterator.expr iterator expr; !uses + ;; end (** Mapping from [Location.t] to [Path.t]. Computed from the typedtree. Useful @@ -170,9 +175,7 @@ module Paths : sig type t val find : t -> Loc.t -> Path.t option - val of_typedtree : Typedtree.expression -> t - val same_path : t -> Loc.t -> Loc.t -> bool end = struct type t = Path.t Loc.Map.t @@ -187,8 +190,7 @@ end = struct | Texp_ident (path, { loc; _ }, _) -> paths := Loc.Map.set !paths loc path | _ -> I.default_iterator.expr iter expr in - let pat_iter (type k) (iter : I.iterator) - (pat : k Typedtree.general_pattern) = + let pat_iter (type k) (iter : I.iterator) (pat : k Typedtree.general_pattern) = match pat.pat_desc with | Tpat_var (id, { loc; _ }) -> paths := Loc.Map.set !paths loc (Pident id) | Tpat_alias (pat, id, { loc; _ }) -> @@ -196,16 +198,16 @@ end = struct I.default_iterator.pat iter pat | _ -> I.default_iterator.pat iter pat in - let iterator = - { I.default_iterator with expr = expr_iter; pat = pat_iter } - in + let iterator = { I.default_iterator with expr = expr_iter; pat = pat_iter } in iterator.expr iterator expr; !paths + ;; let same_path ps l l' = - match (find ps l, find ps l') with + match find ps l, find ps l' with | Some p, Some p' -> Path.same p p' | _ -> false + ;; end let subst same subst_expr subst_id body = @@ -217,6 +219,7 @@ let subst same subst_expr subst_id body = in let mapper = { M.default_mapper with expr = expr_map } in mapper.expr mapper body +;; (** Rough check for expressions that can be duplicated without duplicating any side effects. *) @@ -225,18 +228,19 @@ let rec is_pure (expr : Parsetree.expression) = | Pexp_ident _ | Pexp_constant _ | Pexp_unreachable -> true | Pexp_field (e, _) | Pexp_constraint (e, _) -> is_pure e | _ -> false +;; let rec find_map_remove ~f = function - | [] -> (None, []) - | x :: xs -> ( - match f x with - | Some x' -> (Some x', xs) - | None -> - let ret, xs' = find_map_remove ~f xs in - (ret, x :: xs')) - -let rec beta_reduce (uses : Uses.t) (paths : Paths.t) - (app : Parsetree.expression) = + | [] -> None, [] + | x :: xs -> + (match f x with + | Some x' -> Some x', xs + | None -> + let ret, xs' = find_map_remove ~f xs in + ret, x :: xs') +;; + +let rec beta_reduce (uses : Uses.t) (paths : Paths.t) (app : Parsetree.expression) = let rec beta_reduce_arg (pat : Parsetree.pattern) body arg = let default () = H.Exp.let_ Nonrecursive [ H.Vb.mk pat arg ] (beta_reduce uses paths body) @@ -244,8 +248,7 @@ let rec beta_reduce (uses : Uses.t) (paths : Paths.t) match pat.ppat_desc with | Ppat_any | Ppat_construct ({ txt = Lident "()"; _ }, _) -> beta_reduce uses paths body - | Ppat_var param | Ppat_constraint ({ ppat_desc = Ppat_var param; _ }, _) - -> ( + | Ppat_var param | Ppat_constraint ({ ppat_desc = Ppat_var param; _ }, _) -> let open Option.O in let m_uses = let* path = Paths.find paths param.loc in @@ -254,54 +257,51 @@ let rec beta_reduce (uses : Uses.t) (paths : Paths.t) let same_path paths (id : _ H.with_loc) (id' : _ H.with_loc) = Paths.same_path paths id.loc id'.loc in - match m_uses with - | Some 0 -> beta_reduce uses paths body - | Some 1 -> - beta_reduce uses paths (subst (same_path paths) arg param body) - | Some _ | None -> - if is_pure arg then - beta_reduce uses paths (subst (same_path paths) arg param body) - else - (* if the parameter is used multiple times in the body, introduce a - let binding so that the parameter is evaluated only once *) - default ()) - | Ppat_tuple pats -> ( - match arg.pexp_desc with - | Pexp_tuple args -> - List.fold_left2 - ~f:(fun body pat arg -> beta_reduce_arg pat body arg) - ~init:body - pats - args - | _ -> default ()) + (match m_uses with + | Some 0 -> beta_reduce uses paths body + | Some 1 -> beta_reduce uses paths (subst (same_path paths) arg param body) + | Some _ | None -> + if is_pure arg + then beta_reduce uses paths (subst (same_path paths) arg param body) + else + (* if the parameter is used multiple times in the body, introduce a + let binding so that the parameter is evaluated only once *) + default ()) + | Ppat_tuple pats -> + (match arg.pexp_desc with + | Pexp_tuple args -> + List.fold_left2 + ~f:(fun body pat arg -> beta_reduce_arg pat body arg) + ~init:body + pats + args + | _ -> default ()) | _ -> default () in - let apply func args = - if List.is_empty args then func else H.Exp.apply func args - in + let apply func args = if List.is_empty args then func else H.Exp.apply func args in match app.pexp_desc with | Pexp_apply - ( { pexp_desc = Pexp_fun (Nolabel, None, pat, body); _ } - , (Nolabel, arg) :: args' ) -> beta_reduce_arg pat (apply body args') arg - | Pexp_apply - ({ pexp_desc = Pexp_fun ((Labelled l as lbl), None, pat, body); _ }, args) - -> ( + ({ pexp_desc = Pexp_fun (Nolabel, None, pat, body); _ }, (Nolabel, arg) :: args') -> + beta_reduce_arg pat (apply body args') arg + | Pexp_apply ({ pexp_desc = Pexp_fun ((Labelled l as lbl), None, pat, body); _ }, args) + -> let m_matching_arg, args' = find_map_remove args ~f:(function - | Asttypes.Labelled l', e when String.equal l l' -> Some e - | _ -> None) + | Asttypes.Labelled l', e when String.equal l l' -> Some e + | _ -> None) in - match m_matching_arg with - | Some arg -> beta_reduce_arg pat (apply body args') arg - | None -> H.Exp.fun_ lbl None pat (beta_reduce uses paths (apply body args)) - ) + (match m_matching_arg with + | Some arg -> beta_reduce_arg pat (apply body args') arg + | None -> H.Exp.fun_ lbl None pat (beta_reduce uses paths (apply body args))) | _ -> app +;; let inlined_text pipeline task = let open Option.O in let+ expr = find_parsetree_loc pipeline task.inlined_expr.exp_loc in let expr = strip_attribute "merlin.loc" expr in Format.asprintf "(%a)" Pprintast.expression expr +;; (** [inline_edits pipeline task] returns a list of inlining edits and an optional error value. An error will be generated if any of the potential @@ -311,12 +311,9 @@ let inline_edits pipeline task = let module I = Ocaml_typing.Tast_iterator in let open Option.O in let+ newText = inlined_text pipeline task in - let make_edit newText loc = - TextEdit.create ~newText ~range:(Range.of_loc loc) - in + let make_edit newText loc = TextEdit.create ~newText ~range:(Range.of_loc loc) in let edits = Queue.create () in let error = ref None in - let insert_edit newText loc = Queue.push edits (make_edit newText loc) in let not_shadowed env = match check_shadowing task.inlined_expr env with @@ -325,14 +322,16 @@ let inline_edits pipeline task = error := Some e; false in - (* inlining into an argument context has some special cases *) - let arg_iter env (iter : I.iterator) (label : Asttypes.arg_label) - (m_arg_expr : Typedtree.expression option) = - match (label, m_arg_expr) with + let arg_iter + env + (iter : I.iterator) + (label : Asttypes.arg_label) + (m_arg_expr : Typedtree.expression option) + = + match label, m_arg_expr with (* handle the labeled argument shorthand `f ~x` when inlining `x` *) - | ( Labelled name - , Some { exp_desc = Texp_ident (Pident id, { loc; _ }, _); _ } ) + | Labelled name, Some { exp_desc = Texp_ident (Pident id, { loc; _ }, _); _ } (* inlining is allowed for optional arguments that are being passed a Some parameter, i.e. `x` may be inlined in `let x = 1 in (fun ?(x = 0) -> x) ~x` *) @@ -341,9 +340,7 @@ let inline_edits pipeline task = { exp_desc = (* construct is part of desugaring, assumed to be Some *) Texp_construct - ( _ - , _ - , [ { exp_desc = Texp_ident (Pident id, { loc; _ }, _); _ } ] ) + (_, _, [ { exp_desc = Texp_ident (Pident id, { loc; _ }, _); _ } ]) ; _ } ) when Ident.same task.inlined_var id && not_shadowed env -> @@ -357,13 +354,9 @@ let inline_edits pipeline task = | Optional _, Some _ -> () | _, _ -> Option.iter m_arg_expr ~f:(iter.expr iter) in - let uses = Uses.of_typedtree task.inlined_expr in let paths = Paths.of_typedtree task.inlined_expr in - let inlined_pexpr = - find_parsetree_loc_exn pipeline task.inlined_expr.exp_loc - in - + let inlined_pexpr = find_parsetree_loc_exn pipeline task.inlined_expr.exp_loc in let expr_iter (iter : I.iterator) (expr : Typedtree.expression) = match expr.exp_desc with (* when inlining into an application context, attempt to beta reduce the @@ -391,7 +384,6 @@ let inline_edits pipeline task = | _ -> I.default_iterator.expr iter expr in let iterator = { I.default_iterator with expr = expr_iter } in - let edits = match Mtyper.get_typedtree (Mpipeline.typer_result pipeline) with | `Interface _ -> [] @@ -399,7 +391,8 @@ let inline_edits pipeline task = iterator.structure iterator structure; Queue.to_list edits in - (edits, !error) + edits, !error +;; let code_action pipeline doc (params : CodeActionParams.t) = let open Option.O in @@ -411,7 +404,7 @@ let code_action pipeline doc (params : CodeActionParams.t) = let* task = find_inline_task typedtree params.range.start in let m_edits = inline_edits pipeline task in let* edits, m_error = m_edits in - match (edits, m_error) with + match edits, m_error with | [], None -> None | [], Some error -> let action = @@ -448,5 +441,6 @@ let code_action pipeline doc (params : CodeActionParams.t) = () in Some action +;; let t = Code_action.batchable RefactorInline code_action diff --git a/ocaml-lsp-server/src/code_actions/action_mark_remove_unused.ml b/ocaml-lsp-server/src/code_actions/action_mark_remove_unused.ml index 9be74cf07..ed95f6613 100644 --- a/ocaml-lsp-server/src/code_actions/action_mark_remove_unused.ml +++ b/ocaml-lsp-server/src/code_actions/action_mark_remove_unused.ml @@ -10,116 +10,107 @@ let diagnostic_regex, diagnostic_regex_marks = ; Re.str "unused value" ]) , `Value ) - :: ([ ("unused open", `Open) - ; ("unused open!", `Open_bang) - ; ("unused type", `Type) - ; ("unused constructor", `Constructor) - ; ("unused extension constructor", `Extension) - ; ("this match case is unused", `Case) - ; ("unused for-loop index", `For_loop_index) - ; ("unused rec flag", `Rec) - ; ("unused module", `Module) + :: ([ "unused open", `Open + ; "unused open!", `Open_bang + ; "unused type", `Type + ; "unused constructor", `Constructor + ; "unused extension constructor", `Extension + ; "this match case is unused", `Case + ; "unused for-loop index", `For_loop_index + ; "unused rec flag", `Rec + ; "unused module", `Module ] - |> List.map ~f:(fun (msg, kind) -> (Re.mark (Re.str msg), kind))) + |> List.map ~f:(fun (msg, kind) -> Re.mark (Re.str msg), kind)) in let regex = - Re.compile - (Re.seq [ Re.bol; Re.alt (List.map ~f:(fun ((_, r), _) -> r) msgs) ]) + Re.compile (Re.seq [ Re.bol; Re.alt (List.map ~f:(fun ((_, r), _) -> r) msgs) ]) in - let marks = List.map ~f:(fun ((m, _), k) -> (m, k)) msgs in - (regex, marks) + let marks = List.map ~f:(fun ((m, _), k) -> m, k) msgs in + regex, marks +;; let find_unused_diagnostic pos ds = let open Option.O in List.filter ds ~f:(fun (d : Diagnostic.t) -> - match Position.compare_inclusion pos d.range with - | `Outside _ -> false - | `Inside -> true) + match Position.compare_inclusion pos d.range with + | `Outside _ -> false + | `Inside -> true) |> List.find_map ~f:(fun (d : Diagnostic.t) -> - let* group = - let message = - match d.message with - | `String m -> m - | `MarkupContent { value = m; _ } -> - (* TODO: this is wrong *) - m - in - Re.exec_opt diagnostic_regex message - in - let+ kind = - List.find_map diagnostic_regex_marks ~f:(fun (m, k) -> - if Re.Mark.test group m then Some k else None) - in - (kind, d)) + let* group = + let message = + match d.message with + | `String m -> m + | `MarkupContent { value = m; _ } -> + (* TODO: this is wrong *) + m + in + Re.exec_opt diagnostic_regex message + in + let+ kind = + List.find_map diagnostic_regex_marks ~f:(fun (m, k) -> + if Re.Mark.test group m then Some k else None) + in + kind, d) +;; (* Return contexts enclosing `pos` in order from most specific to most general. *) let enclosing_pos pipeline pos = let browse = - Mpipeline.typer_result pipeline - |> Mtyper.get_typedtree |> Mbrowse.of_typedtree + Mpipeline.typer_result pipeline |> Mtyper.get_typedtree |> Mbrowse.of_typedtree in - Mbrowse.enclosing - (Mpipeline.get_lexing_pos pipeline @@ Position.logical pos) - [ browse ] + Mbrowse.enclosing (Mpipeline.get_lexing_pos pipeline @@ Position.logical pos) [ browse ] +;; (* `name` is an unused binding. `contexts` is a list of Mbrowse.t enclosing an unused definition of `name`, in order from most general to most specific. Returns an edit that silences the 'unused value' warning. *) let rec mark_value_unused_edit name contexts = match contexts with - | Browse_raw.Pattern { pat_desc = Tpat_record (pats, _); _ } :: cs -> ( + | Browse_raw.Pattern { pat_desc = Tpat_record (pats, _); _ } :: cs -> let m_field_edit = List.find_map pats ~f: (function - | ( { loc = field_loc; _ } - , _ - , { pat_desc = Tpat_var (ident, _); pat_loc; _ } ) + | { loc = field_loc; _ }, _, { pat_desc = Tpat_var (ident, _); pat_loc; _ } when Ident.name ident = name -> (* Special case for record shorthand *) - if - field_loc.loc_start = pat_loc.loc_start - && field_loc.loc_end = pat_loc.loc_end + if field_loc.loc_start = pat_loc.loc_start + && field_loc.loc_end = pat_loc.loc_end then let+ end_pos = Position.of_lexical_position pat_loc.loc_end in TextEdit. - { range = Range.create ~start:end_pos ~end_:end_pos - ; newText = " = _" - } + { range = Range.create ~start:end_pos ~end_:end_pos; newText = " = _" } else - let+ start_pos = - Position.of_lexical_position pat_loc.loc_start - in + let+ start_pos = Position.of_lexical_position pat_loc.loc_start in TextEdit. - { range = Range.create ~start:start_pos ~end_:start_pos - ; newText = "_" - } + { range = Range.create ~start:start_pos ~end_:start_pos; newText = "_" } | _ -> None - : Longident.t Loc.loc - * Types.label_description - * Typedtree.value Typedtree.general_pattern - -> TextEdit.t option) + : Longident.t Loc.loc + * Types.label_description + * Typedtree.value Typedtree.general_pattern + -> TextEdit.t option) in - match m_field_edit with - | Some e -> Some e - | None -> mark_value_unused_edit name cs) + (match m_field_edit with + | Some e -> Some e + | None -> mark_value_unused_edit name cs) | Pattern { pat_desc = Tpat_var (ident, _); pat_loc = loc; _ } :: _ -> - if Ident.name ident = name then + if Ident.name ident = name + then let+ start = Position.of_lexical_position loc.loc_start in { TextEdit.range = Range.create ~start ~end_:start; newText = "_" } else None | _ :: cs -> mark_value_unused_edit name cs | _ -> None +;; let code_action_mark_value_unused pipeline doc (diagnostic : Diagnostic.t) = let open Option.O in let* var_name = Document.substring doc diagnostic.range in let pos = diagnostic.range.start in let+ text_edit = - enclosing_pos pipeline pos |> List.rev_map ~f:snd - |> mark_value_unused_edit var_name + enclosing_pos pipeline pos |> List.rev_map ~f:snd |> mark_value_unused_edit var_name in let edit = Document.edit doc [ text_edit ] in CodeAction.create @@ -129,33 +120,35 @@ let code_action_mark_value_unused pipeline doc (diagnostic : Diagnostic.t) = ~edit ~isPreferred:true () +;; (* Takes a list of contexts enclosing a binding of `name`. Returns the range of the most specific binding. *) let enclosing_value_binding_range name = List.find_map ~f:(function - | Browse_raw.Expression - { exp_desc = - Texp_let - ( _ - , [ { vb_pat = - { pat_desc = Tpat_var (_, { txt = name'; _ }); _ } - ; _ - } - ] - , { exp_loc = { loc_start = let_end; _ }; _ } ) - ; exp_loc = { loc_start = let_start; _ } - ; _ - } - when name = name' -> - let* start = Position.of_lexical_position let_start in - let+ end_ = Position.of_lexical_position let_end in - Range.create ~start ~end_ - | _ -> None) + | Browse_raw.Expression + { exp_desc = + Texp_let + ( _ + , [ { vb_pat = { pat_desc = Tpat_var (_, { txt = name'; _ }); _ }; _ } ] + , { exp_loc = { loc_start = let_end; _ }; _ } ) + ; exp_loc = { loc_start = let_start; _ } + ; _ + } + when name = name' -> + let* start = Position.of_lexical_position let_start in + let+ end_ = Position.of_lexical_position let_end in + Range.create ~start ~end_ + | _ -> None) +;; (* Create a code action that removes [range] and refers to [diagnostic]. *) -let code_action_remove_range ?(title = "Remove unused") doc - (diagnostic : Diagnostic.t) range = +let code_action_remove_range + ?(title = "Remove unused") + doc + (diagnostic : Diagnostic.t) + range + = let edit = Document.edit doc [ { range; newText = "" } ] in CodeAction.create ~diagnostics:[ diagnostic ] @@ -164,21 +157,22 @@ let code_action_remove_range ?(title = "Remove unused") doc ~edit ~isPreferred:false () +;; (* Create a code action that removes the value mentioned in [diagnostic]. *) let code_action_remove_value pipeline doc pos (diagnostic : Diagnostic.t) = let* var_name = Document.substring doc diagnostic.range in - enclosing_pos pipeline pos |> List.map ~f:snd + enclosing_pos pipeline pos + |> List.map ~f:snd |> enclosing_value_binding_range var_name |> Option.map ~f:(fun range -> code_action_remove_range doc diagnostic range) +;; (** [create_mark_action ~title doc pos d] creates a code action that resolves the diagnostic [d] by inserting an underscore at [pos] in [doc]. *) let create_mark_action ~title doc pos d = let edit = - Document.edit - doc - [ { range = Range.create ~start:pos ~end_:pos; newText = "_" } ] + Document.edit doc [ { range = Range.create ~start:pos ~end_:pos; newText = "_" } ] in CodeAction.create ~diagnostics:[ d ] @@ -187,25 +181,28 @@ let create_mark_action ~title doc pos d = ~edit ~isPreferred:true () +;; let action_mark_type pipeline doc pos (d : Diagnostic.t) = let open Option.O in let m_name_loc_start = enclosing_pos pipeline pos |> List.find_map ~f:(fun (_, node) -> - match node with - | Browse_raw.Type_declaration - { typ_name = { loc = { loc_start; _ }; _ }; _ } -> Some loc_start - | _ -> None) + match node with + | Browse_raw.Type_declaration { typ_name = { loc = { loc_start; _ }; _ }; _ } -> + Some loc_start + | _ -> None) in let* name_loc_start = m_name_loc_start in let+ start = Position.of_lexical_position name_loc_start in create_mark_action ~title:"Mark type as unused" doc start d +;; let contains loc pos = match Position.compare_inclusion pos (Range.of_loc loc) with | `Outside _ -> false | `Inside -> true +;; let action_mark_for_loop_index pipeline doc pos (d : Diagnostic.t) = let open Option.O in @@ -213,30 +210,32 @@ let action_mark_for_loop_index pipeline doc pos (d : Diagnostic.t) = let exception Found of Warnings.loc in let iterator = let expr iter (e : Parsetree.expression) = - if contains e.pexp_loc pos then + if contains e.pexp_loc pos + then ( match e.pexp_desc with | Pexp_for ({ ppat_loc; _ }, _, _, _, _) when contains ppat_loc pos -> raise_notrace (Found ppat_loc) - | _ -> I.default_iterator.expr iter e + | _ -> I.default_iterator.expr iter e) in let structure_item iter (item : Parsetree.structure_item) = - if contains item.pstr_loc pos then - I.default_iterator.structure_item iter item + if contains item.pstr_loc pos then I.default_iterator.structure_item iter item in { I.default_iterator with expr; structure_item } in let m_index_loc = match Mpipeline.reader_parsetree pipeline with - | `Implementation parsetree -> ( - try - iterator.structure iterator parsetree; - None - with Found task -> Some task) + | `Implementation parsetree -> + (try + iterator.structure iterator parsetree; + None + with + | Found task -> Some task) | `Interface _ -> None in let* (index_loc : Warnings.loc) = m_index_loc in let+ start = Position.of_lexical_position index_loc.loc_start in create_mark_action ~title:"Mark for-loop index as unused" doc start d +;; let action_mark_open doc (d : Diagnostic.t) = let edit = @@ -251,16 +250,12 @@ let action_mark_open doc (d : Diagnostic.t) = ~edit ~isPreferred:true () +;; let rec_regex = Re.compile - (Re.seq - [ Re.bos - ; Re.rep Re.any - ; Re.group (Re.str "rec") - ; Re.rep Re.space - ; Re.stop - ]) + (Re.seq [ Re.bos; Re.rep Re.any; Re.group (Re.str "rec"); Re.rep Re.space; Re.stop ]) +;; let find_preceding doc pos regex = let open Option.O in @@ -278,34 +273,31 @@ let find_preceding doc pos regex = |> Position.of_lexical_position in Range.create ~start ~end_ +;; let action_remove_rec doc (d : Diagnostic.t) = let open Option.O in let+ rec_range = find_preceding doc d.range.start rec_regex in code_action_remove_range ~title:"Remove unused rec" doc d rec_range +;; let bar_regex = Re.compile - (Re.seq - [ Re.bos - ; Re.rep Re.any - ; Re.group (Re.str "|") - ; Re.rep Re.space - ; Re.stop - ]) + (Re.seq [ Re.bos; Re.rep Re.any; Re.group (Re.str "|"); Re.rep Re.space; Re.stop ]) +;; let action_remove_case pipeline doc (d : Diagnostic.t) = let open Option.O in let case_range = enclosing_pos pipeline d.range.start |> List.find_map ~f:(fun (_, node) -> - match node with - | Browse_raw.Case - { c_lhs = { pat_loc = { loc_start; _ }; _ } - ; c_rhs = { exp_loc = { loc_end; _ }; _ } - ; _ - } -> Some (loc_start, loc_end) - | _ -> None) + match node with + | Browse_raw.Case + { c_lhs = { pat_loc = { loc_start; _ }; _ } + ; c_rhs = { exp_loc = { loc_end; _ }; _ } + ; _ + } -> Some (loc_start, loc_end) + | _ -> None) in let* case_start, case_end = case_range in let* start = Position.of_lexical_position case_start in @@ -314,8 +306,7 @@ let action_remove_case pipeline doc (d : Diagnostic.t) = let edit = Document.edit doc - [ { range = Range.create ~start:preceding_bar.start ~end_; newText = "" } - ] + [ { range = Range.create ~start:preceding_bar.start ~end_; newText = "" } ] in CodeAction.create ~diagnostics:[ d ] @@ -324,24 +315,22 @@ let action_remove_case pipeline doc (d : Diagnostic.t) = ~edit ~isPreferred:true () +;; let action_remove_constructor pipeline doc (d : Diagnostic.t) = let open Option.O in let case_range = enclosing_pos pipeline d.range.start |> List.find_map ~f:(fun (_, node) -> - match node with - | Browse_raw.Constructor_declaration - { cd_loc = { loc_start; loc_end; _ }; _ } -> - Some (loc_start, loc_end) - | _ -> None) + match node with + | Browse_raw.Constructor_declaration { cd_loc = { loc_start; loc_end; _ }; _ } -> + Some (loc_start, loc_end) + | _ -> None) in let* case_start, case_end = case_range in let* start = Position.of_lexical_position case_start in let+ end_ = Position.of_lexical_position case_end in - let edit = - Document.edit doc [ { range = Range.create ~start ~end_; newText = "" } ] - in + let edit = Document.edit doc [ { range = Range.create ~start ~end_; newText = "" } ] in CodeAction.create ~diagnostics:[ d ] ~title:"Remove unused constructor" @@ -349,9 +338,11 @@ let action_remove_constructor pipeline doc (d : Diagnostic.t) = ~edit ~isPreferred:true () +;; let action_remove_simple kind doc (d : Diagnostic.t) = code_action_remove_range ~title:("Remove unused " ^ kind) doc d d.range +;; let mark = let run pipeline doc (params : CodeActionParams.t) = @@ -368,6 +359,7 @@ let mark = None in Code_action.batchable QuickFix run +;; let remove = let run pipeline doc (params : CodeActionParams.t) = @@ -391,3 +383,4 @@ let remove = None in Code_action.batchable QuickFix run +;; diff --git a/ocaml-lsp-server/src/code_actions/action_mark_remove_unused.mli b/ocaml-lsp-server/src/code_actions/action_mark_remove_unused.mli index 1a02cc72a..c2f0f3b2b 100644 --- a/ocaml-lsp-server/src/code_actions/action_mark_remove_unused.mli +++ b/ocaml-lsp-server/src/code_actions/action_mark_remove_unused.mli @@ -1,3 +1,2 @@ val mark : Code_action.t - val remove : Code_action.t diff --git a/ocaml-lsp-server/src/code_actions/action_open_related.ml b/ocaml-lsp-server/src/code_actions/action_open_related.ml index 463f24104..0e2f5a194 100644 --- a/ocaml-lsp-server/src/code_actions/action_open_related.ml +++ b/ocaml-lsp-server/src/code_actions/action_open_related.ml @@ -18,15 +18,18 @@ let command_run server (params : ExecuteCommandParams.t) = let req = ShowDocumentParams.create ~uri ~takeFocus:true () in Server.request server (Server_request.ShowDocumentRequest req) in - (if not success then - let uri = Uri.to_string uri in - Format.eprintf "failed to open %s@." uri); + if not success + then ( + let uri = Uri.to_string uri in + Format.eprintf "failed to open %s@." uri); `Null +;; let available (capabilities : ShowDocumentClientCapabilities.t option) = match capabilities with | None | Some { support = false } -> false | Some { support = true } -> true +;; let for_uri (capabilities : ShowDocumentClientCapabilities.t option) doc = let uri = Document.uri doc in @@ -40,30 +43,21 @@ let for_uri (capabilities : ShowDocumentClientCapabilities.t option) doc = | true -> Document.get_impl_intf_counterparts merlin_doc uri |> List.map ~f:(fun uri -> - let path = Uri.to_path uri in - let exists = Sys.file_exists path in - let title = - sprintf - "%s %s" - (if exists then "Open" else "Create") - (Filename.basename path) - in - let command = - let arguments = [ DocumentUri.yojson_of_t uri ] in - Command.create ~title ~command:command_name ~arguments () - in - let edit = - match exists with - | true -> None - | false -> - let documentChanges = - [ `CreateFile (CreateFile.create ~uri ()) ] - in - Some (WorkspaceEdit.create ~documentChanges ()) - in - CodeAction.create - ?edit - ~title - ~kind:(CodeActionKind.Other "switch") - ~command - ()) + let path = Uri.to_path uri in + let exists = Sys.file_exists path in + let title = + sprintf "%s %s" (if exists then "Open" else "Create") (Filename.basename path) + in + let command = + let arguments = [ DocumentUri.yojson_of_t uri ] in + Command.create ~title ~command:command_name ~arguments () + in + let edit = + match exists with + | true -> None + | false -> + let documentChanges = [ `CreateFile (CreateFile.create ~uri ()) ] in + Some (WorkspaceEdit.create ~documentChanges ()) + in + CodeAction.create ?edit ~title ~kind:(CodeActionKind.Other "switch") ~command ()) +;; diff --git a/ocaml-lsp-server/src/code_actions/action_open_related.mli b/ocaml-lsp-server/src/code_actions/action_open_related.mli index a9739f1c5..e8d044560 100644 --- a/ocaml-lsp-server/src/code_actions/action_open_related.mli +++ b/ocaml-lsp-server/src/code_actions/action_open_related.mli @@ -1,10 +1,6 @@ open Import val command_name : string - val available : ShowDocumentClientCapabilities.t option -> bool - val command_run : _ Server.t -> ExecuteCommandParams.t -> Json.t Fiber.t - -val for_uri : - ShowDocumentClientCapabilities.t option -> Document.t -> CodeAction.t list +val for_uri : ShowDocumentClientCapabilities.t option -> Document.t -> CodeAction.t list diff --git a/ocaml-lsp-server/src/code_actions/action_refactor_open.ml b/ocaml-lsp-server/src/code_actions/action_refactor_open.ml index 90602b082..ffb1aefe7 100644 --- a/ocaml-lsp-server/src/code_actions/action_refactor_open.ml +++ b/ocaml-lsp-server/src/code_actions/action_refactor_open.ml @@ -1,7 +1,12 @@ open Import -let code_action (mode : [ `Qualify | `Unqualify ]) (action_kind : string) - pipeline _ (params : CodeActionParams.t) = +let code_action + (mode : [ `Qualify | `Unqualify ]) + (action_kind : string) + pipeline + _ + (params : CodeActionParams.t) + = let res = let command = let pos_start = Position.logical params.range.start in @@ -16,21 +21,24 @@ let code_action (mode : [ `Qualify | `Unqualify ]) (action_kind : string) let edit : WorkspaceEdit.t = let edits = List.map changes ~f:(fun (newText, loc) -> - { TextEdit.newText; range = Range.of_loc loc }) + { TextEdit.newText; range = Range.of_loc loc }) in let uri = params.textDocument.uri in - WorkspaceEdit.create ~changes:[ (uri, edits) ] () + WorkspaceEdit.create ~changes:[ uri, edits ] () in let kind = CodeActionKind.Other action_kind in let title = String.capitalize_ascii action_kind in CodeAction.create ~title ~kind ~edit ~isPreferred:false () in Some code_action +;; let unqualify = let action_kind = "remove module name from identifiers" in Code_action.batchable (Other action_kind) (code_action `Unqualify action_kind) +;; let qualify = let action_kind = "put module name in identifiers" in Code_action.batchable (Other action_kind) (code_action `Qualify action_kind) +;; diff --git a/ocaml-lsp-server/src/code_actions/action_remove_type_annotation.ml b/ocaml-lsp-server/src/code_actions/action_remove_type_annotation.ml index 95614b0a4..c6de5f5de 100644 --- a/ocaml-lsp-server/src/code_actions/action_remove_type_annotation.ml +++ b/ocaml-lsp-server/src/code_actions/action_remove_type_annotation.ml @@ -32,6 +32,7 @@ let check_typeable_context pipeline pos_start = :: _ -> is_valid pat_loc is_pat_constrained pat_extra | (_, Pattern p) :: _ -> is_valid p.pat_loc is_pat_constrained p.pat_extra | _ :: _ | [] -> `Invalid +;; let get_source_text doc (loc : Loc.t) = let open Option.O in @@ -41,6 +42,7 @@ let get_source_text doc (loc : Loc.t) = let (`Offset start) = Msource.get_offset source (Position.logical start) in let (`Offset end_) = Msource.get_offset source (Position.logical end_) in String.sub (Msource.text source) ~pos:start ~len:(end_ - start) +;; let code_action_of_type_enclosing uri doc (loc, constr_loc) = let open Option.O in @@ -50,12 +52,8 @@ let code_action_of_type_enclosing uri doc (loc, constr_loc) = { range = Range.of_loc (Loc.union loc constr_loc); newText = src_text } in let version = Document.version doc in - let textDocument = - OptionalVersionedTextDocumentIdentifier.create ~uri ~version () - in - let edit = - TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] - in + let textDocument = OptionalVersionedTextDocumentIdentifier.create ~uri ~version () in + let edit = TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] in WorkspaceEdit.create ~documentChanges:[ `TextDocumentEdit edit ] () in let title = String.capitalize_ascii action_kind in @@ -65,6 +63,7 @@ let code_action_of_type_enclosing uri doc (loc, constr_loc) = ~edit ~isPreferred:false () +;; let code_action pipeline doc (params : CodeActionParams.t) = let pos_start = Position.logical params.range.start in @@ -73,7 +72,7 @@ let code_action pipeline doc (params : CodeActionParams.t) = | `Invalid -> None | `Valid (loc1, loc2) -> code_action_of_type_enclosing params.textDocument.uri doc (loc1, loc2) +;; let kind = CodeActionKind.Other action_kind - let t = Code_action.batchable kind code_action diff --git a/ocaml-lsp-server/src/code_actions/action_type_annotate.ml b/ocaml-lsp-server/src/code_actions/action_type_annotate.ml index 234fd3f93..3a6a5f1de 100644 --- a/ocaml-lsp-server/src/code_actions/action_type_annotate.ml +++ b/ocaml-lsp-server/src/code_actions/action_type_annotate.ml @@ -15,9 +15,7 @@ let check_typeable_context pipeline pos_start = | Typedtree.Tpat_constraint _, _, _ -> true | _ -> false in - let is_valid p extras = - if List.exists ~f:p extras then `Invalid else `Valid - in + let is_valid p extras = if List.exists ~f:p extras then `Invalid else `Valid in match Mbrowse.enclosing pos_start [ browse ] with | (_, Pattern { pat_desc = Tpat_var _; _ }) :: (_, Value_binding { vb_expr = { exp_desc = Texp_function _; _ }; _ }) @@ -28,6 +26,7 @@ let check_typeable_context pipeline pos_start = :: _ -> is_valid is_pat_constrained pat_extra | (_, Pattern p) :: _ -> is_valid is_pat_constrained p.pat_extra | _ :: _ | [] -> `Invalid +;; let get_source_text doc (loc : Loc.t) = let open Option.O in @@ -37,6 +36,7 @@ let get_source_text doc (loc : Loc.t) = let (`Offset start) = Msource.get_offset source (Position.logical start) in let (`Offset end_) = Msource.get_offset source (Position.logical end_) in String.sub (Msource.text source) ~pos:start ~len:(end_ - start) +;; let code_action_of_type_enclosing uri doc (loc, typ) = let open Option.O in @@ -45,12 +45,8 @@ let code_action_of_type_enclosing uri doc (loc, typ) = let edit : WorkspaceEdit.t = let textedit : TextEdit.t = { range = Range.of_loc loc; newText } in let version = Document.version doc in - let textDocument = - OptionalVersionedTextDocumentIdentifier.create ~uri ~version () - in - let edit = - TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] - in + let textDocument = OptionalVersionedTextDocumentIdentifier.create ~uri ~version () in + let edit = TextDocumentEdit.create ~textDocument ~edits:[ `TextEdit textedit ] in WorkspaceEdit.create ~documentChanges:[ `TextDocumentEdit edit ] () in let title = String.capitalize_ascii action_kind in @@ -60,6 +56,7 @@ let code_action_of_type_enclosing uri doc (loc, typ) = ~edit ~isPreferred:false () +;; let code_action pipeline doc (params : CodeActionParams.t) = let pos_start = Position.logical params.range.start in @@ -70,9 +67,7 @@ let code_action pipeline doc (params : CodeActionParams.t) = | `Valid -> let command = Query_protocol.Type_enclosing (None, pos_start, Some 0) in let config = Mpipeline.final_config pipeline in - let config = - { config with query = { config.query with verbosity = Lvl 0 } } - in + let config = { config with query = { config.query with verbosity = Lvl 0 } } in let pipeline = Mpipeline.make config (Document.source doc) in Some (Query_commands.dispatch pipeline command) in @@ -80,7 +75,7 @@ let code_action pipeline doc (params : CodeActionParams.t) = | None | Some [] | Some ((_, `Index _, _) :: _) -> None | Some ((location, `String value, _) :: _) -> code_action_of_type_enclosing params.textDocument.uri doc (location, value) +;; let kind = CodeActionKind.Other action_kind - let t = Code_action.batchable kind code_action diff --git a/ocaml-lsp-server/src/code_actions/action_update_signature.ml b/ocaml-lsp-server/src/code_actions/action_update_signature.ml index 25d907cf1..21c696277 100644 --- a/ocaml-lsp-server/src/code_actions/action_update_signature.ml +++ b/ocaml-lsp-server/src/code_actions/action_update_signature.ml @@ -16,28 +16,27 @@ let code_action_of_intf doc text_edits = in WorkspaceEdit.create ~documentChanges:[ `TextDocumentEdit doc_edit ] () in - let title = - String.capitalize_ascii "update signature(s) to match implementation" - in + let title = String.capitalize_ascii "update signature(s) to match implementation" in CodeAction.create ~title ~kind:(CodeActionKind.Other action_kind) ~edit ~isPreferred:false () +;; let code_action (state : State.t) doc (params : CodeActionParams.t) = match Document.kind doc with | `Other -> Fiber.return None | `Merlin m when Document.Merlin.kind m = Impl -> Fiber.return None - | `Merlin intf_merlin -> ( + | `Merlin intf_merlin -> let* text_edits = Inference.update_signatures ~state ~doc ~range:params.range ~intf_merlin in - match text_edits with - | [] -> Fiber.return None - | _ -> Fiber.return (Some (code_action_of_intf doc text_edits))) + (match text_edits with + | [] -> Fiber.return None + | _ -> Fiber.return (Some (code_action_of_intf doc text_edits))) +;; let kind = CodeActionKind.Other action_kind - let t state = { Code_action.kind; run = `Non_batchable (code_action state) } diff --git a/ocaml-lsp-server/src/code_actions/code_action.ml b/ocaml-lsp-server/src/code_actions/code_action.ml index e102e9560..b3904c153 100644 --- a/ocaml-lsp-server/src/code_actions/code_action.ml +++ b/ocaml-lsp-server/src/code_actions/code_action.ml @@ -3,18 +3,16 @@ open Import (* TODO: - split the "needs merlin" part of the action out so that all actions can be - batched *) + batched *) type t = { kind : CodeActionKind.t ; run : [ `Batchable of Mpipeline.t -> Document.t -> CodeActionParams.t -> CodeAction.t option - | `Non_batchable of - Document.t -> CodeActionParams.t -> CodeAction.t option Fiber.t + | `Non_batchable of Document.t -> CodeActionParams.t -> CodeAction.t option Fiber.t ] } let batchable kind run = { kind; run = `Batchable run } - let non_batchable kind run = { kind; run = `Non_batchable run } diff --git a/ocaml-lsp-server/src/code_actions/code_action.mli b/ocaml-lsp-server/src/code_actions/code_action.mli index ff3837cd5..aa877d5d3 100644 --- a/ocaml-lsp-server/src/code_actions/code_action.mli +++ b/ocaml-lsp-server/src/code_actions/code_action.mli @@ -5,21 +5,20 @@ type t = ; run : [ `Batchable of Mpipeline.t -> Document.t -> CodeActionParams.t -> CodeAction.t option - | `Non_batchable of - Document.t -> CodeActionParams.t -> CodeAction.t option Fiber.t + | `Non_batchable of Document.t -> CodeActionParams.t -> CodeAction.t option Fiber.t ] - (** A code action is either "batchable" or "non-batchable". Batchable - actions do not use fibers internally, so they can be safely run - inside a [with_pipeline] context. Non-batchable actions can use - fibers. *) + (** A code action is either "batchable" or "non-batchable". Batchable + actions do not use fibers internally, so they can be safely run + inside a [with_pipeline] context. Non-batchable actions can use + fibers. *) } -val batchable : - CodeActionKind.t +val batchable + : CodeActionKind.t -> (Mpipeline.t -> Document.t -> CodeActionParams.t -> CodeAction.t option) -> t -val non_batchable : - CodeActionKind.t +val non_batchable + : CodeActionKind.t -> (Document.t -> CodeActionParams.t -> CodeAction.t option Fiber.t) -> t diff --git a/ocaml-lsp-server/src/code_actions/diagnostic_util.ml b/ocaml-lsp-server/src/code_actions/diagnostic_util.ml index 5080b66bd..258be6f1a 100644 --- a/ocaml-lsp-server/src/code_actions/diagnostic_util.ml +++ b/ocaml-lsp-server/src/code_actions/diagnostic_util.ml @@ -3,6 +3,6 @@ open Import let is_unused_var_warning s = String.is_prefix s ~prefix:"Error (warning 26)" || String.is_prefix s ~prefix:"Error (warning 27)" +;; -let is_deprecated_warning s = - String.is_prefix s ~prefix:"Error (alert deprecated)" +let is_deprecated_warning s = String.is_prefix s ~prefix:"Error (alert deprecated)" diff --git a/ocaml-lsp-server/src/compl.ml b/ocaml-lsp-server/src/compl.ml index 9734415f3..312c23a74 100644 --- a/ocaml-lsp-server/src/compl.ml +++ b/ocaml-lsp-server/src/compl.ml @@ -5,13 +5,9 @@ module Resolve = struct type t = CompletionParams.t let uri (t : t) = t.textDocument.uri - let yojson_of_t = CompletionParams.yojson_of_t - let t_of_yojson = CompletionParams.t_of_yojson - - let of_completion_item (ci : CompletionItem.t) = - Option.map ci.data ~f:t_of_yojson + let of_completion_item (ci : CompletionItem.t) = Option.map ci.data ~f:t_of_yojson end let completion_kind kind : CompletionItemKind.t option = @@ -25,6 +21,7 @@ let completion_kind kind : CompletionItemKind.t option = | `Keyword -> Some Keyword | `Constructor -> Some Constructor | `Type -> Some TypeParameter +;; let prefix_of_position ~short_path source position = match Msource.text source with @@ -39,7 +36,6 @@ let prefix_of_position ~short_path source position = reasonable limit for regex performance*) max 0 (end_of_prefix - 500) in - let reconstructed_prefix = Prefix_parser.parse ~pos ~len:(end_of_prefix + 1 - pos) text |> Option.value ~default:"" @@ -47,12 +43,13 @@ let prefix_of_position ~short_path source position = semantically meaningless *) |> String.filter (fun x -> not (x = ' ' || x = '\n' || x = '\t')) in - - if short_path then + if short_path + then ( match String.split_on_char reconstructed_prefix ~sep:'.' |> List.last with | Some s -> s - | None -> reconstructed_prefix + | None -> reconstructed_prefix) else reconstructed_prefix +;; let suffix_of_position source position = match Msource.text source with @@ -60,8 +57,9 @@ let suffix_of_position source position = | text -> let (`Offset index) = Msource.get_offset source position in let len = String.length text in - if index >= len then "" - else + if index >= len + then "" + else ( let from = index in let len = let ident_char = function @@ -74,13 +72,15 @@ let suffix_of_position source position = in until - from in - String.sub text ~pos:from ~len + String.sub text ~pos:from ~len) +;; let reconstruct_ident source position = let prefix = prefix_of_position ~short_path:false source position in let suffix = suffix_of_position source position in let ident = prefix ^ suffix in Option.some_if (ident <> "") ident +;; let range_prefix (lsp_position : Position.t) prefix : Range.t = let start = @@ -89,12 +89,18 @@ let range_prefix (lsp_position : Position.t) prefix : Range.t = { lsp_position with character } in { Range.start; end_ = lsp_position } +;; let sortText_of_index idx = Printf.sprintf "%04d" idx module Complete_by_prefix = struct - let completionItem_of_completion_entry idx - (entry : Query_protocol.Compl.entry) ~compl_params ~range ~deprecated = + let completionItem_of_completion_entry + idx + (entry : Query_protocol.Compl.entry) + ~compl_params + ~range + ~deprecated + = let kind = completion_kind entry.kind in let textEdit = `TextEdit { TextEdit.range; newText = entry.name } in CompletionItem.create @@ -108,23 +114,26 @@ module Complete_by_prefix = struct ?data:compl_params ~textEdit () + ;; let dispatch_cmd ~prefix position pipeline = - let complete = - Query_protocol.Complete_prefix (prefix, position, [], false, true) - in + let complete = Query_protocol.Complete_prefix (prefix, position, [], false, true) in Query_commands.dispatch pipeline complete + ;; - let process_dispatch_resp ~deprecated ~resolve ~prefix doc pos - (completion : Query_protocol.completions) = + let process_dispatch_resp + ~deprecated + ~resolve + ~prefix + doc + pos + (completion : Query_protocol.completions) + = let range = let logical_pos = Position.logical pos in range_prefix pos - (prefix_of_position - ~short_path:true - (Document.Merlin.source doc) - logical_pos) + (prefix_of_position ~short_path:true (Document.Merlin.source doc) logical_pos) in let completion_entries = match completion.context with @@ -132,19 +141,17 @@ module Complete_by_prefix = struct | `Application { Query_protocol.Compl.labels; argument_type = _ } -> completion.entries @ List.map labels ~f:(fun (name, typ) -> - let name = - if - String.is_prefix prefix ~prefix:"~" - && String.is_prefix name ~prefix:"?" - then "~" ^ String.drop_prefix_if_exists name ~prefix:"?" - else name - in - { Query_protocol.Compl.name - ; kind = `Label - ; desc = typ - ; info = "" - ; deprecated = false (* TODO this is wrong *) - }) + let name = + if String.is_prefix prefix ~prefix:"~" && String.is_prefix name ~prefix:"?" + then "~" ^ String.drop_prefix_if_exists name ~prefix:"?" + else name + in + { Query_protocol.Compl.name + ; kind = `Label + ; desc = typ + ; info = "" + ; deprecated = false (* TODO this is wrong *) + }) in (* we need to json-ify completion params to put them in completion item's [data] field to keep it across [textDocument/completion] and the @@ -164,6 +171,7 @@ module Complete_by_prefix = struct List.mapi completion_entries ~f:(completionItem_of_completion_entry ~deprecated ~range ~compl_params) + ;; let complete_keywords completion_position prefix = match prefix with @@ -181,6 +189,7 @@ module Complete_by_prefix = struct in [ ci_for_in ] | _ -> [] + ;; let complete doc prefix pos ~deprecated ~resolve = let+ (completion : Query_protocol.completions) = @@ -198,29 +207,29 @@ module Complete_by_prefix = struct in keyword_completionItems @ process_dispatch_resp ~deprecated ~resolve ~prefix doc pos completion + ;; end module Complete_with_construct = struct let dispatch_cmd position pipeline = match Exn_with_backtrace.try_with (fun () -> - let command = Query_protocol.Construct (position, None, None) in - Query_commands.dispatch pipeline command) + let command = Query_protocol.Construct (position, None, None) in + Query_commands.dispatch pipeline command) with | Ok (loc, exprs) -> Some (loc, exprs) - | Error { Exn_with_backtrace.exn = Merlin_analysis.Construct.Not_a_hole; _ } - -> None + | Error { Exn_with_backtrace.exn = Merlin_analysis.Construct.Not_a_hole; _ } -> None | Error exn -> Exn_with_backtrace.reraise exn + ;; let process_dispatch_resp ~supportsJumpToNextHole = function | None -> [] | Some (loc, constructed_exprs) -> let range = Range.of_loc loc in let deparen_constr_expr expr = - if - (not (String.equal expr "()")) - && String.is_prefix expr ~prefix:"(" - && String.is_suffix expr ~suffix:")" + if (not (String.equal expr "()")) + && String.is_prefix expr ~prefix:"(" + && String.is_suffix expr ~suffix:")" then String.sub expr ~pos:1 ~len:(String.length expr - 2) else expr in @@ -228,7 +237,8 @@ module Complete_with_construct = struct let expr_wo_parens = deparen_constr_expr expr in let edit = { TextEdit.range; newText = expr } in let command = - if supportsJumpToNextHole then + if supportsJumpToNextHole + then Some (Client.Custom_commands.next_hole ~in_range:(Range.resize_for_edit edit) @@ -246,126 +256,122 @@ module Complete_with_construct = struct () in List.mapi constructed_exprs ~f:completionItem_of_constructed_expr + ;; end -let complete (state : State.t) - ({ textDocument = { uri }; position = pos; context; _ } : - CompletionParams.t) = +let complete + (state : State.t) + ({ textDocument = { uri }; position = pos; context; _ } : CompletionParams.t) + = Fiber.of_thunk (fun () -> - let doc = Document_store.get state.store uri in - match Document.kind doc with - | `Other -> Fiber.return None - | `Merlin merlin -> ( - let completion_item_capability = + let doc = Document_store.get state.store uri in + match Document.kind doc with + | `Other -> Fiber.return None + | `Merlin merlin -> + let completion_item_capability = + let open Option.O in + let capabilities = State.client_capabilities state in + let* td = capabilities.textDocument in + let* compl = td.completion in + compl.completionItem + in + let resolve = + match let open Option.O in - let capabilities = State.client_capabilities state in - let* td = capabilities.textDocument in - let* compl = td.completion in - compl.completionItem - in - let resolve = - match - let open Option.O in - let* item = completion_item_capability in - item.resolveSupport - with - | None -> false - | Some { properties } -> - List.mem properties ~equal:String.equal "documentation" - in - let* should_provide_completions = - match context with - | Some context -> ( - match context.triggerKind with - | TriggerCharacter -> ( - let+ inside_comment = - Check_for_comments.position_in_comment ~position:pos ~merlin - in - match inside_comment with + let* item = completion_item_capability in + item.resolveSupport + with + | None -> false + | Some { properties } -> List.mem properties ~equal:String.equal "documentation" + in + let* should_provide_completions = + match context with + | Some context -> + (match context.triggerKind with + | TriggerCharacter -> + let+ inside_comment = + Check_for_comments.position_in_comment ~position:pos ~merlin + in + (match inside_comment with | true -> `Ignore | false -> `Provide_completions) - | Invoked | TriggerForIncompleteCompletions -> - Fiber.return `Provide_completions) - | None -> Fiber.return `Provide_completions - in - match should_provide_completions with - | `Ignore -> Fiber.return None - | `Provide_completions -> - let+ items = - let position = Position.logical pos in - let prefix = - prefix_of_position - ~short_path:false - (Document.source doc) - position - in - let deprecated = - Option.value - ~default:false - (let open Option.O in + | Invoked | TriggerForIncompleteCompletions -> + Fiber.return `Provide_completions) + | None -> Fiber.return `Provide_completions + in + (match should_provide_completions with + | `Ignore -> Fiber.return None + | `Provide_completions -> + let+ items = + let position = Position.logical pos in + let prefix = + prefix_of_position ~short_path:false (Document.source doc) position + in + let deprecated = + Option.value + ~default:false + (let open Option.O in + let* item = completion_item_capability in + item.deprecatedSupport) + in + if not (Typed_hole.can_be_hole prefix) + then Complete_by_prefix.complete merlin prefix pos ~resolve ~deprecated + else ( + let reindex_sortText completion_items = + List.mapi completion_items ~f:(fun idx (ci : CompletionItem.t) -> + let sortText = Some (sortText_of_index idx) in + { ci with sortText }) + in + let preselect_first = + match + let open Option.O in let* item = completion_item_capability in - item.deprecatedSupport) - in - if not (Typed_hole.can_be_hole prefix) then - Complete_by_prefix.complete merlin prefix pos ~resolve ~deprecated - else - let reindex_sortText completion_items = - List.mapi - completion_items - ~f:(fun idx (ci : CompletionItem.t) -> - let sortText = Some (sortText_of_index idx) in - { ci with sortText }) - in - let preselect_first = - match - let open Option.O in - let* item = completion_item_capability in - item.preselectSupport - with - | None | Some false -> fun x -> x - | Some true -> ( - function - | [] -> [] - | ci :: rest -> - { ci with CompletionItem.preselect = Some true } :: rest) - in - let+ construct_cmd_resp, compl_by_prefix_resp = - Document.Merlin.with_pipeline_exn - ~name:"completion" - merlin - (fun pipeline -> + item.preselectSupport + with + | None | Some false -> fun x -> x + | Some true -> + (function + | [] -> [] + | ci :: rest -> + { ci with CompletionItem.preselect = Some true } :: rest) + in + let+ construct_cmd_resp, compl_by_prefix_resp = + Document.Merlin.with_pipeline_exn + ~name:"completion" + merlin + (fun pipeline -> let construct_cmd_resp = Complete_with_construct.dispatch_cmd position pipeline in let compl_by_prefix_resp = Complete_by_prefix.dispatch_cmd ~prefix position pipeline in - (construct_cmd_resp, compl_by_prefix_resp)) - in - let construct_completionItems = - let supportsJumpToNextHole = - State.experimental_client_capabilities state - |> Client.Experimental_capabilities.supportsJumpToNextHole - in - Complete_with_construct.process_dispatch_resp - ~supportsJumpToNextHole - construct_cmd_resp - in - let compl_by_prefix_completionItems = - Complete_by_prefix.process_dispatch_resp - ~resolve - ~deprecated - ~prefix - merlin - pos - compl_by_prefix_resp - in - construct_completionItems @ compl_by_prefix_completionItems - |> reindex_sortText |> preselect_first - in - Some - (`CompletionList - (CompletionList.create ~isIncomplete:false ~items ())))) + construct_cmd_resp, compl_by_prefix_resp) + in + let construct_completionItems = + let supportsJumpToNextHole = + State.experimental_client_capabilities state + |> Client.Experimental_capabilities.supportsJumpToNextHole + in + Complete_with_construct.process_dispatch_resp + ~supportsJumpToNextHole + construct_cmd_resp + in + let compl_by_prefix_completionItems = + Complete_by_prefix.process_dispatch_resp + ~resolve + ~deprecated + ~prefix + merlin + pos + compl_by_prefix_resp + in + construct_completionItems @ compl_by_prefix_completionItems + |> reindex_sortText + |> preselect_first) + in + Some (`CompletionList (CompletionList.create ~isIncomplete:false ~items ())))) +;; let format_doc ~markdown doc = match markdown with @@ -373,47 +379,40 @@ let format_doc ~markdown doc = | true -> `MarkupContent (match Doc_to_md.translate doc with - | Markdown value -> { kind = MarkupKind.Markdown; MarkupContent.value } - | Raw value -> { kind = MarkupKind.PlainText; MarkupContent.value }) + | Markdown value -> { kind = MarkupKind.Markdown; MarkupContent.value } + | Raw value -> { kind = MarkupKind.PlainText; MarkupContent.value }) +;; -let resolve doc (compl : CompletionItem.t) (resolve : Resolve.t) query_doc - ~markdown = +let resolve doc (compl : CompletionItem.t) (resolve : Resolve.t) query_doc ~markdown = Fiber.of_thunk (fun () -> - (* Due to merlin's API, we create a version of the given document with the - applied completion item and pass it to merlin to get the docs for the - [compl.label] *) - let position : Position.t = resolve.position in - let logical_position = Position.logical position in - let doc = - let complete = - let start = - let prefix = - prefix_of_position - ~short_path:true - (Document.Merlin.source doc) - logical_position - in - { position with - character = position.character - String.length prefix - } - in - let end_ = - let suffix = - suffix_of_position (Document.Merlin.source doc) logical_position - in - { position with - character = position.character + String.length suffix - } + (* Due to merlin's API, we create a version of the given document with the + applied completion item and pass it to merlin to get the docs for the + [compl.label] *) + let position : Position.t = resolve.position in + let logical_position = Position.logical position in + let doc = + let complete = + let start = + let prefix = + prefix_of_position + ~short_path:true + (Document.Merlin.source doc) + logical_position in - let range = Range.create ~start ~end_ in - TextDocumentContentChangeEvent.create ~range ~text:compl.label () + { position with character = position.character - String.length prefix } in - Document.update_text (Document.Merlin.to_doc doc) [ complete ] - in - let+ documentation = - let+ documentation = - query_doc (Document.merlin_exn doc) logical_position + let end_ = + let suffix = suffix_of_position (Document.Merlin.source doc) logical_position in + { position with character = position.character + String.length suffix } in - Option.map ~f:(format_doc ~markdown) documentation + let range = Range.create ~start ~end_ in + TextDocumentContentChangeEvent.create ~range ~text:compl.label () in - { compl with documentation; data = None }) + Document.update_text (Document.Merlin.to_doc doc) [ complete ] + in + let+ documentation = + let+ documentation = query_doc (Document.merlin_exn doc) logical_position in + Option.map ~f:(format_doc ~markdown) documentation + in + { compl with documentation; data = None }) +;; diff --git a/ocaml-lsp-server/src/compl.mli b/ocaml-lsp-server/src/compl.mli index 589bd6600..2b1403c9e 100644 --- a/ocaml-lsp-server/src/compl.mli +++ b/ocaml-lsp-server/src/compl.mli @@ -12,14 +12,14 @@ module Resolve : sig include Json.Jsonable.S with type t := t end -val complete : - State.t +val complete + : State.t -> CompletionParams.t -> [> `CompletionList of CompletionList.t ] option Fiber.t (** creates a server response for ["completionItem/resolve"] *) -val resolve : - Document.Merlin.t +val resolve + : Document.Merlin.t -> CompletionItem.t -> Resolve.t -> (Document.Merlin.t -> [> `Logical of int * int ] -> string option Fiber.t) @@ -37,8 +37,7 @@ val resolve : [List.m] returns ["m"] when [short_path] is set vs ["List.m"] when not. @return prefix of [position] in [source] and its length *) -val prefix_of_position : - short_path:bool -> Msource.t -> [< Msource.position ] -> string +val prefix_of_position : short_path:bool -> Msource.t -> [< Msource.position ] -> string (** [reconstruct_ident source position] returns the identifier at [position]. Note: [position] can be in the middle of the identifier. diff --git a/ocaml-lsp-server/src/config_data.ml b/ocaml-lsp-server/src/config_data.ml index 465f74507..be4166206 100644 --- a/ocaml-lsp-server/src/config_data.ml +++ b/ocaml-lsp-server/src/config_data.ml @@ -3,8 +3,7 @@ open Import.Json.Conv module InlayHints = struct type t = - { hint_pattern_variables : bool - [@key "hintPatternVariables"] [@default false] + { hint_pattern_variables : bool [@key "hintPatternVariables"] [@default false] ; hint_let_bindings : bool [@key "hintLetBindings"] [@default false] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -14,7 +13,7 @@ module InlayHints = struct let t_of_yojson = (let _tp_loc = "ocaml-lsp-server/src/config_data.ml.InlayHints.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let hint_pattern_variables_field = ref Ppx_yojson_conv_lib.Option.None and hint_let_bindings_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] @@ -22,58 +21,56 @@ module InlayHints = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "hintPatternVariables" -> ( - match Ppx_yojson_conv_lib.( ! ) hint_pattern_variables_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - hint_pattern_variables_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "hintLetBindings" -> ( - match Ppx_yojson_conv_lib.( ! ) hint_let_bindings_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - hint_let_bindings_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "hintPatternVariables" -> + (match Ppx_yojson_conv_lib.( ! ) hint_pattern_variables_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + hint_pattern_variables_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "hintLetBindings" -> + (match Ppx_yojson_conv_lib.( ! ) hint_let_bindings_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + hint_let_bindings_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let hint_pattern_variables_value, hint_let_bindings_value = - ( Ppx_yojson_conv_lib.( ! ) hint_pattern_variables_field - , Ppx_yojson_conv_lib.( ! ) hint_let_bindings_field ) - in - { hint_pattern_variables = - (match hint_pattern_variables_value with - | Ppx_yojson_conv_lib.Option.None -> false - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; hint_let_bindings = - (match hint_let_bindings_value with - | Ppx_yojson_conv_lib.Option.None -> false - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let hint_pattern_variables_value, hint_let_bindings_value = + ( Ppx_yojson_conv_lib.( ! ) hint_pattern_variables_field + , Ppx_yojson_conv_lib.( ! ) hint_let_bindings_field ) + in + { hint_pattern_variables = + (match hint_pattern_variables_value with + | Ppx_yojson_conv_lib.Option.None -> false + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; hint_let_bindings = + (match hint_let_bindings_value with + | Ppx_yojson_conv_lib.Option.None -> false + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -92,7 +89,8 @@ module InlayHints = struct ("hintPatternVariables", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -108,50 +106,49 @@ module Lens = struct let t_of_yojson = (let _tp_loc = "ocaml-lsp-server/src/config_data.ml.Lens.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let enable_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "enable" -> ( - match Ppx_yojson_conv_lib.( ! ) enable_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - enable_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "enable" -> + (match Ppx_yojson_conv_lib.( ! ) enable_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + enable_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in - { enable = - (match enable_value with - | Ppx_yojson_conv_lib.Option.None -> true - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in + { enable = + (match enable_value with + | Ppx_yojson_conv_lib.Option.None -> true + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -164,7 +161,8 @@ module Lens = struct ("enable", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -180,50 +178,49 @@ module ExtendedHover = struct let t_of_yojson = (let _tp_loc = "ocaml-lsp-server/src/config_data.ml.ExtendedHover.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let enable_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "enable" -> ( - match Ppx_yojson_conv_lib.( ! ) enable_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - enable_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "enable" -> + (match Ppx_yojson_conv_lib.( ! ) enable_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + enable_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in - { enable = - (match enable_value with - | Ppx_yojson_conv_lib.Option.None -> false - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in + { enable = + (match enable_value with + | Ppx_yojson_conv_lib.Option.None -> false + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -236,7 +233,8 @@ module ExtendedHover = struct ("enable", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -252,50 +250,49 @@ module DuneDiagnostics = struct let t_of_yojson = (let _tp_loc = "ocaml-lsp-server/src/config_data.ml.DuneDiagnostics.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let enable_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "enable" -> ( - match Ppx_yojson_conv_lib.( ! ) enable_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - enable_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "enable" -> + (match Ppx_yojson_conv_lib.( ! ) enable_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + enable_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in - { enable = - (match enable_value with - | Ppx_yojson_conv_lib.Option.None -> true - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in + { enable = + (match enable_value with + | Ppx_yojson_conv_lib.Option.None -> true + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -308,7 +305,8 @@ module DuneDiagnostics = struct ("enable", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -322,54 +320,51 @@ module SyntaxDocumentation = struct let _ = fun (_ : t) -> () let t_of_yojson = - (let _tp_loc = - "ocaml-lsp-server/src/config_data.ml.SyntaxDocumentation.t" - in + (let _tp_loc = "ocaml-lsp-server/src/config_data.ml.SyntaxDocumentation.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let enable_field = ref Ppx_yojson_conv_lib.Option.None and duplicates = ref [] and extra = ref [] in let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "enable" -> ( - match Ppx_yojson_conv_lib.( ! ) enable_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = bool_of_yojson _field_yojson in - enable_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "enable" -> + (match Ppx_yojson_conv_lib.( ! ) enable_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = bool_of_yojson _field_yojson in + enable_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in - { enable = - (match enable_value with - | Ppx_yojson_conv_lib.Option.None -> false - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let enable_value = Ppx_yojson_conv_lib.( ! ) enable_field in + { enable = + (match enable_value with + | Ppx_yojson_conv_lib.Option.None -> false + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -382,7 +377,8 @@ module SyntaxDocumentation = struct ("enable", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -390,18 +386,15 @@ module SyntaxDocumentation = struct end type t = - { codelens : Lens.t Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + { codelens : Lens.t Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] ; extended_hover : ExtendedHover.t Json.Nullable_option.t - [@key "extendedHover"] [@default None] [@yojson_drop_default ( = )] + [@key "extendedHover"] [@default None] [@yojson_drop_default ( = )] ; inlay_hints : InlayHints.t Json.Nullable_option.t - [@key "inlayHints"] [@default None] [@yojson_drop_default ( = )] + [@key "inlayHints"] [@default None] [@yojson_drop_default ( = )] ; dune_diagnostics : DuneDiagnostics.t Json.Nullable_option.t - [@key "duneDiagnostics"] [@default None] [@yojson_drop_default ( = )] + [@key "duneDiagnostics"] [@default None] [@yojson_drop_default ( = )] ; syntax_documentation : SyntaxDocumentation.t Json.Nullable_option.t - [@key "syntaxDocumentation"] - [@default None] - [@yojson_drop_default ( = )] + [@key "syntaxDocumentation"] [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -410,7 +403,7 @@ let _ = fun (_ : t) -> () let t_of_yojson = (let _tp_loc = "ocaml-lsp-server/src/config_data.ml.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let codelens_field = ref Ppx_yojson_conv_lib.Option.None and extended_hover_field = ref Ppx_yojson_conv_lib.Option.None and inlay_hints_field = ref Ppx_yojson_conv_lib.Option.None @@ -421,116 +414,111 @@ let t_of_yojson = let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "codelens" -> ( - match Ppx_yojson_conv_lib.( ! ) codelens_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson Lens.t_of_yojson _field_yojson - in - codelens_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "extendedHover" -> ( - match Ppx_yojson_conv_lib.( ! ) extended_hover_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - ExtendedHover.t_of_yojson - _field_yojson - in - extended_hover_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "syntaxDocumentation" -> ( - match Ppx_yojson_conv_lib.( ! ) syntax_documentation_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - SyntaxDocumentation.t_of_yojson - _field_yojson - in - syntax_documentation_field := - Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "inlayHints" -> ( - match Ppx_yojson_conv_lib.( ! ) inlay_hints_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - InlayHints.t_of_yojson - _field_yojson - in - inlay_hints_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "duneDiagnostics" -> ( - match Ppx_yojson_conv_lib.( ! ) dune_diagnostics_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson - DuneDiagnostics.t_of_yojson - _field_yojson - in - dune_diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "codelens" -> + (match Ppx_yojson_conv_lib.( ! ) codelens_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson Lens.t_of_yojson _field_yojson + in + codelens_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "extendedHover" -> + (match Ppx_yojson_conv_lib.( ! ) extended_hover_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson ExtendedHover.t_of_yojson _field_yojson + in + extended_hover_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "syntaxDocumentation" -> + (match Ppx_yojson_conv_lib.( ! ) syntax_documentation_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + SyntaxDocumentation.t_of_yojson + _field_yojson + in + syntax_documentation_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "inlayHints" -> + (match Ppx_yojson_conv_lib.( ! ) inlay_hints_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson InlayHints.t_of_yojson _field_yojson + in + inlay_hints_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "duneDiagnostics" -> + (match Ppx_yojson_conv_lib.( ! ) dune_diagnostics_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson + DuneDiagnostics.t_of_yojson + _field_yojson + in + dune_diagnostics_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> - let ( codelens_value - , extended_hover_value - , inlay_hints_value - , dune_diagnostics_value - , syntax_documentation_value ) = - ( Ppx_yojson_conv_lib.( ! ) codelens_field - , Ppx_yojson_conv_lib.( ! ) extended_hover_field - , Ppx_yojson_conv_lib.( ! ) inlay_hints_field - , Ppx_yojson_conv_lib.( ! ) dune_diagnostics_field - , Ppx_yojson_conv_lib.( ! ) syntax_documentation_field ) - in - { codelens = - (match codelens_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; extended_hover = - (match extended_hover_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; inlay_hints = - (match inlay_hints_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; dune_diagnostics = - (match dune_diagnostics_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - ; syntax_documentation = - (match syntax_documentation_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - })) + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) + yojson + | [] -> + let ( codelens_value + , extended_hover_value + , inlay_hints_value + , dune_diagnostics_value + , syntax_documentation_value ) + = + ( Ppx_yojson_conv_lib.( ! ) codelens_field + , Ppx_yojson_conv_lib.( ! ) extended_hover_field + , Ppx_yojson_conv_lib.( ! ) inlay_hints_field + , Ppx_yojson_conv_lib.( ! ) dune_diagnostics_field + , Ppx_yojson_conv_lib.( ! ) syntax_documentation_field ) + in + { codelens = + (match codelens_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; extended_hover = + (match extended_hover_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; inlay_hints = + (match inlay_hints_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; dune_diagnostics = + (match dune_diagnostics_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + ; syntax_documentation = + (match syntax_documentation_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + })) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) +;; let _ = t_of_yojson @@ -544,56 +532,58 @@ let yojson_of_t = } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_dune_diagnostics then bnds - else + if None = v_dune_diagnostics + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t DuneDiagnostics.yojson_of_t) v_dune_diagnostics in - let bnd = ("duneDiagnostics", arg) in - bnd :: bnds + let bnd = "duneDiagnostics", arg in + bnd :: bnds) in let bnds = - if None = v_inlay_hints then bnds - else + if None = v_inlay_hints + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t InlayHints.yojson_of_t) - v_inlay_hints + (Json.Nullable_option.yojson_of_t InlayHints.yojson_of_t) v_inlay_hints in - let bnd = ("inlayHints", arg) in - bnd :: bnds + let bnd = "inlayHints", arg in + bnd :: bnds) in let bnds = - if None = v_syntax_documentation then bnds - else + if None = v_syntax_documentation + then bnds + else ( let arg = (Json.Nullable_option.yojson_of_t SyntaxDocumentation.yojson_of_t) v_syntax_documentation in - let bnd = ("syntaxDocumentation", arg) in - bnd :: bnds + let bnd = "syntaxDocumentation", arg in + bnd :: bnds) in let bnds = - if None = v_extended_hover then bnds - else + if None = v_extended_hover + then bnds + else ( let arg = - (Json.Nullable_option.yojson_of_t ExtendedHover.yojson_of_t) - v_extended_hover + (Json.Nullable_option.yojson_of_t ExtendedHover.yojson_of_t) v_extended_hover in - let bnd = ("extendedHover", arg) in - bnd :: bnds + let bnd = "extendedHover", arg in + bnd :: bnds) in let bnds = - if None = v_codelens then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t Lens.yojson_of_t) v_codelens - in - let bnd = ("codelens", arg) in - bnd :: bnds + if None = v_codelens + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t Lens.yojson_of_t) v_codelens in + let bnd = "codelens", arg in + bnd :: bnds) in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) +;; let _ = yojson_of_t @@ -602,8 +592,8 @@ let _ = yojson_of_t let default = { codelens = Some { enable = false } ; extended_hover = Some { enable = false } - ; inlay_hints = - Some { hint_pattern_variables = false; hint_let_bindings = false } + ; inlay_hints = Some { hint_pattern_variables = false; hint_let_bindings = false } ; dune_diagnostics = Some { enable = true } ; syntax_documentation = Some { enable = false } } +;; diff --git a/ocaml-lsp-server/src/configuration.ml b/ocaml-lsp-server/src/configuration.ml index 41020b923..3e8f6fa51 100644 --- a/ocaml-lsp-server/src/configuration.ml +++ b/ocaml-lsp-server/src/configuration.ml @@ -19,36 +19,39 @@ let default () = in let data = Config_data.default in { wheel; data } +;; let update t { DidChangeConfigurationParams.settings } = let* wheel = match match settings with - | `Assoc xs -> ( - match List.assoc xs "diagnostics_delay" with - | Some (`Float f) -> Some f - | Some (`Int i) -> Some (float_of_int i) - | None -> None - | _ -> - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:InvalidRequest - ~message:"invalid value for diagnostics_delay" - ())) + | `Assoc xs -> + (match List.assoc xs "diagnostics_delay" with + | Some (`Float f) -> Some f + | Some (`Int i) -> Some (float_of_int i) + | None -> None + | _ -> + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make + ~code:InvalidRequest + ~message:"invalid value for diagnostics_delay" + ())) | _ -> None with | None -> Fiber.return t.wheel | Some delay -> - if Float.equal delay (Lev_fiber.Timer.Wheel.delay t.wheel) then - Fiber.return t.wheel + if Float.equal delay (Lev_fiber.Timer.Wheel.delay t.wheel) + then Fiber.return t.wheel else let* () = Lev_fiber.Timer.Wheel.set_delay t.wheel ~delay in Fiber.return t.wheel in let data = Config_data.t_of_yojson settings in Fiber.return { wheel; data } +;; let report_dune_diagnostics t = match t.data.dune_diagnostics with | Some { enable = true } | None -> true | Some { enable = false } -> false +;; diff --git a/ocaml-lsp-server/src/configuration.mli b/ocaml-lsp-server/src/configuration.mli index fb6d8e4e5..e51fa8a07 100644 --- a/ocaml-lsp-server/src/configuration.mli +++ b/ocaml-lsp-server/src/configuration.mli @@ -6,9 +6,6 @@ type t = } val default : unit -> t Fiber.t - val wheel : t -> Lev_fiber.Timer.Wheel.t - val update : t -> DidChangeConfigurationParams.t -> t Fiber.t - val report_dune_diagnostics : t -> bool diff --git a/ocaml-lsp-server/src/custom_requests/custom_request.ml b/ocaml-lsp-server/src/custom_requests/custom_request.ml index a5ff0e62f..bd56e7478 100644 --- a/ocaml-lsp-server/src/custom_requests/custom_request.ml +++ b/ocaml-lsp-server/src/custom_requests/custom_request.ml @@ -16,17 +16,15 @@ let of_jsonrpc_params_exn spec params = in match params with | None -> raise_invalid_params ~message:"Expected params but received none" () - | Some params -> ( - match spec.of_jsonrpc_params params with - | Some t -> t - | None -> - let error_json = - `Assoc - [ ("params_expected", (spec.params_schema :> Json.t)) - ; ("params_received", (params :> Json.t)) - ] - in - raise_invalid_params - ~message:"Unexpected parameter format" - ~data:error_json - ()) + | Some params -> + (match spec.of_jsonrpc_params params with + | Some t -> t + | None -> + let error_json = + `Assoc + [ "params_expected", (spec.params_schema :> Json.t) + ; "params_received", (params :> Json.t) + ] + in + raise_invalid_params ~message:"Unexpected parameter format" ~data:error_json ()) +;; diff --git a/ocaml-lsp-server/src/custom_requests/custom_request.mli b/ocaml-lsp-server/src/custom_requests/custom_request.mli index 9bcfe3ad1..d2fb9d565 100644 --- a/ocaml-lsp-server/src/custom_requests/custom_request.mli +++ b/ocaml-lsp-server/src/custom_requests/custom_request.mli @@ -1,11 +1,13 @@ type 't req_params_spec = { params_schema : Jsonrpc.Structured.t - (** used to document the structure of the params; example: - [`Assoc [ "uri" , `String "" ]]; *) + (** used to document the structure of the params; example: + [`Assoc [ "uri" , `String "" ]]; *) ; of_jsonrpc_params : Jsonrpc.Structured.t -> 't option - (** parses given structured JSON if it's of the expected schema; - otherwise, return [None] *) + (** parses given structured JSON if it's of the expected schema; + otherwise, return [None] *) } -val of_jsonrpc_params_exn : - 'req_params req_params_spec -> Jsonrpc.Structured.t option -> 'req_params +val of_jsonrpc_params_exn + : 'req_params req_params_spec + -> Jsonrpc.Structured.t option + -> 'req_params diff --git a/ocaml-lsp-server/src/custom_requests/req_hover_extended.ml b/ocaml-lsp-server/src/custom_requests/req_hover_extended.ml index 7d997ef77..bc190f70c 100644 --- a/ocaml-lsp-server/src/custom_requests/req_hover_extended.ml +++ b/ocaml-lsp-server/src/custom_requests/req_hover_extended.ml @@ -1,8 +1,7 @@ open Import open Fiber.O -let capability = ("handleHoverExtended", `Bool true) - +let capability = "handleHoverExtended", `Bool true let meth = "ocamllsp/hoverExtended" module Request_params = struct @@ -11,8 +10,7 @@ module Request_params = struct type t = { text_document : TextDocumentIdentifier.t [@key "textDocument"] ; cursor_position : Position.t [@key "position"] - ; verbosity : int Json.Nullable_option.t - [@default None] [@yojson_drop_default ( = )] + ; verbosity : int Json.Nullable_option.t [@default None] [@yojson_drop_default ( = )] } [@@deriving_inline yojson] [@@yojson.allow_extra_fields] @@ -23,7 +21,7 @@ module Request_params = struct "ocaml-lsp-server/src/custom_requests/req_hover_extended.ml.Request_params.t" in function - | `Assoc field_yojsons as yojson -> ( + | `Assoc field_yojsons as yojson -> let text_document_field = ref Ppx_yojson_conv_lib.Option.None and cursor_position_field = ref Ppx_yojson_conv_lib.Option.None and verbosity_field = ref Ppx_yojson_conv_lib.Option.None @@ -32,81 +30,80 @@ module Request_params = struct let rec iter = function | (field_name, _field_yojson) :: tail -> (match field_name with - | "textDocument" -> ( - match Ppx_yojson_conv_lib.( ! ) text_document_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in - text_document_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "position" -> ( - match Ppx_yojson_conv_lib.( ! ) cursor_position_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = Position.t_of_yojson _field_yojson in - cursor_position_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | "verbosity" -> ( - match Ppx_yojson_conv_lib.( ! ) verbosity_field with - | Ppx_yojson_conv_lib.Option.None -> - let fvalue = - Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson - in - verbosity_field := Ppx_yojson_conv_lib.Option.Some fvalue - | Ppx_yojson_conv_lib.Option.Some _ -> - duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) - | _ -> ()); + | "textDocument" -> + (match Ppx_yojson_conv_lib.( ! ) text_document_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = TextDocumentIdentifier.t_of_yojson _field_yojson in + text_document_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "position" -> + (match Ppx_yojson_conv_lib.( ! ) cursor_position_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = Position.t_of_yojson _field_yojson in + cursor_position_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | "verbosity" -> + (match Ppx_yojson_conv_lib.( ! ) verbosity_field with + | Ppx_yojson_conv_lib.Option.None -> + let fvalue = + Json.Nullable_option.t_of_yojson int_of_yojson _field_yojson + in + verbosity_field := Ppx_yojson_conv_lib.Option.Some fvalue + | Ppx_yojson_conv_lib.Option.Some _ -> + duplicates := field_name :: Ppx_yojson_conv_lib.( ! ) duplicates) + | _ -> ()); iter tail | [] -> () in iter field_yojsons; - match Ppx_yojson_conv_lib.( ! ) duplicates with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) duplicates) - yojson - | [] -> ( - match Ppx_yojson_conv_lib.( ! ) extra with - | _ :: _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields - _tp_loc - (Ppx_yojson_conv_lib.( ! ) extra) - yojson - | [] -> ( - match - ( Ppx_yojson_conv_lib.( ! ) text_document_field - , Ppx_yojson_conv_lib.( ! ) cursor_position_field - , Ppx_yojson_conv_lib.( ! ) verbosity_field ) - with - | ( Ppx_yojson_conv_lib.Option.Some text_document_value - , Ppx_yojson_conv_lib.Option.Some cursor_position_value - , verbosity_value ) -> - { text_document = text_document_value - ; cursor_position = cursor_position_value - ; verbosity = - (match verbosity_value with - | Ppx_yojson_conv_lib.Option.None -> None - | Ppx_yojson_conv_lib.Option.Some v -> v) - } - | _ -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + (match Ppx_yojson_conv_lib.( ! ) duplicates with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_duplicate_fields + _tp_loc + (Ppx_yojson_conv_lib.( ! ) duplicates) + yojson + | [] -> + (match Ppx_yojson_conv_lib.( ! ) extra with + | _ :: _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_extra_fields _tp_loc + (Ppx_yojson_conv_lib.( ! ) extra) yojson - [ ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) text_document_field) - Ppx_yojson_conv_lib.Option.None - , "text_document" ) - ; ( Ppx_yojson_conv_lib.poly_equal - (Ppx_yojson_conv_lib.( ! ) cursor_position_field) - Ppx_yojson_conv_lib.Option.None - , "cursor_position" ) - ]))) + | [] -> + (match + ( Ppx_yojson_conv_lib.( ! ) text_document_field + , Ppx_yojson_conv_lib.( ! ) cursor_position_field + , Ppx_yojson_conv_lib.( ! ) verbosity_field ) + with + | ( Ppx_yojson_conv_lib.Option.Some text_document_value + , Ppx_yojson_conv_lib.Option.Some cursor_position_value + , verbosity_value ) -> + { text_document = text_document_value + ; cursor_position = cursor_position_value + ; verbosity = + (match verbosity_value with + | Ppx_yojson_conv_lib.Option.None -> None + | Ppx_yojson_conv_lib.Option.Some v -> v) + } + | _ -> + Ppx_yojson_conv_lib.Yojson_conv_error.record_undefined_elements + _tp_loc + yojson + [ ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) text_document_field) + Ppx_yojson_conv_lib.Option.None + , "text_document" ) + ; ( Ppx_yojson_conv_lib.poly_equal + (Ppx_yojson_conv_lib.( ! ) cursor_position_field) + Ppx_yojson_conv_lib.Option.None + , "cursor_position" ) + ]))) | _ as yojson -> - Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom - _tp_loc - yojson - : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + Ppx_yojson_conv_lib.Yojson_conv_error.record_list_instead_atom _tp_loc yojson + : Ppx_yojson_conv_lib.Yojson.Safe.t -> t) + ;; let _ = t_of_yojson @@ -118,13 +115,12 @@ module Request_params = struct } -> let bnds : (string * Ppx_yojson_conv_lib.Yojson.Safe.t) list = [] in let bnds = - if None = v_verbosity then bnds - else - let arg = - (Json.Nullable_option.yojson_of_t yojson_of_int) v_verbosity - in - let bnd = ("verbosity", arg) in - bnd :: bnds + if None = v_verbosity + then bnds + else ( + let arg = (Json.Nullable_option.yojson_of_t yojson_of_int) v_verbosity in + let bnd = "verbosity", arg in + bnd :: bnds) in let bnds = let arg = Position.yojson_of_t v_cursor_position in @@ -135,7 +131,8 @@ module Request_params = struct ("textDocument", arg) :: bnds in `Assoc bnds - : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + : t -> Ppx_yojson_conv_lib.Yojson.Safe.t) + ;; let _ = yojson_of_t @@ -143,22 +140,24 @@ module Request_params = struct let params_schema = `Assoc - [ ("textDocument", `String "") - ; ("position", `String "") - ; ("verbosity", `String "") + [ "textDocument", `String "" + ; "position", `String "" + ; "verbosity", `String "" ] + ;; let of_jsonrpc_params params = - try Some (t_of_yojson (Jsonrpc.Structured.yojson_of_t params)) - with _exn -> None + try Some (t_of_yojson (Jsonrpc.Structured.yojson_of_t params)) with + | _exn -> None + ;; let of_jsonrpc_params_exn params : t = let params_spec = { Custom_request.params_schema; of_jsonrpc_params } in Custom_request.of_jsonrpc_params_exn params_spec params + ;; end -let on_request ~(params : Jsonrpc.Structured.t option) - (server : State.t Server.t) = +let on_request ~(params : Jsonrpc.Structured.t option) (server : State.t Server.t) = let { Request_params.text_document; cursor_position; verbosity } = Request_params.of_jsonrpc_params_exn params in @@ -170,9 +169,10 @@ let on_request ~(params : Jsonrpc.Structured.t option) ; workDoneToken = None } (match verbosity with - | None -> Hover_req.Extended_variable - | Some v -> Hover_req.Extended_fixed v) + | None -> Hover_req.Extended_variable + | Some v -> Hover_req.Extended_fixed v) in match res with | None -> `Null | Some res -> Hover.yojson_of_t res +;; diff --git a/ocaml-lsp-server/src/custom_requests/req_hover_extended.mli b/ocaml-lsp-server/src/custom_requests/req_hover_extended.mli index 7dafa1015..1c6f3a8e2 100644 --- a/ocaml-lsp-server/src/custom_requests/req_hover_extended.mli +++ b/ocaml-lsp-server/src/custom_requests/req_hover_extended.mli @@ -1,8 +1,5 @@ open Import val capability : string * Json.t - val meth : string - -val on_request : - params:Jsonrpc.Structured.t option -> State.t Server.t -> Json.t Fiber.t +val on_request : params:Jsonrpc.Structured.t option -> State.t Server.t -> Json.t Fiber.t diff --git a/ocaml-lsp-server/src/custom_requests/req_infer_intf.ml b/ocaml-lsp-server/src/custom_requests/req_infer_intf.ml index fb3acbe12..289c190e5 100644 --- a/ocaml-lsp-server/src/custom_requests/req_infer_intf.ml +++ b/ocaml-lsp-server/src/custom_requests/req_infer_intf.ml @@ -1,37 +1,37 @@ open Import open Fiber.O -let capability = ("handleInferIntf", `Bool true) - +let capability = "handleInferIntf", `Bool true let meth = "ocamllsp/inferIntf" let on_request ~(params : Jsonrpc.Structured.t option) (state : State.t) = Fiber.of_thunk (fun () -> - match params with - | Some (`List [ json_uri ]) -> ( - let json_uri = DocumentUri.t_of_yojson json_uri in - match Document_store.get_opt state.store json_uri with - | None -> - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:InvalidParams - ~message: - "ocamllsp/inferIntf received a URI for an unloaded file. Load \ - the file first." - ()) - | Some impl -> - let+ intf = Inference.infer_intf_for_impl impl in - Json.t_of_yojson (`String intf)) - | Some json -> - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:InvalidRequest - ~message:"The input parameter for ocamllsp/inferIntf is invalid" - ~data:(`Assoc [ ("param", (json :> Json.t)) ]) - ()) - | None -> - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:InvalidRequest - ~message:"ocamllsp/inferIntf must receive param: DocumentUri.t" - ())) + match params with + | Some (`List [ json_uri ]) -> + let json_uri = DocumentUri.t_of_yojson json_uri in + (match Document_store.get_opt state.store json_uri with + | None -> + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make + ~code:InvalidParams + ~message: + "ocamllsp/inferIntf received a URI for an unloaded file. Load the file \ + first." + ()) + | Some impl -> + let+ intf = Inference.infer_intf_for_impl impl in + Json.t_of_yojson (`String intf)) + | Some json -> + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make + ~code:InvalidRequest + ~message:"The input parameter for ocamllsp/inferIntf is invalid" + ~data:(`Assoc [ "param", (json :> Json.t) ]) + ()) + | None -> + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make + ~code:InvalidRequest + ~message:"ocamllsp/inferIntf must receive param: DocumentUri.t" + ())) +;; diff --git a/ocaml-lsp-server/src/custom_requests/req_infer_intf.mli b/ocaml-lsp-server/src/custom_requests/req_infer_intf.mli index 5dfe607fc..4afe187cb 100644 --- a/ocaml-lsp-server/src/custom_requests/req_infer_intf.mli +++ b/ocaml-lsp-server/src/custom_requests/req_infer_intf.mli @@ -1,7 +1,5 @@ open Import val capability : string * Json.t - val meth : string - val on_request : params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t diff --git a/ocaml-lsp-server/src/custom_requests/req_merlin_call_compatible.ml b/ocaml-lsp-server/src/custom_requests/req_merlin_call_compatible.ml index a5c83113a..b72cade09 100644 --- a/ocaml-lsp-server/src/custom_requests/req_merlin_call_compatible.ml +++ b/ocaml-lsp-server/src/custom_requests/req_merlin_call_compatible.ml @@ -1,7 +1,6 @@ open Import -let capability = ("handleMerlinCallCompatible", `Bool true) - +let capability = "handleMerlinCallCompatible", `Bool true let meth = "ocamllsp/merlinCallCompatible" module Request_params = struct @@ -14,11 +13,12 @@ module Request_params = struct let expected = `Assoc - [ ("uri", `String "") - ; ("resultAsSexp?", `String "") - ; ("command", `String "") - ; ("args?", `String "[] | Object") + [ "uri", `String "" + ; "resultAsSexp?", `String "" + ; "command", `String "" + ; "args?", `String "[] | Object" ] + ;; let as_sexp_of_yojson params = match List.assoc_opt "resultAsSexp" params with @@ -27,6 +27,7 @@ module Request_params = struct (* If the parameter is incorrectly formatted or missing, it is assumed that the result is not requested in the form of Sexp *) false + ;; let command_of_yojson params = match List.assoc_opt "command" params with @@ -35,6 +36,7 @@ module Request_params = struct (* If the parameter is incorrectly formatted or missing, we refuse to build the parameter, [command] is mandatory. *) None + ;; let uri_of_yojson params = match List.assoc_opt "uri" params with @@ -43,8 +45,10 @@ module Request_params = struct (* If the parameter is incorrectly formatted or missing, we refuse to build the parameter, [uri] is mandatory. *) None + ;; - let stringish_of_yojson = + let stringish_of_yojson + = (* The function is relatively optimistic and attempts to treat literal data as strings of characters. *) function @@ -54,6 +58,7 @@ module Request_params = struct | `Int i -> Some (string_of_int i) | `Intlit i -> Some i | _ -> None + ;; let args_of_yojson_list args = let open Option.O in @@ -67,6 +72,7 @@ module Request_params = struct args in List.rev args + ;; let args_of_yojson_assoc args = let open Option.O in @@ -81,6 +87,7 @@ module Request_params = struct args in List.rev args + ;; let args_of_yojson params = match List.assoc_opt "args" params with @@ -89,6 +96,7 @@ module Request_params = struct | _ -> (* If args is not a list or is absent, it should fail. *) None + ;; let t_of_yojson = function | `Assoc params -> @@ -99,25 +107,28 @@ module Request_params = struct let* uri = uri_of_yojson params in Some { result_as_sexp; command; args; uri } | _ -> None + ;; end let raise_invalid_params ?data ~message () = let open Jsonrpc.Response.Error in raise @@ make ?data ~code:Code.InvalidParams ~message () +;; let from_structured_json_exn = function | None -> raise_invalid_params ~message:"Expected params but received none" () - | Some params -> ( - match Request_params.t_of_yojson params with - | Some params -> params - | None -> - let data = - `Assoc - [ ("expectedParams", Request_params.expected) - ; ("receivedParams", (params :> Json.t)) - ] - in - raise_invalid_params ~data ~message:"Unexpected params format" ()) + | Some params -> + (match Request_params.t_of_yojson params with + | Some params -> params + | None -> + let data = + `Assoc + [ "expectedParams", Request_params.expected + ; "receivedParams", (params :> Json.t) + ] + in + raise_invalid_params ~data ~message:"Unexpected params format" ()) +;; let with_pipeline state uri specs raw_args cmd_args f = let doc = Document_store.get state.State.store uri in @@ -137,40 +148,37 @@ let with_pipeline state uri specs raw_args cmd_args f = cmd_args in Document.Merlin.with_configurable_pipeline_exn ~config merlin (f args) +;; let perform_query action params pipeline = let action () = action pipeline params in let class_, output = match action () with - | result -> ("return", result) - | exception Failure message -> ("failure", `String message) + | result -> "return", result + | exception Failure message -> "failure", `String message | exception exn -> let message = Printexc.to_string exn in - ("exception", `String message) + "exception", `String message in - `Assoc [ ("class", `String class_); ("value", output) ] + `Assoc [ "class", `String class_; "value", output ] +;; let on_request ~params state = Fiber.of_thunk (fun () -> - let Request_params.{ result_as_sexp; command; args; uri } = - from_structured_json_exn params + let Request_params.{ result_as_sexp; command; args; uri } = + from_structured_json_exn params + in + match Merlin_commands.New_commands.(find_command command all_commands) with + | Merlin_commands.New_commands.Command (_name, _doc, specs, params, action) -> + let open Fiber.O in + let+ json = with_pipeline state uri specs args params @@ perform_query action in + let result = + if result_as_sexp + then Merlin_utils.(json |> Sexp.of_json |> Sexp.to_string) + else json |> Yojson.Basic.to_string in - match - Merlin_commands.New_commands.(find_command command all_commands) - with - | Merlin_commands.New_commands.Command (_name, _doc, specs, params, action) - -> - let open Fiber.O in - let+ json = - with_pipeline state uri specs args params @@ perform_query action - in - let result = - if result_as_sexp then - Merlin_utils.(json |> Sexp.of_json |> Sexp.to_string) - else json |> Yojson.Basic.to_string - in - `Assoc - [ ("resultAsSexp", `Bool result_as_sexp); ("result", `String result) ] - | exception Not_found -> - let data = `Assoc [ ("command", `String command) ] in - raise_invalid_params ~data ~message:"Unexpected command name" ()) + `Assoc [ "resultAsSexp", `Bool result_as_sexp; "result", `String result ] + | exception Not_found -> + let data = `Assoc [ "command", `String command ] in + raise_invalid_params ~data ~message:"Unexpected command name" ()) +;; diff --git a/ocaml-lsp-server/src/custom_requests/req_merlin_call_compatible.mli b/ocaml-lsp-server/src/custom_requests/req_merlin_call_compatible.mli index 5dfe607fc..4afe187cb 100644 --- a/ocaml-lsp-server/src/custom_requests/req_merlin_call_compatible.mli +++ b/ocaml-lsp-server/src/custom_requests/req_merlin_call_compatible.mli @@ -1,7 +1,5 @@ open Import val capability : string * Json.t - val meth : string - val on_request : params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t diff --git a/ocaml-lsp-server/src/custom_requests/req_switch_impl_intf.ml b/ocaml-lsp-server/src/custom_requests/req_switch_impl_intf.ml index 3d3140889..e9c27d844 100644 --- a/ocaml-lsp-server/src/custom_requests/req_switch_impl_intf.ml +++ b/ocaml-lsp-server/src/custom_requests/req_switch_impl_intf.ml @@ -1,40 +1,37 @@ open Import -let capability = ("handleSwitchImplIntf", `Bool true) - +let capability = "handleSwitchImplIntf", `Bool true let meth = "ocamllsp/switchImplIntf" (** see the spec for [ocamllsp/switchImplIntf] *) let switch merlin_doc (param : DocumentUri.t) : Json.t = - let files_to_switch_to = - Document.get_impl_intf_counterparts merlin_doc param - in + let files_to_switch_to = Document.get_impl_intf_counterparts merlin_doc param in Json.yojson_of_list Uri.yojson_of_t files_to_switch_to +;; let on_request ~(params : Jsonrpc.Structured.t option) (state : State.t) = match params with - | Some (`List [ json_uri ]) -> ( + | Some (`List [ json_uri ]) -> let uri = DocumentUri.t_of_yojson json_uri in - match Document_store.get_opt state.store uri with - | Some doc -> ( - match Document.kind doc with - | `Merlin merlin_doc -> switch (Some merlin_doc) uri - | `Other -> - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:InvalidRequest - ~message: - "Document with this URI is not supported by \ - ocamllsp/switchImplIntf" - ~data:(`Assoc [ ("param", (json_uri :> Json.t)) ]) - ())) - | None -> switch None uri) + (match Document_store.get_opt state.store uri with + | Some doc -> + (match Document.kind doc with + | `Merlin merlin_doc -> switch (Some merlin_doc) uri + | `Other -> + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make + ~code:InvalidRequest + ~message: + "Document with this URI is not supported by ocamllsp/switchImplIntf" + ~data:(`Assoc [ "param", (json_uri :> Json.t) ]) + ())) + | None -> switch None uri) | Some json -> Jsonrpc.Response.Error.raise (Jsonrpc.Response.Error.make ~code:InvalidRequest ~message:"The input parameter for ocamllsp/switchImplIntf is invalid" - ~data:(`Assoc [ ("param", (json :> Json.t)) ]) + ~data:(`Assoc [ "param", (json :> Json.t) ]) ()) | None -> Jsonrpc.Response.Error.raise @@ -42,3 +39,4 @@ let on_request ~(params : Jsonrpc.Structured.t option) (state : State.t) = ~code:InvalidRequest ~message:"ocamllsp/switchImplIntf must receive param: DocumentUri.t" ()) +;; diff --git a/ocaml-lsp-server/src/custom_requests/req_switch_impl_intf.mli b/ocaml-lsp-server/src/custom_requests/req_switch_impl_intf.mli index dadd40f0d..716c81426 100644 --- a/ocaml-lsp-server/src/custom_requests/req_switch_impl_intf.mli +++ b/ocaml-lsp-server/src/custom_requests/req_switch_impl_intf.mli @@ -1,7 +1,5 @@ open Import val capability : string * Json.t - val meth : string - val on_request : params:Jsonrpc.Structured.t option -> State.t -> Json.t diff --git a/ocaml-lsp-server/src/custom_requests/req_type_enclosing.ml b/ocaml-lsp-server/src/custom_requests/req_type_enclosing.ml index 9060fdfdd..0d7f4818e 100644 --- a/ocaml-lsp-server/src/custom_requests/req_type_enclosing.ml +++ b/ocaml-lsp-server/src/custom_requests/req_type_enclosing.ml @@ -1,8 +1,7 @@ open Import module TextDocumentPositionParams = Lsp.Types.TextDocumentPositionParams -let capability = ("handleTypeEnclosing", `Bool true) - +let capability = "handleTypeEnclosing", `Bool true let meth = "ocamllsp/typeEnclosing" module Request_params = struct @@ -16,21 +15,23 @@ module Request_params = struct let yojson_of_at = function | `Range r -> Range.yojson_of_t r | `Position p -> Position.yojson_of_t p + ;; let yojson_of_t { text_document; index; at; verbosity } = match TextDocumentIdentifier.yojson_of_t text_document with | `Assoc assoc -> - let index = ("index", `Int index) in - let range_end = ("at", yojson_of_at at) in - let verbosity = ("verbosity", `Int verbosity) in + let index = "index", `Int index in + let range_end = "at", yojson_of_at at in + let verbosity = "verbosity", `Int verbosity in `Assoc (index :: range_end :: verbosity :: assoc) - | _ -> (* unreachable *) assert false + | _ -> (* unreachable *) assert false + ;; let create ?(verbosity = 0) ~text_document ~at ~index () = { text_document; index; at; verbosity } + ;; - let json_error json = - Json.error "invalid Req_type_enclosing.Request_params" json + let json_error json = Json.error "invalid Req_type_enclosing.Request_params" json let index_of_yojson json params = match List.assoc_opt "index" params with @@ -39,6 +40,7 @@ module Request_params = struct (* If the parameter is incorrectly formatted or missing, we refuse to build the parameter, [index] is mandatory. *) json_error json + ;; let verbosity_of_yojson params = match List.assoc_opt "verbosity" params with @@ -47,16 +49,18 @@ module Request_params = struct (* If the parameter is incorrectly formatted or missing, it is assumed that the we ask for a verbosity level set to 0. *) 0 + ;; let at_of_yojson json params = match List.assoc_opt "at" params with - | Some at -> ( - try `Position (Position.t_of_yojson at) - with _ -> `Range (Range.t_of_yojson at)) + | Some at -> + (try `Position (Position.t_of_yojson at) with + | _ -> `Range (Range.t_of_yojson at)) | _ -> (* If the parameter is incorrectly formatted or missing, we refuse to build the parameter, [at] is mandatory. *) json_error json + ;; let t_of_yojson = function | `Assoc params as json -> @@ -66,6 +70,7 @@ module Request_params = struct let text_document = TextDocumentIdentifier.t_of_yojson json in { index; at; verbosity; text_document } | json -> json_error json + ;; end type t = @@ -76,14 +81,16 @@ type t = let yojson_of_t { index; type_; enclosings } = `Assoc - [ ("index", `Int index) - ; ("enclosings", `List (List.map ~f:Range.yojson_of_t enclosings)) - ; ("type", `String type_) + [ "index", `Int index + ; "enclosings", `List (List.map ~f:Range.yojson_of_t enclosings) + ; "type", `String type_ ] +;; let config_with_given_verbosity config verbosity = let open Mconfig in { config with query = { config.query with verbosity } } +;; let with_pipeline state uri verbosity with_pipeline = let doc = Document_store.get state.State.store uri in @@ -96,16 +103,19 @@ let with_pipeline state uri verbosity with_pipeline = ~config:(config_with_given_verbosity config verbosity) merlin with_pipeline +;; let make_enclosing_command position index = Query_protocol.Type_enclosing (None, position, Some index) +;; let get_first_enclosing_index range_end enclosings = List.find_mapi enclosings ~f:(fun i (loc, _, _) -> - let range = Range.of_loc loc in - match Position.compare range_end range.end_ with - | Ordering.Lt | Ordering.Eq -> Some i - | Ordering.Gt -> None) + let range = Range.of_loc loc in + match Position.compare range_end range.end_ with + | Ordering.Lt | Ordering.Eq -> Some i + | Ordering.Gt -> None) +;; let dispatch_command pipeline command first_index index = let rec aux i acc = function @@ -118,10 +128,9 @@ let dispatch_command pipeline command first_index index = | curr :: enclosings -> aux (succ i) (curr :: acc) enclosings | [] -> None in - let result = - List.drop (Query_commands.dispatch pipeline command) first_index - in + let result = List.drop (Query_commands.dispatch pipeline command) first_index in aux 0 [] result +;; let dispatch_with_range_end pipeline position index range_end = (* merlin's `type-enclosing` command takes a position and returns a list of @@ -139,44 +148,44 @@ let dispatch_with_range_end pipeline position index range_end = as an offset to calculate the real index, relative to the range *) let dummy_command = make_enclosing_command position (-1) in let enclosings = Query_commands.dispatch pipeline dummy_command in - Option.bind - (get_first_enclosing_index range_end enclosings) - ~f:(fun first_index -> - let real_index = first_index + index in - let command = make_enclosing_command position real_index in - dispatch_command pipeline command first_index index) + Option.bind (get_first_enclosing_index range_end enclosings) ~f:(fun first_index -> + let real_index = first_index + index in + let command = make_enclosing_command position real_index in + dispatch_command pipeline command first_index index) +;; let dispatch_without_range_end pipeline position index = let command = make_enclosing_command position index in dispatch_command pipeline command 0 index +;; let dispatch_type_enclosing position index range_end pipeline = let position = Position.logical position in let result = match range_end with | None -> dispatch_without_range_end pipeline position index - | Some range_end -> - dispatch_with_range_end pipeline position index range_end + | Some range_end -> dispatch_with_range_end pipeline position index range_end in let type_, enclosings = match result with - | None -> ("", []) - | Some (typ, enclosings) -> (typ, enclosings) + | None -> "", [] + | Some (typ, enclosings) -> typ, enclosings in yojson_of_t { index; type_; enclosings } +;; let on_request ~params state = Fiber.of_thunk (fun () -> - let params = (Option.value ~default:(`Assoc []) params :> Json.t) in - let Request_params.{ index; verbosity; text_document; at } = - Request_params.t_of_yojson params - in - let position, range_end = - match at with - | `Position p -> (p, None) - | `Range r -> (r.start, Some r.end_) - in - let uri = text_document.uri in - let verbosity = Mconfig.Verbosity.Lvl verbosity in - with_pipeline state uri verbosity - @@ dispatch_type_enclosing position index range_end) + let params = (Option.value ~default:(`Assoc []) params :> Json.t) in + let Request_params.{ index; verbosity; text_document; at } = + Request_params.t_of_yojson params + in + let position, range_end = + match at with + | `Position p -> p, None + | `Range r -> r.start, Some r.end_ + in + let uri = text_document.uri in + let verbosity = Mconfig.Verbosity.Lvl verbosity in + with_pipeline state uri verbosity @@ dispatch_type_enclosing position index range_end) +;; diff --git a/ocaml-lsp-server/src/custom_requests/req_type_enclosing.mli b/ocaml-lsp-server/src/custom_requests/req_type_enclosing.mli index a396ee10a..51189e9d7 100644 --- a/ocaml-lsp-server/src/custom_requests/req_type_enclosing.mli +++ b/ocaml-lsp-server/src/custom_requests/req_type_enclosing.mli @@ -3,8 +3,8 @@ open Import module Request_params : sig type t - val create : - ?verbosity:int + val create + : ?verbosity:int -> text_document:Lsp.Types.TextDocumentIdentifier.t -> at:[ `Position of Position.t | `Range of Range.t ] -> index:int @@ -17,7 +17,5 @@ end type t val capability : string * Json.t - val meth : string - val on_request : params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t diff --git a/ocaml-lsp-server/src/custom_requests/req_typed_holes.ml b/ocaml-lsp-server/src/custom_requests/req_typed_holes.ml index d61fac580..4efb211af 100644 --- a/ocaml-lsp-server/src/custom_requests/req_typed_holes.ml +++ b/ocaml-lsp-server/src/custom_requests/req_typed_holes.ml @@ -1,15 +1,14 @@ open Import open Fiber.O -let capability = ("handleTypedHoles", `Bool true) - +let capability = "handleTypedHoles", `Bool true let meth = "ocamllsp/typedHoles" module Request_params = struct type t = Uri.t (* Request params must have the form as in the given string. *) - let expected_params = `Assoc [ ("uri", `String "") ] + let expected_params = `Assoc [ "uri", `String "" ] let t_of_structured_json params : t option = match params with @@ -17,6 +16,7 @@ module Request_params = struct let uri = Uri.t_of_yojson uri in Some uri | _ -> None + ;; let parse_exn (params : Jsonrpc.Structured.t option) : t = let raise_invalid_params ?data ~message () = @@ -28,46 +28,39 @@ module Request_params = struct () in match params with - | None -> - raise_invalid_params ~message:"Expected params but received none" () - | Some params -> ( - match t_of_structured_json params with - | Some uri -> uri - | None -> - let error_json = - `Assoc - [ ("params_expected", expected_params) - ; ("params_received", (params :> Json.t)) - ] - in - raise_invalid_params - ~message:"Unxpected parameter format" - ~data:error_json - ()) + | None -> raise_invalid_params ~message:"Expected params but received none" () + | Some params -> + (match t_of_structured_json params with + | Some uri -> uri + | None -> + let error_json = + `Assoc + [ "params_expected", expected_params; "params_received", (params :> Json.t) ] + in + raise_invalid_params ~message:"Unxpected parameter format" ~data:error_json ()) + ;; end let on_request ~(params : Jsonrpc.Structured.t option) (state : State.t) = Fiber.of_thunk (fun () -> - let uri = Request_params.parse_exn params in - let store = state.store in - let doc = Document_store.get_opt store uri in - match doc with - | None -> - Jsonrpc.Response.Error.raise - @@ Jsonrpc.Response.Error.make - ~code:Jsonrpc.Response.Error.Code.InvalidParams - ~message: - (Printf.sprintf - "Document %s wasn't found in the document store" - (Uri.to_string uri)) - () - | Some doc -> - let+ holes = - Document.Merlin.dispatch_exn - ~name:"typed-holes" - (Document.merlin_exn doc) - Holes - in - Json.yojson_of_list - (fun (loc, _type) -> loc |> Range.of_loc |> Range.yojson_of_t) - holes) + let uri = Request_params.parse_exn params in + let store = state.store in + let doc = Document_store.get_opt store uri in + match doc with + | None -> + Jsonrpc.Response.Error.raise + @@ Jsonrpc.Response.Error.make + ~code:Jsonrpc.Response.Error.Code.InvalidParams + ~message: + (Printf.sprintf + "Document %s wasn't found in the document store" + (Uri.to_string uri)) + () + | Some doc -> + let+ holes = + Document.Merlin.dispatch_exn ~name:"typed-holes" (Document.merlin_exn doc) Holes + in + Json.yojson_of_list + (fun (loc, _type) -> loc |> Range.of_loc |> Range.yojson_of_t) + holes) +;; diff --git a/ocaml-lsp-server/src/custom_requests/req_typed_holes.mli b/ocaml-lsp-server/src/custom_requests/req_typed_holes.mli index 5dfe607fc..4afe187cb 100644 --- a/ocaml-lsp-server/src/custom_requests/req_typed_holes.mli +++ b/ocaml-lsp-server/src/custom_requests/req_typed_holes.mli @@ -1,7 +1,5 @@ open Import val capability : string * Json.t - val meth : string - val on_request : params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t diff --git a/ocaml-lsp-server/src/custom_requests/req_wrapping_ast_node.ml b/ocaml-lsp-server/src/custom_requests/req_wrapping_ast_node.ml index b98c915cb..1b2503916 100644 --- a/ocaml-lsp-server/src/custom_requests/req_wrapping_ast_node.ml +++ b/ocaml-lsp-server/src/custom_requests/req_wrapping_ast_node.ml @@ -1,8 +1,7 @@ open Import open Fiber.O -let capability = ("handleWrappingAstNode", `Bool true) - +let capability = "handleWrappingAstNode", `Bool true let meth = "ocamllsp/wrappingAstNode" module Request_params = struct @@ -12,8 +11,8 @@ module Request_params = struct } let params_schema = - `Assoc - [ ("uri", `String ""); ("position", `String "") ] + `Assoc [ "uri", `String ""; "position", `String "" ] + ;; let of_jsonrpc_params params : t option = match params with @@ -22,57 +21,53 @@ module Request_params = struct let cursor_position = Position.t_of_yojson position in Some { text_document_uri; cursor_position } | _ -> None + ;; let of_jsonrpc_params_exn params : t = let params_spec = { Custom_request.params_schema; of_jsonrpc_params } in Custom_request.of_jsonrpc_params_exn params_spec params + ;; end let on_request ~params state = Fiber.of_thunk (fun () -> - let { Request_params.text_document_uri; cursor_position } = - Request_params.of_jsonrpc_params_exn params + let { Request_params.text_document_uri; cursor_position } = + Request_params.of_jsonrpc_params_exn params + in + let doc = Document_store.get state.State.store text_document_uri in + match Document.kind doc with + | `Other -> + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make + ~code:InvalidRequest + ~message:"not a merlin document" + ()) + | `Merlin doc -> + let pos = Position.logical cursor_position in + let+ node = + Document.Merlin.with_pipeline_exn ~name:"wrapping-ast-node" doc (fun pipeline -> + let typer = Mpipeline.typer_result pipeline in + let pos = Mpipeline.get_lexing_pos pipeline pos in + let enclosing_nodes (* from smallest node to largest *) = + Mbrowse.enclosing pos [ Mbrowse.of_typedtree (Mtyper.get_typedtree typer) ] + in + let loc_of_structure_item { Typedtree.str_loc; _ } = str_loc in + let find_fst_structure_item_or_structure = function + | _, Browse_raw.Structure_item (str_item, _) -> + Some (loc_of_structure_item str_item) + | _, Structure { str_items; _ } -> + (match str_items with + | [] -> None + | hd :: rest -> + let last = List.last rest |> Option.value ~default:hd in + let { Loc.loc_start; _ } = loc_of_structure_item hd in + let { Loc.loc_end; _ } = loc_of_structure_item last in + Some { Loc.loc_start; loc_end; loc_ghost = false }) + | _ -> None + in + List.find_map enclosing_nodes ~f:find_fst_structure_item_or_structure) in - let doc = Document_store.get state.State.store text_document_uri in - match Document.kind doc with - | `Other -> - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:InvalidRequest - ~message:"not a merlin document" - ()) - | `Merlin doc -> ( - let pos = Position.logical cursor_position in - let+ node = - Document.Merlin.with_pipeline_exn - ~name:"wrapping-ast-node" - doc - (fun pipeline -> - let typer = Mpipeline.typer_result pipeline in - let pos = Mpipeline.get_lexing_pos pipeline pos in - let enclosing_nodes (* from smallest node to largest *) = - Mbrowse.enclosing - pos - [ Mbrowse.of_typedtree (Mtyper.get_typedtree typer) ] - in - let loc_of_structure_item { Typedtree.str_loc; _ } = str_loc in - let find_fst_structure_item_or_structure = function - | _, Browse_raw.Structure_item (str_item, _) -> - Some (loc_of_structure_item str_item) - | _, Structure { str_items; _ } -> ( - match str_items with - | [] -> None - | hd :: rest -> - let last = List.last rest |> Option.value ~default:hd in - let { Loc.loc_start; _ } = loc_of_structure_item hd in - let { Loc.loc_end; _ } = loc_of_structure_item last in - Some { Loc.loc_start; loc_end; loc_ghost = false }) - | _ -> None - in - List.find_map - enclosing_nodes - ~f:find_fst_structure_item_or_structure) - in - match node with - | None -> `Null - | Some loc -> Range.of_loc loc |> Range.yojson_of_t)) + (match node with + | None -> `Null + | Some loc -> Range.of_loc loc |> Range.yojson_of_t)) +;; diff --git a/ocaml-lsp-server/src/custom_requests/req_wrapping_ast_node.mli b/ocaml-lsp-server/src/custom_requests/req_wrapping_ast_node.mli index 5dfe607fc..4afe187cb 100644 --- a/ocaml-lsp-server/src/custom_requests/req_wrapping_ast_node.mli +++ b/ocaml-lsp-server/src/custom_requests/req_wrapping_ast_node.mli @@ -1,7 +1,5 @@ open Import val capability : string * Json.t - val meth : string - val on_request : params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t diff --git a/ocaml-lsp-server/src/definition_query.ml b/ocaml-lsp-server/src/definition_query.ml index 509eae7df..5c83e66be 100644 --- a/ocaml-lsp-server/src/definition_query.ml +++ b/ocaml-lsp-server/src/definition_query.ml @@ -18,44 +18,45 @@ let location_of_merlin_loc uri : _ -> (_, string) result = function | `Found (path, lex_position) -> Ok (Position.of_lexical_position lex_position - |> Option.map ~f:(fun position -> - let range = { Range.start = position; end_ = position } in - let uri = - match path with - | None -> uri - | Some path -> Uri.of_path path - in - let locs = [ { Location.uri; range } ] in - `Location locs)) + |> Option.map ~f:(fun position -> + let range = { Range.start = position; end_ = position } in + let uri = + match path with + | None -> uri + | Some path -> Uri.of_path path + in + let locs = [ { Location.uri; range } ] in + `Location locs)) +;; let run kind (state : State.t) uri position = let* () = Fiber.return () in let doc = Document_store.get state.store uri in match Document.kind doc with | `Other -> Fiber.return None - | `Merlin doc -> ( + | `Merlin doc -> let command, name = let pos = Position.logical position in match kind with - | `Definition -> (Query_protocol.Locate (None, `ML, pos), "definition") - | `Declaration -> (Query_protocol.Locate (None, `MLI, pos), "declaration") - | `Type_definition -> (Query_protocol.Locate_type pos, "type definition") + | `Definition -> Query_protocol.Locate (None, `ML, pos), "definition" + | `Declaration -> Query_protocol.Locate (None, `MLI, pos), "declaration" + | `Type_definition -> Query_protocol.Locate_type pos, "type definition" in let* result = Document.Merlin.dispatch_exn ~name doc command in - match location_of_merlin_loc uri result with - | Ok s -> Fiber.return s - | Error err_msg -> - let kind = - match kind with - | `Definition -> "definition" - | `Declaration -> "declaration" - | `Type_definition -> "type definition" - in - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:Jsonrpc.Response.Error.Code.RequestFailed - ~message:(sprintf "Request \"Jump to %s\" failed." kind) - ~data: - (`String - (sprintf "'Locate' query to merlin returned error: %s" err_msg)) - ())) + (match location_of_merlin_loc uri result with + | Ok s -> Fiber.return s + | Error err_msg -> + let kind = + match kind with + | `Definition -> "definition" + | `Declaration -> "declaration" + | `Type_definition -> "type definition" + in + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make + ~code:Jsonrpc.Response.Error.Code.RequestFailed + ~message:(sprintf "Request \"Jump to %s\" failed." kind) + ~data: + (`String (sprintf "'Locate' query to merlin returned error: %s" err_msg)) + ())) +;; diff --git a/ocaml-lsp-server/src/definition_query.mli b/ocaml-lsp-server/src/definition_query.mli index 59b9d390a..b1024439a 100644 --- a/ocaml-lsp-server/src/definition_query.mli +++ b/ocaml-lsp-server/src/definition_query.mli @@ -1,7 +1,7 @@ open Import -val run : - [ `Definition | `Declaration | `Type_definition ] +val run + : [ `Definition | `Declaration | `Type_definition ] -> State.t -> Uri.t -> Position.t diff --git a/ocaml-lsp-server/src/diagnostics.ml b/ocaml-lsp-server/src/diagnostics.ml index 52feee70a..0e265d8ee 100644 --- a/ocaml-lsp-server/src/diagnostics.ml +++ b/ocaml-lsp-server/src/diagnostics.ml @@ -1,7 +1,6 @@ open Import let ocamllsp_source = "ocamllsp" - let dune_source = "dune" module Uri = struct @@ -17,7 +16,6 @@ module Id = struct include Drpc.Diagnostic.Id let equal x y = compare x y = Eq - let to_dyn = Dyn.opaque end @@ -31,11 +29,8 @@ module Dune = struct } let compare = Poly.compare - let equal x y = Ordering.is_eq (compare x y) - let hash = Poly.hash - let to_dyn = Dyn.opaque end @@ -65,10 +60,12 @@ let equal_message = while !i < String.length m1 && !j < String.length m2 do let ci = m1.[!i] in let cj = m2.[!j] in - if is_space ci && is_space cj then ( + if is_space ci && is_space cj + then ( eat_space m1 i; eat_space m2 j) - else if Char.equal ci cj then ( + else if Char.equal ci cj + then ( incr i; incr j) else raise_notrace Exit @@ -77,11 +74,12 @@ let equal_message = eat_space m2 j; (* we make sure that everything is consumed *) !i = String.length m1 && !j = String.length m2 - with Exit -> false + with + | Exit -> false +;; type t = - { dune : - (Dune.t, (Drpc.Diagnostic.Id.t, Uri.t * Diagnostic.t) Table.t) Table.t + { dune : (Dune.t, (Drpc.Diagnostic.Id.t, Uri.t * Diagnostic.t) Table.t) Table.t ; merlin : (Uri.t, Diagnostic.t list) Table.t ; send : PublishDiagnosticsParams.t list -> unit Fiber.t ; mutable dirty_uris : Uri_set.t @@ -90,16 +88,19 @@ type t = ; mutable report_dune_diagnostics : bool } -let create (capabilities : PublishDiagnosticsClientCapabilities.t option) send - ~report_dune_diagnostics = +let create + (capabilities : PublishDiagnosticsClientCapabilities.t option) + send + ~report_dune_diagnostics + = let related_information, tags = match capabilities with - | None -> (false, []) + | None -> false, [] | Some c -> ( Option.value ~default:false c.relatedInformation - , match c.tagSupport with - | None -> [] - | Some { valueSet } -> valueSet ) + , (match c.tagSupport with + | None -> [] + | Some { valueSet } -> valueSet) ) in { dune = Table.create (module Dune) 32 ; merlin = Table.create (module Uri) 32 @@ -109,6 +110,7 @@ let create (capabilities : PublishDiagnosticsClientCapabilities.t option) send ; tags ; report_dune_diagnostics } +;; let send = let module Range_map = Map.Make (Range) in @@ -119,70 +121,70 @@ let send = | None -> Range_map.singleton diagnostic.range [ diagnostic ] | Some map -> Range_map.update map diagnostic.range ~f:(fun diagnostics -> - Some - (match diagnostics with - | None -> [ diagnostic ] - | Some diagnostics -> - if - List.exists diagnostics ~f:(fun (d : Diagnostic.t) -> - match d.source with - | None -> assert false - | Some source -> ( - String.equal ocamllsp_source source - && - match (d.message, diagnostic.message) with + Some + (match diagnostics with + | None -> [ diagnostic ] + | Some diagnostics -> + if List.exists diagnostics ~f:(fun (d : Diagnostic.t) -> + match d.source with + | None -> assert false + | Some source -> + String.equal ocamllsp_source source + && + (match d.message, diagnostic.message with | `String m1, `String m2 -> equal_message m1 m2 | `MarkupContent { kind; value }, `MarkupContent mc -> - Poly.equal kind mc.kind - && equal_message value mc.value + Poly.equal kind mc.kind && equal_message value mc.value | _, _ -> false)) - then diagnostics - else diagnostic :: diagnostics)) + then diagnostics + else diagnostic :: diagnostics)) in Table.set pending uri value in let range_map_of_unduplicated_diagnostics diagnostics = - List.rev_map diagnostics ~f:(fun (d : Diagnostic.t) -> (d.range, d)) + List.rev_map diagnostics ~f:(fun (d : Diagnostic.t) -> d.range, d) |> Range_map.of_list_multi in fun t which -> Fiber.of_thunk (fun () -> - let dirty_uris = - match which with - | `All -> t.dirty_uris - | `One uri -> Uri_set.singleton uri - in - let pending = Table.create (module Uri) 4 in - Uri_set.iter dirty_uris ~f:(fun uri -> - let diagnostics = Table.Multi.find t.merlin uri in - Table.set - pending - uri - (range_map_of_unduplicated_diagnostics diagnostics)); - let set_dune_source = - let annotate_dune_pid = Table.length t.dune > 1 in - if annotate_dune_pid then fun pid (d : Diagnostic.t) -> - let source = Some (sprintf "dune (pid=%d)" (Pid.to_int pid)) in - { d with source } - else fun _pid x -> x - in - if t.report_dune_diagnostics then - Table.foldi ~init:() t.dune ~f:(fun dune per_dune () -> - Table.iter per_dune ~f:(fun (uri, diagnostic) -> - if Uri_set.mem dirty_uris uri then - let diagnostic = set_dune_source dune.pid diagnostic in - add_dune_diagnostic pending uri diagnostic)); - t.dirty_uris <- - (match which with + let dirty_uris = + match which with + | `All -> t.dirty_uris + | `One uri -> Uri_set.singleton uri + in + let pending = Table.create (module Uri) 4 in + Uri_set.iter dirty_uris ~f:(fun uri -> + let diagnostics = Table.Multi.find t.merlin uri in + Table.set pending uri (range_map_of_unduplicated_diagnostics diagnostics)); + let set_dune_source = + let annotate_dune_pid = Table.length t.dune > 1 in + if annotate_dune_pid + then + fun pid (d : Diagnostic.t) -> + let source = Some (sprintf "dune (pid=%d)" (Pid.to_int pid)) in + { d with source } + else fun _pid x -> x + in + if t.report_dune_diagnostics + then + Table.foldi ~init:() t.dune ~f:(fun dune per_dune () -> + Table.iter per_dune ~f:(fun (uri, diagnostic) -> + if Uri_set.mem dirty_uris uri + then ( + let diagnostic = set_dune_source dune.pid diagnostic in + add_dune_diagnostic pending uri diagnostic))); + t.dirty_uris + <- (match which with | `All -> Uri_set.empty | `One uri -> Uri_set.remove t.dirty_uris uri); - Table.foldi pending ~init:[] ~f:(fun uri diagnostics acc -> - let diagnostics = List.flatten (Range_map.values diagnostics) in - (* we don't include a version because some of the diagnostics might - come from dune which reads from the file system and not from the - editor's view *) - PublishDiagnosticsParams.create ~uri ~diagnostics () :: acc) - |> t.send) + Table.foldi pending ~init:[] ~f:(fun uri diagnostics acc -> + let diagnostics = List.flatten (Range_map.values diagnostics) in + (* we don't include a version because some of the diagnostics might + come from dune which reads from the file system and not from the + editor's view *) + PublishDiagnosticsParams.create ~uri ~diagnostics () :: acc) + |> t.send) +;; let set t what = let uri = @@ -198,40 +200,42 @@ let set t what = Table.find_or_add t.dune dune ~f:(fun _ -> Table.create (module Id) 16) in Table.set dune_table id (uri, diagnostics) +;; let remove t = function | `Dune (dune, diagnostic) -> Table.find t.dune dune |> Option.iter ~f:(fun dune -> - Table.find dune diagnostic - |> Option.iter ~f:(fun (uri, _) -> - Table.remove dune diagnostic; - t.dirty_uris <- Uri_set.add t.dirty_uris uri)) + Table.find dune diagnostic + |> Option.iter ~f:(fun (uri, _) -> + Table.remove dune diagnostic; + t.dirty_uris <- Uri_set.add t.dirty_uris uri)) | `Merlin uri -> t.dirty_uris <- Uri_set.add t.dirty_uris uri; Table.remove t.merlin uri +;; let disconnect t dune = Table.find t.dune dune |> Option.iter ~f:(fun dune_diagnostics -> - Table.iter dune_diagnostics ~f:(fun (uri, _) -> - t.dirty_uris <- Uri_set.add t.dirty_uris uri); - Table.remove t.dune dune) + Table.iter dune_diagnostics ~f:(fun (uri, _) -> + t.dirty_uris <- Uri_set.add t.dirty_uris uri); + Table.remove t.dune dune) +;; let tags_of_message = let tags_of_message ~src message : DiagnosticTag.t option = match src with | `Dune when String.is_prefix message ~prefix:"unused" -> Some Unnecessary - | `Merlin when Diagnostic_util.is_unused_var_warning message -> - Some Unnecessary - | `Merlin when Diagnostic_util.is_deprecated_warning message -> - Some Deprecated + | `Merlin when Diagnostic_util.is_unused_var_warning message -> Some Unnecessary + | `Merlin when Diagnostic_util.is_deprecated_warning message -> Some Deprecated | `Dune | `Merlin -> None in fun t ~src message -> match tags_of_message ~src message with | None -> None | Some tag -> Option.some_if (List.mem t.tags tag ~equal:Poly.equal) [ tag ] +;; let extract_related_errors uri raw_message = match Ocamlc_loc.parse_raw raw_message with @@ -244,7 +248,7 @@ let extract_related_errors uri raw_message = | _ -> (* give up when we see something unexpected *) Log.log ~section:"debug" (fun () -> - Log.msg "unable to parse error" [ ("error", `String raw_message) ]); + Log.msg "unable to parse error" [ "error", `String raw_message ]); [] in loop [] related @@ -258,13 +262,13 @@ let extract_related_errors uri raw_message = let start, end_ = let line_start, line_end = match lines with - | Single i -> (i, i) - | Range (i, j) -> (i, j) + | Single i -> i, i + | Range (i, j) -> i, j in let char_start, char_end = match chars with - | None -> (1, 1) - | Some (x, y) -> (x, y) + | None -> 1, 1 + | Some (x, y) -> x, y in ( Position.create ~line:line_start ~character:char_start , Position.create ~line:line_end ~character:char_end ) @@ -277,8 +281,9 @@ let extract_related_errors uri raw_message = in Some (List.map related ~f:make_related) in - (string_of_message message, related) - | _ -> (raw_message, None) + string_of_message message, related + | _ -> raw_message, None +;; let merlin_diagnostics diagnostics merlin = let doc = Document.Merlin.to_doc merlin in @@ -289,96 +294,88 @@ let merlin_diagnostics diagnostics merlin = let command = Query_protocol.Errors { lexing = true; parsing = true; typing = true } in - Document.Merlin.with_pipeline_exn - ~name:"diagnostics" - merlin - (fun pipeline -> - match Query_commands.dispatch pipeline command with - | exception Merlin_extend.Extend_main.Handshake.Error error -> - let message = - `String - (sprintf - "%s.\n\ - Hint: install the following packages: merlin-extend, reason" - error) - in - [ create_diagnostic ~range:Range.first_line ~message () ] - | errors -> - let merlin_diagnostics = - List.rev_map errors ~f:(fun (error : Loc.error) -> - let loc = Loc.loc_of_report error in - let range = Range.of_loc loc in - let severity = - match error.source with - | Warning -> DiagnosticSeverity.Warning - | _ -> DiagnosticSeverity.Error - in - let make_message ppf m = - String.trim (Format.asprintf "%a@." ppf m) - in - let message = make_message Loc.print_main error in - let message, relatedInformation = - match diagnostics.related_information with - | false -> (message, None) - | true -> ( - match error.sub with - | [] -> extract_related_errors uri message - | _ :: _ -> - ( message - , Some - (List.map error.sub ~f:(fun (sub : Loc.msg) -> - let location = - let range = Range.of_loc sub.loc in - Location.create ~range ~uri - in - let message = - make_message Loc.print_sub_msg sub - in - DiagnosticRelatedInformation.create - ~location - ~message)) )) - in - let tags = tags_of_message diagnostics ~src:`Merlin message in - create_diagnostic - ?tags - ?relatedInformation - ~range - ~message:(`String message) - ~severity - ()) - in - let holes_as_err_diags = - Query_commands.dispatch pipeline Holes - |> List.rev_map ~f:(fun (loc, typ) -> - let range = Range.of_loc loc in - let severity = DiagnosticSeverity.Error in - let message = - "This typed hole should be replaced with an expression of \ - type " ^ typ - in - (* we set specific diagnostic code = "hole" to be able to - filter through diagnostics easily *) - create_diagnostic - ~code:(`String "hole") - ~range - ~message:(`String message) - ~severity - ()) - in - (* Can we use [List.merge] instead? *) - List.rev_append holes_as_err_diags merlin_diagnostics - |> List.sort ~compare:(fun (d1 : Diagnostic.t) (d2 : Diagnostic.t) -> - Range.compare d1.range d2.range)) + Document.Merlin.with_pipeline_exn ~name:"diagnostics" merlin (fun pipeline -> + match Query_commands.dispatch pipeline command with + | exception Merlin_extend.Extend_main.Handshake.Error error -> + let message = + `String + (sprintf + "%s.\nHint: install the following packages: merlin-extend, reason" + error) + in + [ create_diagnostic ~range:Range.first_line ~message () ] + | errors -> + let merlin_diagnostics = + List.rev_map errors ~f:(fun (error : Loc.error) -> + let loc = Loc.loc_of_report error in + let range = Range.of_loc loc in + let severity = + match error.source with + | Warning -> DiagnosticSeverity.Warning + | _ -> DiagnosticSeverity.Error + in + let make_message ppf m = String.trim (Format.asprintf "%a@." ppf m) in + let message = make_message Loc.print_main error in + let message, relatedInformation = + match diagnostics.related_information with + | false -> message, None + | true -> + (match error.sub with + | [] -> extract_related_errors uri message + | _ :: _ -> + ( message + , Some + (List.map error.sub ~f:(fun (sub : Loc.msg) -> + let location = + let range = Range.of_loc sub.loc in + Location.create ~range ~uri + in + let message = make_message Loc.print_sub_msg sub in + DiagnosticRelatedInformation.create ~location ~message)) )) + in + let tags = tags_of_message diagnostics ~src:`Merlin message in + create_diagnostic + ?tags + ?relatedInformation + ~range + ~message:(`String message) + ~severity + ()) + in + let holes_as_err_diags = + Query_commands.dispatch pipeline Holes + |> List.rev_map ~f:(fun (loc, typ) -> + let range = Range.of_loc loc in + let severity = DiagnosticSeverity.Error in + let message = + "This typed hole should be replaced with an expression of type " ^ typ + in + (* we set specific diagnostic code = "hole" to be able to + filter through diagnostics easily *) + create_diagnostic + ~code:(`String "hole") + ~range + ~message:(`String message) + ~severity + ()) + in + (* Can we use [List.merge] instead? *) + List.rev_append holes_as_err_diags merlin_diagnostics + |> List.sort ~compare:(fun (d1 : Diagnostic.t) (d2 : Diagnostic.t) -> + Range.compare d1.range d2.range)) in set diagnostics (`Merlin (uri, all_diagnostics)) +;; let set_report_dune_diagnostics t ~report_dune_diagnostics = let open Fiber.O in let* () = Fiber.return () in - if t.report_dune_diagnostics = report_dune_diagnostics then Fiber.return () + if t.report_dune_diagnostics = report_dune_diagnostics + then Fiber.return () else ( t.report_dune_diagnostics <- report_dune_diagnostics; Table.iter t.dune ~f:(fun per_dune -> - Table.iter per_dune ~f:(fun (uri, _diagnostic) -> - t.dirty_uris <- Uri_set.add t.dirty_uris uri)); + Table.iter per_dune ~f:(fun (uri, _diagnostic) -> + t.dirty_uris <- Uri_set.add t.dirty_uris uri)); send t `All) +;; diff --git a/ocaml-lsp-server/src/diagnostics.mli b/ocaml-lsp-server/src/diagnostics.mli index 4ae6af57e..9bf7c7fe3 100644 --- a/ocaml-lsp-server/src/diagnostics.mli +++ b/ocaml-lsp-server/src/diagnostics.mli @@ -1,13 +1,12 @@ open Import val ocamllsp_source : string - val dune_source : string type t -val create : - PublishDiagnosticsClientCapabilities.t option +val create + : PublishDiagnosticsClientCapabilities.t option -> (PublishDiagnosticsParams.t list -> unit Fiber.t) -> report_dune_diagnostics:bool -> t @@ -20,25 +19,24 @@ module Dune : sig val gen : Pid.t -> t end -val set : - t +val set + : t -> [ `Dune of Dune.t * Drpc.Diagnostic.Id.t * Uri.t * Diagnostic.t | `Merlin of Uri.t * Diagnostic.t list ] -> unit -val remove : - t -> [ `Dune of Dune.t * Drpc.Diagnostic.Id.t | `Merlin of Uri.t ] -> unit - +val remove : t -> [ `Dune of Dune.t * Drpc.Diagnostic.Id.t | `Merlin of Uri.t ] -> unit val disconnect : t -> Dune.t -> unit -val tags_of_message : - t -> src:[< `Dune | `Merlin ] -> string -> DiagnosticTag.t list option +val tags_of_message + : t + -> src:[< `Dune | `Merlin ] + -> string + -> DiagnosticTag.t list option val merlin_diagnostics : t -> Document.Merlin.t -> unit Fiber.t - -val set_report_dune_diagnostics : - t -> report_dune_diagnostics:bool -> unit Fiber.t +val set_report_dune_diagnostics : t -> report_dune_diagnostics:bool -> unit Fiber.t (** Exposed for testing *) diff --git a/ocaml-lsp-server/src/doc_to_md.ml b/ocaml-lsp-server/src/doc_to_md.ml index 774dd4b9c..ca68f4b67 100644 --- a/ocaml-lsp-server/src/doc_to_md.ml +++ b/ocaml-lsp-server/src/doc_to_md.ml @@ -35,10 +35,12 @@ let style_inline ~meta (style : Odoc_parser.Ast.style) inline = | `Emphasis -> Inline.Emphasis (Inline.Emphasis.make inline, meta) | `Superscript -> inline | `Subscript -> inline +;; let rec inline_element_to_inline - (inline : Odoc_parser.Ast.inline_element Odoc_parser.Loc.with_location) : - Inline.t = + (inline : Odoc_parser.Ast.inline_element Odoc_parser.Loc.with_location) + : Inline.t + = match inline with | { value = `Space _; location } -> let meta = loc_to_meta location in @@ -60,46 +62,40 @@ let rec inline_element_to_inline | { value = `Styled (`Superscript, inlines); location } -> let text = inline_element_list_to_inlines inlines in let meta = loc_to_meta location in - Inline.Inlines - ([ Inline.Text ("^{", meta); text; Inline.Text ("}", meta) ], meta) + Inline.Inlines ([ Inline.Text ("^{", meta); text; Inline.Text ("}", meta) ], meta) | { value = `Styled (`Subscript, inlines); location } -> let text = inline_element_list_to_inlines inlines in let meta = loc_to_meta location in - Inline.Inlines - ([ Inline.Text ("_{", meta); text; Inline.Text ("}", meta) ], meta) + Inline.Inlines ([ Inline.Text ("_{", meta); text; Inline.Text ("}", meta) ], meta) | { value = `Styled (style, inlines); location } -> let text = inline_element_list_to_inlines inlines in let meta = loc_to_meta location in style_inline ~meta style text - | { value = `Reference (kind, ref, inlines); location } -> ( + | { value = `Reference (kind, ref, inlines); location } -> (* TODO: add support for references *) let meta = loc_to_meta location in - match kind with - | `Simple -> Inline.Code_span (Inline.Code_span.of_string ref.value, meta) - | `With_text -> inline_element_list_to_inlines inlines) + (match kind with + | `Simple -> Inline.Code_span (Inline.Code_span.of_string ref.value, meta) + | `With_text -> inline_element_list_to_inlines inlines) | { value = `Link (link, inlines); location } -> let text = inline_element_list_to_inlines inlines in - let ref = - `Inline (Link_definition.make ~dest:(link, Meta.none) (), Meta.none) - in + let ref = `Inline (Link_definition.make ~dest:(link, Meta.none) (), Meta.none) in let link = Inline.Link.make text ref in let meta = loc_to_meta location in Inline.Link (link, meta) | { value = `Math_span text; location } -> let meta = loc_to_meta location in Inline.Ext_math_span - ( Inline.Math_span.make - ~display:false - (Block_line.tight_list_of_string text) - , meta ) + (Inline.Math_span.make ~display:false (Block_line.tight_list_of_string text), meta) and inline_element_list_to_inlines inlines = let inlines = List.map ~f:inline_element_to_inline inlines in Inline.Inlines (inlines, Meta.none) +;; let rec nestable_block_element_to_block - (nestable : - Odoc_parser.Ast.nestable_block_element Odoc_parser.Loc.with_location) = + (nestable : Odoc_parser.Ast.nestable_block_element Odoc_parser.Loc.with_location) + = match nestable with | { value = `Paragraph text; location } -> let inline = inline_element_list_to_inlines text in @@ -108,31 +104,27 @@ let rec nestable_block_element_to_block Block.Paragraph (paragraph, meta) | { value = `Table ((grid, alignment), _); location } -> let meta = loc_to_meta location in - let cell - ((c, _) : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.cell) = + let cell ((c, _) : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.cell) = let c = nestable_block_element_list_to_inlines c in - (c, (" ", " ") (* Initial and trailing blanks *)) + c, (" ", " ") + (* Initial and trailing blanks *) in - let header_row - (row : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.row) = + let header_row (row : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.row) = let row = List.map ~f:cell row in - ((`Header row, Meta.none), "") + (`Header row, Meta.none), "" in - let data_row - (row : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.row) = + let data_row (row : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.row) = let row = List.map ~f:cell row in - ((`Data row, Meta.none), "") + (`Data row, Meta.none), "" in let alignment_row = match alignment with | None -> [] | Some alignment -> let alignment = - List.map - ~f:(fun x -> ((x, 1 (* nb of separator *)), Meta.none)) - alignment + List.map ~f:(fun x -> (x, 1 (* nb of separator *)), Meta.none) alignment in - [ ((`Sep alignment, Meta.none), "") ] + [ (`Sep alignment, Meta.none), "" ] in let rows = match grid with @@ -154,8 +146,8 @@ let rec nestable_block_element_to_block in let list_items = List.map xs ~f:(fun n -> - let block = nestable_block_element_list_to_block n in - (Block.List_item.make ~after_marker:1 block, Meta.none)) + let block = nestable_block_element_list_to_block n in + Block.List_item.make ~after_marker:1 block, Meta.none) in let l = Block.List'.make ~tight type' list_items in let meta = loc_to_meta location in @@ -165,12 +157,12 @@ let rec nestable_block_element_to_block let tight = false in let list_items = List.map modules ~f:(fun Odoc_parser.Loc.{ value = m; location } -> - let inline = Inline.Text (m, Meta.none) in - let paragraph = Block.Paragraph.make inline in - let block = Block.Paragraph (paragraph, Meta.none) in - let meta = loc_to_meta location in - let marker = Layout.string "!modules:" in - (Block.List_item.make ~after_marker:1 ~marker block, meta)) + let inline = Inline.Text (m, Meta.none) in + let paragraph = Block.Paragraph.make inline in + let block = Block.Paragraph (paragraph, Meta.none) in + let meta = loc_to_meta location in + let marker = Layout.string "!modules:" in + Block.List_item.make ~after_marker:1 ~marker block, meta) in let l = Block.List'.make ~tight type' list_items in let meta = loc_to_meta location in @@ -213,15 +205,13 @@ let rec nestable_block_element_to_block Block.Ext_math_block (code_block, meta) and nestable_block_element_to_inlines - (nestable : - Odoc_parser.Ast.nestable_block_element Odoc_parser.Loc.with_location) = + (nestable : Odoc_parser.Ast.nestable_block_element Odoc_parser.Loc.with_location) + = match nestable with - | { value = `Paragraph text; location = _ } -> - inline_element_list_to_inlines text + | { value = `Paragraph text; location = _ } -> inline_element_list_to_inlines text | { value = `Table ((grid, _), _); location } -> let meta = loc_to_meta location in - let cell - ((c, _) : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.cell) = + let cell ((c, _) : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.cell) = nestable_block_element_list_to_inlines c in let row (row : Odoc_parser.Ast.nestable_block_element Odoc_parser.Ast.row) = @@ -253,21 +243,15 @@ and nestable_block_element_to_inlines } -> let meta = loc_to_meta location in let meta_code = loc_to_meta code_loc in - let code_span = - Inline.Code_span.make ~backtick_count:1 [ ("", (code, meta_code)) ] - in + let code_span = Inline.Code_span.make ~backtick_count:1 [ "", (code, meta_code) ] in Inline.Code_span (code_span, meta) | { value = `Verbatim code; location } -> let meta = loc_to_meta location in - let code_span = - Inline.Code_span.make ~backtick_count:1 [ ("", (code, Meta.none)) ] - in + let code_span = Inline.Code_span.make ~backtick_count:1 [ "", (code, Meta.none) ] in Inline.Code_span (code_span, meta) | { value = `Math_block code; location } -> let meta = loc_to_meta location in - let code_span = - Inline.Math_span.make ~display:true [ ("", (code, Meta.none)) ] - in + let code_span = Inline.Math_span.make ~display:true [ "", (code, Meta.none) ] in Inline.Ext_math_span (code_span, meta) and nestable_block_element_list_to_inlines l = @@ -277,6 +261,7 @@ and nestable_block_element_list_to_inlines l = and nestable_block_element_list_to_block nestables = let blocks = List.map ~f:nestable_block_element_to_block nestables in Block.Blocks (blocks, Meta.none) +;; let strong_and_emphasis s = Inline.Emphasis @@ -284,17 +269,18 @@ let strong_and_emphasis s = (Inline.Strong_emphasis (Inline.Emphasis.make (Inline.Text (s, Meta.none)), Meta.none)) , Meta.none ) +;; let inline_code_span_of_string s = Inline.Code_span ( Inline.Code_span.make ~backtick_count:1 (Block_line.tight_list_of_string s) , Meta.none ) +;; let inline_link_of_string ~text uri = - let ref = - `Inline (Link_definition.make ~dest:(uri, Meta.none) (), Meta.none) - in + let ref = `Inline (Link_definition.make ~dest:(uri, Meta.none) (), Meta.none) in Inline.Link (Inline.Link.make (Inline.Text (text, Meta.none)) ref, Meta.none) +;; let tag_to_block ~meta (tag : Odoc_parser.Ast.tag) = let format_tag_empty tag = @@ -303,8 +289,7 @@ let tag_to_block ~meta (tag : Odoc_parser.Ast.tag) = let format_tag_string tag text = let inline = Inline.Inlines - ( [ strong_and_emphasis tag; Inline.Text (" ", Meta.none); text ] - , Meta.none ) + ([ strong_and_emphasis tag; Inline.Text (" ", Meta.none); text ], Meta.none) in Block.Paragraph (Block.Paragraph.make inline, meta) in @@ -318,8 +303,7 @@ let tag_to_block ~meta (tag : Odoc_parser.Ast.tag) = let prefix = let inline = Inline.Inlines - ( [ strong_and_emphasis tag; Inline.Text (" ", Meta.none); text ] - , Meta.none ) + ([ strong_and_emphasis tag; Inline.Text (" ", Meta.none); text ], Meta.none) in Block.Paragraph (Block.Paragraph.make inline, Meta.none) in @@ -371,10 +355,11 @@ let tag_to_block ~meta (tag : Odoc_parser.Ast.tag) = | `Open -> format_tag_empty "@open" | `Closed -> format_tag_empty "@closed" | `Hidden -> format_tag_empty "@hidden" +;; let rec block_element_to_block - (block_element : - Odoc_parser.Ast.block_element Odoc_parser.Loc.with_location) = + (block_element : Odoc_parser.Ast.block_element Odoc_parser.Loc.with_location) + = match block_element with | { value = `Heading (level, _, content); location } -> let text = inline_element_list_to_inlines content in @@ -401,12 +386,11 @@ and block_element_list_to_block l = | [] -> List.rev acc | el :: [] -> List.rev (block_element_to_block el :: acc) | el :: rest -> - aux - (Block.Blank_line ("", Meta.none) :: block_element_to_block el :: acc) - rest + aux (Block.Blank_line ("", Meta.none) :: block_element_to_block el :: acc) rest in let blocks = aux [] l in Block.Blocks (blocks, Meta.none) +;; let translate doc : t = let location = Lexing.dummy_pos in @@ -416,3 +400,4 @@ let translate doc : t = let doc = Doc.make block in let cmark = Cmarkit_commonmark.of_doc doc in Markdown cmark +;; diff --git a/ocaml-lsp-server/src/document.ml b/ocaml-lsp-server/src/document.ml index 8627fc827..ec1ec2956 100644 --- a/ocaml-lsp-server/src/document.ml +++ b/ocaml-lsp-server/src/document.ml @@ -11,6 +11,7 @@ module Kind = struct | ".ml" | ".eliom" | ".re" -> Some Impl | ".mli" | ".eliomi" | ".rei" -> Some Intf | _ -> None + ;; let unsupported uri = let p = Uri.to_path uri in @@ -18,8 +19,9 @@ module Kind = struct (Jsonrpc.Response.Error.make ~code:InvalidRequest ~message:"unsupported file extension" - ~data:(`Assoc [ ("extension", `String (Filename.extension p)) ]) + ~data:(`Assoc [ "extension", `String (Filename.extension p) ]) ()) + ;; end module Syntax = struct @@ -38,30 +40,32 @@ module Syntax = struct | Menhir -> "Menhir/ocamlyacc" | Cram -> "Cram" | Dune -> "Dune" + ;; let all = - [ ("ocaml.interface", Ocaml) - ; ("ocaml", Ocaml) - ; ("reason", Reason) - ; ("ocaml.ocamllex", Ocamllex) - ; ("ocaml.menhir", Menhir) - ; ("cram", Cram) - ; ("dune", Dune) - ; ("dune-project", Dune) - ; ("dune-workspace", Dune) + [ "ocaml.interface", Ocaml + ; "ocaml", Ocaml + ; "reason", Reason + ; "ocaml.ocamllex", Ocamllex + ; "ocaml.menhir", Menhir + ; "cram", Cram + ; "dune", Dune + ; "dune-project", Dune + ; "dune-workspace", Dune ] + ;; let of_fname = let of_fname_res = function | "dune" | "dune-workspace" | "dune-project" -> Ok Dune - | s -> ( - match Filename.extension s with - | ".eliomi" | ".eliom" | ".mli" | ".ml" -> Ok Ocaml - | ".rei" | ".re" -> Ok Reason - | ".mll" -> Ok Ocamllex - | ".mly" -> Ok Menhir - | ".t" -> Ok Cram - | ext -> Error ext) + | s -> + (match Filename.extension s with + | ".eliomi" | ".eliom" | ".mli" | ".ml" -> Ok Ocaml + | ".rei" | ".re" -> Ok Reason + | ".mll" -> Ok Ocamllex + | ".mly" -> Ok Menhir + | ".t" -> Ok Cram + | ext -> Error ext) in fun s -> match of_fname_res s with @@ -71,22 +75,25 @@ module Syntax = struct (Jsonrpc.Response.Error.make ~code:InvalidRequest ~message:(Printf.sprintf "unsupported file extension") - ~data:(`Assoc [ ("extension", `String ext) ]) + ~data:(`Assoc [ "extension", `String ext ]) ()) + ;; let to_language_id x = - List.find_map all ~f:(fun (k, v) -> Option.some_if (v = x) k) - |> Option.value_exn + List.find_map all ~f:(fun (k, v) -> Option.some_if (v = x) k) |> Option.value_exn + ;; let markdown_name = function | Ocaml -> "ocaml" | Reason -> "reason" | s -> to_language_id s + ;; let of_text_document (td : Text_document.t) = match List.assoc all (Text_document.languageId td) with | Some s -> s | None -> Text_document.documentUri td |> Uri.to_path |> of_fname + ;; end let await task = @@ -103,37 +110,34 @@ let await task = in match cancel_token with | None -> f () |> Fiber.map ~f:without_cancellation - | Some t -> ( + | Some t -> let+ res, outcome = - Fiber.Cancel.with_handler t f ~on_cancel:(fun () -> - Lev_fiber.Thread.cancel task) + Fiber.Cancel.with_handler t f ~on_cancel:(fun () -> Lev_fiber.Thread.cancel task) in - match outcome with - | Not_cancelled -> without_cancellation res - | Cancelled () -> - let e = - Jsonrpc.Response.Error.make - ~code:RequestCancelled - ~message:"cancelled" - () - in - raise (Jsonrpc.Response.Error.E e)) + (match outcome with + | Not_cancelled -> without_cancellation res + | Cancelled () -> + let e = + Jsonrpc.Response.Error.make ~code:RequestCancelled ~message:"cancelled" () + in + raise (Jsonrpc.Response.Error.E e)) +;; module Single_pipeline : sig type t val create : Lev_fiber.Thread.t -> t - val use : - ?name:string + val use + : ?name:string -> t -> doc:Text_document.t -> config:Merlin_config.t -> f:(Mpipeline.t -> 'a) -> ('a, Exn_with_backtrace.t) result Fiber.t - val use_with_config : - ?name:string + val use_with_config + : ?name:string -> t -> doc:Text_document.t -> config:Mconfig.t @@ -152,11 +156,11 @@ end = struct let task = match Lev_fiber.Thread.task t.thread ~f:(fun () -> - let start = Unix.time () in - let pipeline = make_pipeline () in - let res = Mpipeline.with_pipeline pipeline (fun () -> f pipeline) in - let stop = Unix.time () in - (res, start, stop)) + let start = Unix.time () in + let pipeline = make_pipeline () in + let res = Mpipeline.with_pipeline pipeline (fun () -> f pipeline) in + let stop = Unix.time () in + res, start, stop) with | Error `Stopped -> assert false | Ok task -> task @@ -180,10 +184,12 @@ end = struct in let+ () = Metrics.report event in Ok res + ;; let use ?name t ~doc ~config ~f = let* config = Merlin_config.config config in use_with_config ?name t ~doc ~config ~f + ;; end type merlin = @@ -205,17 +211,17 @@ type t = let tdoc = function | Other d -> d.tdoc | Merlin m -> m.tdoc +;; let uri t = Text_document.documentUri (tdoc t) let syntax = function | Merlin m -> m.syntax | Other t -> t.syntax +;; let text t = Text_document.text (tdoc t) - let source t = Msource.make (text t) - let version t = Text_document.version (tdoc t) let make_merlin wheel merlin_db pipeline tdoc syntax = @@ -227,9 +233,11 @@ let make_merlin wheel merlin_db pipeline tdoc syntax = let kind = let ext = Filename.extension path in List.find_map mconfig.merlin.suffixes ~f:(fun (impl, intf) -> - if String.equal ext intf then Some Kind.Intf - else if String.equal ext impl then Some Kind.Impl - else None) + if String.equal ext intf + then Some Kind.Intf + else if String.equal ext impl + then Some Kind.Impl + else None) in let kind = match kind with @@ -237,58 +245,59 @@ let make_merlin wheel merlin_db pipeline tdoc syntax = | None -> Kind.of_fname_opt path in Fiber.return (Merlin { merlin_config; tdoc; pipeline; timer; syntax; kind }) +;; -let make wheel config pipeline (doc : DidOpenTextDocumentParams.t) - ~position_encoding = +let make wheel config pipeline (doc : DidOpenTextDocumentParams.t) ~position_encoding = Fiber.of_thunk (fun () -> - let tdoc = Text_document.make ~position_encoding doc in - let syntax = Syntax.of_text_document tdoc in - match syntax with - | Ocaml | Reason -> make_merlin wheel config pipeline tdoc syntax - | Ocamllex | Menhir | Cram | Dune -> Fiber.return (Other { tdoc; syntax })) + let tdoc = Text_document.make ~position_encoding doc in + let syntax = Syntax.of_text_document tdoc in + match syntax with + | Ocaml | Reason -> make_merlin wheel config pipeline tdoc syntax + | Ocamllex | Menhir | Cram | Dune -> Fiber.return (Other { tdoc; syntax })) +;; let update_text ?version t changes = match Text_document.apply_content_changes ?version (tdoc t) changes with | exception Text_document.Invalid_utf error -> Log.log ~section:"warning" (fun () -> - let error = - match error with - | Malformed input -> - [ ("message", `String "malformed input"); ("input", `String input) ] - | Insufficient_input -> [ ("message", `String "insufficient input") ] - in - Log.msg - "dropping update due to invalid utf8" - (( "changes" - , Json.yojson_of_list - TextDocumentContentChangeEvent.yojson_of_t - changes ) - :: error)); + let error = + match error with + | Malformed input -> + [ "message", `String "malformed input"; "input", `String input ] + | Insufficient_input -> [ "message", `String "insufficient input" ] + in + Log.msg + "dropping update due to invalid utf8" + (( "changes" + , Json.yojson_of_list TextDocumentContentChangeEvent.yojson_of_t changes ) + :: error)); t - | tdoc -> ( - match t with - | Other o -> Other { o with tdoc } - | Merlin t -> Merlin { t with tdoc }) + | tdoc -> + (match t with + | Other o -> Other { o with tdoc } + | Merlin t -> Merlin { t with tdoc }) +;; module Merlin = struct type t = merlin let to_doc t = Merlin t - let source t = Msource.make (text (Merlin t)) - let timer (t : t) = t.timer let kind t = match t.kind with | Some k -> k | None -> Kind.unsupported (Text_document.documentUri t.tdoc) + ;; let with_pipeline ?name (t : t) f = Single_pipeline.use ?name t.pipeline ~doc:t.tdoc ~config:t.merlin_config ~f + ;; let with_configurable_pipeline ?name ~config (t : t) f = Single_pipeline.use_with_config ?name t.pipeline ~doc:t.tdoc ~config ~f + ;; let mconfig (t : t) = Merlin_config.config t.merlin_config @@ -297,20 +306,22 @@ module Merlin = struct match res with | Ok s -> s | Error exn -> Exn_with_backtrace.reraise exn + ;; let with_configurable_pipeline_exn ?name ~config doc f = let+ res = with_configurable_pipeline ?name ~config doc f in match res with | Ok s -> s | Error exn -> Exn_with_backtrace.reraise exn + ;; let dispatch ?name t command = - with_pipeline ?name t (fun pipeline -> - Query_commands.dispatch pipeline command) + with_pipeline ?name t (fun pipeline -> Query_commands.dispatch pipeline command) + ;; let dispatch_exn ?name t command = - with_pipeline_exn ?name t (fun pipeline -> - Query_commands.dispatch pipeline command) + with_pipeline_exn ?name t (fun pipeline -> Query_commands.dispatch pipeline command) + ;; let doc_comment pipeline pos = let res = @@ -320,6 +331,7 @@ module Merlin = struct match res with | `Found s | `Builtin s -> Some s | _ -> None + ;; let syntax_doc pipeline pos = let res = @@ -329,6 +341,7 @@ module Merlin = struct match res with | `Found s -> Some s | `No_documentation -> None + ;; type type_enclosing = { loc : Loc.t @@ -339,34 +352,34 @@ module Merlin = struct let type_enclosing ?name doc pos verbosity ~with_syntax_doc = with_pipeline_exn ?name doc (fun pipeline -> - let command = Query_protocol.Type_enclosing (None, pos, Some 0) in - let pipeline = - match verbosity with - | 0 -> pipeline - | verbosity -> - let source = source doc in - let config = Mpipeline.final_config pipeline in - let config = - { config with - query = { config.query with verbosity = Lvl verbosity } - } - in - Mpipeline.make config source - in - let res = Query_commands.dispatch pipeline command in - match res with - | [] | (_, `Index _, _) :: _ -> None - | (loc, `String typ, _) :: _ -> - let doc = doc_comment pipeline pos in - let syntax_doc = - match with_syntax_doc with - | true -> syntax_doc pipeline pos - | false -> None + let command = Query_protocol.Type_enclosing (None, pos, Some 0) in + let pipeline = + match verbosity with + | 0 -> pipeline + | verbosity -> + let source = source doc in + let config = Mpipeline.final_config pipeline in + let config = + { config with query = { config.query with verbosity = Lvl verbosity } } in - Some { loc; typ; doc; syntax_doc }) + Mpipeline.make config source + in + let res = Query_commands.dispatch pipeline command in + match res with + | [] | (_, `Index _, _) :: _ -> None + | (loc, `String typ, _) :: _ -> + let doc = doc_comment pipeline pos in + let syntax_doc = + match with_syntax_doc with + | true -> syntax_doc pipeline pos + | false -> None + in + Some { loc; typ; doc; syntax_doc }) + ;; let doc_comment ?name doc pos = with_pipeline_exn ?name doc (fun pipeline -> doc_comment pipeline pos) + ;; end let edit t text_edits = @@ -380,10 +393,12 @@ let edit t text_edits = ~edits:(List.map text_edits ~f:(fun text_edit -> `TextEdit text_edit)) in WorkspaceEdit.create ~documentChanges:[ `TextDocumentEdit edit ] () +;; let kind = function | Merlin merlin -> `Merlin merlin | Other _ -> `Other +;; let merlin_exn t = match kind t with @@ -391,7 +406,8 @@ let merlin_exn t = | `Other -> Code_error.raise "Document.merlin_exn" - [ ("t", Dyn.string @@ DocumentUri.to_string @@ uri t) ] + [ "t", Dyn.string @@ DocumentUri.to_string @@ uri t ] +;; let close t = match t with @@ -400,41 +416,42 @@ let close t = Fiber.fork_and_join_unit (fun () -> Merlin_config.destroy t.merlin_config) (fun () -> Lev_fiber.Timer.Wheel.cancel t.timer) +;; let get_impl_intf_counterparts m uri = let fpath = Uri.to_path uri in let fname = Filename.basename fpath in let ml, mli, eliom, eliomi, re, rei, mll, mly = - ("ml", "mli", "eliom", "eliomi", "re", "rei", "mll", "mly") + "ml", "mli", "eliom", "eliomi", "re", "rei", "mll", "mly" in let exts_to_switch_to = let kind = match m with | Some m -> Merlin.kind m - | None -> ( + | None -> (* still try to guess the kind *) - match Kind.of_fname_opt fpath with - | Some k -> k - | None -> Kind.unsupported uri) + (match Kind.of_fname_opt fpath with + | Some k -> k + | None -> Kind.unsupported uri) in match Syntax.of_fname fname with | Dune | Cram -> [] - | Ocaml -> ( - match kind with - | Intf -> [ ml; mly; mll; eliom; re ] - | Impl -> [ mli; mly; mll; eliomi; rei ]) - | Reason -> ( - match kind with - | Intf -> [ re; ml ] - | Impl -> [ rei; mli ]) + | Ocaml -> + (match kind with + | Intf -> [ ml; mly; mll; eliom; re ] + | Impl -> [ mli; mly; mll; eliomi; rei ]) + | Reason -> + (match kind with + | Intf -> [ re; ml ] + | Impl -> [ rei; mli ]) | Ocamllex -> [ mli; rei ] | Menhir -> [ mli; rei ] in let fpath_w_ext ext = Filename.remove_extension fpath ^ "." ^ ext in let find_switch exts = List.filter_map exts ~f:(fun ext -> - let file_to_switch_to = fpath_w_ext ext in - Option.some_if (Sys.file_exists file_to_switch_to) file_to_switch_to) + let file_to_switch_to = fpath_w_ext ext in + Option.some_if (Sys.file_exists file_to_switch_to) file_to_switch_to) in let files_to_switch_to = match find_switch exts_to_switch_to with @@ -445,9 +462,12 @@ let get_impl_intf_counterparts m uri = | to_switch_to -> to_switch_to in List.map ~f:Uri.of_path files_to_switch_to +;; let substring doc range = let start, end_ = Text_document.absolute_range (tdoc doc) range in let text = text doc in - if start < 0 || start > end_ || end_ > String.length text then None + if start < 0 || start > end_ || end_ > String.length text + then None else Some (String.sub text ~pos:start ~len:(end_ - start)) +;; diff --git a/ocaml-lsp-server/src/document.mli b/ocaml-lsp-server/src/document.mli index 6760c4c38..735bfd659 100644 --- a/ocaml-lsp-server/src/document.mli +++ b/ocaml-lsp-server/src/document.mli @@ -12,7 +12,6 @@ module Syntax : sig | Dune val human_name : t -> string - val markdown_name : t -> string end @@ -30,8 +29,8 @@ module Single_pipeline : sig val create : Lev_fiber.Thread.t -> t end -val make : - Lev_fiber.Timer.Wheel.t +val make + : Lev_fiber.Timer.Wheel.t -> Merlin_config.DB.t -> Single_pipeline.t -> DidOpenTextDocumentParams.t @@ -39,18 +38,14 @@ val make : -> t Fiber.t val uri : t -> Uri.t - val text : t -> string - val source : t -> Msource.t module Merlin : sig type doc := t - type t val source : t -> Msource.t - val timer : t -> Lev_fiber.Timer.Wheel.task (** uses a single pipeline, provisioned by the configuration attached to the @@ -60,26 +55,32 @@ module Merlin : sig (** Like {!val:with_pipeline_exn} but where the merlin configuration is supplied manually. If, for example, it is computed outside the execution of the pipeline.*) - val with_configurable_pipeline_exn : - ?name:string -> config:Mconfig.t -> t -> (Mpipeline.t -> 'a) -> 'a Fiber.t + val with_configurable_pipeline_exn + : ?name:string + -> config:Mconfig.t + -> t + -> (Mpipeline.t -> 'a) + -> 'a Fiber.t - val dispatch : - ?name:string + val dispatch + : ?name:string -> t -> 'a Query_protocol.t -> ('a, Exn_with_backtrace.t) result Fiber.t val dispatch_exn : ?name:string -> t -> 'a Query_protocol.t -> 'a Fiber.t - val doc_comment : - ?name:string + val doc_comment + : ?name:string -> t -> Msource.position -> (* doc string *) string option Fiber.t - val syntax_doc : - Mpipeline.t -> Msource.position -> Query_protocol.syntax_doc_result option + val syntax_doc + : Mpipeline.t + -> Msource.position + -> Query_protocol.syntax_doc_result option type type_enclosing = { loc : Loc.t @@ -88,8 +89,8 @@ module Merlin : sig ; syntax_doc : Query_protocol.syntax_doc_result option } - val type_enclosing : - ?name:string + val type_enclosing + : ?name:string -> t -> Msource.position -> (* verbosity *) int @@ -97,21 +98,14 @@ module Merlin : sig -> type_enclosing option Fiber.t val kind : t -> Kind.t - val to_doc : t -> doc - val mconfig : t -> Mconfig.t Fiber.t end val kind : t -> [ `Merlin of Merlin.t | `Other ] - val merlin_exn : t -> Merlin.t - val version : t -> int - -val update_text : - ?version:int -> t -> TextDocumentContentChangeEvent.t list -> t - +val update_text : ?version:int -> t -> TextDocumentContentChangeEvent.t list -> t val close : t -> unit Fiber.t (** [get_impl_intf_counterparts uri] returns the implementation/interface diff --git a/ocaml-lsp-server/src/document_store.ml b/ocaml-lsp-server/src/document_store.ml index f39a940a8..825e6bb6c 100644 --- a/ocaml-lsp-server/src/document_store.ml +++ b/ocaml-lsp-server/src/document_store.ml @@ -46,9 +46,7 @@ type t = } let make s pool = { db = Table.create (module Uri) 50; server = Server s; pool } - let code_action_id uri = "ocamllsp-promote/" ^ Uri.to_string uri - let method_ = "textDocument/codeAction" let unregister_request t uris = @@ -57,14 +55,15 @@ let unregister_request t uris = | _ :: _ -> let unregisterations = List.map uris ~f:(fun uri -> - let id = code_action_id uri in - Unregistration.create ~id ~method_) + let id = code_action_id uri in + Unregistration.create ~id ~method_) in let (Server server) = t.server in let server = Fdecl.get server in let req = UnregistrationParams.create ~unregisterations in Fiber.Pool.task t.pool ~f:(fun () -> - Server.request server (Server_request.ClientUnregisterCapability req)) + Server.request server (Server_request.ClientUnregisterCapability req)) +;; let register_request t uris = match uris with @@ -72,26 +71,27 @@ let register_request t uris = | _ :: _ -> let registrations = List.map uris ~f:(fun uri -> - let id = code_action_id uri in - let registerOptions = - let documentSelector = - [ `TextDocumentFilter - (TextDocumentFilter.create ~pattern:(Uri.to_path uri) ()) - ] - in - CodeActionRegistrationOptions.create - ~documentSelector - ~codeActionKinds:[ CodeActionKind.Other "Promote" ] - () - |> CodeActionRegistrationOptions.yojson_of_t + let id = code_action_id uri in + let registerOptions = + let documentSelector = + [ `TextDocumentFilter + (TextDocumentFilter.create ~pattern:(Uri.to_path uri) ()) + ] in - Registration.create ~id ~method_ ~registerOptions ()) + CodeActionRegistrationOptions.create + ~documentSelector + ~codeActionKinds:[ CodeActionKind.Other "Promote" ] + () + |> CodeActionRegistrationOptions.yojson_of_t + in + Registration.create ~id ~method_ ~registerOptions ()) in let (Server server) = t.server in let server = Fdecl.get server in let req = RegistrationParams.create ~registrations in Fiber.Pool.task t.pool ~f:(fun () -> - Server.request server (Server_request.ClientRegisterCapability req)) + Server.request server (Server_request.ClientRegisterCapability req)) +;; let open_document t doc = let* () = Fiber.return () in @@ -101,8 +101,7 @@ let open_document t doc = Table.set t.db key - (ref - { document = Some doc; promotions = 0; semantic_tokens_cache = None }); + (ref { document = Some doc; promotions = 0; semantic_tokens_cache = None }); Fiber.return () | Some d -> (* if there's no document, then we just opened it to track promotions. @@ -112,6 +111,7 @@ let open_document t doc = let unregister = !d.document = None in d := { !d with document = Some doc }; if unregister then unregister_request t [ key ] else Fiber.return () +;; let get_opt t uri = Table.find t.db uri |> Option.bind ~f:(fun d -> !d.document) @@ -121,14 +121,11 @@ let no_document_found uri = function Jsonrpc.Response.Error.raise (Jsonrpc.Response.Error.make ~code:InvalidRequest - ~message: - (Format.asprintf - "no document found with uri: %s" - (Uri.to_string uri)) + ~message:(Format.asprintf "no document found with uri: %s" (Uri.to_string uri)) ()) +;; let get' t uri = Table.find t.db uri |> no_document_found uri - let get t uri = !(get' t uri).document |> no_document_found uri let change_document t uri ~f = @@ -136,79 +133,88 @@ let change_document t uri ~f = let document = f (no_document_found uri !doc.document) in doc := { !doc with document = Some document }; document +;; let maybe_close_doc (doc : doc) = match doc.document with | None -> Fiber.return () | Some d -> Document.close d +;; let close_document t uri = Fiber.of_thunk (fun () -> - match Table.find t.db uri with - | None -> Fiber.return () - | Some doc -> - let close_doc () = maybe_close_doc !doc in - if !doc.promotions = 0 then ( - Table.remove t.db uri; - close_doc ()) - else ( - doc := { !doc with document = None }; - Fiber.fork_and_join_unit close_doc (fun () -> - register_request t [ uri ]))) + match Table.find t.db uri with + | None -> Fiber.return () + | Some doc -> + let close_doc () = maybe_close_doc !doc in + if !doc.promotions = 0 + then ( + Table.remove t.db uri; + close_doc ()) + else ( + doc := { !doc with document = None }; + Fiber.fork_and_join_unit close_doc (fun () -> register_request t [ uri ]))) +;; let unregister_promotions t uris = let* () = Fiber.return () in List.filter uris ~f:(fun uri -> - match Table.find t.db uri with - | None -> false - | Some doc -> - doc := { !doc with promotions = !doc.promotions - 1 }; - let unsubscribe = !doc.promotions = 0 in - if unsubscribe && !doc.document = None then Table.remove t.db uri; - unsubscribe) + match Table.find t.db uri with + | None -> false + | Some doc -> + doc := { !doc with promotions = !doc.promotions - 1 }; + let unsubscribe = !doc.promotions = 0 in + if unsubscribe && !doc.document = None then Table.remove t.db uri; + unsubscribe) |> unregister_request t +;; let register_promotions t uris = let* () = Fiber.return () in List.filter uris ~f:(fun uri -> - match Table.find t.db uri with - | None -> - let doc = - ref { document = None; promotions = 0; semantic_tokens_cache = None } - in - Table.set t.db uri doc; - true - | Some doc -> - doc := { !doc with promotions = !doc.promotions + 1 }; - false) + match Table.find t.db uri with + | None -> + let doc = ref { document = None; promotions = 0; semantic_tokens_cache = None } in + Table.set t.db uri doc; + true + | Some doc -> + doc := { !doc with promotions = !doc.promotions + 1 }; + false) |> register_request t +;; -let update_semantic_tokens_cache : - t -> Uri.t -> resultId:string -> tokens:int array -> unit = - fun t uri ~resultId ~tokens -> +let update_semantic_tokens_cache + : t -> Uri.t -> resultId:string -> tokens:int array -> unit + = + fun t uri ~resultId ~tokens -> let doc = get' t uri in !doc.semantic_tokens_cache <- Some { resultId; tokens } +;; let get_semantic_tokens_cache : t -> Uri.t -> semantic_tokens_cache option = - fun t uri -> + fun t uri -> let doc = get' t uri in !doc.semantic_tokens_cache +;; let parallel_iter t ~f = let all = Table.fold ~init:[] t.db ~f:(fun doc acc -> doc :: acc) in Fiber.parallel_iter all ~f:(fun doc -> - match !doc.document with - | None -> Fiber.return () - | Some document -> f document) + match !doc.document with + | None -> Fiber.return () + | Some document -> f document) +;; let fold t ~init ~f = Table.fold t.db ~init ~f:(fun doc acc -> - match !doc.document with - | None -> acc - | Some x -> f x acc) + match !doc.document with + | None -> acc + | Some x -> f x acc) +;; let close_all t = Fiber.of_thunk (fun () -> - let docs = Table.fold t.db ~init:[] ~f:(fun doc acc -> !doc :: acc) in - Table.clear t.db; - Fiber.parallel_iter docs ~f:maybe_close_doc) + let docs = Table.fold t.db ~init:[] ~f:(fun doc acc -> !doc :: acc) in + Table.clear t.db; + Fiber.parallel_iter docs ~f:maybe_close_doc) +;; diff --git a/ocaml-lsp-server/src/document_store.mli b/ocaml-lsp-server/src/document_store.mli index f19fd4d68..9b98abca5 100644 --- a/ocaml-lsp-server/src/document_store.mli +++ b/ocaml-lsp-server/src/document_store.mli @@ -8,28 +8,22 @@ type semantic_tokens_cache = } val make : _ Server.t Fdecl.t -> Fiber.Pool.t -> t - val open_document : t -> Document.t -> unit Fiber.t - val change_document : t -> Uri.t -> f:(Document.t -> Document.t) -> Document.t - val get : t -> Uri.t -> Document.t - val get_opt : t -> Uri.t -> Document.t option - val unregister_promotions : t -> Uri.t list -> unit Fiber.t - val register_promotions : t -> Uri.t list -> unit Fiber.t -val update_semantic_tokens_cache : - t -> Uri.t -> resultId:string -> tokens:int array -> unit +val update_semantic_tokens_cache + : t + -> Uri.t + -> resultId:string + -> tokens:int array + -> unit val get_semantic_tokens_cache : t -> Uri.t -> semantic_tokens_cache option - val close_document : t -> Uri.t -> unit Fiber.t - val fold : t -> init:'acc -> f:(Document.t -> 'acc -> 'acc) -> 'acc - val parallel_iter : t -> f:(Document.t -> unit Fiber.t) -> unit Fiber.t - val close_all : t -> unit Fiber.t diff --git a/ocaml-lsp-server/src/document_symbol.ml b/ocaml-lsp-server/src/document_symbol.ml index 9f8ed72b7..5858b6735 100644 --- a/ocaml-lsp-server/src/document_symbol.ml +++ b/ocaml-lsp-server/src/document_symbol.ml @@ -6,16 +6,17 @@ let core_type_to_string typ = Pprintast.core_type Format.str_formatter typ; Format.flush_str_formatter () |> String.map ~f:(function - | '\n' -> ' ' - | c -> c) + | '\n' -> ' ' + | c -> c) +;; let pattern_to_string pat = ignore (Format.flush_str_formatter ()); Pprintast.pattern Format.str_formatter pat; Format.flush_str_formatter () +;; -let type_document_symbol (decl : Parsetree.type_declaration) : DocumentSymbol.t - = +let type_document_symbol (decl : Parsetree.type_declaration) : DocumentSymbol.t = let kind : SymbolKind.t = match decl.ptype_kind with | Ptype_variant _ -> Enum @@ -25,21 +26,21 @@ let type_document_symbol (decl : Parsetree.type_declaration) : DocumentSymbol.t match decl.ptype_kind with | Ptype_variant decls -> List.map decls ~f:(fun (decl : Parsetree.constructor_declaration) -> - DocumentSymbol.create - ~kind:EnumMember - ~name:decl.pcd_name.txt - ~range:(Range.of_loc decl.pcd_loc) - ~selectionRange:(Range.of_loc decl.pcd_name.loc) - ()) + DocumentSymbol.create + ~kind:EnumMember + ~name:decl.pcd_name.txt + ~range:(Range.of_loc decl.pcd_loc) + ~selectionRange:(Range.of_loc decl.pcd_name.loc) + ()) | Ptype_record fields -> List.map fields ~f:(fun (field : Parsetree.label_declaration) -> - DocumentSymbol.create - ~kind:Field - ~name:field.pld_name.txt - ~detail:(core_type_to_string field.pld_type) - ~range:(Range.of_loc field.pld_loc) - ~selectionRange:(Range.of_loc field.pld_name.loc) - ()) + DocumentSymbol.create + ~kind:Field + ~name:field.pld_name.txt + ~detail:(core_type_to_string field.pld_type) + ~range:(Range.of_loc field.pld_loc) + ~selectionRange:(Range.of_loc field.pld_name.loc) + ()) | _ -> [] in DocumentSymbol.create @@ -49,22 +50,19 @@ let type_document_symbol (decl : Parsetree.type_declaration) : DocumentSymbol.t ~selectionRange:(Range.of_loc decl.ptype_loc) ~children () +;; -let longident_to_string lident = - String.concat ~sep:"." (Longident.flatten lident) +let longident_to_string lident = String.concat ~sep:"." (Longident.flatten lident) -let type_ext_document_symbol (ext : Parsetree.type_extension) : DocumentSymbol.t - = +let type_ext_document_symbol (ext : Parsetree.type_extension) : DocumentSymbol.t = let children = - List.map - ext.ptyext_constructors - ~f:(fun (ext : Parsetree.extension_constructor) -> - DocumentSymbol.create - ~name:ext.pext_name.txt - ~kind:EnumMember - ~range:(Range.of_loc ext.pext_loc) - ~selectionRange:(Range.of_loc ext.pext_loc) - ()) + List.map ext.ptyext_constructors ~f:(fun (ext : Parsetree.extension_constructor) -> + DocumentSymbol.create + ~name:ext.pext_name.txt + ~kind:EnumMember + ~range:(Range.of_loc ext.pext_loc) + ~selectionRange:(Range.of_loc ext.pext_loc) + ()) in let range = List.fold_left @@ -90,6 +88,7 @@ let type_ext_document_symbol (ext : Parsetree.type_extension) : DocumentSymbol.t ~selectionRange:(Range.of_loc ext.ptyext_path.loc) ~children () +;; let value_document_symbol (value : Parsetree.value_description) = let kind : SymbolKind.t = @@ -104,9 +103,9 @@ let value_document_symbol (value : Parsetree.value_description) = ~range:(Range.of_loc value.pval_loc) ~selectionRange:(Range.of_loc value.pval_name.loc) () +;; -let module_decl_document_symbol (pmod : Parsetree.module_declaration) ~children - = +let module_decl_document_symbol (pmod : Parsetree.module_declaration) ~children = DocumentSymbol.create ~name:(Option.value pmod.pmd_name.txt ~default:"_") ~kind:Module @@ -114,9 +113,9 @@ let module_decl_document_symbol (pmod : Parsetree.module_declaration) ~children ~selectionRange:(Range.of_loc pmod.pmd_name.loc) ~children () +;; -let module_type_decl_symbol (decl : Parsetree.module_type_declaration) ~children - = +let module_type_decl_symbol (decl : Parsetree.module_type_declaration) ~children = DocumentSymbol.create ~name:decl.pmtd_name.txt ~kind:Interface @@ -124,6 +123,7 @@ let module_type_decl_symbol (decl : Parsetree.module_type_declaration) ~children ~selectionRange:(Range.of_loc decl.pmtd_name.loc) ~children () +;; let module_binding_document_symbol (pmod : Parsetree.module_binding) ~children = DocumentSymbol.create @@ -133,9 +133,14 @@ let module_binding_document_symbol (pmod : Parsetree.module_binding) ~children = ~selectionRange:(Range.of_loc pmod.pmb_name.loc) ~children () +;; -let binding_document_symbol (binding : Parsetree.value_binding) ~ppx - ~is_top_level ~children = +let binding_document_symbol + (binding : Parsetree.value_binding) + ~ppx + ~is_top_level + ~children + = let variables_in_pattern (pattern : Parsetree.pattern) = let symbols = ref [] in let pat (iterator : Ast_iterator.iterator) (pattern : Parsetree.pattern) = @@ -158,21 +163,20 @@ let binding_document_symbol (binding : Parsetree.value_binding) ~ppx in let name = match binding.pvb_pat.ppat_desc with - | Ppat_var name - | Ppat_extension (_, PPat ({ ppat_desc = Ppat_var name; _ }, _)) -> + | Ppat_var name | Ppat_extension (_, PPat ({ ppat_desc = Ppat_var name; _ }, _)) -> `Parent name.txt - | _ -> ( - match (is_top_level, children) with - | true, [] | false, _ -> `Variables (variables_in_pattern binding.pvb_pat) - | true, _ :: _ -> ( - match ppx with - | Some ppx -> `Parent (ppx ^ ": " ^ pattern_to_string binding.pvb_pat) - | None -> `Parent (pattern_to_string binding.pvb_pat))) + | _ -> + (match is_top_level, children with + | true, [] | false, _ -> `Variables (variables_in_pattern binding.pvb_pat) + | true, _ :: _ -> + (match ppx with + | Some ppx -> `Parent (ppx ^ ": " ^ pattern_to_string binding.pvb_pat) + | None -> `Parent (pattern_to_string binding.pvb_pat))) in match name with | `Parent name -> let kind : SymbolKind.t = - match (ppx, binding.pvb_expr.pexp_desc) with + match ppx, binding.pvb_expr.pexp_desc with | None, (Pexp_function _ | Pexp_fun _ | Pexp_newtype _) -> Function | Some _, _ -> Property | _ -> Variable @@ -196,22 +200,22 @@ let binding_document_symbol (binding : Parsetree.value_binding) ~ppx () ] | `Variables symbols -> symbols @ children +;; let symbols_from_parsetree parsetree = let current = ref [] in - let descend (iter : unit -> unit) - (get_current_symbol : children:DocumentSymbol.t list -> DocumentSymbol.t) - = + let descend + (iter : unit -> unit) + (get_current_symbol : children:DocumentSymbol.t list -> DocumentSymbol.t) + = let outer = !current in current := []; iter (); current := outer @ [ get_current_symbol ~children:!current ] in - let signature_item (iterator : Ast_iterator.iterator) - (item : Parsetree.signature_item) = + let signature_item (iterator : Ast_iterator.iterator) (item : Parsetree.signature_item) = match item.psig_desc with - | Psig_type (_, decls) -> - current := !current @ List.map decls ~f:type_document_symbol + | Psig_type (_, decls) -> current := !current @ List.map decls ~f:type_document_symbol | Psig_typext ext -> current := !current @ [ type_ext_document_symbol ext ] | Psig_value value -> current := !current @ [ value_document_symbol value ] | Psig_module pmd -> @@ -222,45 +226,37 @@ let symbols_from_parsetree parsetree = List.iter modules ~f:(iterator.module_declaration iterator) | Psig_modtype decl -> descend - (fun () -> - Ast_iterator.default_iterator.module_type_declaration iterator decl) + (fun () -> Ast_iterator.default_iterator.module_type_declaration iterator decl) (module_type_decl_symbol decl) | _ -> Ast_iterator.default_iterator.signature_item iterator item in - let rec structure_item ~ppx (iterator : Ast_iterator.iterator) - (item : Parsetree.structure_item) = + let rec structure_item + ~ppx + (iterator : Ast_iterator.iterator) + (item : Parsetree.structure_item) + = match item.pstr_desc with - | Pstr_type (_, decls) -> - current := !current @ List.map decls ~f:type_document_symbol + | Pstr_type (_, decls) -> current := !current @ List.map decls ~f:type_document_symbol | Pstr_typext ext -> current := !current @ [ type_ext_document_symbol ext ] | Pstr_module pmod -> descend (fun () -> iterator.module_expr iterator pmod.pmb_expr) (module_binding_document_symbol pmod) - | Pstr_recmodule modules -> - List.iter modules ~f:(iterator.module_binding iterator) + | Pstr_recmodule modules -> List.iter modules ~f:(iterator.module_binding iterator) | Pstr_modtype decl -> descend - (fun () -> - Ast_iterator.default_iterator.module_type_declaration iterator decl) + (fun () -> Ast_iterator.default_iterator.module_type_declaration iterator decl) (module_type_decl_symbol decl) | Pstr_value (_, bindings) -> let outer = !current in - current := - outer - @ List.concat_map - bindings - ~f:(fun (binding : Parsetree.value_binding) -> - current := []; - iterator.expr iterator binding.pvb_expr; - binding_document_symbol - binding - ~ppx - ~is_top_level:true - ~children:!current) + current + := outer + @ List.concat_map bindings ~f:(fun (binding : Parsetree.value_binding) -> + current := []; + iterator.expr iterator binding.pvb_expr; + binding_document_symbol binding ~ppx ~is_top_level:true ~children:!current) | Pstr_extension ((name, PStr items), _) -> - List.iter items ~f:(fun item -> - structure_item ~ppx:(Some name.txt) iterator item) + List.iter items ~f:(fun item -> structure_item ~ppx:(Some name.txt) iterator item) | _ -> Ast_iterator.default_iterator.structure_item iterator item in let expr (iterator : Ast_iterator.iterator) (item : Parsetree.expression) = @@ -269,13 +265,9 @@ let symbols_from_parsetree parsetree = let outer = !current in let bindings = List.concat_map bindings ~f:(fun (binding : Parsetree.value_binding) -> - current := []; - iterator.expr iterator binding.pvb_expr; - binding_document_symbol - binding - ~ppx:None - ~is_top_level:false - ~children:!current) + current := []; + iterator.expr iterator binding.pvb_expr; + binding_document_symbol binding ~ppx:None ~is_top_level:false ~children:!current) in current := outer @ bindings; iterator.expr iterator inner @@ -294,48 +286,47 @@ let symbols_from_parsetree parsetree = | `Implementation structure -> iterator.structure iterator structure in !current +;; -let rec flatten_document_symbols ~uri ~container_name - (symbols : DocumentSymbol.t list) = +let rec flatten_document_symbols ~uri ~container_name (symbols : DocumentSymbol.t list) = List.concat_map symbols ~f:(fun symbol -> - let symbol_information = - SymbolInformation.create - ?containerName:container_name - ~kind:symbol.kind - ~location:{ range = symbol.range; uri } - ~name:symbol.name - () - in - let children = - flatten_document_symbols - ~uri - ~container_name:(Some symbol.name) - (Option.value symbol.children ~default:[]) - in - symbol_information :: children) + let symbol_information = + SymbolInformation.create + ?containerName:container_name + ~kind:symbol.kind + ~location:{ range = symbol.range; uri } + ~name:symbol.name + () + in + let children = + flatten_document_symbols + ~uri + ~container_name:(Some symbol.name) + (Option.value symbol.children ~default:[]) + in + symbol_information :: children) +;; let run (client_capabilities : ClientCapabilities.t) doc uri = match Document.kind doc with | `Other -> Fiber.return None - | `Merlin _ -> ( + | `Merlin _ -> let+ symbols = Document.Merlin.with_pipeline_exn ~name:"document-symbols" (Document.merlin_exn doc) - (fun pipeline -> - Mpipeline.reader_parsetree pipeline |> symbols_from_parsetree) + (fun pipeline -> Mpipeline.reader_parsetree pipeline |> symbols_from_parsetree) in - match - Option.value - ~default:false - (let open Option.O in - let* textDocument = client_capabilities.textDocument in - let* ds = textDocument.documentSymbol in - ds.hierarchicalDocumentSymbolSupport) - with - | true -> Some (`DocumentSymbol symbols) - | false -> - let flattened = - flatten_document_symbols ~uri ~container_name:None symbols - in - Some (`SymbolInformation flattened)) + (match + Option.value + ~default:false + (let open Option.O in + let* textDocument = client_capabilities.textDocument in + let* ds = textDocument.documentSymbol in + ds.hierarchicalDocumentSymbolSupport) + with + | true -> Some (`DocumentSymbol symbols) + | false -> + let flattened = flatten_document_symbols ~uri ~container_name:None symbols in + Some (`SymbolInformation flattened)) +;; diff --git a/ocaml-lsp-server/src/document_symbol.mli b/ocaml-lsp-server/src/document_symbol.mli index 1df4ca337..6efd8f058 100644 --- a/ocaml-lsp-server/src/document_symbol.mli +++ b/ocaml-lsp-server/src/document_symbol.mli @@ -1,11 +1,11 @@ open Import -val run : - ClientCapabilities.t +val run + : ClientCapabilities.t -> Document.t -> Uri.t -> [> `DocumentSymbol of DocumentSymbol.t list | `SymbolInformation of SymbolInformation.t list ] - option - Fiber.t + option + Fiber.t diff --git a/ocaml-lsp-server/src/document_text_command.ml b/ocaml-lsp-server/src/document_text_command.ml index c058d01de..c9ea09068 100644 --- a/ocaml-lsp-server/src/document_text_command.ml +++ b/ocaml-lsp-server/src/document_text_command.ml @@ -9,9 +9,7 @@ let command_run server store args = | Some [ `String arg ] -> arg | _ -> assert false in - let doc = - Document_store.get store (Uri.t_of_yojson (`String uri)) |> Document.text - in + let doc = Document_store.get store (Uri.t_of_yojson (`String uri)) |> Document.text in let uri, chan = Filename.open_temp_file (sprintf "ocamllsp-document.%d" (Unix.getpid ())) @@ -21,8 +19,8 @@ let command_run server store args = close_out_noerr chan; let req = let uri = Uri.of_path uri in - Server_request.ShowDocumentRequest - (ShowDocumentParams.create ~uri ~takeFocus:true ()) + Server_request.ShowDocumentRequest (ShowDocumentParams.create ~uri ~takeFocus:true ()) in let+ { ShowDocumentResult.success = _ } = Server.request server req in () +;; diff --git a/ocaml-lsp-server/src/document_text_command.mli b/ocaml-lsp-server/src/document_text_command.mli index 6e3622d89..e24c0920d 100644 --- a/ocaml-lsp-server/src/document_text_command.mli +++ b/ocaml-lsp-server/src/document_text_command.mli @@ -1,6 +1,4 @@ open Import val command_name : string - -val command_run : - _ Server.t -> Document_store.t -> Json.t list option -> unit Fiber.t +val command_run : _ Server.t -> Document_store.t -> Json.t list option -> unit Fiber.t diff --git a/ocaml-lsp-server/src/dune.ml b/ocaml-lsp-server/src/dune.ml index 10be676cb..7df41aa60 100644 --- a/ocaml-lsp-server/src/dune.ml +++ b/ocaml-lsp-server/src/dune.ml @@ -2,7 +2,7 @@ open! Import open Fiber.O module Registry = Drpc.Registry -let view_promotion_capability = ("diagnostic_promotions", `Bool true) +let view_promotion_capability = "diagnostic_promotions", `Bool true module For_diff = struct module Diff = struct @@ -14,30 +14,26 @@ module For_diff = struct let of_promotion p = let module D = Drpc.Diagnostic in { in_build = D.Promotion.in_build p; in_source = D.Promotion.in_source p } + ;; let yojson_of_t { in_source; in_build } = - `Assoc - [ ("in_build", `String in_build); ("in_source", `String in_source) ] + `Assoc [ "in_build", `String in_build; "in_source", `String in_source ] + ;; end type t = Diff.t list let yojson_of_t : t -> Json.t = Json.yojson_of_list Diff.yojson_of_t - - let diagnostic_data t = (fst view_promotion_capability, yojson_of_t t) + let diagnostic_data t = fst view_promotion_capability, yojson_of_t t end module Chan : sig type t val create : Lev_fiber_csexp.Session.t -> t - val write : t -> Csexp.t list option -> unit Fiber.t - val read : t -> Csexp.t option Fiber.t - val stop : t -> unit Fiber.t - val run : t -> unit Fiber.t end = struct open Fiber.O @@ -50,11 +46,13 @@ end = struct let stop t = let+ () = Fiber.return () in Lev_fiber_csexp.Session.close t.session + ;; let write t sexp = match sexp with | None -> stop t | Some sexp -> Lev_fiber_csexp.Session.write t.session sexp + ;; let read t = let* read = Lev_fiber_csexp.Session.read t.session in @@ -63,10 +61,12 @@ end = struct | None -> let+ () = Fiber.Ivar.fill t.finished () in read + ;; let create session = let finished = Fiber.Ivar.create () in { session; finished } + ;; let run t = Fiber.Ivar.read t.finished end @@ -79,6 +79,7 @@ module Client = let parallel_iter t ~f = let stream = Fiber.Stream.In.create t in Fiber.Stream.In.parallel_iter stream ~f + ;; end) (Chan) @@ -88,18 +89,20 @@ module Poll = (struct let scandir s = Fiber.of_thunk (fun () -> - Fiber.return - (match Sys.readdir s with - | s -> Ok (Array.to_list s) - | exception Sys_error _ -> Ok [] - | exception exn -> Error exn)) + Fiber.return + (match Sys.readdir s with + | s -> Ok (Array.to_list s) + | exception Sys_error _ -> Ok [] + | exception exn -> Error exn)) + ;; let is_414 = String.is_prefix Sys.ocaml_version ~prefix:"4.14.0" let stat s = let+ () = Fiber.return () in match - if Sys.win32 && is_414 && not (Sys.file_exists s) then + if Sys.win32 && is_414 && not (Sys.file_exists s) + then (* Mitigate issue ocaml/ocaml#11737; see ocaml/ocaml-lsp#929. Should be reverted as soon as "ocaml 4.14.0" is no longer supported. *) raise (Unix.Unix_error (ENOENT, "stat", s)) @@ -107,11 +110,12 @@ module Poll = with | exception exn -> Error exn | s -> Ok (`Mtime s.st_mtime) + ;; let read_file s = Fiber.of_thunk (fun () -> - Fiber.return - (Result.try_with (fun () -> Io.String_path.read_file s))) + Fiber.return (Result.try_with (fun () -> Io.String_path.read_file s))) + ;; end) type config = @@ -126,19 +130,12 @@ module Instance : sig type t val format_dune_file : t -> Document.t -> string Fiber.t - val stop : t -> unit Fiber.t - val run : t -> unit Fiber.t - val connect : t -> (unit, unit) result Fiber.t - val source : t -> Registry.Dune.t - val create : Registry.Dune.t -> config -> t - val promotions : t -> Drpc.Diagnostic.Promotion.t String.Map.t - val client : t -> Client.t option end = struct module Id = Stdune.Id.Make () @@ -170,11 +167,13 @@ end = struct match t.state with | Connected _ | Idle | Finished -> None | Running r -> r.client + ;; let promotions t = match t.state with | Connected _ | Idle | Finished -> String.Map.empty | Running r -> r.promotions + ;; let source t = t.source @@ -196,41 +195,39 @@ end = struct let severity = D.severity diagnostic |> Option.map ~f:(function - | D.Error -> DiagnosticSeverity.Error - | Warning -> DiagnosticSeverity.Warning) - in - let make_message message = - String.trim (Format.asprintf "%a@." Pp.to_fmt message) + | D.Error -> DiagnosticSeverity.Error + | Warning -> DiagnosticSeverity.Warning) in + let make_message message = String.trim (Format.asprintf "%a@." Pp.to_fmt message) in let relatedInformation = match D.related diagnostic with | [] -> None | related -> Some (List.map related ~f:(fun related -> - let message = make_message (D.Related.message related) in - let loc = D.Related.loc related in - let uri = - let start = Drpc.Loc.start loc in - Uri.of_path start.pos_fname - in - let location = - let range = range_of_loc loc in - Location.create ~uri ~range - in - DiagnosticRelatedInformation.create ~location ~message)) + let message = make_message (D.Related.message related) in + let loc = D.Related.loc related in + let uri = + let start = Drpc.Loc.start loc in + Uri.of_path start.pos_fname + in + let location = + let range = range_of_loc loc in + Location.create ~uri ~range + in + DiagnosticRelatedInformation.create ~location ~message)) in let message = make_message (D.message diagnostic) in let tags = Diagnostics.tags_of_message diagnostics ~src:`Dune message in let data = match include_promotions with | false -> None - | true -> ( - match D.promotion diagnostic with - | [] -> None - | promotions -> - let promotions = List.map promotions ~f:For_diff.Diff.of_promotion in - Some (`Assoc [ For_diff.diagnostic_data promotions ])) + | true -> + (match D.promotion diagnostic with + | [] -> None + | promotions -> + let promotions = List.map promotions ~f:For_diff.Diff.of_promotion in + Some (`Assoc [ For_diff.diagnostic_data promotions ])) in Diagnostic.create ?relatedInformation @@ -241,6 +238,7 @@ end = struct ?tags ?data () + ;; let progress_loop client diagnostics document_store progress = (* We get all the progress updates even if the user can't see them to @@ -252,27 +250,28 @@ end = struct | Error v -> raise (Drpc.Version_error.E v) | Ok poll -> Fiber.repeat_while ~init:() ~f:(fun () -> - let* res = Client.Stream.next poll in - match res with - | None -> Fiber.return None - | Some p -> - let+ () = - Fiber.fork_and_join_unit - (fun () -> Progress.build_progress progress p) - (fun () -> - match p with - | Failed | Interrupted | Success -> - let* () = - Document_store.parallel_iter document_store ~f:(fun doc -> - match Document.kind doc with - | `Other -> Fiber.return () - | `Merlin merlin -> - Diagnostics.merlin_diagnostics diagnostics merlin) - in - Diagnostics.send diagnostics `All - | _ -> Fiber.return ()) - in - Some ()) + let* res = Client.Stream.next poll in + match res with + | None -> Fiber.return None + | Some p -> + let+ () = + Fiber.fork_and_join_unit + (fun () -> Progress.build_progress progress p) + (fun () -> + match p with + | Failed | Interrupted | Success -> + let* () = + Document_store.parallel_iter document_store ~f:(fun doc -> + match Document.kind doc with + | `Other -> Fiber.return () + | `Merlin merlin -> + Diagnostics.merlin_diagnostics diagnostics merlin) + in + Diagnostics.send diagnostics `All + | _ -> Fiber.return ()) + in + Some ()) + ;; let diagnostic_loop ~dune_root client config (running : running) diagnostics = let* res = Client.poll client Drpc.Sub.diagnostic in @@ -296,42 +295,33 @@ end = struct promotion ~init:(promotions, []) ~f:(fun (ps, acc) promotion -> - let source = - Drpc.Diagnostic.Promotion.in_source promotion - in + let source = Drpc.Diagnostic.Promotion.in_source promotion in match String.Map.find ps source with - | Some _ -> (String.Map.remove ps source, promotion :: acc) + | Some _ -> String.Map.remove ps source, promotion :: acc | None -> Log.log ~section:"warning" (fun () -> - Log.msg - "removing non existant promotion" - [ ( "promotion" - , `String - (Drpc.Diagnostic.Promotion.in_source - promotion) ) - ]); - (ps, acc)) + Log.msg + "removing non existant promotion" + [ ( "promotion" + , `String (Drpc.Diagnostic.Promotion.in_source promotion) ) + ]); + ps, acc) in - Diagnostics.remove - diagnostics - (`Dune (running.diagnostics_id, id)); - (promotions, add, requests :: remove) + Diagnostics.remove diagnostics (`Dune (running.diagnostics_id, id)); + promotions, add, requests :: remove | Add d -> let promotions, requests = List.fold_left promotion ~init:(promotions, []) ~f:(fun (ps, acc) promotion -> - let source = - Drpc.Diagnostic.Promotion.in_source promotion - in + let source = Drpc.Diagnostic.Promotion.in_source promotion in match String.Map.find ps source with | Some _ -> (* TODO it should not be possible to offer more than one promotion for a file in dune *) assert false - | None -> - (String.Map.add_exn ps source promotion, promotion :: acc)) + | None -> String.Map.add_exn ps source promotion, promotion :: acc) in let uri : Uri.t = match Drpc.Diagnostic.loc d with @@ -350,53 +340,51 @@ end = struct diagnostics ~include_promotions:config.include_promotions d )); - (promotions, requests :: add, remove)) + promotions, requests :: add, remove) in - (promotions, List.flatten add, List.flatten remove) + promotions, List.flatten add, List.flatten remove in match res with | Error v -> raise (Drpc.Version_error.E v) | Ok poll -> Fiber.repeat_while ~init:() ~f:(fun () -> - let* res = Client.Stream.next poll in - match res with - | None -> Fiber.return None - | Some p -> - let promotions, add, remove = send_diagnostics p in - let uris = - List.rev_map ~f:(fun promotion -> - Drpc.Diagnostic.Promotion.in_source promotion |> Uri.of_path) - in - running.promotions <- promotions; - let* () = Diagnostics.send diagnostics `All in - let+ () = - Fiber.fork_and_join_unit - (fun () -> - Document_store.unregister_promotions - config.document_store - (uris remove)) - (fun () -> - Document_store.register_promotions - config.document_store - (uris add)) - in - Some ()) + let* res = Client.Stream.next poll in + match res with + | None -> Fiber.return None + | Some p -> + let promotions, add, remove = send_diagnostics p in + let uris = + List.rev_map ~f:(fun promotion -> + Drpc.Diagnostic.Promotion.in_source promotion |> Uri.of_path) + in + running.promotions <- promotions; + let* () = Diagnostics.send diagnostics `All in + let+ () = + Fiber.fork_and_join_unit + (fun () -> + Document_store.unregister_promotions config.document_store (uris remove)) + (fun () -> + Document_store.register_promotions config.document_store (uris add)) + in + Some ()) + ;; let stop t = match t.state with | Running { chan; _ } -> Chan.stop chan | _ -> Fiber.return () + ;; let create source config = { config; source; state = Idle } let connect ({ config; source; _ } as t) = let* () = Fiber.of_thunk (fun () -> - assert ( - match t.state with - | Idle -> true - | _ -> false); - Fiber.return ()) + assert ( + match t.state with + | Idle -> true + | _ -> false); + Fiber.return ()) in let where = Registry.Dune.where source in let sockaddr = @@ -415,8 +403,7 @@ end = struct (fun () -> Lev_fiber_csexp.connect sock sockaddr) ~on_error:(fun exn -> match exn with - | { Exn_with_backtrace.exn = - Unix.Unix_error ((ECONNREFUSED | ENOENT), _, _) + | { Exn_with_backtrace.exn = Unix.Unix_error ((ECONNREFUSED | ENOENT), _, _) ; _ } -> Fiber.return [] | _ -> Fiber.return [ exn ]) @@ -446,19 +433,20 @@ end = struct "Connected to dune %s (%s)" (Registry.Dune.root source) (match Registry.Dune.where source with - | `Unix s -> s - | `Ip (`Host h, `Port p) -> sprintf "%s:%d" h p) + | `Unix s -> s + | `Ip (`Host h, `Port p) -> sprintf "%s:%d" h p) in config.log ~type_:Info ~message in t.state <- Connected (session, where); Fiber.return (Ok ()) + ;; let run ({ config; source; _ } as t) = let* () = Fiber.return () in let session, where = match t.state with - | Connected (session, where) -> (session, where) + | Connected (session, where) -> session, where | _ -> assert false in let chan = Chan.create session in @@ -468,18 +456,12 @@ end = struct ; finish ; promotions = String.Map.empty ; client = None - ; diagnostics_id = - Diagnostics.Dune.gen (Pid.of_int (Registry.Dune.pid source)) + ; diagnostics_id = Diagnostics.Dune.gen (Pid.of_int (Registry.Dune.pid source)) ; id = Id.gen () } in t.state <- Running running; - let { progress - ; diagnostics - ; include_promotions = _ - ; log = _ - ; document_store - } = + let { progress; diagnostics; include_promotions = _; log = _; document_store } = config in let* () = @@ -492,10 +474,7 @@ end = struct ; (let init = let id = Drpc.Id.make - (List - [ Atom "ocamllsp" - ; Atom (Int.to_string (Id.to_int running.id)) - ]) + (List [ Atom "ocamllsp"; Atom (Int.to_string (Id.to_int running.id)) ]) in Drpc.Initialize.create ~id in @@ -505,45 +484,34 @@ end = struct | `Ip (`Host h, `Port p) -> sprintf "%s:%d" h p in let* () = - let message = - sprintf "client %d: connecting..." (Id.to_int running.id) - in + let message = sprintf "client %d: connecting..." (Id.to_int running.id) in config.log ~type_:Info ~message in (* TODO put timeouts establishing a connection *) Client.connect chan init ~f:(fun client -> - running.client <- Some client; - t.state <- Running running; - let* () = - let message = - sprintf - "client %d: connected to dune at %s" - (Id.to_int running.id) - where - in - config.log ~type_:Info ~message + running.client <- Some client; + t.state <- Running running; + let* () = + let message = + sprintf "client %d: connected to dune at %s" (Id.to_int running.id) where in - let progress = - progress_loop client diagnostics document_store progress - in - let diagnostics = - let dune_root = - DocumentUri.of_path (Registry.Dune.root source) - in - diagnostic_loop ~dune_root client config running diagnostics - in - Fiber.all_concurrently_unit - [ progress; diagnostics; Fiber.Ivar.read finish ])) + config.log ~type_:Info ~message + in + let progress = progress_loop client diagnostics document_store progress in + let diagnostics = + let dune_root = DocumentUri.of_path (Registry.Dune.root source) in + diagnostic_loop ~dune_root client config running diagnostics + in + Fiber.all_concurrently_unit [ progress; diagnostics; Fiber.Ivar.read finish ])) ] in Progress.end_build_if_running progress + ;; let format_dune_file t doc = match t.state with - | Running { client = Some client; _ } -> ( - let* req = - Client.Versioned.prepare_request client Drpc.Request.format_dune_file - in + | Running { client = Some client; _ } -> + let* req = Client.Versioned.prepare_request client Drpc.Request.format_dune_file in let req = match req with | Error _ -> assert false @@ -553,12 +521,13 @@ end = struct let path = Document.uri doc |> Uri.to_path |> Drpc.Path.absolute in Client.request client req (path, `Contents (Document.text doc)) in - match res with - | Ok res -> res - | Error _ -> - Jsonrpc.Response.Error.( - raise (make ~message:"dune failed to format" ~code:InternalError ()))) + (match res with + | Ok res -> res + | Error _ -> + Jsonrpc.Response.Error.( + raise (make ~message:"dune failed to format" ~code:InternalError ()))) | Connected _ | Idle | Finished | Running _ -> assert false + ;; end module Dune_map = Map.Make (Registry.Dune) @@ -579,57 +548,59 @@ let uri_dune_overlap = All of this is really hacky and error prone. We should let the user associate dune instances with workspace folders somehow *) let is_dir_sep = - if Sys.win32 || Sys.cygwin then fun c -> c = '/' || c = '\\' || c = ':' + if Sys.win32 || Sys.cygwin + then fun c -> c = '/' || c = '\\' || c = ':' else fun c -> c = '/' in let explode_path = let rec start acc path i = - if i < 0 then acc - else if is_dir_sep (String.unsafe_get path i) then start acc path (i - 1) + if i < 0 + then acc + else if is_dir_sep (String.unsafe_get path i) + then start acc path (i - 1) else component acc path i (i - 1) and component acc path end_ i = - if i < 0 then String.take path (end_ + 1) :: acc - else if is_dir_sep (String.unsafe_get path i) then - start (String.sub path ~pos:(i + 1) ~len:(end_ - i) :: acc) path (i - 1) + if i < 0 + then String.take path (end_ + 1) :: acc + else if is_dir_sep (String.unsafe_get path i) + then start (String.sub path ~pos:(i + 1) ~len:(end_ - i) :: acc) path (i - 1) else component acc path end_ (i - 1) in fun path -> - if path = Filename.current_dir_name then [ path ] - else + if path = Filename.current_dir_name + then [ path ] + else ( match start [] path (String.length path - 1) with | "." :: xs -> xs - | xs -> xs + | xs -> xs) in let normalize = if Sys.win32 then String.lowercase_ascii else fun x -> x in fun (uri : Uri.t) (dune : Registry.Dune.t) -> let dune_root = Registry.Dune.root dune in let path = let path = Uri.to_path uri in - if Filename.is_relative path then Filename.concat (Lazy.force cwd) path - else path + if Filename.is_relative path then Filename.concat (Lazy.force cwd) path else path in let rec loop xs ys = - match (xs, ys) with + match xs, ys with | x :: xs, y :: ys -> normalize x = normalize y && loop xs ys | [], _ | _, [] -> true in loop (explode_path dune_root) (explode_path path) +;; let make_finalizer active (instance : Instance.t) = Lazy_fiber.create (fun () -> - active.instances <- - String.Map.remove - active.instances - (Registry.Dune.root (Instance.source instance)); - let to_unregister = - Instance.promotions instance - |> String.Map.to_list_map ~f:(fun _ promotion -> - let path = Drpc.Diagnostic.Promotion.in_source promotion in - Uri.of_path path) - in - Document_store.unregister_promotions - active.config.document_store - to_unregister) + active.instances + <- String.Map.remove active.instances (Registry.Dune.root (Instance.source instance)); + let to_unregister = + Instance.promotions instance + |> String.Map.to_list_map ~f:(fun _ promotion -> + let path = Drpc.Diagnostic.Promotion.in_source promotion in + Uri.of_path path) + in + Document_store.unregister_promotions active.config.document_store to_unregister) +;; let poll active last_error = (* a single workspaces value for one iteration of the loop *) @@ -660,9 +631,9 @@ let poll active last_error = | Ok _refresh -> let remaining, to_kill = String.Map.partition active.instances ~f:(fun (running : Instance.t) -> - let source = Instance.source running in - List.exists workspace_folders ~f:(fun (wsf : WorkspaceFolder.t) -> - uri_dune_overlap wsf.uri source)) + let source = Instance.source running in + List.exists workspace_folders ~f:(fun (wsf : WorkspaceFolder.t) -> + uri_dune_overlap wsf.uri source)) in let to_kill = String.Map.values to_kill in active.instances <- remaining; @@ -670,56 +641,53 @@ let poll active last_error = let to_create = (* won't work very well with large workspaces and many instances of dune *) - let is_running dune = - String.Map.mem active.instances (Registry.Dune.root dune) - in + let is_running dune = String.Map.mem active.instances (Registry.Dune.root dune) in Registry.current active.registry |> List.fold_left ~init:[] ~f:(fun acc dune -> - if - (not (is_running dune)) - && List.exists - workspace_folders - ~f:(fun (wsf : WorkspaceFolder.t) -> - uri_dune_overlap wsf.uri dune) - then Instance.create dune active.config :: acc - else acc) + if (not (is_running dune)) + && List.exists workspace_folders ~f:(fun (wsf : WorkspaceFolder.t) -> + uri_dune_overlap wsf.uri dune) + then Instance.create dune active.config :: acc + else acc) in List.map to_create ~f:(fun instance -> - let source = Instance.source instance in - let root = Registry.Dune.root source in - (root, instance)) - |> String.Map.of_list_multi |> String.Map.values + let source = Instance.source instance in + let root = Registry.Dune.root source in + root, instance) + |> String.Map.of_list_multi + |> String.Map.values |> Fiber.parallel_map ~f:(fun instances -> - (* TODO put timeouts on all this stuff *) - let rec loop = function - | [] -> Fiber.return None - | instance :: xs -> ( - let* res = Instance.connect instance in - match res with - | Error () -> loop xs - | Ok () -> - let+ () = - match xs with - | [] -> Fiber.return () - | _ -> - let message = - Format.asprintf - (* TODO print the actual intsances skipped instead - once the RPC gives us access to the pid's *) - "workspace %s ignores %d dune instances" - (Instance.source instance |> Registry.Dune.root) - (List.length xs) - in - active.config.log ~type_:Error ~message + (* TODO put timeouts on all this stuff *) + let rec loop = function + | [] -> Fiber.return None + | instance :: xs -> + let* res = Instance.connect instance in + (match res with + | Error () -> loop xs + | Ok () -> + let+ () = + match xs with + | [] -> Fiber.return () + | _ -> + let message = + Format.asprintf + (* TODO print the actual intsances skipped instead + once the RPC gives us access to the pid's *) + "workspace %s ignores %d dune instances" + (Instance.source instance |> Registry.Dune.root) + (List.length xs) in - Some instance) - in - loop instances) + active.config.log ~type_:Error ~message + in + Some instance) + in + loop instances) |> Fiber.map ~f:List.filter_opt in let* () = let send f x = - if x = [] then Fiber.return () + if x = [] + then Fiber.return () else let* running = Fiber.Pool.running active.pool in match running with @@ -732,35 +700,36 @@ let poll active last_error = match connected with | [] -> Fiber.return () | _ -> - active.instances <- - List.fold_left - connected - ~init:active.instances - ~f:(fun acc (instance : Instance.t) -> - let source = Instance.source instance in - (* this is guaranteed not to raise since we don't connect to more - than one dune instance per workspace *) - String.Map.add_exn acc (Registry.Dune.root source) instance); + active.instances + <- List.fold_left + connected + ~init:active.instances + ~f:(fun acc (instance : Instance.t) -> + let source = Instance.source instance in + (* this is guaranteed not to raise since we don't connect to more + than one dune instance per workspace *) + String.Map.add_exn acc (Registry.Dune.root source) instance); Fiber.parallel_iter connected ~f:(fun (instance : Instance.t) -> - let cleanup = make_finalizer active instance in - let* (_ : (unit, unit) result) = - Fiber.map_reduce_errors - (module Monoid.Unit) - (fun () -> Instance.run instance) - ~on_error:(fun exn -> - let message = - Format.asprintf - "disconnected %s:@.%a" - (Registry.Dune.root (Instance.source instance)) - Exn_with_backtrace.pp_uncaught - exn - in - let* () = active.config.log ~type_:Error ~message in - Lazy_fiber.force cleanup) - in - Lazy_fiber.force cleanup) + let cleanup = make_finalizer active instance in + let* (_ : (unit, unit) result) = + Fiber.map_reduce_errors + (module Monoid.Unit) + (fun () -> Instance.run instance) + ~on_error:(fun exn -> + let message = + Format.asprintf + "disconnected %s:@.%a" + (Registry.Dune.root (Instance.source instance)) + Exn_with_backtrace.pp_uncaught + exn + in + let* () = active.config.log ~type_:Error ~message in + Lazy_fiber.force cleanup) + in + Lazy_fiber.force cleanup) in `No_error +;; type state = | Closed @@ -770,20 +739,26 @@ type t = state ref let stop (t : t) = Fiber.of_thunk (fun () -> - match !t with - | Closed -> Fiber.return () - | Active active -> - t := Closed; - Fiber.fork_and_join_unit - (fun () -> Fiber.Pool.stop active.pool) - (fun () -> - String.Map.values active.instances - |> Fiber.parallel_iter ~f:Instance.stop)) + match !t with + | Closed -> Fiber.return () + | Active active -> + t := Closed; + Fiber.fork_and_join_unit + (fun () -> Fiber.Pool.stop active.pool) + (fun () -> + String.Map.values active.instances |> Fiber.parallel_iter ~f:Instance.stop)) +;; let env = Sys.getenv_opt -let create workspaces (client_capabilities : ClientCapabilities.t) diagnostics - progress document_store ~log = +let create + workspaces + (client_capabilities : ClientCapabilities.t) + diagnostics + progress + document_store + ~log + = let config = let include_promotions = (let open Option.O in @@ -793,17 +768,15 @@ let create workspaces (client_capabilities : ClientCapabilities.t) diagnostics |> Option.value ~default:false && match client_capabilities.experimental with - | Some (`Assoc xs) -> ( - match List.assoc xs (fst view_promotion_capability) with - | Some (`Bool b) -> b - | _ -> false) + | Some (`Assoc xs) -> + (match List.assoc xs (fst view_promotion_capability) with + | Some (`Bool b) -> b + | _ -> false) | _ -> false in { document_store; diagnostics; progress; include_promotions; log } in - let registry = - Registry.create (Registry.Config.create (Xdg.create ~env ())) - in + let registry = Registry.create (Registry.Config.create (Xdg.create ~env ())) in ref (Active { pool = Fiber.Pool.create () @@ -812,43 +785,48 @@ let create workspaces (client_capabilities : ClientCapabilities.t) diagnostics ; registry ; workspaces }) - -let create workspaces (client_capabilities : ClientCapabilities.t) diagnostics - progress document_store ~log = - if inside_test then ref Closed - else - create - workspaces - client_capabilities - diagnostics - progress - document_store - ~log +;; + +let create + workspaces + (client_capabilities : ClientCapabilities.t) + diagnostics + progress + document_store + ~log + = + if inside_test + then ref Closed + else create workspaces client_capabilities diagnostics progress document_store ~log +;; let run_loop t = Fiber.repeat_while ~init:`No_error ~f:(fun state -> - match !t with - | Closed -> Fiber.return None - | Active active -> - let* state = poll active state in - (* TODO make this a bit more dynamic. if poll completes fast, wait more, - if it's slow, then wait less *) - let+ () = Lev_fiber.Timer.sleepf 0.25 in - Some state) + match !t with + | Closed -> Fiber.return None + | Active active -> + let* state = poll active state in + (* TODO make this a bit more dynamic. if poll completes fast, wait more, + if it's slow, then wait less *) + let+ () = Lev_fiber.Timer.sleepf 0.25 in + Some state) +;; let run t : unit Fiber.t = Fiber.of_thunk (fun () -> - match !t with - | Closed -> Fiber.return () - | Active active -> - Fiber.fork_and_join_unit - (fun () -> run_loop t) - (fun () -> Fiber.Pool.run active.pool)) + match !t with + | Closed -> Fiber.return () + | Active active -> + Fiber.fork_and_join_unit + (fun () -> run_loop t) + (fun () -> Fiber.Pool.run active.pool)) +;; let update_workspaces t workspaces = match !t with | Closed -> Code_error.raise "dune is already closed" [] | Active active -> active.workspaces <- workspaces +;; module Promote = struct module Input = struct @@ -858,56 +836,51 @@ module Promote = struct } let yojson_of_t { dune; in_source } : Json.t = - `Assoc - [ ("dune", `String dune) - ; ("in_source", Json.Conv.yojson_of_string in_source) - ] + `Assoc [ "dune", `String dune; "in_source", Json.Conv.yojson_of_string in_source ] + ;; let t_of_yojson = function | `Assoc fields -> let dune = Json.field_exn fields "dune" Json.Conv.string_of_yojson in - let in_source = - Json.field_exn fields "in_source" Json.Conv.string_of_yojson - in + let in_source = Json.field_exn fields "in_source" Json.Conv.string_of_yojson in { dune; in_source } | json -> Json.error "invalid promote data" json + ;; - let create (dune : Registry.Dune.t) - (promotion : Drpc.Diagnostic.Promotion.t) = + let create (dune : Registry.Dune.t) (promotion : Drpc.Diagnostic.Promotion.t) = { dune = Registry.Dune.root dune ; in_source = Drpc.Diagnostic.Promotion.in_source promotion } + ;; end let name = "dune/promote" let run t (command : ExecuteCommandParams.t) = Fiber.of_thunk (fun () -> - match !t with - | Closed -> Fiber.return () - | Active active -> ( - let promote = - match command.arguments with - | Some [ arg ] -> Input.t_of_yojson arg - | _ -> assert false - in - match String.Map.find active.instances promote.dune with - | None -> - let message = sprintf "dune %S already disconected" promote.dune in - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make ~code:InternalError ~message ()) - | Some instance -> ( - match Instance.client instance with + match !t with + | Closed -> Fiber.return () + | Active active -> + let promote = + match command.arguments with + | Some [ arg ] -> Input.t_of_yojson arg + | _ -> assert false + in + (match String.Map.find active.instances promote.dune with + | None -> + let message = sprintf "dune %S already disconected" promote.dune in + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make ~code:InternalError ~message ()) + | Some instance -> + (match Instance.client instance with | None -> (* we can also just wait for initialization? *) let message = sprintf "dune %S is not initialized" promote.dune in Jsonrpc.Response.Error.raise (Jsonrpc.Response.Error.make ~code:InternalError ~message ()) - | Some client -> ( + | Some client -> let+ res = - let* req = - Client.Versioned.prepare_request client Drpc.Request.promote - in + let* req = Client.Versioned.prepare_request client Drpc.Request.promote in let req = match req with | Error _ -> assert false @@ -915,9 +888,10 @@ module Promote = struct in Client.request client req (Drpc.Path.absolute promote.in_source) in - match res with - | Ok () -> () - | Error _ -> ())))) + (match res with + | Ok () -> () + | Error _ -> ())))) + ;; end let commands = [ Promote.name ] @@ -928,41 +902,35 @@ let code_actions (t : t) (uri : Uri.t) = | Active active -> let path = Uri.to_path uri in String.Map.fold active.instances ~init:[] ~f:(fun dune acc -> - match - let promotions = Instance.promotions dune in - String.Map.find promotions path - with - | None -> acc - | Some promotion -> - let command = - let promote = - Promote.Input.create (Instance.source dune) promotion - in - Command.create - ~title:"Promote" - ~command:Promote.name - ~arguments:[ Promote.Input.yojson_of_t promote ] - () - in - let action = - CodeAction.create - ~title:"Promote" - ~kind:CodeActionKind.QuickFix - ~command - () - in - action :: acc) + match + let promotions = Instance.promotions dune in + String.Map.find promotions path + with + | None -> acc + | Some promotion -> + let command = + let promote = Promote.Input.create (Instance.source dune) promotion in + Command.create + ~title:"Promote" + ~command:Promote.name + ~arguments:[ Promote.Input.yojson_of_t promote ] + () + in + let action = + CodeAction.create ~title:"Promote" ~kind:CodeActionKind.QuickFix ~command () + in + action :: acc) +;; let on_command t (cmd : ExecuteCommandParams.t) = Fiber.of_thunk (fun () -> - if cmd.command <> Promote.name then - Jsonrpc.Response.Error.raise - (Jsonrpc.Response.Error.make - ~code:InvalidRequest - ~message:"invalid command" - ()); - let* () = Promote.run t cmd in - Fiber.return `Null) + if cmd.command <> Promote.name + then + Jsonrpc.Response.Error.raise + (Jsonrpc.Response.Error.make ~code:InvalidRequest ~message:"invalid command" ()); + let* () = Promote.run t cmd in + Fiber.return `Null) +;; let for_doc t doc = match !t with @@ -970,5 +938,5 @@ let for_doc t doc = | Active t -> let uri = Document.uri doc in String.Map.fold ~init:[] t.instances ~f:(fun instance acc -> - if uri_dune_overlap uri (Instance.source instance) then instance :: acc - else acc) + if uri_dune_overlap uri (Instance.source instance) then instance :: acc else acc) +;; diff --git a/ocaml-lsp-server/src/dune.mli b/ocaml-lsp-server/src/dune.mli index f4b14bf4b..721ff9c57 100644 --- a/ocaml-lsp-server/src/dune.mli +++ b/ocaml-lsp-server/src/dune.mli @@ -9,11 +9,10 @@ end type t val view_promotion_capability : string * Json.t - val run : t -> unit Fiber.t -val create : - Workspaces.t +val create + : Workspaces.t -> ClientCapabilities.t -> Diagnostics.t -> Progress.t @@ -22,13 +21,8 @@ val create : -> t val update_workspaces : t -> Workspaces.t -> unit - val stop : t -> unit Fiber.t - val commands : string list - val on_command : t -> ExecuteCommandParams.t -> Json.t Fiber.t - val code_actions : t -> Uri.t -> CodeAction.t list - val for_doc : t -> Document.t -> Instance.t list diff --git a/ocaml-lsp-server/src/env_vars.ml b/ocaml-lsp-server/src/env_vars.ml index 761d4c8ed..758dae17a 100644 --- a/ocaml-lsp-server/src/env_vars.ml +++ b/ocaml-lsp-server/src/env_vars.ml @@ -7,13 +7,14 @@ let _TEST () : bool option = | "false" -> false | unexpected_val -> Format.eprintf - "invalid value %S for OCAMLLSP_TEST ignored. Only true or false are \ - allowed@." + "invalid value %S for OCAMLLSP_TEST ignored. Only true or false are allowed@." unexpected_val; false +;; let _IS_HOVER_EXTENDED () : bool option = let* v = Sys.getenv_opt "OCAMLLSP_HOVER_IS_EXTENDED" in match v with | "true" | "1" -> Some true | _ -> Some false +;; diff --git a/ocaml-lsp-server/src/folding_range.ml b/ocaml-lsp-server/src/folding_range.ml index cb87546e6..d9e3a5641 100644 --- a/ocaml-lsp-server/src/folding_range.ml +++ b/ocaml-lsp-server/src/folding_range.ml @@ -9,20 +9,25 @@ let folding_range { Range.start; end_ } = ~endCharacter:end_.character ~kind:Region () +;; let fold_over_parsetree (parsetree : Mreader.parsetree) = let ranges = ref [] in let push (range : Range.t) = - if range.start.line < range.end_.line (* don't fold a single line *) then - ranges := range :: !ranges + if range.start.line < range.end_.line (* don't fold a single line *) + then ranges := range :: !ranges in let iterator = - let type_declaration (_self : Ast_iterator.iterator) - (typ_decl : Parsetree.type_declaration) = + let type_declaration + (_self : Ast_iterator.iterator) + (typ_decl : Parsetree.type_declaration) + = Range.of_loc typ_decl.ptype_loc |> push in - let type_extension (_self : Ast_iterator.iterator) - (typ_ext : Parsetree.type_extension) = + let type_extension + (_self : Ast_iterator.iterator) + (typ_ext : Parsetree.type_extension) + = let loc = typ_ext.ptyext_path.loc in let last_constr = List.last typ_ext.ptyext_constructors in let loc = @@ -32,38 +37,31 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = in Range.of_loc loc |> push in - - let module_type_declaration (self : Ast_iterator.iterator) - (mod_typ_decl : Parsetree.module_type_declaration) = + let module_type_declaration + (self : Ast_iterator.iterator) + (mod_typ_decl : Parsetree.module_type_declaration) + = Range.of_loc mod_typ_decl.pmtd_loc |> push; - Option.iter mod_typ_decl.pmtd_type ~f:(fun mod_typ -> - self.module_type self mod_typ) + Option.iter mod_typ_decl.pmtd_type ~f:(fun mod_typ -> self.module_type self mod_typ) in - - let module_type (self : Ast_iterator.iterator) - (module_type : Parsetree.module_type) = + let module_type (self : Ast_iterator.iterator) (module_type : Parsetree.module_type) = match module_type.pmty_desc with | Pmty_signature _ | Pmty_functor _ -> let range = Range.of_loc module_type.pmty_loc in push range; Ast_iterator.default_iterator.module_type self module_type - | Pmty_ident _ - | Pmty_with _ - | Pmty_typeof _ - | Pmty_extension _ - | Pmty_alias _ -> + | Pmty_ident _ | Pmty_with _ | Pmty_typeof _ | Pmty_extension _ | Pmty_alias _ -> Ast_iterator.default_iterator.module_type self module_type in - - let module_declaration (self : Ast_iterator.iterator) - (module_declaration : Parsetree.module_declaration) = + let module_declaration + (self : Ast_iterator.iterator) + (module_declaration : Parsetree.module_declaration) + = let range = Range.of_loc module_declaration.pmd_loc in push range; self.module_type self module_declaration.pmd_type in - - let module_expr (self : Ast_iterator.iterator) - (module_expr : Parsetree.module_expr) = + let module_expr (self : Ast_iterator.iterator) (module_expr : Parsetree.module_expr) = match module_expr.pmod_desc with | Parsetree.Pmod_functor (_, _) | Parsetree.Pmod_structure _ -> let range = Range.of_loc module_expr.pmod_loc in @@ -74,65 +72,61 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = multiple OCaml's parsetree versions *) Ast_iterator.default_iterator.module_expr self module_expr in - - let class_declaration (self : Ast_iterator.iterator) - (class_decl : Parsetree.class_declaration) = + let class_declaration + (self : Ast_iterator.iterator) + (class_decl : Parsetree.class_declaration) + = class_decl.Parsetree.pci_loc |> Range.of_loc |> push; self.class_expr self class_decl.pci_expr in - - let class_description (self : Ast_iterator.iterator) - (class_desc : Parsetree.class_description) = + let class_description + (self : Ast_iterator.iterator) + (class_desc : Parsetree.class_description) + = class_desc.pci_loc |> Range.of_loc |> push; self.class_type self class_desc.pci_expr in - - let class_expr (self : Ast_iterator.iterator) - (class_expr : Parsetree.class_expr) = + let class_expr (self : Ast_iterator.iterator) (class_expr : Parsetree.class_expr) = class_expr.pcl_loc |> Range.of_loc |> push; Ast_iterator.default_iterator.class_expr self class_expr in - - let class_field (self : Ast_iterator.iterator) - (class_field : Parsetree.class_field) = + let class_field (self : Ast_iterator.iterator) (class_field : Parsetree.class_field) = Range.of_loc class_field.pcf_loc |> push; Ast_iterator.default_iterator.class_field self class_field in - - let class_type (self : Ast_iterator.iterator) - (class_type : Parsetree.class_type) = + let class_type (self : Ast_iterator.iterator) (class_type : Parsetree.class_type) = Range.of_loc class_type.pcty_loc |> push; Ast_iterator.default_iterator.class_type self class_type in - - let class_type_declaration (self : Ast_iterator.iterator) - (class_type_decl : Parsetree.class_type_declaration) = + let class_type_declaration + (self : Ast_iterator.iterator) + (class_type_decl : Parsetree.class_type_declaration) + = Range.of_loc class_type_decl.pci_loc |> push; Ast_iterator.default_iterator.class_type_declaration self class_type_decl in - - let class_type_field (self : Ast_iterator.iterator) - (class_type_field : Parsetree.class_type_field) = + let class_type_field + (self : Ast_iterator.iterator) + (class_type_field : Parsetree.class_type_field) + = Range.of_loc class_type_field.pctf_loc |> push; Ast_iterator.default_iterator.class_type_field self class_type_field in - - let value_binding (self : Ast_iterator.iterator) - (value_binding : Parsetree.value_binding) = + let value_binding + (self : Ast_iterator.iterator) + (value_binding : Parsetree.value_binding) + = let range = Range.of_loc value_binding.pvb_loc in push range; self.expr self value_binding.pvb_expr in - - let extension (self : Ast_iterator.iterator) - ((_, payload) : Parsetree.extension) = + let extension (self : Ast_iterator.iterator) ((_, payload) : Parsetree.extension) = match payload with | PStr structure -> self.structure self structure | PSig signature -> self.signature self signature | PTyp _ -> () | PPat (_, _) -> () in - let case (self : Ast_iterator.iterator) (c : Parsetree.case) = let pat_range = Range.of_loc c.pc_lhs.ppat_loc in push pat_range; @@ -140,16 +134,15 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = push { Range.start = pat_range.end_; end_ = expr_range.end_ }; self.expr self c.pc_rhs in - let pat (self : Ast_iterator.iterator) (p : Parsetree.pattern) = let open Parsetree in match p.ppat_desc with | Ppat_record (bdgs, _) -> Range.of_loc p.ppat_loc |> push; List.iter bdgs ~f:(fun (lident, pat) -> - let lident_range = Range.of_loc lident.Asttypes.loc in - let pat_range = Range.of_loc pat.Parsetree.ppat_loc in - push { Range.start = lident_range.end_; end_ = pat_range.end_ }) + let lident_range = Range.of_loc lident.Asttypes.loc in + let pat_range = Range.of_loc pat.Parsetree.ppat_loc in + push { Range.start = lident_range.end_; end_ = pat_range.end_ }) | Ppat_var _ | Ppat_alias _ | Ppat_constant _ @@ -168,7 +161,6 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = | Ppat_open _ | Ppat_any -> Ast_iterator.default_iterator.pat self p in - let expr (self : Ast_iterator.iterator) (expr : Parsetree.expression) = match expr.pexp_desc with | Pexp_try (e, cases) | Pexp_match (e, cases) -> @@ -185,13 +177,11 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = Range.of_loc expr.pexp_loc |> push; Option.iter old_record ~f:(self.expr self); List.iter bdgs ~f:(fun (lident, expr) -> - let lident_range = Range.of_loc lident.Asttypes.loc in - let expr_range = Range.of_loc expr.Parsetree.pexp_loc in - push { Range.start = lident_range.end_; end_ = expr_range.end_ }) + let lident_range = Range.of_loc lident.Asttypes.loc in + let expr_range = Range.of_loc expr.Parsetree.pexp_loc in + push { Range.start = lident_range.end_; end_ = expr_range.end_ }) | Pexp_ifthenelse (if_expr, then_expr, else_expr) -> - let loc = - { if_expr.pexp_loc with loc_end = then_expr.pexp_loc.loc_end } - in + let loc = { if_expr.pexp_loc with loc_end = then_expr.pexp_loc.loc_end } in Range.of_loc loc |> push; self.expr self then_expr; Option.iter else_expr ~f:(self.expr self) @@ -230,24 +220,26 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = | Pexp_assert _ | Pexp_unreachable -> Ast_iterator.default_iterator.expr self expr in - - let module_binding (self : Ast_iterator.iterator) - (module_binding : Parsetree.module_binding) = + let module_binding + (self : Ast_iterator.iterator) + (module_binding : Parsetree.module_binding) + = Range.of_loc module_binding.pmb_loc |> push; self.module_expr self module_binding.pmb_expr in - - let open_declaration (self : Ast_iterator.iterator) - (open_decl : Parsetree.open_declaration) = + let open_declaration + (self : Ast_iterator.iterator) + (open_decl : Parsetree.open_declaration) + = Range.of_loc open_decl.popen_loc |> push; self.module_expr self open_decl.popen_expr in - - let value_description (_self : Ast_iterator.iterator) - (value_desc : Parsetree.value_description) = + let value_description + (_self : Ast_iterator.iterator) + (value_desc : Parsetree.value_description) + = Range.of_loc value_desc.pval_loc |> push in - let structure_item self structure_item = match structure_item.Parsetree.pstr_desc with | Pstr_value _ @@ -259,8 +251,7 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = | Pstr_recmodule _ | Pstr_class_type _ | Pstr_typext _ - | Pstr_open _ -> - Ast_iterator.default_iterator.structure_item self structure_item + | Pstr_open _ -> Ast_iterator.default_iterator.structure_item self structure_item | Pstr_extension _ -> Range.of_loc structure_item.pstr_loc |> push; Ast_iterator.default_iterator.structure_item self structure_item @@ -270,7 +261,6 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = self.attributes self pincl_attributes | Pstr_primitive _ | Pstr_exception _ | Pstr_attribute _ -> () in - { Ast_iterator.default_iterator with case ; class_declaration @@ -302,19 +292,18 @@ let fold_over_parsetree (parsetree : Mreader.parsetree) = | `Implementation structure -> iterator.structure iterator structure in List.rev_map !ranges ~f:folding_range +;; let compute (state : State.t) (params : FoldingRangeParams.t) = Fiber.of_thunk (fun () -> - let doc = Document_store.get state.store params.textDocument.uri in - match Document.kind doc with - | `Other -> Fiber.return None - | `Merlin m -> - let+ ranges = - Document.Merlin.with_pipeline_exn - ~name:"folding range" - m - (fun pipeline -> - let parsetree = Mpipeline.reader_parsetree pipeline in - fold_over_parsetree parsetree) - in - Some ranges) + let doc = Document_store.get state.store params.textDocument.uri in + match Document.kind doc with + | `Other -> Fiber.return None + | `Merlin m -> + let+ ranges = + Document.Merlin.with_pipeline_exn ~name:"folding range" m (fun pipeline -> + let parsetree = Mpipeline.reader_parsetree pipeline in + fold_over_parsetree parsetree) + in + Some ranges) +;; diff --git a/ocaml-lsp-server/src/folding_range.mli b/ocaml-lsp-server/src/folding_range.mli index 0f3310124..e6b9a9abd 100644 --- a/ocaml-lsp-server/src/folding_range.mli +++ b/ocaml-lsp-server/src/folding_range.mli @@ -3,5 +3,4 @@ open Import (** Compute the folding range *) -val compute : - State.t -> FoldingRangeParams.t -> FoldingRange.t list option Fiber.t +val compute : State.t -> FoldingRangeParams.t -> FoldingRange.t list option Fiber.t diff --git a/ocaml-lsp-server/src/hover_req.ml b/ocaml-lsp-server/src/hover_req.ml index c1fcad48d..1df429b96 100644 --- a/ocaml-lsp-server/src/hover_req.ml +++ b/ocaml-lsp-server/src/hover_req.ml @@ -11,6 +11,7 @@ let environment_mode = match Env_vars._IS_HOVER_EXTENDED () with | Some true -> Extended_variable | Some false | None -> Default +;; let hover_at_cursor parsetree (`Logical (cursor_line, cursor_col)) = let result = ref None in @@ -29,45 +30,47 @@ let hover_at_cursor parsetree (`Logical (cursor_line, cursor_col)) = in (* Hover location matches a variable binding *) let pat (self : Ast_iterator.iterator) (pattern : Parsetree.pattern) = - (if is_at_cursor pattern.ppat_loc then - match pattern.ppat_desc with - | Ppat_any | Ppat_constant _ | Ppat_variant _ | Ppat_unpack _ -> - result := Some `Type_enclosing - | Ppat_record (fields, Open) -> - let end_of_last_field = - match List.last fields with - | Some (_, field) -> field.ppat_loc.loc_end - | None -> pattern.ppat_loc.loc_start - in - if is_at_cursor { pattern.ppat_loc with loc_start = end_of_last_field } - then result := Some `Type_enclosing - | Ppat_construct ({ loc; _ }, _) - | Ppat_var { loc; _ } - | Ppat_alias (_, { loc; _ }) - | Ppat_type { loc; _ } - | Ppat_open ({ loc; _ }, _) -> - if is_at_cursor loc then result := Some `Type_enclosing - | _ -> ()); + if is_at_cursor pattern.ppat_loc + then ( + match pattern.ppat_desc with + | Ppat_any | Ppat_constant _ | Ppat_variant _ | Ppat_unpack _ -> + result := Some `Type_enclosing + | Ppat_record (fields, Open) -> + let end_of_last_field = + match List.last fields with + | Some (_, field) -> field.ppat_loc.loc_end + | None -> pattern.ppat_loc.loc_start + in + if is_at_cursor { pattern.ppat_loc with loc_start = end_of_last_field } + then result := Some `Type_enclosing + | Ppat_construct ({ loc; _ }, _) + | Ppat_var { loc; _ } + | Ppat_alias (_, { loc; _ }) + | Ppat_type { loc; _ } + | Ppat_open ({ loc; _ }, _) -> + if is_at_cursor loc then result := Some `Type_enclosing + | _ -> ()); Ast_iterator.default_iterator.pat self pattern in (* Hover an identifier in an expression *) let expr (self : Ast_iterator.iterator) (expr : Parsetree.expression) = - if is_at_cursor expr.pexp_loc then + if is_at_cursor expr.pexp_loc + then ( match expr.pexp_desc with - | Pexp_constant _ | Pexp_variant _ | Pexp_pack _ -> - result := Some `Type_enclosing - | Pexp_ident { loc; _ } - | Pexp_construct ({ loc; _ }, _) - | Pexp_field (_, { loc; _ }) -> - if is_at_cursor loc then result := Some `Type_enclosing + | Pexp_constant _ | Pexp_variant _ | Pexp_pack _ -> result := Some `Type_enclosing + | Pexp_ident { loc; _ } | Pexp_construct ({ loc; _ }, _) | Pexp_field (_, { loc; _ }) + -> + if is_at_cursor loc + then result := Some `Type_enclosing else Ast_iterator.default_iterator.expr self expr | Pexp_record (fields, _) -> (* On a record, each field may be hovered. *) let is_on_field = List.exists fields ~f:(fun (({ loc; _ } : _ Asttypes.loc), _) -> - is_at_cursor loc) + is_at_cursor loc) in - if is_on_field then result := Some `Type_enclosing + if is_on_field + then result := Some `Type_enclosing else Ast_iterator.default_iterator.expr self expr | Pexp_fun _ | Pexp_function _ | Pexp_lazy _ -> (* Anonymous function expressions can be hovered on the keyword [fun] or @@ -89,15 +92,18 @@ let hover_at_cursor parsetree (`Logical (cursor_line, cursor_col)) = ; loc_ghost = false } in - if is_at_keyword then result := Some `Type_enclosing + if is_at_keyword + then result := Some `Type_enclosing else Ast_iterator.default_iterator.expr self expr | Pexp_extension (ppx, _) when is_at_cursor ppx.loc -> result := Some (`Ppx_expr (expr, ppx)) - | _ -> Ast_iterator.default_iterator.expr self expr + | _ -> Ast_iterator.default_iterator.expr self expr) in (* Hover a value declaration in a signature *) - let value_description (self : Ast_iterator.iterator) - (desc : Parsetree.value_description) = + let value_description + (self : Ast_iterator.iterator) + (desc : Parsetree.value_description) + = if is_at_cursor desc.pval_name.loc then result := Some `Type_enclosing; Ast_iterator.default_iterator.value_description self desc in @@ -106,64 +112,60 @@ let hover_at_cursor parsetree (`Logical (cursor_line, cursor_col)) = if is_at_cursor typ.ptyp_loc then result := Some `Type_enclosing in (* Hover a type declaration *) - let type_declaration (self : Ast_iterator.iterator) - (decl : Parsetree.type_declaration) = - if is_at_cursor decl.ptype_name.loc then result := Some `Type_enclosing - else if is_at_cursor decl.ptype_loc then + let type_declaration (self : Ast_iterator.iterator) (decl : Parsetree.type_declaration) = + if is_at_cursor decl.ptype_name.loc + then result := Some `Type_enclosing + else if is_at_cursor decl.ptype_loc + then ( let attribute_at_cursor = - List.find decl.ptype_attributes ~f:(fun attr -> - is_at_cursor attr.attr_loc) + List.find decl.ptype_attributes ~f:(fun attr -> is_at_cursor attr.attr_loc) in match attribute_at_cursor with | Some attr -> (* Produce a hover for the attribute, if it's name is hovered, otherwise bail. *) - if is_at_cursor attr.attr_name.loc then - result := Some (`Ppx_typedef_attr (decl, attr)) - | None -> Ast_iterator.default_iterator.type_declaration self decl + if is_at_cursor attr.attr_name.loc + then result := Some (`Ppx_typedef_attr (decl, attr)) + | None -> Ast_iterator.default_iterator.type_declaration self decl) in (* Hover a module identifier *) - let module_expr (self : Ast_iterator.iterator) (expr : Parsetree.module_expr) - = - (if is_at_cursor expr.pmod_loc then - match expr.pmod_desc with - | Pmod_ident { loc; _ } -> - if is_at_cursor loc then result := Some `Type_enclosing - | Pmod_structure _ -> - let is_at_keyword = - let keyword_len = 6 (* struct *) in - let pos_cnum = expr.pmod_loc.loc_start.pos_cnum + keyword_len in - is_at_cursor - { loc_start = expr.pmod_loc.loc_start - ; loc_end = { expr.pmod_loc.loc_start with pos_cnum } - ; loc_ghost = false - } - in - if is_at_keyword then result := Some `Type_enclosing - | _ -> ()); + let module_expr (self : Ast_iterator.iterator) (expr : Parsetree.module_expr) = + if is_at_cursor expr.pmod_loc + then ( + match expr.pmod_desc with + | Pmod_ident { loc; _ } -> if is_at_cursor loc then result := Some `Type_enclosing + | Pmod_structure _ -> + let is_at_keyword = + let keyword_len = 6 (* struct *) in + let pos_cnum = expr.pmod_loc.loc_start.pos_cnum + keyword_len in + is_at_cursor + { loc_start = expr.pmod_loc.loc_start + ; loc_end = { expr.pmod_loc.loc_start with pos_cnum } + ; loc_ghost = false + } + in + if is_at_keyword then result := Some `Type_enclosing + | _ -> ()); Ast_iterator.default_iterator.module_expr self expr in (* Hover a module type *) - let module_type (self : Ast_iterator.iterator) (mtyp : Parsetree.module_type) - = - (if is_at_cursor mtyp.pmty_loc then - match mtyp.pmty_desc with - | Pmty_ident { loc; _ } -> - if is_at_cursor loc then result := Some `Type_enclosing - | _ -> ()); + let module_type (self : Ast_iterator.iterator) (mtyp : Parsetree.module_type) = + if is_at_cursor mtyp.pmty_loc + then ( + match mtyp.pmty_desc with + | Pmty_ident { loc; _ } -> if is_at_cursor loc then result := Some `Type_enclosing + | _ -> ()); Ast_iterator.default_iterator.module_type self mtyp in (* Hover structure items *) - let structure_item (self : Ast_iterator.iterator) - (item : Parsetree.structure_item) = + let structure_item (self : Ast_iterator.iterator) (item : Parsetree.structure_item) = match item.pstr_desc with | Pstr_module desc when is_at_cursor desc.pmb_name.loc -> result := Some `Type_enclosing | _ -> Ast_iterator.default_iterator.structure_item self item in (* Hover signature items *) - let signature_item (self : Ast_iterator.iterator) - (item : Parsetree.signature_item) = + let signature_item (self : Ast_iterator.iterator) (item : Parsetree.signature_item) = match item.psig_desc with | Psig_open desc when is_at_cursor desc.popen_expr.loc -> (* [open X] is not captured by [module_expr] since it uses a different @@ -192,56 +194,69 @@ let hover_at_cursor parsetree (`Logical (cursor_line, cursor_col)) = | `Implementation structure -> iterator.structure iterator structure in !result +;; let print_dividers sections = String.concat ~sep:"\n***\n" sections let format_as_code_block ~highlighter strings = sprintf "```%s\n%s\n```" highlighter (String.concat ~sep:" " strings) +;; -let format_type_enclosing ~syntax ~markdown ~typ ~doc - ~(syntax_doc : Query_protocol.syntax_doc_result option) = +let format_type_enclosing + ~syntax + ~markdown + ~typ + ~doc + ~(syntax_doc : Query_protocol.syntax_doc_result option) + = (* TODO for vscode, we should just use the language id. But that will not work for all editors *) let syntax_doc = Option.map syntax_doc ~f:(fun syntax_doc -> - sprintf - "`syntax` %s: %s. See [Manual](%s)" - syntax_doc.name - syntax_doc.description - syntax_doc.documentation) + sprintf + "`syntax` %s: %s. See [Manual](%s)" + syntax_doc.name + syntax_doc.description + syntax_doc.documentation) in `MarkupContent - (if markdown then + (if markdown + then ( let value = let markdown_name = Document.Syntax.markdown_name syntax in - let type_info = - Some (format_as_code_block ~highlighter:markdown_name [ typ ]) - in + let type_info = Some (format_as_code_block ~highlighter:markdown_name [ typ ]) in let doc = Option.map doc ~f:(fun doc -> - match Doc_to_md.translate doc with - | Raw d -> d - | Markdown d -> d) + match Doc_to_md.translate doc with + | Raw d -> d + | Markdown d -> d) in print_dividers (List.filter_opt [ type_info; syntax_doc; doc ]) in - { MarkupContent.value; kind = MarkupKind.Markdown } - else - let value = - print_dividers (List.filter_opt [ Some typ; syntax_doc; doc ]) - in - { MarkupContent.value; kind = MarkupKind.PlainText }) + { MarkupContent.value; kind = MarkupKind.Markdown }) + else ( + let value = print_dividers (List.filter_opt [ Some typ; syntax_doc; doc ]) in + { MarkupContent.value; kind = MarkupKind.PlainText })) +;; let format_ppx_expansion ~ppx ~expansion = let value = sprintf "(* ppx %s expansion *)\n%s" ppx expansion in `MarkedString { Lsp.Types.MarkedString.value; language = Some "ocaml" } +;; -let type_enclosing_hover ~(server : State.t Server.t) ~(doc : Document.t) - ~with_syntax_doc ~merlin ~mode ~uri ~position = +let type_enclosing_hover + ~(server : State.t Server.t) + ~(doc : Document.t) + ~with_syntax_doc + ~merlin + ~mode + ~uri + ~position + = let state = Server.state server in let verbosity = let mode = - match (mode, environment_mode) with + match mode, environment_mode with | Default, Extended_variable -> Extended_variable | x, _ -> x in @@ -255,9 +270,7 @@ let type_enclosing_hover ~(server : State.t Server.t) ~(doc : Document.t) match state.hover_extended.history with | None -> 0 | Some (h_uri, h_position, h_verbosity) -> - if - Uri.equal uri h_uri - && Ordering.is_eq (Position.compare position h_position) + if Uri.equal uri h_uri && Ordering.is_eq (Position.compare position h_position) then succ h_verbosity else 0 in @@ -289,9 +302,7 @@ let type_enclosing_hover ~(server : State.t Server.t) ~(doc : Document.t) let+ () = let message = sprintf - "An error occured while querying ocamlformat:\n\ - Input type: %s\n\n\ - Answer: %s" + "An error occured while querying ocamlformat:\nInput type: %s\n\nAnswer: %s" typ message in @@ -302,23 +313,21 @@ let type_enclosing_hover ~(server : State.t Server.t) ~(doc : Document.t) let contents = let markdown = let client_capabilities = State.client_capabilities state in - ClientCapabilities.markdown_support - client_capabilities - ~field:(fun td -> Option.map td.hover ~f:(fun h -> h.contentFormat)) + ClientCapabilities.markdown_support client_capabilities ~field:(fun td -> + Option.map td.hover ~f:(fun h -> h.contentFormat)) in - format_type_enclosing - ~syntax - ~markdown - ~typ - ~doc:documentation - ~syntax_doc + format_type_enclosing ~syntax ~markdown ~typ ~doc:documentation ~syntax_doc in let range = Range.of_loc loc in let hover = Hover.create ~contents ~range () in Fiber.return (Some hover) +;; -let ppx_expression_hover ~ppx_parsetree ~(expr : Parsetree.expression) - ~(ppx : string Asttypes.loc) = +let ppx_expression_hover + ~ppx_parsetree + ~(expr : Parsetree.expression) + ~(ppx : string Asttypes.loc) + = let expanded_ppx = ref None in let at_expr_location (loc : Ocaml_parsing.Location.t) = expr.pexp_loc.loc_start.pos_cnum <= loc.loc_start.pos_cnum @@ -337,21 +346,25 @@ let ppx_expression_hover ~ppx_parsetree ~(expr : Parsetree.expression) | `Implementation structure -> iterator.structure iterator structure in Option.map !expanded_ppx ~f:(fun expr -> - let range = - Range.of_loc - (if ppx.loc.loc_start.pos_cnum < expr.pexp_loc.loc_start.pos_cnum then - { ppx.loc with loc_end = expr.pexp_loc.loc_end } - else expr.pexp_loc) - in - let contents = - format_ppx_expansion - ~ppx:ppx.txt - ~expansion:(Ocaml_parsing.Pprintast.string_of_expression expr) - in - Hover.create ~contents ~range ()) + let range = + Range.of_loc + (if ppx.loc.loc_start.pos_cnum < expr.pexp_loc.loc_start.pos_cnum + then { ppx.loc with loc_end = expr.pexp_loc.loc_end } + else expr.pexp_loc) + in + let contents = + format_ppx_expansion + ~ppx:ppx.txt + ~expansion:(Ocaml_parsing.Pprintast.string_of_expression expr) + in + Hover.create ~contents ~range ()) +;; -let typedef_attribute_hover ~ppx_parsetree ~(decl : Parsetree.type_declaration) - ~(attr : Parsetree.attribute) = +let typedef_attribute_hover + ~ppx_parsetree + ~(decl : Parsetree.type_declaration) + ~(attr : Parsetree.attribute) + = match attr.attr_name.txt with | "deriving" -> let signature = ref [] in @@ -362,26 +375,24 @@ let typedef_attribute_hover ~ppx_parsetree ~(decl : Parsetree.type_declaration) in let contains_decl (decls : Parsetree.type_declaration list) = List.exists decls ~f:(fun (decl' : Parsetree.type_declaration) -> - String.equal decl.ptype_name.txt decl'.ptype_name.txt) + String.equal decl.ptype_name.txt decl'.ptype_name.txt) in - let signature_item (self : Ast_iterator.iterator) - (item : Parsetree.signature_item) = + let signature_item (self : Ast_iterator.iterator) (item : Parsetree.signature_item) = match at_decl_location item.psig_loc with - | true -> ( - match item.psig_desc with - | Psig_type (_, decls) when contains_decl decls -> - (* Don't add the type declaration itself. *) () - | _ -> signature := item :: !signature) + | true -> + (match item.psig_desc with + | Psig_type (_, decls) when contains_decl decls -> + (* Don't add the type declaration itself. *) () + | _ -> signature := item :: !signature) | false -> Ast_iterator.default_iterator.signature_item self item in - let structure_item (self : Ast_iterator.iterator) - (item : Parsetree.structure_item) = + let structure_item (self : Ast_iterator.iterator) (item : Parsetree.structure_item) = match at_decl_location item.pstr_loc with - | true -> ( - match item.pstr_desc with - | Pstr_type (_, decls) when contains_decl decls -> - (* Don't add the type definition itself. *) () - | _ -> structure := item :: !structure) + | true -> + (match item.pstr_desc with + | Pstr_type (_, decls) when contains_decl decls -> + (* Don't add the type definition itself. *) () + | _ -> structure := item :: !structure) | false -> Ast_iterator.default_iterator.structure_item self item in let iterator = @@ -393,14 +404,13 @@ let typedef_attribute_hover ~ppx_parsetree ~(decl : Parsetree.type_declaration) | `Implementation structure -> iterator.structure iterator structure in let expansion = - match (!signature, !structure) with + match !signature, !structure with | [], [] -> None | signature, [] -> ignore (Format.flush_str_formatter ()); Pprintast.signature Format.str_formatter (List.rev signature); Some (Format.flush_str_formatter ()) - | [], structure -> - Some (Pprintast.string_of_structure (List.rev structure)) + | [], structure -> Some (Pprintast.string_of_structure (List.rev structure)) | _ :: _, _ :: _ -> (* This should not be possible, unless a PPXs provides incorrect position information that places items from a [sig end] into a @@ -408,54 +418,46 @@ let typedef_attribute_hover ~ppx_parsetree ~(decl : Parsetree.type_declaration) None in Option.map expansion ~f:(fun expansion -> - let range = Range.of_loc attr.attr_loc in - let contents = - format_ppx_expansion ~ppx:attr.attr_name.txt ~expansion - in - Hover.create ~contents ~range ()) + let range = Range.of_loc attr.attr_loc in + let contents = format_ppx_expansion ~ppx:attr.attr_name.txt ~expansion in + Hover.create ~contents ~range ()) | _ -> None +;; let handle server { HoverParams.textDocument = { uri }; position; _ } mode = Fiber.of_thunk (fun () -> - let state : State.t = Server.state server in - let doc = - let store = state.store in - Document_store.get store uri + let state : State.t = Server.state server in + let doc = + let store = state.store in + Document_store.get store uri + in + match Document.kind doc with + | `Other -> Fiber.return None + | `Merlin merlin -> + let* parsetree = + Document.Merlin.with_pipeline_exn + ~name:"hover" + (Document.merlin_exn doc) + (fun pipeline -> Mpipeline.reader_parsetree pipeline) in - match Document.kind doc with - | `Other -> Fiber.return None - | `Merlin merlin -> ( - let* parsetree = - Document.Merlin.with_pipeline_exn - ~name:"hover" - (Document.merlin_exn doc) - (fun pipeline -> Mpipeline.reader_parsetree pipeline) - in - match hover_at_cursor parsetree (Position.logical position) with - | None -> Fiber.return None - | Some `Type_enclosing -> - let with_syntax_doc = - match state.configuration.data.syntax_documentation with - | Some { enable = true } -> true - | Some _ | None -> false - in - type_enclosing_hover - ~server - ~doc - ~merlin - ~mode - ~uri - ~position - ~with_syntax_doc - | Some ((`Ppx_expr _ | `Ppx_typedef_attr _) as ppx_kind) -> ( - let+ ppx_parsetree = - Document.Merlin.with_pipeline_exn - ~name:"expand-ppx" - (Document.merlin_exn doc) - (fun pipeline -> Mpipeline.ppx_parsetree pipeline) - in - match ppx_kind with - | `Ppx_expr (expr, ppx) -> - ppx_expression_hover ~ppx_parsetree ~expr ~ppx + (match hover_at_cursor parsetree (Position.logical position) with + | None -> Fiber.return None + | Some `Type_enclosing -> + let with_syntax_doc = + match state.configuration.data.syntax_documentation with + | Some { enable = true } -> true + | Some _ | None -> false + in + type_enclosing_hover ~server ~doc ~merlin ~mode ~uri ~position ~with_syntax_doc + | Some ((`Ppx_expr _ | `Ppx_typedef_attr _) as ppx_kind) -> + let+ ppx_parsetree = + Document.Merlin.with_pipeline_exn + ~name:"expand-ppx" + (Document.merlin_exn doc) + (fun pipeline -> Mpipeline.ppx_parsetree pipeline) + in + (match ppx_kind with + | `Ppx_expr (expr, ppx) -> ppx_expression_hover ~ppx_parsetree ~expr ~ppx | `Ppx_typedef_attr (decl, attr) -> typedef_attribute_hover ~ppx_parsetree ~decl ~attr))) +;; diff --git a/ocaml-lsp-server/src/import.ml b/ocaml-lsp-server/src/import.ml index 135bdfe76..d94fea890 100644 --- a/ocaml-lsp-server/src/import.ml +++ b/ocaml-lsp-server/src/import.ml @@ -13,6 +13,7 @@ include struct incr i done; !i + ;; end module Code_error = Code_error @@ -27,21 +28,13 @@ include struct open Base let findi xs ~f = List.findi xs ~f - let find_mapi xs ~f = List.find_mapi xs ~f - let sub xs ~pos ~len = List.sub xs ~pos ~len - let hd_exn t = List.hd_exn t - let nth_exn t n = List.nth_exn t n - let hd t = List.hd t - let filter t ~f = List.filter t ~f - let tl t = List.tl t - let drop xs i = List.drop xs i end @@ -57,17 +50,11 @@ include struct include String let strip = trim - let chop_prefix_if_exists = Base.String.chop_prefix_if_exists - let chop_suffix_if_exists = Base.String.chop_suffix_if_exists - let substr_index_exn = Base.String.substr_index_exn - let substr_index = Base.String.substr_index - let prefix = Base.String.prefix - let lfindi = Base.String.lfindi (**Filters a string keeping any chars for which f returns true and @@ -76,11 +63,14 @@ include struct let buf = Buffer.create (String.length s) in iter ~f:(fun c -> if f c then Buffer.add_char buf c) s; Buffer.contents buf + ;; let findi = let rec loop s len ~f i = - if i >= len then None - else if f (String.unsafe_get s i) then Some i + if i >= len + then None + else if f (String.unsafe_get s i) + then Some i else loop s len ~f (i + 1) in fun ?from s ~f -> @@ -88,15 +78,17 @@ include struct let from = match from with | None -> 0 - | Some i -> - if i > len - 1 then Code_error.raise "findi: invalid from" [] else i + | Some i -> if i > len - 1 then Code_error.raise "findi: invalid from" [] else i in loop s len ~f from + ;; let rfindi = let rec loop s ~f i = - if i < 0 then None - else if f (String.unsafe_get s i) then Some i + if i < 0 + then None + else if f (String.unsafe_get s i) + then Some i else loop s ~f (i - 1) in fun ?from s ~f -> @@ -105,10 +97,10 @@ include struct match from with | None -> len - 1 | Some i -> - if i > len - 1 then Code_error.raise "rfindi: invalid from" [] - else i + if i > len - 1 then Code_error.raise "rfindi: invalid from" [] else i in loop s ~f from + ;; end module Table = Table @@ -155,25 +147,27 @@ module Loc = struct include T module Map = Map.Make (struct - include T - - let compare x x' = Ordering.of_int (compare x x') - - let position_to_dyn (pos : Lexing.position) = - Dyn.Record - [ ("pos_fname", Dyn.String pos.pos_fname) - ; ("pos_lnum", Dyn.Int pos.pos_lnum) - ; ("pos_bol", Dyn.Int pos.pos_bol) - ; ("pos_cnum", Dyn.Int pos.pos_cnum) - ] - - let to_dyn loc = - Dyn.Record - [ ("loc_start", position_to_dyn loc.loc_start) - ; ("loc_end", position_to_dyn loc.loc_end) - ; ("loc_ghost", Dyn.Bool loc.loc_ghost) - ] - end) + include T + + let compare x x' = Ordering.of_int (compare x x') + + let position_to_dyn (pos : Lexing.position) = + Dyn.Record + [ "pos_fname", Dyn.String pos.pos_fname + ; "pos_lnum", Dyn.Int pos.pos_lnum + ; "pos_bol", Dyn.Int pos.pos_bol + ; "pos_cnum", Dyn.Int pos.pos_cnum + ] + ;; + + let to_dyn loc = + Dyn.Record + [ "loc_start", position_to_dyn loc.loc_start + ; "loc_end", position_to_dyn loc.loc_end + ; "loc_ghost", Dyn.Bool loc.loc_ghost + ] + ;; + end) end include struct @@ -226,12 +220,13 @@ include struct let markdown_support (client_capabilities : ClientCapabilities.t) ~field = match client_capabilities.textDocument with | None -> false - | Some td -> ( - match field td with - | None -> false - | Some format -> - let set = Option.value format ~default:[ MarkupKind.Markdown ] in - List.mem set MarkupKind.Markdown ~equal:Poly.equal) + | Some td -> + (match field td with + | None -> false + | Some format -> + let set = Option.value format ~default:[ MarkupKind.Markdown ] in + List.mem set MarkupKind.Markdown ~equal:Poly.equal) + ;; end module CodeAction = CodeAction @@ -281,15 +276,13 @@ include struct module MarkupContent = MarkupContent module MarkupKind = MarkupKind module MessageType = MessageType - module OptionalVersionedTextDocumentIdentifier = - OptionalVersionedTextDocumentIdentifier + module OptionalVersionedTextDocumentIdentifier = OptionalVersionedTextDocumentIdentifier module ParameterInformation = ParameterInformation module PositionEncodingKind = PositionEncodingKind module ProgressParams = ProgressParams module ProgressToken = ProgressToken module PublishDiagnosticsParams = PublishDiagnosticsParams - module PublishDiagnosticsClientCapabilities = - PublishDiagnosticsClientCapabilities + module PublishDiagnosticsClientCapabilities = PublishDiagnosticsClientCapabilities module ReferenceParams = ReferenceParams module Registration = Registration module RegistrationParams = RegistrationParams @@ -356,5 +349,6 @@ let task_if_running pool ~f = match running with | false -> Fiber.return () | true -> Fiber.Pool.task pool ~f +;; let inside_test = Env_vars._TEST () |> Option.value ~default:false diff --git a/ocaml-lsp-server/src/inference.ml b/ocaml-lsp-server/src/inference.ml index f8a628934..c8914f89b 100644 --- a/ocaml-lsp-server/src/inference.ml +++ b/ocaml-lsp-server/src/inference.ml @@ -4,20 +4,21 @@ module Printtyp = Merlin_analysis.Type_utils.Printtyp let get_typer doc = Document.Merlin.with_pipeline_exn ~name:"infer interface" doc (fun pipeline -> - Mpipeline.typer_result pipeline) + Mpipeline.typer_result pipeline) +;; let get_doc_signature typer = let typedtree = Mtyper.get_typedtree typer in match typedtree with | `Interface intf -> intf.sig_type | `Implementation impl -> impl.str_type +;; (** Called by the code action for insert-interface. *) let infer_missing_intf_for_impl impl_doc intf_doc = - match (Document.kind impl_doc, Document.kind intf_doc) with + match Document.kind impl_doc, Document.kind intf_doc with | `Merlin impl, `Merlin intf - when Document.Merlin.kind impl = Impl && Document.Merlin.kind intf = Intf - -> ( + when Document.Merlin.kind impl = Impl && Document.Merlin.kind intf = Intf -> let drop_existing_ids full_sig cur_sig = let existing_ids = List.map cur_sig ~f:Types.signature_item_id in List.filter @@ -27,48 +28,43 @@ let infer_missing_intf_for_impl impl_doc intf_doc = full_sig in let* typers = Fiber.parallel_map ~f:get_typer [ impl; intf ] in - match typers with - | [ impl_typer; intf_typer ] -> - let full_sig = get_doc_signature impl_typer in - let cur_sig = get_doc_signature intf_typer in - let sig_update = drop_existing_ids full_sig cur_sig in - let env = Mtyper.initial_env impl_typer in - let* intf_cfg = Document.Merlin.mconfig intf in - let verbosity = intf_cfg.query.verbosity in - Printtyp.wrap_printing_env ~verbosity env (fun () -> - Format.asprintf "%a@." Printtyp.signature sig_update) - |> Fiber.return - | _ -> Code_error.raise "promblem encountered with Merlin typer_result" []) + (match typers with + | [ impl_typer; intf_typer ] -> + let full_sig = get_doc_signature impl_typer in + let cur_sig = get_doc_signature intf_typer in + let sig_update = drop_existing_ids full_sig cur_sig in + let env = Mtyper.initial_env impl_typer in + let* intf_cfg = Document.Merlin.mconfig intf in + let verbosity = intf_cfg.query.verbosity in + Printtyp.wrap_printing_env ~verbosity env (fun () -> + Format.asprintf "%a@." Printtyp.signature sig_update) + |> Fiber.return + | _ -> Code_error.raise "promblem encountered with Merlin typer_result" []) | _ -> Code_error.raise "expected implementation and interface documents" [] +;; (* No longer involved in the insert-interface code action, but still used by the [ocamllsp/inferIntf] custom request. *) let infer_intf_for_impl doc = match Document.kind doc with | `Other -> - Code_error.raise - "expected an implementation document, got a non merlin document" - [] + Code_error.raise "expected an implementation document, got a non merlin document" [] | `Merlin m when Document.Merlin.kind m = Intf -> - Code_error.raise - "expected an implementation document, got an interface instead" - [] + Code_error.raise "expected an implementation document, got an interface instead" [] | `Merlin doc -> - Document.Merlin.with_pipeline_exn - ~name:"infer-interface" - doc - (fun pipeline -> - let typer = Mpipeline.typer_result pipeline in - let sig_ : Types.signature = - let typedtree = Mtyper.get_typedtree typer in - match typedtree with - | `Interface _ -> assert false - | `Implementation doc -> doc.str_type - in - let env = Mtyper.initial_env typer in - let verbosity = (Mpipeline.final_config pipeline).query.verbosity in - Printtyp.wrap_printing_env ~verbosity env (fun () -> - Format.asprintf "%a@." Printtyp.signature sig_)) + Document.Merlin.with_pipeline_exn ~name:"infer-interface" doc (fun pipeline -> + let typer = Mpipeline.typer_result pipeline in + let sig_ : Types.signature = + let typedtree = Mtyper.get_typedtree typer in + match typedtree with + | `Interface _ -> assert false + | `Implementation doc -> doc.str_type + in + let env = Mtyper.initial_env typer in + let verbosity = (Mpipeline.final_config pipeline).query.verbosity in + Printtyp.wrap_printing_env ~verbosity env (fun () -> + Format.asprintf "%a@." Printtyp.signature sig_)) +;; let language_id_of_fname s = match Filename.extension s with @@ -77,58 +73,55 @@ let language_id_of_fname s = | ".rei" | ".re" -> "reason" | ".mll" -> "ocaml.ocamllex" | ".mly" -> "ocaml.menhir" - | ext -> - Code_error.raise "unsupported file extension" [ ("extension", String ext) ] + | ext -> Code_error.raise "unsupported file extension" [ "extension", String ext ] +;; let open_document_from_file (state : State.t) uri = let filename = Uri.to_path uri in Fiber.of_thunk (fun () -> - match Io.String_path.read_file filename with - | exception Sys_error _ -> - Log.log ~section:"debug" (fun () -> - Log.msg "Unable to open file" [ ("filename", `String filename) ]); - Fiber.return None - | text -> - let languageId = language_id_of_fname filename in - let text_document = - TextDocumentItem.create ~uri ~languageId ~version:0 ~text - in - let params = - DidOpenTextDocumentParams.create ~textDocument:text_document - in - let+ doc = - let position_encoding = State.position_encoding state in - Document.make - ~position_encoding - (State.wheel state) - state.merlin_config - state.merlin - params - in - Some doc) + match Io.String_path.read_file filename with + | exception Sys_error _ -> + Log.log ~section:"debug" (fun () -> + Log.msg "Unable to open file" [ "filename", `String filename ]); + Fiber.return None + | text -> + let languageId = language_id_of_fname filename in + let text_document = TextDocumentItem.create ~uri ~languageId ~version:0 ~text in + let params = DidOpenTextDocumentParams.create ~textDocument:text_document in + let+ doc = + let position_encoding = State.position_encoding state in + Document.make + ~position_encoding + (State.wheel state) + state.merlin_config + state.merlin + params + in + Some doc) +;; let infer_intf (state : State.t) intf_doc = match Document.kind intf_doc with - | `Other -> - Code_error.raise "the provided document is not a merlin source." [] + | `Other -> Code_error.raise "the provided document is not a merlin source." [] | `Merlin m when Document.Merlin.kind m = Impl -> Code_error.raise "the provided document is not an interface." [] | `Merlin m -> Fiber.of_thunk (fun () -> - let intf_uri = Document.uri intf_doc in - let impl_uri = - Document.get_impl_intf_counterparts (Some m) intf_uri |> List.hd_exn - in - let* impl_opt = - match Document_store.get_opt state.store impl_uri with - | Some impl -> Fiber.return (Some impl) - | None -> open_document_from_file state impl_uri - in - match impl_opt with - | None -> Fiber.return None - | Some impl_doc -> - let+ res = infer_missing_intf_for_impl impl_doc intf_doc in - Some res) + let intf_uri = Document.uri intf_doc in + let impl_uri = + Document.get_impl_intf_counterparts (Some m) intf_uri |> List.hd_exn + in + let* impl_opt = + match Document_store.get_opt state.store impl_uri with + | Some impl -> Fiber.return (Some impl) + | None -> open_document_from_file state impl_uri + in + match impl_opt with + | None -> Fiber.return None + | Some impl_doc -> + let+ res = infer_missing_intf_for_impl impl_doc intf_doc in + Some res) +;; (** Extracts an [Ident.t] from all variants that have one at the top level. For many of the other variants, it would be possible to extract a list of IDs, @@ -150,6 +143,7 @@ let top_level_id (item : Typedtree.signature_item) = | Typedtree.Tsig_class _ | Typedtree.Tsig_class_type _ | Typedtree.Tsig_attribute _ -> None +;; (** Represents an item that's present in the existing interface and has a (possibly differing) signature inferred from the implementation. *) @@ -169,6 +163,7 @@ let find_shared_signature tree_item ~old_sigs ~new_sigs = let* new_sig = List.find ~f:id_equal new_sigs in let range = Range.of_loc tree_item.sig_loc in Some { range; old_sig; new_sig } +;; (** Slices out the signatures between [first] and [last] to speed up future searches. This assumes that [first] and [last] came from the [sig_items] @@ -182,7 +177,7 @@ let select_matching_range ~first ~last sig_type_list = let* id = top_level_id item in let* i, _ = List.findi sig_type_list ~f:(fun _ item -> - Ident.equal id (Types.signature_item_id item)) + Ident.equal id (Types.signature_item_id item)) in Some i in @@ -191,6 +186,7 @@ let select_matching_range ~first ~last sig_type_list = index_of last |> Option.value ~default:(List.length sig_type_list - 1) in List.sub sig_type_list ~pos:start_index ~len:(end_index + 1 - start_index) +;; (** Formats both the old and new signatures as they would appear in the interface. If they differ, create a text edit that updates to the new @@ -201,99 +197,94 @@ let text_edit_opt shared_signature ~formatter = logical equivalence on the actual types and then only format the ones that differ, but that's not practical with the type information we have easy access to. *) let+ sig_strings = - Fiber.parallel_map - ~f:formatter - [ shared_signature.old_sig; shared_signature.new_sig ] + Fiber.parallel_map ~f:formatter [ shared_signature.old_sig; shared_signature.new_sig ] in match sig_strings with | [ oldText; newText ] when not (String.equal oldText newText) -> Some ({ range = shared_signature.range; newText } : TextEdit.t) | _ -> None +;; (** Produces text edits for every signature where the [formatter] produces a different string on the [signature_item]s from the old interface and the new implementation. *) -let build_signature_edits ~(old_intf : Typedtree.signature) - ~(* Extracted by Merlin from the interface. *) - (range : Range.t) - ~(* Selected range in the interface. *) - (new_sigs : Types.signature) - ~(* Inferred by Merlin from the implementation. *) - (formatter : Types.signature_item -> string Fiber.t) = +let build_signature_edits + ~(old_intf : Typedtree.signature) + ~(* Extracted by Merlin from the interface. *) + (range : Range.t) + ~(* Selected range in the interface. *) + (new_sigs : Types.signature) + ~(* Inferred by Merlin from the implementation. *) + (formatter : Types.signature_item -> string Fiber.t) + = (* These are [Typedtree.signature_item]s, and we need them for the location. *) let in_range_tree_items = List.filter old_intf.sig_items ~f:(fun si -> - Range.overlaps range (Range.of_loc si.sig_loc)) + Range.overlaps range (Range.of_loc si.sig_loc)) in let first = List.hd in_range_tree_items in let last = List.last in_range_tree_items in (* These are [Types.signature_item]s, and we need them to match up types. *) - let in_range_old_sigs = - select_matching_range ~first ~last old_intf.sig_type - in + let in_range_old_sigs = select_matching_range ~first ~last old_intf.sig_type in let in_range_new_sigs = (* This list can be big and we might search it many times when finding [shared_signatures], so it's worth doing a scan that shrinks it. *) List.filter new_sigs ~f:(fun si -> - let in_range_old_ids = - List.map in_range_old_sigs ~f:Types.signature_item_id - in - let id = Types.signature_item_id si in - List.mem in_range_old_ids id ~equal:Ident.equal) + let in_range_old_ids = List.map in_range_old_sigs ~f:Types.signature_item_id in + let id = Types.signature_item_id si in + List.mem in_range_old_ids id ~equal:Ident.equal) in let shared_signatures = List.filter_map in_range_tree_items - ~f: - (find_shared_signature - ~old_sigs:in_range_old_sigs - ~new_sigs:in_range_new_sigs) - in - let+ updates = - Fiber.parallel_map shared_signatures ~f:(text_edit_opt ~formatter) + ~f:(find_shared_signature ~old_sigs:in_range_old_sigs ~new_sigs:in_range_new_sigs) in + let+ updates = Fiber.parallel_map shared_signatures ~f:(text_edit_opt ~formatter) in List.filter_opt updates +;; (** Called by the code action for update-signatures. *) -let update_signatures ~(state : State.t) ~(intf_merlin : Document.Merlin.t) - ~(doc : Document.t) ~(range : Range.t) = +let update_signatures + ~(state : State.t) + ~(intf_merlin : Document.Merlin.t) + ~(doc : Document.t) + ~(range : Range.t) + = Fiber.of_thunk (fun () -> - let intf_uri = Document.uri doc in - let impl_uri = - Document.get_impl_intf_counterparts (Some intf_merlin) intf_uri - |> List.hd_exn - in - let* impl_doc = - match Document_store.get_opt state.store impl_uri with - | Some impl -> Fiber.return (Some impl) - | None -> open_document_from_file state impl_uri - in - match impl_doc with - | None -> Fiber.return [] - | Some impl_doc -> ( - let impl_merlin = Document.merlin_exn impl_doc in - (* CR-someday bwiedenbeck: These calls to Merlin to get the type information (and - the subsequent processing we do with it) are expensive on large documents. - This can cause problems if someone is trying to invoke some other code action, - because the LSP currently determines which CAs are possible by trying them all. - We've decided for now to allow slow code actions (especially since users are - less likely to be doing lots of little CAs in the mli file) and think more - about the broader CA protocol in the future. *) - let* typers = - Fiber.parallel_map [ intf_merlin; impl_merlin ] ~f:get_typer - in - let intf_typer = List.hd_exn typers in - let impl_typer = List.nth_exn typers 1 in - match Mtyper.get_typedtree intf_typer with - | `Interface old_intf -> - let formatter sig_item = - let* config = Document.Merlin.mconfig intf_merlin in - let verbosity = config.query.verbosity in - let env = Mtyper.initial_env intf_typer in - Fiber.return - (Printtyp.wrap_printing_env ~verbosity env (fun () -> - Format.asprintf "%a@." Printtyp.signature [ sig_item ])) - in - let new_sigs = get_doc_signature impl_typer in - build_signature_edits ~old_intf ~new_sigs ~range ~formatter - | _ -> Code_error.raise "expected an interface" [])) + let intf_uri = Document.uri doc in + let impl_uri = + Document.get_impl_intf_counterparts (Some intf_merlin) intf_uri |> List.hd_exn + in + let* impl_doc = + match Document_store.get_opt state.store impl_uri with + | Some impl -> Fiber.return (Some impl) + | None -> open_document_from_file state impl_uri + in + match impl_doc with + | None -> Fiber.return [] + | Some impl_doc -> + let impl_merlin = Document.merlin_exn impl_doc in + (* CR-someday bwiedenbeck: These calls to Merlin to get the type information (and + the subsequent processing we do with it) are expensive on large documents. + This can cause problems if someone is trying to invoke some other code action, + because the LSP currently determines which CAs are possible by trying them all. + We've decided for now to allow slow code actions (especially since users are + less likely to be doing lots of little CAs in the mli file) and think more + about the broader CA protocol in the future. *) + let* typers = Fiber.parallel_map [ intf_merlin; impl_merlin ] ~f:get_typer in + let intf_typer = List.hd_exn typers in + let impl_typer = List.nth_exn typers 1 in + (match Mtyper.get_typedtree intf_typer with + | `Interface old_intf -> + let formatter sig_item = + let* config = Document.Merlin.mconfig intf_merlin in + let verbosity = config.query.verbosity in + let env = Mtyper.initial_env intf_typer in + Fiber.return + (Printtyp.wrap_printing_env ~verbosity env (fun () -> + Format.asprintf "%a@." Printtyp.signature [ sig_item ])) + in + let new_sigs = get_doc_signature impl_typer in + build_signature_edits ~old_intf ~new_sigs ~range ~formatter + | _ -> Code_error.raise "expected an interface" [])) +;; diff --git a/ocaml-lsp-server/src/inference.mli b/ocaml-lsp-server/src/inference.mli index e569dafac..be37d4235 100644 --- a/ocaml-lsp-server/src/inference.mli +++ b/ocaml-lsp-server/src/inference.mli @@ -5,8 +5,8 @@ val infer_intf_for_impl : Document.t -> string Fiber.t the diff between them to produce the updated interface. Any names present in the existing interface are omitted from the inserted code (regardless of whether their signatures have changed). *) -val infer_missing_intf_for_impl : - Document.t (** implementation *) +val infer_missing_intf_for_impl + : Document.t (** implementation *) -> Document.t (** interface *) -> string Fiber.t (** code to be inserted in the interface *) @@ -17,8 +17,8 @@ val infer_intf : State.t -> Document.t -> string option Fiber.t Compares signatures found in the selected range of the interface document with ones inferred from the corresponding implementation document, and produces text edits for any that can be updated. *) -val update_signatures : - state:State.t +val update_signatures + : state:State.t -> intf_merlin:Document.Merlin.t -> doc:Document.t -> range:Range.t diff --git a/ocaml-lsp-server/src/inlay_hints.ml b/ocaml-lsp-server/src/inlay_hints.ml index b0c06c10e..1d1b7c323 100644 --- a/ocaml-lsp-server/src/inlay_hints.ml +++ b/ocaml-lsp-server/src/inlay_hints.ml @@ -5,17 +5,24 @@ let range_overlaps_loc range loc = match Range.of_loc_opt loc with | Some range' -> Range.overlaps range range' | None -> false +;; let outline_type ~env typ = Ocaml_typing.Printtyp.wrap_printing_env env (fun () -> - Format.asprintf "@[: %a@]" Ocaml_typing.Printtyp.type_scheme typ) + Format.asprintf "@[: %a@]" Ocaml_typing.Printtyp.type_scheme typ) |> String.extract_words ~is_word_char:(function - | ' ' | '\t' | '\n' -> false - | _ -> true) + | ' ' | '\t' | '\n' -> false + | _ -> true) |> String.concat ~sep:" " +;; -let hint_binding_iter ?(hint_let_bindings = false) - ?(hint_pattern_variables = false) typedtree range k = +let hint_binding_iter + ?(hint_let_bindings = false) + ?(hint_pattern_variables = false) + typedtree + range + k + = let module I = Ocaml_typing.Tast_iterator in (* to be used for pattern variables in match cases, but not for function arguments *) @@ -24,27 +31,24 @@ let hint_binding_iter ?(hint_let_bindings = false) Option.iter case.c_guard ~f:(iter.expr iter); iter.expr iter case.c_rhs in - let value_binding hint_lhs (iter : I.iterator) (vb : Typedtree.value_binding) - = - if range_overlaps_loc range vb.vb_loc then - if not hint_lhs then iter.expr iter vb.vb_expr - else + let value_binding hint_lhs (iter : I.iterator) (vb : Typedtree.value_binding) = + if range_overlaps_loc range vb.vb_loc + then + if not hint_lhs + then iter.expr iter vb.vb_expr + else ( match vb.vb_expr.exp_desc with | Texp_function _ -> iter.expr iter vb.vb_expr - | _ -> I.default_iterator.value_binding iter vb + | _ -> I.default_iterator.value_binding iter vb) in - let expr (iter : I.iterator) (e : Typedtree.expression) = - if range_overlaps_loc range e.exp_loc then + if range_overlaps_loc range e.exp_loc + then ( match e.exp_desc with | Texp_function { arg_label = Optional _ ; cases = - [ { c_rhs = - { exp_desc = Texp_let (_, [ { vb_pat; _ } ], body); _ } - ; _ - } - ] + [ { c_rhs = { exp_desc = Texp_let (_, [ { vb_pat; _ } ], body); _ }; _ } ] ; _ } -> iter.pat iter vb_pat; @@ -58,33 +62,34 @@ let hint_binding_iter ?(hint_let_bindings = false) List.iter cases ~f:(case hint_pattern_variables iter) (* Stop iterating when we see a ghost location to avoid annotating generated code *) | _ when e.exp_loc.loc_ghost && not inside_test -> () - | _ -> I.default_iterator.expr iter e + | _ -> I.default_iterator.expr iter e) in - let structure_item (iter : I.iterator) (item : Typedtree.structure_item) = - if range_overlaps_loc range item.str_loc then + if range_overlaps_loc range item.str_loc + then ( match item.str_desc with | Typedtree.Tstr_value (_, vbs) -> - List.iter vbs ~f:(fun (vb : Typedtree.value_binding) -> - expr iter vb.vb_expr) + List.iter vbs ~f:(fun (vb : Typedtree.value_binding) -> expr iter vb.vb_expr) (* Stop iterating when we see a ghost location to avoid annotating generated code *) | _ when item.str_loc.loc_ghost && not inside_test -> () - | _ -> I.default_iterator.structure_item iter item + | _ -> I.default_iterator.structure_item iter item) in let pat (type k) iter (pat : k Typedtree.general_pattern) = - if range_overlaps_loc range pat.pat_loc then + if range_overlaps_loc range pat.pat_loc + then ( let has_constraint = List.exists pat.pat_extra ~f:(fun (extra, _, _) -> - match extra with - | Typedtree.Tpat_constraint _ -> true - | _ -> false) + match extra with + | Typedtree.Tpat_constraint _ -> true + | _ -> false) in - if not has_constraint then ( + if not has_constraint + then ( I.default_iterator.pat iter pat; match pat.pat_desc with | Tpat_var _ when not pat.pat_loc.loc_ghost -> k pat.pat_env pat.pat_type pat.pat_loc - | _ -> ()) + | _ -> ())) in let iterator = { I.default_iterator with @@ -95,18 +100,16 @@ let hint_binding_iter ?(hint_let_bindings = false) } in iterator.structure iterator typedtree +;; -let compute (state : State.t) - { InlayHintParams.range; textDocument = { uri }; _ } = +let compute (state : State.t) { InlayHintParams.range; textDocument = { uri }; _ } = let store = state.store in let doc = Document_store.get store uri in let hint_let_bindings = - Option.map state.configuration.data.inlay_hints ~f:(fun c -> - c.hint_let_bindings) + Option.map state.configuration.data.inlay_hints ~f:(fun c -> c.hint_let_bindings) in let hint_pattern_variables = - Option.map state.configuration.data.inlay_hints ~f:(fun c -> - c.hint_pattern_variables) + Option.map state.configuration.data.inlay_hints ~f:(fun c -> c.hint_pattern_variables) in match Document.kind doc with | `Other -> Fiber.return None @@ -115,27 +118,28 @@ let compute (state : State.t) let hints = ref [] in let* () = Document.Merlin.with_pipeline_exn ~name:"inlay-hints" doc (fun pipeline -> - match Mtyper.get_typedtree (Mpipeline.typer_result pipeline) with - | `Interface _ -> () - | `Implementation typedtree -> - hint_binding_iter - ?hint_let_bindings - ?hint_pattern_variables - typedtree - range - (fun env type_ loc -> - let open Option.O in - let hint = - let label = outline_type ~env type_ in - let+ position = Position.of_lexical_position loc.loc_end in - InlayHint.create - ~kind:Type - ~position - ~label:(`String label) - ~paddingLeft:false - ~paddingRight:false - () - in - Option.iter hint ~f:(fun hint -> hints := hint :: !hints))) + match Mtyper.get_typedtree (Mpipeline.typer_result pipeline) with + | `Interface _ -> () + | `Implementation typedtree -> + hint_binding_iter + ?hint_let_bindings + ?hint_pattern_variables + typedtree + range + (fun env type_ loc -> + let open Option.O in + let hint = + let label = outline_type ~env type_ in + let+ position = Position.of_lexical_position loc.loc_end in + InlayHint.create + ~kind:Type + ~position + ~label:(`String label) + ~paddingLeft:false + ~paddingRight:false + () + in + Option.iter hint ~f:(fun hint -> hints := hint :: !hints))) in Fiber.return (Some !hints) +;; diff --git a/ocaml-lsp-server/src/merlin_config.ml b/ocaml-lsp-server/src/merlin_config.ml index d6d94dedc..3d8b0e07c 100644 --- a/ocaml-lsp-server/src/merlin_config.ml +++ b/ocaml-lsp-server/src/merlin_config.ml @@ -37,12 +37,14 @@ module List = struct let tbl = Hashtbl.create 17 in let f a b = let b' = equiv b in - if Hashtbl.mem tbl b' then a + if Hashtbl.mem tbl b' + then a else ( Hashtbl.add tbl b' (); b :: a) in rev (fold_left ~f ~init:[] lst) + ;; let filter_dup lst = filter_dup' ~equiv:(fun x -> x) lst end @@ -75,6 +77,7 @@ module Config = struct ; exclude_query_dir = false ; use_ppx_cache = false } + ;; (* Parses suffixes pairs that were supplied as whitespace separated pairs designating implementation/interface suffixes. These would be supplied in @@ -87,37 +90,35 @@ module Config = struct String.extract_blank_separated_words trimmed with | [ first; second ] -> - if String.get first 0 <> '.' || String.get second 0 <> '.' then [] - else [ (first, second) ] + if String.get first 0 <> '.' || String.get second 0 <> '.' + then [] + else [ first, second ] | _ -> [] + ;; - let prepend ~dir:cwd (directives : Merlin_dot_protocol.directive list) config - = + let prepend ~dir:cwd (directives : Merlin_dot_protocol.directive list) config = List.fold_left ~init:(config, []) directives ~f:(fun (config, errors) -> - function - | `B path -> - ({ config with build_path = path :: config.build_path }, errors) - | `S path -> - ({ config with source_path = path :: config.source_path }, errors) - | `CMI path -> ({ config with cmi_path = path :: config.cmi_path }, errors) - | `CMT path -> ({ config with cmt_path = path :: config.cmt_path }, errors) - | `EXT exts -> - ({ config with extensions = exts @ config.extensions }, errors) - | `SUFFIX suffix -> - ( { config with suffixes = parse_suffix suffix @ config.suffixes } - , errors ) - | `FLG flags -> - let flags = { Std.workdir = cwd; workval = flags } in - ({ config with flags = flags :: config.flags }, errors) - | `STDLIB path -> ({ config with stdlib = Some path }, errors) - | `READER reader -> ({ config with reader }, errors) - | `EXCLUDE_QUERY_DIR -> ({ config with exclude_query_dir = true }, errors) - | `USE_PPX_CACHE -> ({ config with use_ppx_cache = true }, errors) - | `UNKNOWN_TAG _ -> - (* For easier forward compatibility we ignore unknown configuration tags - when they are provided by dune *) - (config, errors) - | `ERROR_MSG str -> (config, str :: errors)) + function + | `B path -> { config with build_path = path :: config.build_path }, errors + | `S path -> { config with source_path = path :: config.source_path }, errors + | `CMI path -> { config with cmi_path = path :: config.cmi_path }, errors + | `CMT path -> { config with cmt_path = path :: config.cmt_path }, errors + | `EXT exts -> { config with extensions = exts @ config.extensions }, errors + | `SUFFIX suffix -> + { config with suffixes = parse_suffix suffix @ config.suffixes }, errors + | `FLG flags -> + let flags = { Std.workdir = cwd; workval = flags } in + { config with flags = flags :: config.flags }, errors + | `STDLIB path -> { config with stdlib = Some path }, errors + | `READER reader -> { config with reader }, errors + | `EXCLUDE_QUERY_DIR -> { config with exclude_query_dir = true }, errors + | `USE_PPX_CACHE -> { config with use_ppx_cache = true }, errors + | `UNKNOWN_TAG _ -> + (* For easier forward compatibility we ignore unknown configuration tags + when they are provided by dune *) + config, errors + | `ERROR_MSG str -> config, str :: errors) + ;; let postprocess = let clean list = List.rev (List.filter_dup list) in @@ -134,6 +135,7 @@ module Config = struct ; exclude_query_dir = config.exclude_query_dir ; use_ppx_cache = config.use_ppx_cache } + ;; let merge t (merlin : Mconfig.merlin) failures config_path = { merlin with @@ -150,6 +152,7 @@ module Config = struct ; failures = failures @ merlin.failures ; config_path = Some config_path } + ;; end module Process = struct @@ -163,20 +166,22 @@ module Process = struct let to_dyn { pid; initial_cwd; _ } = let open Dyn in - record [ ("pid", Pid.to_dyn pid); ("initial_cwd", string initial_cwd) ] + record [ "pid", Pid.to_dyn pid; "initial_cwd", string initial_cwd ] + ;; let waitpid t = let+ status = Lev_fiber.waitpid ~pid:(Pid.to_int t.pid) in (match status with - | Unix.WEXITED n -> ( - match n with - | 0 -> () - | n -> Format.eprintf "dune finished with code = %d@.%!" n) - | WSIGNALED s -> Format.eprintf "dune finished signal = %d@.%!" s - | WSTOPPED _ -> ()); + | Unix.WEXITED n -> + (match n with + | 0 -> () + | n -> Format.eprintf "dune finished with code = %d@.%!" n) + | WSIGNALED s -> Format.eprintf "dune finished signal = %d@.%!" s + | WSTOPPED _ -> ()); Format.eprintf "closed merlin process@.%s@." (Dyn.to_string @@ to_dyn t); Lev_fiber.Io.close t.stdin; Lev_fiber.Io.close t.stdout + ;; let start ~dir = match Bin.which "dune" with @@ -194,18 +199,13 @@ module Process = struct let pid = let argv = [ prog; "ocaml-merlin"; "--no-print-directory" ] in Pid.of_int - (Spawn.spawn - ~cwd:(Path dir) - ~prog - ~argv - ~stdin:stdin_r - ~stdout:stdout_w - ()) + (Spawn.spawn ~cwd:(Path dir) ~prog ~argv ~stdin:stdin_r ~stdout:stdout_w ()) in Unix.close stdin_r; Unix.close stdout_w; let blockity = - if Sys.win32 then `Blocking + if Sys.win32 + then `Blocking else ( Unix.set_nonblock stdin_w; Unix.set_nonblock stdout_r; @@ -219,6 +219,7 @@ module Process = struct let+ stdout = make stdout_r Input in let session = Lev_fiber_csexp.Session.create ~socket:false stdout stdin in { pid; initial_cwd = dir; stdin; stdout; session } + ;; end module Dot_protocol_io = @@ -228,7 +229,6 @@ module Dot_protocol_io = include Lev_fiber_csexp.Session type in_chan = t - type out_chan = t let read t = @@ -237,6 +237,7 @@ module Dot_protocol_io = match opt with | Some r -> Result.return r | None -> Error "Read error" + ;; let write t x = write t [ x ] end) @@ -258,21 +259,21 @@ module Entry = struct type t = entry let create db process = { db; process; ref_count = 0 } - let equal = ( == ) - let incr t = t.ref_count <- t.ref_count + 1 let destroy (t : t) = assert (t.ref_count > 0); t.ref_count <- t.ref_count - 1; - if t.ref_count > 0 then Fiber.return () + if t.ref_count > 0 + then Fiber.return () else ( Table.remove t.db.running t.process.initial_cwd; Format.eprintf "halting dune merlin process@.%s@." (Dyn.to_string (Process.to_dyn t.process)); Dot_protocol_io.Commands.halt t.process.session) + ;; end let get_process t ~dir = @@ -284,6 +285,7 @@ let get_process t ~dir = Table.add_exn t.running dir entry; let+ () = Fiber.Pool.task t.pool ~f:(fun () -> Process.waitpid process) in entry +;; type context = { workdir : string @@ -300,20 +302,18 @@ let get_config (p : Process.t) ~workdir path_abs = let path_rel = String.drop_prefix ~prefix:p.initial_cwd path_abs |> Option.map ~f:(fun path -> - (* We need to remove the leading path separator after chopping. There - is one case where no separator is left: when [initial_cwd] was the - root of the filesystem *) - if String.length path > 0 && path.[0] = Filename.dir_sep.[0] then - String.drop path 1 - else path) + (* We need to remove the leading path separator after chopping. There + is one case where no separator is left: when [initial_cwd] was the + root of the filesystem *) + if String.length path > 0 && path.[0] = Filename.dir_sep.[0] + then String.drop path 1 + else path) in - let path = match path_rel with | Some path_rel -> path_rel | _ -> path_abs in - (* Starting with Dune 2.8.3 relative paths are prefered. However to maintain compatibility with 2.8 <= Dune <= 2.8.2 we always retry with an absolute path if using a relative one failed *) @@ -323,22 +323,23 @@ let get_config (p : Process.t) ~workdir path_abs = | Ok [ `ERROR_MSG _ ] -> query path_abs p | answer -> Fiber.return answer in - match answer with | Ok directives -> let cfg, failures = Config.prepend ~dir:workdir directives Config.empty in - (Config.postprocess cfg, failures) - | Error (Merlin_dot_protocol.Unexpected_output msg) -> (Config.empty, [ msg ]) + Config.postprocess cfg, failures + | Error (Merlin_dot_protocol.Unexpected_output msg) -> Config.empty, [ msg ] | Error (Csexp_parse_error _) -> ( Config.empty - , [ "ocamllsp could not load its configuration from the external reader. \ - Building your project with `dune` might solve this issue." + , [ "ocamllsp could not load its configuration from the external reader. Building \ + your project with `dune` might solve this issue." ] ) +;; let file_exists fname = match Unix.stat fname with | exception Unix.Unix_error (Unix.ENOENT, _, _) -> false | s -> s.st_kind <> S_DIR +;; let find_project_context start_dir = (* The workdir is the first directory we find which contains a [dune] file. We @@ -352,28 +353,28 @@ let find_project_context start_dir = let fnames = List.map ~f:(Filename.concat dir) [ "dune"; "dune-file" ] in if List.exists ~f:file_exists fnames then Some dir else None in - let rec loop workdir dir = match List.find_map [ "dune-project"; "dune-workspace" ] ~f:(fun f -> - let fname = Filename.concat dir f in - if file_exists fname then - let workdir = - Misc.canonicalize_filename (Option.value ~default:dir workdir) - in - Some ({ workdir; process_dir = dir }, fname) - else None) + let fname = Filename.concat dir f in + if file_exists fname + then ( + let workdir = Misc.canonicalize_filename (Option.value ~default:dir workdir) in + Some ({ workdir; process_dir = dir }, fname)) + else None) with | Some s -> Some s | None -> let parent = Filename.dirname dir in - if parent <> dir then + if parent <> dir + then ( (* Was this directory the workdir ? *) let workdir = map_workdir dir workdir in - loop workdir parent + loop workdir parent) else None in loop None start_dir +;; type nonrec t = { path : string @@ -390,6 +391,7 @@ let destroy t = | Some entry -> t.entry <- None; Entry.destroy entry +;; let create db path = let path = @@ -402,15 +404,11 @@ let create db path = let init = Mconfig.initial in { init with ocaml = { init.ocaml with real_paths = false } - ; query = - { init.query with - filename - ; directory - ; verbosity = Mconfig.Verbosity.Smart - } + ; query = { init.query with filename; directory; verbosity = Mconfig.Verbosity.Smart } } in { path; directory; initial; db; entry = None } +;; let config (t : t) : Mconfig.t Fiber.t = let use_entry entry = @@ -418,9 +416,9 @@ let config (t : t) : Mconfig.t Fiber.t = t.entry <- Some entry in let* () = Fiber.return () in - if !should_read_dot_merlin then - Fiber.return (Mconfig.get_external_config t.path t.initial) - else + if !should_read_dot_merlin + then Fiber.return (Mconfig.get_external_config t.path t.initial) + else ( match find_project_context t.directory with | None -> let+ () = destroy t in @@ -433,17 +431,16 @@ let config (t : t) : Mconfig.t Fiber.t = use_entry entry; Fiber.return () | Some entry' -> - if Entry.equal entry entry' then Fiber.return () + if Entry.equal entry entry' + then Fiber.return () else let+ () = destroy t in use_entry entry in - let+ dot, failures = - get_config entry.process ~workdir:ctx.workdir t.path - in - + let+ dot, failures = get_config entry.process ~workdir:ctx.workdir t.path in let merlin = Config.merge dot t.initial.merlin failures config_path in - Mconfig.normalize { t.initial with merlin } + Mconfig.normalize { t.initial with merlin }) +;; module DB = struct type t = db @@ -452,13 +449,15 @@ module DB = struct let create () = { running = Table.create (module String) 0; pool = Fiber.Pool.create () } + ;; let run t = Fiber.Pool.run t.pool let stop t = let* () = Fiber.return () in Table.iter t.running ~f:(fun running -> - let pid = Pid.to_int running.process.pid in - Unix.kill pid (if Sys.win32 then Sys.sigkill else Sys.sigterm)); + let pid = Pid.to_int running.process.pid in + Unix.kill pid (if Sys.win32 then Sys.sigkill else Sys.sigterm)); Fiber.Pool.stop t.pool + ;; end diff --git a/ocaml-lsp-server/src/merlin_config.mli b/ocaml-lsp-server/src/merlin_config.mli index 43995ce4d..bc057f038 100644 --- a/ocaml-lsp-server/src/merlin_config.mli +++ b/ocaml-lsp-server/src/merlin_config.mli @@ -5,21 +5,15 @@ open Import type t val should_read_dot_merlin : bool ref - val config : t -> Mconfig.t Fiber.t - val destroy : t -> unit Fiber.t module DB : sig type config := t - type t val create : unit -> t - val stop : t -> unit Fiber.t - val run : t -> unit Fiber.t - val get : t -> Uri.t -> config end diff --git a/ocaml-lsp-server/src/merlin_config_command.ml b/ocaml-lsp-server/src/merlin_config_command.ml index b89a57ab6..a19f045cf 100644 --- a/ocaml-lsp-server/src/merlin_config_command.ml +++ b/ocaml-lsp-server/src/merlin_config_command.ml @@ -7,29 +7,27 @@ let command_run server store = let* json = let+ docs = Document_store.fold store ~init:[] ~f:(fun doc acc -> - match Document.kind doc with - | `Other -> acc - | `Merlin m -> m :: acc) + match Document.kind doc with + | `Other -> acc + | `Merlin m -> m :: acc) |> Fiber.parallel_map ~f:(fun doc -> - let+ config = Document.Merlin.mconfig doc in - let config : Json.t = (Mconfig.dump config :> Json.t) in - let uri = Document.uri (Document.Merlin.to_doc doc) in - (Uri.to_string uri, config)) + let+ config = Document.Merlin.mconfig doc in + let config : Json.t = (Mconfig.dump config :> Json.t) in + let uri = Document.uri (Document.Merlin.to_doc doc) in + Uri.to_string uri, config) in let json = `Assoc docs in Format.asprintf "%a@.%!" Json.pp json in let uri, chan = - Filename.open_temp_file - (sprintf "merlin-config.%d" (Unix.getpid ())) - ".json" + Filename.open_temp_file (sprintf "merlin-config.%d" (Unix.getpid ())) ".json" in output_string chan json; close_out_noerr chan; let req = let uri = Uri.of_path uri in - Server_request.ShowDocumentRequest - (ShowDocumentParams.create ~uri ~takeFocus:true ()) + Server_request.ShowDocumentRequest (ShowDocumentParams.create ~uri ~takeFocus:true ()) in let+ { ShowDocumentResult.success = _ } = Server.request server req in () +;; diff --git a/ocaml-lsp-server/src/merlin_config_command.mli b/ocaml-lsp-server/src/merlin_config_command.mli index 0619ec7d7..8843c6261 100644 --- a/ocaml-lsp-server/src/merlin_config_command.mli +++ b/ocaml-lsp-server/src/merlin_config_command.mli @@ -1,5 +1,4 @@ open Import val command_name : string - val command_run : _ Server.t -> Document_store.t -> unit Fiber.t diff --git a/ocaml-lsp-server/src/metrics.ml b/ocaml-lsp-server/src/metrics.ml index 6d38d595d..50d77d264 100644 --- a/ocaml-lsp-server/src/metrics.ml +++ b/ocaml-lsp-server/src/metrics.ml @@ -6,15 +6,16 @@ let max_len = 1_000 type t = { events : Chrome_trace.Event.t Queue.t } let t_var : t Fiber.Var.t = Fiber.Var.create () - let get () = Fiber.Var.get_exn t_var let report (event : Chrome_trace.Event.t) : unit Fiber.t = let+ t = get () in - (if Queue.length t.events >= max_len then - let (_ : Chrome_trace.Event.t) = Queue.pop_exn t.events in - ()); + if Queue.length t.events >= max_len + then ( + let (_ : Chrome_trace.Event.t) = Queue.pop_exn t.events in + ()); Queue.push t.events event +;; let dump () = let+ t = get () in @@ -24,7 +25,7 @@ let dump () = |> Chrome_trace.Output_object.to_json in Json.to_string (json :> Json.t) +;; let create () = { events = Queue.create () } - let with_metrics t f = Fiber.Var.set t_var t f diff --git a/ocaml-lsp-server/src/metrics.mli b/ocaml-lsp-server/src/metrics.mli index 49e1ce576..6837ceae2 100644 --- a/ocaml-lsp-server/src/metrics.mli +++ b/ocaml-lsp-server/src/metrics.mli @@ -1,9 +1,6 @@ type t val create : unit -> t - val with_metrics : t -> (unit -> 'a Fiber.t) -> 'a Fiber.t - val report : Chrome_trace.Event.t -> unit Fiber.t - val dump : unit -> string Fiber.t diff --git a/ocaml-lsp-server/src/ocaml_lsp_server.ml b/ocaml-lsp-server/src/ocaml_lsp_server.ml index 7e03de38c..dcc5a0131 100644 --- a/ocaml-lsp-server/src/ocaml_lsp_server.ml +++ b/ocaml-lsp-server/src/ocaml_lsp_server.ml @@ -12,6 +12,7 @@ let make_error = Jsonrpc.Response.Error.make let not_supported () = Jsonrpc.Response.Error.raise (make_error ~code:InternalError ~message:"Request not supported yet!" ()) +;; let view_metrics_command_name = "ocamllsp/view-metrics" @@ -24,19 +25,19 @@ let view_metrics server = close_out_noerr chan; let req = let uri = Uri.of_path uri in - Server_request.ShowDocumentRequest - (ShowDocumentParams.create ~uri ~takeFocus:true ()) + Server_request.ShowDocumentRequest (ShowDocumentParams.create ~uri ~takeFocus:true ()) in let+ { ShowDocumentResult.success = _ } = Server.request server req in `Null +;; -let initialize_info (client_capabilities : ClientCapabilities.t) : - InitializeResult.t = +let initialize_info (client_capabilities : ClientCapabilities.t) : InitializeResult.t = let codeActionProvider = match client_capabilities.textDocument with | Some { codeAction = Some { codeActionLiteralSupport = Some _; _ }; _ } -> let codeActionKinds = - Action_inferred_intf.kind :: Action_destruct.kind + Action_inferred_intf.kind + :: Action_destruct.kind :: List.map ~f:(fun (c : Code_action.t) -> c.kind) [ Action_type_annotate.t @@ -64,19 +65,12 @@ let initialize_info (client_capabilities : ClientCapabilities.t) : in let codeLensProvider = CodeLensOptions.create ~resolveProvider:false () in let completionProvider = - CompletionOptions.create - ~triggerCharacters:[ "."; "#" ] - ~resolveProvider:true - () + CompletionOptions.create ~triggerCharacters:[ "."; "#" ] ~resolveProvider:true () in let signatureHelpProvider = - SignatureHelpOptions.create - ~triggerCharacters:[ " "; "~"; "?"; ":"; "(" ] - () - in - let renameProvider = - `RenameOptions (RenameOptions.create ~prepareProvider:true ()) + SignatureHelpOptions.create ~triggerCharacters:[ " "; "~"; "?"; ":"; "(" ] () in + let renameProvider = `RenameOptions (RenameOptions.create ~prepareProvider:true ()) in let workspace = let workspaceFolders = WorkspaceFoldersServerCapabilities.create @@ -91,7 +85,7 @@ let initialize_info (client_capabilities : ClientCapabilities.t) : `Assoc [ ( "ocamllsp" , `Assoc - [ ("interfaceSpecificLangId", `Bool true) + [ "interfaceSpecificLangId", `Bool true ; Req_switch_impl_intf.capability ; Req_infer_intf.capability ; Req_typed_holes.capability @@ -105,15 +99,16 @@ let initialize_info (client_capabilities : ClientCapabilities.t) : in let executeCommandProvider = let commands = - if - Action_open_related.available - (let open Option.O in - let* window = client_capabilities.window in - window.showDocument) + if Action_open_related.available + (let open Option.O in + let* window = client_capabilities.window in + window.showDocument) then - view_metrics_command_name :: Action_open_related.command_name + view_metrics_command_name + :: Action_open_related.command_name :: Document_text_command.command_name - :: Merlin_config_command.command_name :: Dune.commands + :: Merlin_config_command.command_name + :: Dune.commands else Dune.commands in ExecuteCommandOptions.create ~commands () @@ -121,10 +116,7 @@ let initialize_info (client_capabilities : ClientCapabilities.t) : let semanticTokensProvider = let full = `Full (SemanticTokensOptions.create_full ~delta:true ()) in `SemanticTokensOptions - (SemanticTokensOptions.create - ~legend:Semantic_highlighting.legend - ~full - ()) + (SemanticTokensOptions.create ~legend:Semantic_highlighting.legend ~full ()) in let positionEncoding = let open Option.O in @@ -166,6 +158,7 @@ let initialize_info (client_capabilities : ClientCapabilities.t) : InitializeResult.create_serverInfo ~name:"ocamllsp" ~version () in InitializeResult.create ~capabilities ~serverInfo () +;; let ocamlmerlin_reason = "ocamlmerlin-reason" @@ -173,42 +166,41 @@ let set_diagnostics detached diagnostics doc = let uri = Document.uri doc in match Document.kind doc with | `Other -> Fiber.return () - | `Merlin merlin -> ( + | `Merlin merlin -> let async send = let+ () = task_if_running detached ~f:(fun () -> - let timer = Document.Merlin.timer merlin in - let* () = Lev_fiber.Timer.Wheel.cancel timer in - let* () = Lev_fiber.Timer.Wheel.reset timer in - let* res = Lev_fiber.Timer.Wheel.await timer in - match res with - | `Cancelled -> Fiber.return () - | `Ok -> send ()) + let timer = Document.Merlin.timer merlin in + let* () = Lev_fiber.Timer.Wheel.cancel timer in + let* () = Lev_fiber.Timer.Wheel.reset timer in + let* res = Lev_fiber.Timer.Wheel.await timer in + match res with + | `Cancelled -> Fiber.return () + | `Ok -> send ()) in () in - match Document.syntax doc with - | Dune | Cram | Menhir | Ocamllex -> Fiber.return () - | Reason when Option.is_none (Bin.which ocamlmerlin_reason) -> - let no_reason_merlin = - let message = - `String - (sprintf - "Could not detect %s. Please install reason" - ocamlmerlin_reason) - in - Diagnostic.create - ~source:Diagnostics.ocamllsp_source - ~range:Range.first_line - ~message - () - in - Diagnostics.set diagnostics (`Merlin (uri, [ no_reason_merlin ])); - async (fun () -> Diagnostics.send diagnostics (`One uri)) - | Reason | Ocaml -> - async (fun () -> - let* () = Diagnostics.merlin_diagnostics diagnostics merlin in - Diagnostics.send diagnostics (`One uri))) + (match Document.syntax doc with + | Dune | Cram | Menhir | Ocamllex -> Fiber.return () + | Reason when Option.is_none (Bin.which ocamlmerlin_reason) -> + let no_reason_merlin = + let message = + `String + (sprintf "Could not detect %s. Please install reason" ocamlmerlin_reason) + in + Diagnostic.create + ~source:Diagnostics.ocamllsp_source + ~range:Range.first_line + ~message + () + in + Diagnostics.set diagnostics (`Merlin (uri, [ no_reason_merlin ])); + async (fun () -> Diagnostics.send diagnostics (`One uri)) + | Reason | Ocaml -> + async (fun () -> + let* () = Diagnostics.merlin_diagnostics diagnostics merlin in + Diagnostics.send diagnostics (`One uri))) +;; let on_initialize server (ip : InitializeParams.t) = let state : State.t = Server.state server in @@ -227,19 +219,17 @@ let on_initialize server (ip : InitializeParams.t) = | diagnostics -> let state = Server.state server in task_if_running state.detached ~f:(fun () -> - let batch = Server.Batch.create server in - List.iter diagnostics ~f:(fun d -> - Server.Batch.notification batch (PublishDiagnostics d)); - Server.Batch.submit batch)) + let batch = Server.Batch.create server in + List.iter diagnostics ~f:(fun d -> + Server.Batch.notification batch (PublishDiagnostics d)); + Server.Batch.submit batch)) in let+ dune = let progress = Progress.create ip.capabilities ~report_progress:(fun progress -> - Server.notification - server - (Server_notification.WorkDoneProgress progress)) + Server.notification server (Server_notification.WorkDoneProgress progress)) ~create_task:(fun task -> Server.request server (Server_request.WorkDoneProgressCreate task)) in @@ -274,103 +264,95 @@ let on_initialize server (ip : InitializeParams.t) = match ip.capabilities.textDocument with | Some { TextDocumentClientCapabilities.synchronization = - Some - { TextDocumentSyncClientCapabilities.dynamicRegistration = - Some true - ; _ - } + Some { TextDocumentSyncClientCapabilities.dynamicRegistration = Some true; _ } ; _ } -> Reply.later (fun send -> - let* () = send initialize_info in - let register = - RegistrationParams.create - ~registrations: - (let make method_ = - let id = "ocamllsp-cram-dune-files/" ^ method_ in - (* TODO not nice to copy paste *) - let registerOptions = - let documentSelector = - [ "cram"; "dune"; "dune-project"; "dune-workspace" ] - |> List.map ~f:(fun language -> - `TextDocumentFilter - (TextDocumentFilter.create ~language ())) - in - TextDocumentRegistrationOptions.create ~documentSelector () - |> TextDocumentRegistrationOptions.yojson_of_t + let* () = send initialize_info in + let register = + RegistrationParams.create + ~registrations: + (let make method_ = + let id = "ocamllsp-cram-dune-files/" ^ method_ in + (* TODO not nice to copy paste *) + let registerOptions = + let documentSelector = + [ "cram"; "dune"; "dune-project"; "dune-workspace" ] + |> List.map ~f:(fun language -> + `TextDocumentFilter (TextDocumentFilter.create ~language ())) in - Registration.create ~id ~method_ ~registerOptions () + TextDocumentRegistrationOptions.create ~documentSelector () + |> TextDocumentRegistrationOptions.yojson_of_t in - [ make "textDocument/didOpen"; make "textDocument/didClose" ]) - in - Server.request - server - (Server_request.ClientRegisterCapability register)) + Registration.create ~id ~method_ ~registerOptions () + in + [ make "textDocument/didOpen"; make "textDocument/didClose" ]) + in + Server.request server (Server_request.ClientRegisterCapability register)) | _ -> Reply.now initialize_info in - (resp, state) + resp, state +;; module Formatter = struct let jsonrpc_error (e : Ocamlformat.error) = let message = Ocamlformat.message e in let code : Jsonrpc.Response.Error.Code.t = match e with - | Unsupported_syntax _ | Unknown_extension _ | Missing_binary _ -> - InvalidRequest + | Unsupported_syntax _ | Unknown_extension _ | Missing_binary _ -> InvalidRequest | Unexpected_result _ -> InternalError in make_error ~code ~message () + ;; let run rpc doc = let state : State.t = Server.state rpc in match Document.kind doc with - | `Merlin _ -> ( + | `Merlin _ -> let* res = let* cancel = Server.cancel_token () in Ocamlformat.run doc cancel in - match res with - | Ok result -> Fiber.return (Some result) - | Error e -> - let+ () = - let state : State.t = Server.state rpc in - let msg = - let message = Ocamlformat.message e in - ShowMessageParams.create ~message ~type_:Warning - in - task_if_running state.detached ~f:(fun () -> - Server.notification rpc (ShowMessage msg)) - in - Jsonrpc.Response.Error.raise (jsonrpc_error e)) - | `Other -> ( - match Dune.for_doc (State.dune state) doc with - | [] -> - let message = - sprintf - "No dune instance found. Please run dune in watch mode for %s" - (Uri.to_path (Document.uri doc)) - in - Jsonrpc.Response.Error.raise - (make_error ~code:InvalidRequest ~message ()) - | dune :: rest -> - let* () = - match rest with - | [] -> Fiber.return () - | _ :: _ -> - let message = - sprintf - "More than one dune instance detected for %s. Selecting one at \ - random" - (Uri.to_path (Document.uri doc)) - in - State.log_msg rpc ~type_:MessageType.Warning ~message - in - let+ to_ = Dune.Instance.format_dune_file dune doc in - Some (Diff.edit ~from:(Document.text doc) ~to_)) + (match res with + | Ok result -> Fiber.return (Some result) + | Error e -> + let+ () = + let state : State.t = Server.state rpc in + let msg = + let message = Ocamlformat.message e in + ShowMessageParams.create ~message ~type_:Warning + in + task_if_running state.detached ~f:(fun () -> + Server.notification rpc (ShowMessage msg)) + in + Jsonrpc.Response.Error.raise (jsonrpc_error e)) + | `Other -> + (match Dune.for_doc (State.dune state) doc with + | [] -> + let message = + sprintf + "No dune instance found. Please run dune in watch mode for %s" + (Uri.to_path (Document.uri doc)) + in + Jsonrpc.Response.Error.raise (make_error ~code:InvalidRequest ~message ()) + | dune :: rest -> + let* () = + match rest with + | [] -> Fiber.return () + | _ :: _ -> + let message = + sprintf + "More than one dune instance detected for %s. Selecting one at random" + (Uri.to_path (Document.uri doc)) + in + State.log_msg rpc ~type_:MessageType.Warning ~message + in + let+ to_ = Dune.Instance.format_dune_file dune doc in + Some (Diff.edit ~from:(Document.text doc) ~to_)) + ;; end -let text_document_lens (state : State.t) - { CodeLensParams.textDocument = { uri }; _ } = +let text_document_lens (state : State.t) { CodeLensParams.textDocument = { uri }; _ } = let store = state.store in let doc = Document_store.get store uri in match Document.kind doc with @@ -379,9 +361,7 @@ let text_document_lens (state : State.t) | `Merlin doc -> let+ outline = Document.Merlin.dispatch_exn ~name:"outline" doc Outline in let rec symbol_info_of_outline_item (item : Query_protocol.item) = - let children = - List.concat_map item.children ~f:symbol_info_of_outline_item - in + let children = List.concat_map item.children ~f:symbol_info_of_outline_item in match item.outline_type with | None -> children | Some typ -> @@ -394,15 +374,21 @@ let text_document_lens (state : State.t) info :: children in List.concat_map ~f:symbol_info_of_outline_item outline +;; -let selection_range (state : State.t) - { SelectionRangeParams.textDocument = { uri }; positions; _ } = +let selection_range + (state : State.t) + { SelectionRangeParams.textDocument = { uri }; positions; _ } + = let doc = Document_store.get state.store uri in match Document.kind doc with | `Other -> Fiber.return [] | `Merlin merlin -> - let selection_range_of_shapes (cursor_position : Position.t) - (shapes : Query_protocol.shape list) : SelectionRange.t option = + let selection_range_of_shapes + (cursor_position : Position.t) + (shapes : Query_protocol.shape list) + : SelectionRange.t option + = let rec ranges_of_shape parent (s : Query_protocol.shape) = let selectionRange = let range = Range.of_loc s.shape_loc in @@ -416,31 +402,28 @@ let selection_range (state : State.t) let nearest_range = let ranges = List.concat_map ~f:(ranges_of_shape None) shapes in List.min ranges ~f:(fun r1 r2 -> - let inc (r : SelectionRange.t) = - Position.compare_inclusion cursor_position r.range - in - match (inc r1, inc r2) with - | `Outside x, `Outside y -> Position.compare x y - | `Outside _, `Inside -> Gt - | `Inside, `Outside _ -> Lt - | `Inside, `Inside -> Range.compare_size r1.range r2.range) + let inc (r : SelectionRange.t) = + Position.compare_inclusion cursor_position r.range + in + match inc r1, inc r2 with + | `Outside x, `Outside y -> Position.compare x y + | `Outside _, `Inside -> Gt + | `Inside, `Outside _ -> Lt + | `Inside, `Inside -> Range.compare_size r1.range r2.range) in nearest_range in let+ ranges = Fiber.sequential_map positions ~f:(fun x -> - let+ shapes = - Document.Merlin.dispatch_exn - ~name:"shape" - merlin - (Shape (Position.logical x)) - in - selection_range_of_shapes x shapes) + let+ shapes = + Document.Merlin.dispatch_exn ~name:"shape" merlin (Shape (Position.logical x)) + in + selection_range_of_shapes x shapes) in List.filter_opt ranges +;; -let references (state : State.t) - { ReferenceParams.textDocument = { uri }; position; _ } = +let references (state : State.t) { ReferenceParams.textDocument = { uri }; position; _ } = let doc = Document_store.get state.store uri in match Document.kind doc with | `Other -> Fiber.return None @@ -453,12 +436,15 @@ let references (state : State.t) in Some (List.map locs ~f:(fun loc -> - let range = Range.of_loc loc in - (* using original uri because merlin is looking only in local file *) - { Location.uri; range })) + let range = Range.of_loc loc in + (* using original uri because merlin is looking only in local file *) + { Location.uri; range })) +;; -let highlight (state : State.t) - { DocumentHighlightParams.textDocument = { uri }; position; _ } = +let highlight + (state : State.t) + { DocumentHighlightParams.textDocument = { uri }; position; _ } + = let store = state.store in let doc = Document_store.get store uri in match Document.kind doc with @@ -472,21 +458,18 @@ let highlight (state : State.t) in let lsp_locs = List.filter_map locs ~f:(fun loc -> - let range = Range.of_loc loc in - (* filter out multi-line ranges, since those are very noisy and happen - a lot with certain PPXs *) - match range.start.line = range.end_.line with - | true -> - (* using the default kind as we are lacking info to make a - difference between assignment and usage. *) - Some - (DocumentHighlight.create - ~range - ~kind:DocumentHighlightKind.Text - ()) - | false -> None) + let range = Range.of_loc loc in + (* filter out multi-line ranges, since those are very noisy and happen + a lot with certain PPXs *) + match range.start.line = range.end_.line with + | true -> + (* using the default kind as we are lacking info to make a + difference between assignment and usage. *) + Some (DocumentHighlight.create ~range ~kind:DocumentHighlightKind.Text ()) + | false -> None) in Some lsp_locs +;; let document_symbol (state : State.t) uri = let doc = @@ -495,13 +478,13 @@ let document_symbol (state : State.t) uri = in let client_capabilities = State.client_capabilities state in Document_symbol.run client_capabilities doc uri +;; -let on_request : - type resp. - State.t Server.t - -> resp Client_request.t - -> (resp Reply.t * State.t) Fiber.t = - fun server req -> +let on_request + : type resp. + State.t Server.t -> resp Client_request.t -> (resp Reply.t * State.t) Fiber.t + = + fun server req -> let rpc = server in let state : State.t = Server.state server in let store = state.store in @@ -509,77 +492,76 @@ let on_request : let later f req = Fiber.return ( Reply.later (fun k -> - let* resp = f state req in - k resp) + let* resp = f state req in + k resp) , state ) in match req with - | Client_request.UnknownRequest { meth; params } -> ( - match - [ ( Req_switch_impl_intf.meth - , fun ~params state -> - Fiber.of_thunk (fun () -> - Fiber.return (Req_switch_impl_intf.on_request ~params state)) ) - ; (Req_infer_intf.meth, Req_infer_intf.on_request) - ; (Req_typed_holes.meth, Req_typed_holes.on_request) - ; (Req_merlin_call_compatible.meth, Req_merlin_call_compatible.on_request) - ; (Req_type_enclosing.meth, Req_type_enclosing.on_request) - ; (Req_wrapping_ast_node.meth, Req_wrapping_ast_node.on_request) - ; ( Semantic_highlighting.Debug.meth_request_full - , Semantic_highlighting.Debug.on_request_full ) - ; ( Req_hover_extended.meth - , fun ~params _ -> Req_hover_extended.on_request ~params rpc ) - ] - |> List.assoc_opt meth - with - | None -> - Jsonrpc.Response.Error.raise - (make_error - ~code:MethodNotFound - ~message:"Unknown method" - ~data:(`Assoc [ ("method", `String meth) ]) - ()) - | Some handler -> - Fiber.return - ( Reply.later (fun send -> - let* res = handler ~params state in - send res) - , state )) + | Client_request.UnknownRequest { meth; params } -> + (match + [ ( Req_switch_impl_intf.meth + , fun ~params state -> + Fiber.of_thunk (fun () -> + Fiber.return (Req_switch_impl_intf.on_request ~params state)) ) + ; Req_infer_intf.meth, Req_infer_intf.on_request + ; Req_typed_holes.meth, Req_typed_holes.on_request + ; Req_merlin_call_compatible.meth, Req_merlin_call_compatible.on_request + ; Req_type_enclosing.meth, Req_type_enclosing.on_request + ; Req_wrapping_ast_node.meth, Req_wrapping_ast_node.on_request + ; ( Semantic_highlighting.Debug.meth_request_full + , Semantic_highlighting.Debug.on_request_full ) + ; ( Req_hover_extended.meth + , fun ~params _ -> Req_hover_extended.on_request ~params rpc ) + ] + |> List.assoc_opt meth + with + | None -> + Jsonrpc.Response.Error.raise + (make_error + ~code:MethodNotFound + ~message:"Unknown method" + ~data:(`Assoc [ "method", `String meth ]) + ()) + | Some handler -> + Fiber.return + ( Reply.later (fun send -> + let* res = handler ~params state in + send res) + , state )) | Initialize ip -> let+ res, state = on_initialize server ip in - (res, state) - | DebugTextDocumentGet { textDocument = { uri }; position = _ } -> ( - match Document_store.get_opt store uri with - | None -> now None - | Some doc -> now (Some (Msource.text (Document.source doc)))) + res, state + | DebugTextDocumentGet { textDocument = { uri }; position = _ } -> + (match Document_store.get_opt store uri with + | None -> now None + | Some doc -> now (Some (Msource.text (Document.source doc)))) | DebugEcho params -> now params | Shutdown -> Fiber.return (Reply.now (), state) | WorkspaceSymbol req -> later (fun state () -> Workspace_symbol.run server state req) () | CodeActionResolve ca -> now ca | ExecuteCommand command -> - if String.equal command.command Merlin_config_command.command_name then + if String.equal command.command Merlin_config_command.command_name + then later (fun state server -> let store = state.store in let+ () = Merlin_config_command.command_run server store in `Null) server - else if String.equal command.command Document_text_command.command_name then + else if String.equal command.command Document_text_command.command_name + then later (fun state server -> let store = state.store in - let+ () = - Document_text_command.command_run server store command.arguments - in + let+ () = Document_text_command.command_run server store command.arguments in `Null) server - else if String.equal command.command view_metrics_command_name then - later (fun _state server -> view_metrics server) server - else if String.equal command.command Action_open_related.command_name then - later - (fun _state server -> Action_open_related.command_run server command) - server + else if String.equal command.command view_metrics_command_name + then later (fun _state server -> view_metrics server) server + else if String.equal command.command Action_open_related.command_name + then + later (fun _state server -> Action_open_related.command_run server command) server else later (fun state () -> @@ -601,24 +583,23 @@ let on_request : let resolve = Compl.Resolve.of_completion_item ci in match resolve with | None -> Fiber.return ci - | Some resolve -> ( + | Some resolve -> let doc = let uri = Compl.Resolve.uri resolve in Document_store.get state.store uri in - match Document.kind doc with - | `Other -> Fiber.return ci - | `Merlin doc -> - Compl.resolve - doc - ci - resolve - (Document.Merlin.doc_comment ~name:"completion-resolve") - ~markdown)) + (match Document.kind doc with + | `Other -> Fiber.return ci + | `Merlin doc -> + Compl.resolve + doc + ci + resolve + (Document.Merlin.doc_comment ~name:"completion-resolve") + ~markdown)) () | CodeAction params -> Code_actions.compute server params - | InlayHint params -> - later (fun state () -> Inlay_hints.compute state params) () + | InlayHint params -> later (fun state () -> Inlay_hints.compute state params) () | TextDocumentColor _ -> now [] | TextDocumentColorPresentation _ -> now [] | TextDocumentHover req -> @@ -630,28 +611,20 @@ let on_request : later (fun (_ : State.t) () -> Hover_req.handle rpc req mode) () | TextDocumentReferences req -> later references req | TextDocumentCodeLensResolve codeLens -> now codeLens - | TextDocumentCodeLens req -> ( - match state.configuration.data.codelens with - | Some { enable = true } -> later text_document_lens req - | _ -> now []) + | TextDocumentCodeLens req -> + (match state.configuration.data.codelens with + | Some { enable = true } -> later text_document_lens req + | _ -> now []) | TextDocumentHighlight req -> later highlight req | DocumentSymbol { textDocument = { uri }; _ } -> later document_symbol uri | TextDocumentDeclaration { textDocument = { uri }; position } -> - later - (fun state () -> Definition_query.run `Declaration state uri position) - () + later (fun state () -> Definition_query.run `Declaration state uri position) () | TextDocumentDefinition { textDocument = { uri }; position; _ } -> - later - (fun state () -> Definition_query.run `Definition state uri position) - () + later (fun state () -> Definition_query.run `Definition state uri position) () | TextDocumentTypeDefinition { textDocument = { uri }; position; _ } -> - later - (fun state () -> Definition_query.run `Type_definition state uri position) - () - | TextDocumentCompletion params -> - later (fun _ () -> Compl.complete state params) () - | TextDocumentPrepareRename - { textDocument = { uri }; position; workDoneToken = _ } -> + later (fun state () -> Definition_query.run `Type_definition state uri position) () + | TextDocumentCompletion params -> later (fun _ () -> Compl.complete state params) () + | TextDocumentPrepareRename { textDocument = { uri }; position; workDoneToken = _ } -> later (fun _ () -> let doc = Document_store.get store uri in @@ -666,8 +639,8 @@ let on_request : in let loc = List.find_opt locs ~f:(fun loc -> - let range = Range.of_loc loc in - Position.compare_inclusion position range = `Inside) + let range = Range.of_loc loc in + Position.compare_inclusion position range = `Inside) in Option.map loc ~f:Range.of_loc) () @@ -698,9 +671,9 @@ let on_request : | WillCreateFiles _ -> not_supported () | WillRenameFiles _ -> not_supported () | WillDeleteFiles _ -> not_supported () +;; -let on_notification server (notification : Client_notification.t) : - State.t Fiber.t = +let on_notification server (notification : Client_notification.t) : State.t Fiber.t = let state : State.t = Server.state server in let store = state.store in match notification with @@ -722,13 +695,13 @@ let on_notification server (notification : Client_notification.t) : Diagnostics.remove (State.diagnostics state) (`Merlin uri); let* () = Document_store.close_document store uri in task_if_running state.detached ~f:(fun () -> - Diagnostics.send (State.diagnostics state) (`One uri)) + Diagnostics.send (State.diagnostics state) (`One uri)) in state | TextDocumentDidChange { textDocument = { uri; version }; contentChanges } -> let doc = Document_store.change_document store uri ~f:(fun prev_doc -> - Document.update_text ~version prev_doc contentChanges) + Document.update_text ~version prev_doc contentChanges) in let+ () = set_diagnostics state.detached (State.diagnostics state) doc in state @@ -736,28 +709,25 @@ let on_notification server (notification : Client_notification.t) : | ChangeConfiguration req -> let* configuration = Configuration.update state.configuration req in let+ () = - let report_dune_diagnostics = - Configuration.report_dune_diagnostics configuration - in + let report_dune_diagnostics = Configuration.report_dune_diagnostics configuration in Diagnostics.set_report_dune_diagnostics ~report_dune_diagnostics (State.diagnostics state) in { state with configuration } - | DidSaveTextDocument { textDocument = { uri }; _ } -> ( + | DidSaveTextDocument { textDocument = { uri }; _ } -> let state = Server.state server in - match Document_store.get_opt state.store uri with - | None -> - ( Log.log ~section:"on receive DidSaveTextDocument" @@ fun () -> - Log.msg "saved document is not in the store" [] ); - Fiber.return state - | Some doc -> - let+ () = set_diagnostics state.detached (State.diagnostics state) doc in - state) + (match Document_store.get_opt state.store uri with + | None -> + (Log.log ~section:"on receive DidSaveTextDocument" + @@ fun () -> Log.msg "saved document is not in the store" []); + Fiber.return state + | Some doc -> + let+ () = set_diagnostics state.detached (State.diagnostics state) doc in + state) | ChangeWorkspaceFolders change -> let state = - State.modify_workspaces state ~f:(fun ws -> - Workspaces.on_change ws change) + State.modify_workspaces state ~f:(fun ws -> Workspaces.on_change ws change) in Dune.update_workspaces (State.dune state) (State.workspaces state); Fiber.return state @@ -773,12 +743,10 @@ let on_notification server (notification : Client_notification.t) : | SetTrace { value } -> Fiber.return { state with trace = value } | UnknownNotification req -> let+ () = - State.log_msg - server - ~type_:Error - ~message:("Unknown notication " ^ req.method_) + State.log_msg server ~type_:Error ~message:("Unknown notication " ^ req.method_) in state +;; let start stream = let detached = Fiber.Pool.create () in @@ -822,16 +790,14 @@ let start stream = () in let run_ocamlformat_rpc () = - let* state = - Ocamlformat_rpc.run ~logger:(State.log_msg server) ocamlformat_rpc - in + let* state = Ocamlformat_rpc.run ~logger:(State.log_msg server) ocamlformat_rpc in let message = match state with | Error `Binary_not_found -> Some "Unable to find 'ocamlformat-rpc' binary. Types on hover may not be \ - well-formatted. You need to install either 'ocamlformat' of version \ - > 0.21.0 or, otherwise, 'ocamlformat-rpc' package." + well-formatted. You need to install either 'ocamlformat' of version > 0.21.0 \ + or, otherwise, 'ocamlformat-rpc' package." | Error `Disabled | Ok () -> None in match message with @@ -840,15 +806,14 @@ let start stream = let* (_ : InitializeParams.t) = Server.initialized server in let state = Server.state server in task_if_running state.detached ~f:(fun () -> - let log = ShowMessageParams.create ~type_:Info ~message in - Server.notification server (Server_notification.ShowMessage log)) + let log = ShowMessageParams.create ~type_:Info ~message in + Server.notification server (Server_notification.ShowMessage log)) in let run () = Fiber.all_concurrently_unit [ with_log_errors "detached" (fun () -> Fiber.Pool.run detached) ; Lev_fiber.Timer.Wheel.run wheel - ; with_log_errors "merlin" (fun () -> - Merlin_config.DB.run state.merlin_config) + ; with_log_errors "merlin" (fun () -> Merlin_config.DB.run state.merlin_config) ; (let* () = Server.start server in let finalize = [ Document_store.close_all store @@ -857,8 +822,8 @@ let start stream = ; Lev_fiber.Timer.Wheel.stop wheel ; Merlin_config.DB.stop state.merlin_config ; Fiber.of_thunk (fun () -> - Lev_fiber.Thread.close merlin; - Fiber.return ()) + Lev_fiber.Thread.close merlin; + Fiber.return ()) ] in let finalize = @@ -872,6 +837,7 @@ let start stream = in let metrics = Metrics.create () in Metrics.with_metrics metrics run +;; let socket sockaddr = let domain = Unix.domain_of_sockaddr sockaddr in @@ -882,22 +848,25 @@ let socket sockaddr = in let* () = Lev_fiber.Socket.connect fd sockaddr in Lev_fiber.Io.create_rw fd +;; let stream_of_channel : Lsp.Cli.Channel.t -> _ = function | Stdio -> let* stdin = Lev_fiber.Io.stdin in let+ stdout = Lev_fiber.Io.stdout in - (stdin, stdout) + stdin, stdout | Pipe path -> - if Sys.win32 then ( + if Sys.win32 + then ( Format.eprintf "windows pipes are not supported"; exit 1) - else + else ( let sockaddr = Unix.ADDR_UNIX path in - socket sockaddr + socket sockaddr) | Socket port -> let sockaddr = Unix.ADDR_INET (Unix.inet_addr_loopback, port) in socket sockaddr +;; (* Merlin uses [Sys.command] to run preprocessors and ppxes. We provide an alternative version using the Spawn library for unixes. @@ -908,14 +877,12 @@ let stream_of_channel : Lsp.Cli.Channel.t -> _ = function This will require additionnal changes of the API so there is no need to deal with the [prog_is_quoted] argument until this happen. *) -let run_in_directory ~prog ~prog_is_quoted:_ ~args ~cwd ?stdin ?stdout ?stderr - () = +let run_in_directory ~prog ~prog_is_quoted:_ ~args ~cwd ?stdin ?stdout ?stderr () = (* Currently we assume that [prog] is always quoted and might contain arguments such as [-as-ppx]. This is due to the way Merlin gets its configuration. Thus we cannot rely on [Filename.quote_command]. *) let args = String.concat ~sep:" " @@ List.map ~f:Filename.quote args in let cmd = Format.sprintf "%s %s" prog args in - let prog = "/bin/sh" in let argv = [ "sh"; "-c"; cmd ] in let stdin = @@ -925,16 +892,15 @@ let run_in_directory ~prog ~prog_is_quoted:_ ~args ~cwd ?stdin ?stdout ?stderr in let stdout, should_close_stdout = match stdout with - | Some file -> - (Unix.openfile file [ Unix.O_WRONLY; Unix.O_CREAT ] 0o664, true) + | Some file -> Unix.openfile file [ Unix.O_WRONLY; Unix.O_CREAT ] 0o664, true | None -> (* Runned programs should never output to stdout since it is the channel used by LSP to communicate with the editor *) - (Unix.stderr, false) + Unix.stderr, false in let stderr = Option.map stderr ~f:(fun file -> - Unix.openfile file [ Unix.O_WRONLY; Unix.O_CREAT ] 0o664) + Unix.openfile file [ Unix.O_WRONLY; Unix.O_CREAT ] 0o664) in let pid = let cwd : Spawn.Working_dir.t = Path cwd in @@ -950,11 +916,13 @@ let run_in_directory ~prog ~prog_is_quoted:_ ~args ~cwd ?stdin ?stdout ?stderr Unix.close stdin; if should_close_stdout then Unix.close stdout; `Finished res +;; let run_in_directory = (* Merlin has specific stubs for Windows, we reuse them *) let for_windows = !Merlin_utils.Std.System.run_in_directory in fun () -> if Sys.win32 then for_windows else run_in_directory +;; let run channel ~read_dot_merlin () = Merlin_utils.Lib_config.set_program_name "ocamllsp"; @@ -962,6 +930,7 @@ let run channel ~read_dot_merlin () = Merlin_config.should_read_dot_merlin := read_dot_merlin; Unix.putenv "__MERLIN_MASTER_PID" (string_of_int (Unix.getpid ())); Lev_fiber.run ~sigpipe:`Ignore (fun () -> - let* input, output = stream_of_channel channel in - start (Lsp_fiber.Fiber_io.make input output)) + let* input, output = stream_of_channel channel in + start (Lsp_fiber.Fiber_io.make input output)) |> Lev_fiber.Error.ok_exn +;; diff --git a/ocaml-lsp-server/src/ocamlformat.ml b/ocaml-lsp-server/src/ocamlformat.ml index 1570e9d32..535e9d0bb 100644 --- a/ocaml-lsp-server/src/ocamlformat.ml +++ b/ocaml-lsp-server/src/ocamlformat.ml @@ -9,77 +9,73 @@ type command_result = let run_command cancel prog stdin_value args = Fiber.of_thunk (fun () -> - let stdin_i, stdin_o = Unix.pipe ~cloexec:true () in - let stdout_i, stdout_o = Unix.pipe ~cloexec:true () in - let stderr_i, stderr_o = Unix.pipe ~cloexec:true () in - let pid = - let argv = prog :: args in - Spawn.spawn - ~prog - ~argv - ~stdin:stdin_i - ~stdout:stdout_o - ~stderr:stderr_o - () - |> Stdune.Pid.of_int - in - Unix.close stdin_i; - Unix.close stdout_o; - Unix.close stderr_o; - let maybe_cancel = - match cancel with - | None -> - fun f -> - let+ res = f () in - (res, Fiber.Cancel.Not_cancelled) - | Some token -> - let on_cancel () = - Unix.kill (Pid.to_int pid) Sys.sigint; - Fiber.return () - in - fun f -> Fiber.Cancel.with_handler token ~on_cancel f - in - maybe_cancel @@ fun () -> - let blockity = - if Sys.win32 then `Blocking - else ( - Unix.set_nonblock stdin_o; - Unix.set_nonblock stdout_i; - `Non_blocking true) - in - let make fd what = - let fd = Lev_fiber.Fd.create fd blockity in - Lev_fiber.Io.create fd what - in - let* stdin_o = make stdin_o Output in - let* stdout_i = make stdout_i Input in - let* stderr_i = make stderr_i Input in - let stdin () = - Fiber.finalize - ~finally:(fun () -> - Lev_fiber.Io.close stdin_o; - Fiber.return ()) - (fun () -> - Lev_fiber.Io.with_write stdin_o ~f:(fun w -> - Lev_fiber.Io.Writer.add_string w stdin_value; - Lev_fiber.Io.Writer.flush w)) - in - let read from () = - Fiber.finalize - ~finally:(fun () -> - Lev_fiber.Io.close from; - Fiber.return ()) - (fun () -> - Lev_fiber.Io.with_read from ~f:Lev_fiber.Io.Reader.to_string) - in - let+ status, (stdout, stderr) = - Fiber.fork_and_join - (fun () -> Lev_fiber.waitpid ~pid:(Pid.to_int pid)) - (fun () -> - Fiber.fork_and_join_unit stdin (fun () -> - Fiber.fork_and_join (read stdout_i) (read stderr_i))) - in - { stdout; stderr; status }) + let stdin_i, stdin_o = Unix.pipe ~cloexec:true () in + let stdout_i, stdout_o = Unix.pipe ~cloexec:true () in + let stderr_i, stderr_o = Unix.pipe ~cloexec:true () in + let pid = + let argv = prog :: args in + Spawn.spawn ~prog ~argv ~stdin:stdin_i ~stdout:stdout_o ~stderr:stderr_o () + |> Stdune.Pid.of_int + in + Unix.close stdin_i; + Unix.close stdout_o; + Unix.close stderr_o; + let maybe_cancel = + match cancel with + | None -> + fun f -> + let+ res = f () in + res, Fiber.Cancel.Not_cancelled + | Some token -> + let on_cancel () = + Unix.kill (Pid.to_int pid) Sys.sigint; + Fiber.return () + in + fun f -> Fiber.Cancel.with_handler token ~on_cancel f + in + maybe_cancel + @@ fun () -> + let blockity = + if Sys.win32 + then `Blocking + else ( + Unix.set_nonblock stdin_o; + Unix.set_nonblock stdout_i; + `Non_blocking true) + in + let make fd what = + let fd = Lev_fiber.Fd.create fd blockity in + Lev_fiber.Io.create fd what + in + let* stdin_o = make stdin_o Output in + let* stdout_i = make stdout_i Input in + let* stderr_i = make stderr_i Input in + let stdin () = + Fiber.finalize + ~finally:(fun () -> + Lev_fiber.Io.close stdin_o; + Fiber.return ()) + (fun () -> + Lev_fiber.Io.with_write stdin_o ~f:(fun w -> + Lev_fiber.Io.Writer.add_string w stdin_value; + Lev_fiber.Io.Writer.flush w)) + in + let read from () = + Fiber.finalize + ~finally:(fun () -> + Lev_fiber.Io.close from; + Fiber.return ()) + (fun () -> Lev_fiber.Io.with_read from ~f:Lev_fiber.Io.Reader.to_string) + in + let+ status, (stdout, stderr) = + Fiber.fork_and_join + (fun () -> Lev_fiber.waitpid ~pid:(Pid.to_int pid)) + (fun () -> + Fiber.fork_and_join_unit stdin (fun () -> + Fiber.fork_and_join (read stdout_i) (read stderr_i))) + in + { stdout; stderr; status }) +;; type error = | Unsupported_syntax of Document.Syntax.t @@ -89,20 +85,17 @@ type error = let message = function | Unsupported_syntax syntax -> - sprintf - "formatting %s files is not supported" - (Document.Syntax.human_name syntax) + sprintf "formatting %s files is not supported" (Document.Syntax.human_name syntax) | Missing_binary { binary } -> sprintf - "Unable to find %s binary. You need to install %s manually to use the \ - formatting feature." + "Unable to find %s binary. You need to install %s manually to use the formatting \ + feature." binary binary | Unknown_extension uri -> - Printf.sprintf - "Unable to format. File %s has an unknown extension" - (Uri.to_path uri) + Printf.sprintf "Unable to format. File %s has an unknown extension" (Uri.to_path uri) | Unexpected_result { message } -> message +;; type formatter = | Reason of Document.Kind.t @@ -110,23 +103,26 @@ type formatter = let args = function | Ocaml uri -> [ sprintf "--name=%s" (Uri.to_path uri); "-" ] - | Reason kind -> ( + | Reason kind -> [ "--parse"; "re"; "--print"; "re" ] @ - match kind with - | Impl -> [] - | Intf -> [ "--interface=true" ]) + (match kind with + | Impl -> [] + | Intf -> [ "--interface=true" ]) +;; let binary_name t = match t with | Ocaml _ -> "ocamlformat" | Reason _ -> "refmt" +;; let binary t = let name = binary_name t in match Bin.which name with | None -> Result.Error (Missing_binary { binary = name }) | Some b -> Ok b +;; let formatter doc = match Document.syntax doc with @@ -136,22 +132,22 @@ let formatter doc = Ok (Reason (match Document.kind doc with - | `Merlin m -> Document.Merlin.kind m - | `Other -> Code_error.raise "unable to format non merlin document" [])) + | `Merlin m -> Document.Merlin.kind m + | `Other -> Code_error.raise "unable to format non merlin document" [])) +;; let exec cancel bin args stdin = let refmt = Fpath.to_string bin in let+ res, cancel = run_command cancel refmt stdin args in match cancel with | Cancelled () -> - let e = - Jsonrpc.Response.Error.make ~code:RequestCancelled ~message:"cancelled" () - in + let e = Jsonrpc.Response.Error.make ~code:RequestCancelled ~message:"cancelled" () in raise (Jsonrpc.Response.Error.E e) - | Not_cancelled -> ( - match res.status with - | Unix.WEXITED 0 -> Result.Ok res.stdout - | _ -> Result.Error (Unexpected_result { message = res.stderr })) + | Not_cancelled -> + (match res.status with + | Unix.WEXITED 0 -> Result.Ok res.stdout + | _ -> Result.Error (Unexpected_result { message = res.stderr })) +;; let run doc cancel : (TextEdit.t list, error) result Fiber.t = let res = @@ -159,10 +155,11 @@ let run doc cancel : (TextEdit.t list, error) result Fiber.t = let* formatter = formatter doc in let args = args formatter in let+ binary = binary formatter in - (binary, args, Document.source doc |> Msource.text) + binary, args, Document.source doc |> Msource.text in match res with | Error e -> Fiber.return (Error e) | Ok (binary, args, contents) -> exec cancel binary args contents |> Fiber.map ~f:(Result.map ~f:(fun to_ -> Diff.edit ~from:contents ~to_)) +;; diff --git a/ocaml-lsp-server/src/ocamlformat.mli b/ocaml-lsp-server/src/ocamlformat.mli index 3bbfa3eb0..0d6edc6c1 100644 --- a/ocaml-lsp-server/src/ocamlformat.mli +++ b/ocaml-lsp-server/src/ocamlformat.mli @@ -11,6 +11,4 @@ type error = | Unknown_extension of Uri.t val message : error -> string - -val run : - Document.t -> Fiber.Cancel.t option -> (TextEdit.t list, error) result Fiber.t +val run : Document.t -> Fiber.Cancel.t option -> (TextEdit.t list, error) result Fiber.t diff --git a/ocaml-lsp-server/src/ocamlformat_rpc.ml b/ocaml-lsp-server/src/ocamlformat_rpc.ml index 9c77a0e17..c48d7bb8d 100644 --- a/ocaml-lsp-server/src/ocamlformat_rpc.ml +++ b/ocaml-lsp-server/src/ocamlformat_rpc.ml @@ -1,33 +1,29 @@ open Import open Fiber.O -let type_option = [ ("module-item-spacing", "compact"); ("margin", "63") ] +let type_option = [ "module-item-spacing", "compact"; "margin", "63" ] module Ocamlformat_rpc = Ocamlformat_rpc_lib.Make (struct - type 'a t = 'a Fiber.t + type 'a t = 'a Fiber.t - let return a = Fiber.return a + let return a = Fiber.return a + let ( >>= ) x f = Fiber.bind x ~f - let ( >>= ) x f = Fiber.bind x ~f + type ic = Lev_fiber_csexp.Session.t + type oc = Lev_fiber_csexp.Session.t - type ic = Lev_fiber_csexp.Session.t - - type oc = Lev_fiber_csexp.Session.t - - let read = Lev_fiber_csexp.Session.read - - let write t s = Lev_fiber_csexp.Session.write t s -end) + let read = Lev_fiber_csexp.Session.read + let write t s = Lev_fiber_csexp.Session.write t s + end) module Process : sig type t val pid : t -> Pid.t - val client : t -> Ocamlformat_rpc.client - val create : - logger:(type_:MessageType.t -> message:string -> unit Fiber.t) + val create + : logger:(type_:MessageType.t -> message:string -> unit Fiber.t) -> bin:Fpath.t -> unit -> (t, [> `No_process ]) result Fiber.t @@ -41,13 +37,12 @@ end = struct } let pid t = t.pid - let client t = t.client - let supported_versions = [ "v2"; "v1" ] let pick_client ~pid session = Ocamlformat_rpc.pick_client ~pid session session supported_versions + ;; let configure ~logger { client; _ } = (* We ask for 64 columns formatting as this appear to be the maximum size of @@ -55,30 +50,28 @@ end = struct editors that use the server. *) match client with | `V2 _ -> Fiber.return () - | `V1 client -> ( + | `V1 client -> let* res = Ocamlformat_rpc.V1.Client.config type_option client in - match res with - | Ok () -> Fiber.return () - | Error (`Msg msg) -> - let message = - Printf.sprintf - "An error occured while configuring ocamlformat: %s" - msg - in - logger ~type_:MessageType.Warning ~message) + (match res with + | Ok () -> Fiber.return () + | Error (`Msg msg) -> + let message = + Printf.sprintf "An error occured while configuring ocamlformat: %s" msg + in + logger ~type_:MessageType.Warning ~message) + ;; let create ~logger ~bin () = let bin = Fpath.to_string bin in let* pid, stdout, stdin = let stdin_i, stdin_o = Unix.pipe ~cloexec:true () in let stdout_i, stdout_o = Unix.pipe ~cloexec:true () in - let pid = - Spawn.spawn ~prog:bin ~argv:[ bin ] ~stdin:stdin_i ~stdout:stdout_o () - in + let pid = Spawn.spawn ~prog:bin ~argv:[ bin ] ~stdin:stdin_i ~stdout:stdout_o () in Unix.close stdin_i; Unix.close stdout_o; let blockity = - if Sys.win32 then `Blocking + if Sys.win32 + then `Blocking else ( Unix.set_nonblock stdin_o; Unix.set_nonblock stdout_i; @@ -90,7 +83,7 @@ end = struct in let* stdin = make stdin_o Output in let+ stdout = make stdout_i Input in - (pid, stdout, stdin) + pid, stdout, stdin in let session = Lev_fiber_csexp.Session.create ~socket:false stdout stdin in let* client = pick_client ~pid session in @@ -102,8 +95,7 @@ end = struct let* () = let message = Printf.sprintf - "An error happened when negociating with the OCamlformat-RPC \ - server: %s" + "An error happened when negociating with the OCamlformat-RPC server: %s" msg in logger ~type_:MessageType.Error ~message @@ -113,16 +105,16 @@ end = struct let process = { pid = Pid.of_int pid; session; client } in let* () = configure ~logger process in let+ () = - let message = - Printf.sprintf "Ocamlformat-RPC server started with PID %i" pid - in + let message = Printf.sprintf "Ocamlformat-RPC server started with PID %i" pid in logger ~type_:MessageType.Info ~message in Ok process + ;; let run { pid; session; _ } = let+ (_ : Unix.process_status) = Lev_fiber.waitpid ~pid:(Pid.to_int pid) in Lev_fiber_csexp.Session.close session + ;; end type state = @@ -141,35 +133,38 @@ let maybe_fill ivar x = match v with | Some _ -> Fiber.return () | None -> Fiber.Ivar.fill ivar x +;; let get_process t = match !t with | Running p -> Fiber.return @@ Ok p | Disabled | Stopped -> Fiber.return @@ Error `No_process - | Waiting_for_init { ask_init; wait_init } -> ( + | Waiting_for_init { ask_init; wait_init } -> let* () = maybe_fill ask_init () in let+ () = Fiber.Ivar.read wait_init in - match !t with - | Running p -> Ok p - | Disabled | Stopped -> Error `No_process - | Waiting_for_init _ -> - Code_error.raise - "Expected to receive `Started` or `Stopped` after mailing `Start`" - []) + (match !t with + | Running p -> Ok p + | Disabled | Stopped -> Error `No_process + | Waiting_for_init _ -> + Code_error.raise + "Expected to receive `Started` or `Stopped` after mailing `Start`" + []) +;; let format_type t ~typ = let* p = get_process t in match p with | Error `No_process -> Fiber.return @@ Error `No_process - | Ok p -> ( - match Process.client p with - | `V1 p -> Ocamlformat_rpc.V1.Client.format typ p - | `V2 p -> - let config = Some type_option in - Ocamlformat_rpc.V2.Client.format - ~format_args:{ Ocamlformat_rpc_lib.empty_args with config } - typ - p) + | Ok p -> + (match Process.client p with + | `V1 p -> Ocamlformat_rpc.V1.Client.format typ p + | `V2 p -> + let config = Some type_option in + Ocamlformat_rpc.V2.Client.format + ~format_args:{ Ocamlformat_rpc_lib.empty_args with config } + typ + p) +;; let format_doc t doc = let txt = Document.source doc |> Msource.text in @@ -177,21 +172,22 @@ let format_doc t doc = let* p = get_process t in match p with | Error `No_process -> Fiber.return @@ Error `No_process - | Ok p -> ( - match Process.client p with - | `V2 p -> - let+ res = - Ocamlformat_rpc.V2.Client.format - ~format_args:Ocamlformat_rpc_lib.{ empty_args with path } - txt - p - in - Result.map res ~f:(fun to_ -> Diff.edit ~from:txt ~to_) - | `V1 _ -> Fiber.return @@ Error `No_V2) + | Ok p -> + (match Process.client p with + | `V2 p -> + let+ res = + Ocamlformat_rpc.V2.Client.format + ~format_args:Ocamlformat_rpc_lib.{ empty_args with path } + txt + p + in + Result.map res ~f:(fun to_ -> Diff.edit ~from:txt ~to_) + | `V1 _ -> Fiber.return @@ Error `No_V2) +;; let create_state () = - Waiting_for_init - { ask_init = Fiber.Ivar.create (); wait_init = Fiber.Ivar.create () } + Waiting_for_init { ask_init = Fiber.Ivar.create (); wait_init = Fiber.Ivar.create () } +;; let create () = ref (if Sys.win32 then Disabled else create_state ()) @@ -208,55 +204,58 @@ let stop t = t := Stopped; Unix.kill pid Sys.sigkill; Fiber.return () +;; let run_rpc ~logger ~bin t = match !t with | Disabled -> assert false | Stopped -> Code_error.raise "ocamlformat already stopped" [] | Running _ -> Code_error.raise "ocamlformat already running" [] - | Waiting_for_init { ask_init; wait_init } -> ( + | Waiting_for_init { ask_init; wait_init } -> let* () = Fiber.Ivar.read ask_init in - match !t with - | Disabled | Stopped -> Fiber.return () - | Running _ -> assert false - | Waiting_for_init _ -> ( - let* process = Process.create ~logger ~bin () in - let* () = Fiber.Ivar.fill wait_init () in - match process with - | Error `No_process -> - t := Stopped; - Fiber.return () - | Ok process -> ( - t := Running process; - let+ () = Process.run process in - match !t with - | Running _ -> t := create_state () - | _ -> ()))) + (match !t with + | Disabled | Stopped -> Fiber.return () + | Running _ -> assert false + | Waiting_for_init _ -> + let* process = Process.create ~logger ~bin () in + let* () = Fiber.Ivar.fill wait_init () in + (match process with + | Error `No_process -> + t := Stopped; + Fiber.return () + | Ok process -> + t := Running process; + let+ () = Process.run process in + (match !t with + | Running _ -> t := create_state () + | _ -> ()))) +;; let run ~logger t = match !t with | Disabled -> Fiber.return (Error `Disabled) - | _ -> ( - match Bin.which "ocamlformat-rpc" with - | None -> - t := Stopped; - Fiber.return (Error `Binary_not_found) - | Some bin -> - let rec loop () = - match !t with - | Disabled -> assert false - | Stopped -> Fiber.return (Ok ()) - | Running _ -> assert false - | Waiting_for_init { ask_init; wait_init = _ } -> ( - (* We wait for the first query to start the server or for ocamllsp to - exit *) - let* () = Fiber.Ivar.read ask_init in - match !t with - | Waiting_for_init _ -> - let* () = run_rpc ~logger ~bin t in - (* We loop to automatically restart the server if it stopped *) - loop () - | Disabled | Running _ -> assert false - | Stopped -> Fiber.return (Ok ())) - in - loop ()) + | _ -> + (match Bin.which "ocamlformat-rpc" with + | None -> + t := Stopped; + Fiber.return (Error `Binary_not_found) + | Some bin -> + let rec loop () = + match !t with + | Disabled -> assert false + | Stopped -> Fiber.return (Ok ()) + | Running _ -> assert false + | Waiting_for_init { ask_init; wait_init = _ } -> + (* We wait for the first query to start the server or for ocamllsp to + exit *) + let* () = Fiber.Ivar.read ask_init in + (match !t with + | Waiting_for_init _ -> + let* () = run_rpc ~logger ~bin t in + (* We loop to automatically restart the server if it stopped *) + loop () + | Disabled | Running _ -> assert false + | Stopped -> Fiber.return (Ok ())) + in + loop ()) +;; diff --git a/ocaml-lsp-server/src/ocamlformat_rpc.mli b/ocaml-lsp-server/src/ocamlformat_rpc.mli index 6670f61bb..cd2969e2f 100644 --- a/ocaml-lsp-server/src/ocamlformat_rpc.mli +++ b/ocaml-lsp-server/src/ocamlformat_rpc.mli @@ -3,19 +3,19 @@ open Import type t val create : unit -> t - val stop : t -> unit Fiber.t -val format_type : - t -> typ:string -> (string, [> `Msg of string | `No_process ]) result Fiber.t +val format_type + : t + -> typ:string + -> (string, [> `Msg of string | `No_process ]) result Fiber.t -val format_doc : - t +val format_doc + : t -> Document.t - -> (TextEdit.t list, [> `Msg of string | `No_process | `No_V2 ]) result - Fiber.t + -> (TextEdit.t list, [> `Msg of string | `No_process | `No_V2 ]) result Fiber.t -val run : - logger:(type_:MessageType.t -> message:string -> unit Fiber.t) +val run + : logger:(type_:MessageType.t -> message:string -> unit Fiber.t) -> t -> (unit, [> `Disabled | `Binary_not_found ]) result Fiber.t diff --git a/ocaml-lsp-server/src/position.ml b/ocaml-lsp-server/src/position.ml index 55669c980..bc744dec0 100644 --- a/ocaml-lsp-server/src/position.ml +++ b/ocaml-lsp-server/src/position.ml @@ -2,53 +2,56 @@ open Import include Lsp.Types.Position let to_dyn { line; character } = - Dyn.record [ ("line", Dyn.int line); ("character", Dyn.int character) ] + Dyn.record [ "line", Dyn.int line; "character", Dyn.int character ] +;; let start = { line = 0; character = 0 } let is_dummy (lp : Lexing.position) = - lp.pos_lnum = Lexing.dummy_pos.pos_lnum - && lp.pos_cnum = Lexing.dummy_pos.pos_cnum + lp.pos_lnum = Lexing.dummy_pos.pos_lnum && lp.pos_cnum = Lexing.dummy_pos.pos_cnum +;; let of_lexical_position (lex_position : Lexing.position) : t option = - if is_dummy lex_position then None - else + if is_dummy lex_position + then None + else ( let line = lex_position.pos_lnum - 1 in let character = lex_position.pos_cnum - lex_position.pos_bol in - if not (line >= 0 && character >= 0) then + if not (line >= 0 && character >= 0) + then Log.log ~section:"debug" (fun () -> - Log.msg - "merlin returned dummy position %a" - [ ("pos_fname", `String lex_position.pos_fname) - ; ("pos_lnum", `Int lex_position.pos_lnum) - ; ("pos_bol", `Int lex_position.pos_bol) - ; ("pos_cnum", `Int lex_position.pos_cnum) - ]); + Log.msg + "merlin returned dummy position %a" + [ "pos_fname", `String lex_position.pos_fname + ; "pos_lnum", `Int lex_position.pos_lnum + ; "pos_bol", `Int lex_position.pos_bol + ; "pos_cnum", `Int lex_position.pos_cnum + ]); let line = max line 0 in let character = max character 0 in - Some { line; character } + Some { line; character }) +;; let ( - ) ({ line; character } : t) (t : t) : t = { line = line - t.line; character = character - t.character } +;; -let abs ({ line; character } : t) : t = - { line = abs line; character = abs character } +let abs ({ line; character } : t) : t = { line = abs line; character = abs character } let compare ({ line; character } : t) (t : t) : Ordering.t = - Stdune.Tuple.T2.compare - Int.compare - Int.compare - (line, character) - (t.line, t.character) + Stdune.Tuple.T2.compare Int.compare Int.compare (line, character) (t.line, t.character) +;; let compare_inclusion (t : t) (r : Lsp.Types.Range.t) = - match (compare t r.start, compare t r.end_) with + match compare t r.start, compare t r.end_ with | Lt, Lt -> `Outside (abs (r.start - t)) | Gt, Gt -> `Outside (abs (r.end_ - t)) | Eq, Lt | Gt, Eq | Eq, Eq | Gt, Lt -> `Inside | Eq, Gt | Lt, Eq | Lt, Gt -> assert false +;; let logical position = let line = position.line + 1 in let col = position.character in `Logical (line, col) +;; diff --git a/ocaml-lsp-server/src/position.mli b/ocaml-lsp-server/src/position.mli index a797e7599..9faf9c360 100644 --- a/ocaml-lsp-server/src/position.mli +++ b/ocaml-lsp-server/src/position.mli @@ -1,17 +1,10 @@ open! Import - include module type of Lsp.Types.Position with type t = Lsp.Types.Position.t val compare_inclusion : t -> Lsp.Types.Range.t -> [ `Inside | `Outside of t ] - val ( - ) : t -> t -> t - val compare : t -> t -> Ordering.t - val logical : t -> [> `Logical of int * int ] - val of_lexical_position : Lexing.position -> t option - val start : t - val to_dyn : t -> Dyn.t diff --git a/ocaml-lsp-server/src/prefix_parser.ml b/ocaml-lsp-server/src/prefix_parser.ml index d64552982..27d8ec16d 100644 --- a/ocaml-lsp-server/src/prefix_parser.ml +++ b/ocaml-lsp-server/src/prefix_parser.ml @@ -5,17 +5,14 @@ include struct (* Regex based parser *) let white_space = set "\n\t " - - let name_char = - Re.alt [ rg 'a' 'z'; rg 'A' 'Z'; rg '0' '9'; char '_'; char '\'' ] + let name_char = Re.alt [ rg 'a' 'z'; rg 'A' 'Z'; rg '0' '9'; char '_'; char '\'' ] let name_with_dot = Re.seq [ name_char; white_space |> rep; char '.'; white_space |> rep ] + ;; let core_operator_str = {|$&*+-/=>@^||} - let operator = core_operator_str ^ {|~!?%<:.|} - let infix = set (operator ^ "#") let name_or_label = @@ -25,6 +22,7 @@ include struct ; alt [ name_char; name_with_dot ] |> rep1 ; stop ]) + ;; (** matches let%lwt and let* style expressions. See here:https://v2.ocaml.org/manual/bindingops.html *) @@ -35,6 +33,7 @@ include struct ; alt [ infix |> rep1; seq [ name_char |> rep1; char '%' ] ] ; stop ]) + ;; let infix_operator = compile (seq [ infix |> rep1; stop ]) end @@ -43,8 +42,8 @@ let parse ~pos ~len text = (*Attempt to match each of our possible prefix types, the order is important because there is some overlap between the regexs*) let matched = - List.find_map - [ name_or_label; monadic_bind; infix_operator ] - ~f:(fun regex -> Re.exec_opt ~pos ~len regex text) + List.find_map [ name_or_label; monadic_bind; infix_operator ] ~f:(fun regex -> + Re.exec_opt ~pos ~len regex text) in matched |> Option.map ~f:(fun x -> Re.Group.get x 0) +;; diff --git a/ocaml-lsp-server/src/progress.ml b/ocaml-lsp-server/src/progress.ml index 8db5ef877..69913a6d4 100644 --- a/ocaml-lsp-server/src/progress.ml +++ b/ocaml-lsp-server/src/progress.ml @@ -14,27 +14,29 @@ type t = | Disabled | Enabled of enabled -let create (client_capabilities : ClientCapabilities.t) ~report_progress - ~create_task = +let create (client_capabilities : ClientCapabilities.t) ~report_progress ~create_task = match client_capabilities.window with | Some { workDoneProgress = Some true; _ } -> Enabled { token = None; build_counter = 0; create_task; report_progress } | _ -> Disabled +;; let end_build (t : enabled) ~message = Fiber.of_thunk (fun () -> - match t.token with - | None -> Fiber.return () - | Some token -> - t.token <- None; - t.report_progress - (ProgressParams.create - ~token - ~value:(Progress.End (WorkDoneProgressEnd.create ~message ())))) + match t.token with + | None -> Fiber.return () + | Some token -> + t.token <- None; + t.report_progress + (ProgressParams.create + ~token + ~value:(Progress.End (WorkDoneProgressEnd.create ~message ())))) +;; let end_build_if_running = function | Disabled -> Fiber.return () | Enabled e -> end_build e ~message:"Build interrupted" +;; let start_build (t : enabled) = let* () = end_build t ~message:"Starting new build" in @@ -49,47 +51,42 @@ let start_build (t : enabled) = ~token ~value: (Progress.Begin - (WorkDoneProgressBegin.create - ~title:"Build" - ~message:"started" - ()))) + (WorkDoneProgressBegin.create ~title:"Build" ~message:"started" ()))) in token +;; let build_progress t (progress : Drpc.Progress.t) = Fiber.of_thunk (fun () -> - match t with - | Disabled -> Code_error.raise "progress reporting is not supported" [] - | Enabled ({ token; report_progress; _ } as t) -> ( - match progress with - | Success -> end_build t ~message:"Build finished" - | Failed -> end_build t ~message:"Build failed" - | Interrupted -> end_build t ~message:"Build interrupted" - | Waiting -> end_build t ~message:"Waiting for changes" - | In_progress progress -> - let* token = - match token with - | Some token -> Fiber.return token - | None -> - (* This can happen when we connect to dune in the middle of a - build. *) - start_build t - in - let total = progress.complete + progress.remaining in - (* The percentage is useless as it isn't monotinically increasing as - the spec requires, but it's the best we can do. *) - let percentage = - let fraction = - float_of_int progress.complete /. float_of_int total - in - int_of_float (fraction *. 100.) - in - report_progress - (ProgressParams.create - ~token - ~value: - (Progress.Report - (let message = - sprintf "Building [%d/%d]" progress.complete total - in - WorkDoneProgressReport.create ~percentage ~message ()))))) + match t with + | Disabled -> Code_error.raise "progress reporting is not supported" [] + | Enabled ({ token; report_progress; _ } as t) -> + (match progress with + | Success -> end_build t ~message:"Build finished" + | Failed -> end_build t ~message:"Build failed" + | Interrupted -> end_build t ~message:"Build interrupted" + | Waiting -> end_build t ~message:"Waiting for changes" + | In_progress progress -> + let* token = + match token with + | Some token -> Fiber.return token + | None -> + (* This can happen when we connect to dune in the middle of a + build. *) + start_build t + in + let total = progress.complete + progress.remaining in + (* The percentage is useless as it isn't monotinically increasing as + the spec requires, but it's the best we can do. *) + let percentage = + let fraction = float_of_int progress.complete /. float_of_int total in + int_of_float (fraction *. 100.) + in + report_progress + (ProgressParams.create + ~token + ~value: + (Progress.Report + (let message = sprintf "Building [%d/%d]" progress.complete total in + WorkDoneProgressReport.create ~percentage ~message ()))))) +;; diff --git a/ocaml-lsp-server/src/progress.mli b/ocaml-lsp-server/src/progress.mli index 95ceee679..935ba2ed4 100644 --- a/ocaml-lsp-server/src/progress.mli +++ b/ocaml-lsp-server/src/progress.mli @@ -2,12 +2,11 @@ open Import type t -val create : - ClientCapabilities.t +val create + : ClientCapabilities.t -> report_progress:(Lsp.Progress.t ProgressParams.t -> unit Fiber.t) -> create_task:(WorkDoneProgressCreateParams.t -> unit Fiber.t) -> t val end_build_if_running : t -> unit Fiber.t - val build_progress : t -> Drpc.Progress.t -> unit Fiber.t diff --git a/ocaml-lsp-server/src/range.ml b/ocaml-lsp-server/src/range.ml index fe3f27cfb..2040e2dc5 100644 --- a/ocaml-lsp-server/src/range.ml +++ b/ocaml-lsp-server/src/range.ml @@ -5,40 +5,40 @@ let compare (x : t) (y : t) = match Position.compare x.start y.start with | (Lt | Gt) as r -> r | Ordering.Eq -> Position.compare x.end_ y.end_ +;; let to_dyn { start; end_ } = - Dyn.record - [ ("start", Position.to_dyn start); ("end_", Position.to_dyn end_) ] + Dyn.record [ "start", Position.to_dyn start; "end_", Position.to_dyn end_ ] +;; let contains (x : t) (y : t) = let open Ordering in - match (Position.compare x.start y.start, Position.compare x.end_ y.end_) with + match Position.compare x.start y.start, Position.compare x.end_ y.end_ with | (Lt | Eq), (Gt | Eq) -> true | _ -> false +;; (* Compares ranges by their lengths*) let compare_size (x : t) (y : t) = let dx = Position.(x.end_ - x.start) in let dy = Position.(y.end_ - y.start) in - Tuple.T2.compare - Int.compare - Int.compare - (dx.line, dy.line) - (dx.character, dy.character) + Tuple.T2.compare Int.compare Int.compare (dx.line, dy.line) (dx.character, dy.character) +;; let first_line = let start = { Position.line = 0; character = 0 } in let end_ = { Position.line = 1; character = 0 } in { start; end_ } +;; let of_loc_opt (loc : Loc.t) : t option = let open Option.O in let* start = Position.of_lexical_position loc.loc_start in let+ end_ = Position.of_lexical_position loc.loc_end in { start; end_ } +;; -let of_loc (loc : Loc.t) : t = - of_loc_opt loc |> Option.value ~default:first_line +let of_loc (loc : Loc.t) : t = of_loc_opt loc |> Option.value ~default:first_line let resize_for_edit { TextEdit.range; newText } = let lines = String.split_lines newText in @@ -57,9 +57,11 @@ let resize_for_edit { TextEdit.range; newText } = { Position.line; character } in { range with end_ } +;; let overlaps x y = let open Ordering in - match (Position.compare x.start y.end_, Position.compare x.end_ y.start) with + match Position.compare x.start y.end_, Position.compare x.end_ y.start with | (Lt | Eq), (Gt | Eq) | (Gt | Eq), (Lt | Eq) -> true | _ -> false +;; diff --git a/ocaml-lsp-server/src/range.mli b/ocaml-lsp-server/src/range.mli index 11edb9489..7dc505e68 100644 --- a/ocaml-lsp-server/src/range.mli +++ b/ocaml-lsp-server/src/range.mli @@ -1,5 +1,4 @@ open Import - include module type of Lsp.Types.Range with type t = Lsp.Types.Range.t (** [compare r1 r2] compares first start positions, if equal compares the end @@ -10,11 +9,8 @@ val compare : t -> t -> Ordering.t val contains : t -> t -> bool val to_dyn : t -> Dyn.t - val compare_size : t -> t -> Ordering.t - val first_line : t - val of_loc_opt : Loc.t -> t option (** [of_loc loc] if fails to convert [loc] to [t] will return the first (or top) diff --git a/ocaml-lsp-server/src/rename.ml b/ocaml-lsp-server/src/rename.ml index 1f86c21b5..b36aff247 100644 --- a/ocaml-lsp-server/src/rename.ml +++ b/ocaml-lsp-server/src/rename.ml @@ -1,8 +1,8 @@ open Import open Fiber.O -let rename (state : State.t) - { RenameParams.textDocument = { uri }; position; newName; _ } = +let rename (state : State.t) { RenameParams.textDocument = { uri }; position; newName; _ } + = let doc = Document_store.get state.store uri in match Document.kind doc with | `Other -> Fiber.return (WorkspaceEdit.create ()) @@ -15,33 +15,31 @@ let rename (state : State.t) let source = Document.source doc in let edits = List.map locs ~f:(fun (loc : Warnings.loc) -> - let range = Range.of_loc loc in - let make_edit () = TextEdit.create ~range ~newText:newName in - match - let occur_start_pos = - Position.of_lexical_position loc.loc_start |> Option.value_exn - in - occur_start_pos - with - | { character = 0; _ } -> make_edit () - | pos -> ( - let mpos = Position.logical pos in - let (`Offset index) = Msource.get_offset source mpos in - assert (index > 0) - (* [index = 0] if we pass [`Logical (1, 0)], but we handle the case - when [character = 0] in a separate matching branch *); - let source_txt = Msource.text source in - match source_txt.[index - 1] with - | '~' (* the occurrence is a named argument *) - | '?' (* is an optional argument *) -> - let empty_range_at_occur_end = - let occur_end_pos = range.Range.end_ in - { range with start = occur_end_pos } - in - TextEdit.create - ~range:empty_range_at_occur_end - ~newText:(":" ^ newName) - | _ -> make_edit ())) + let range = Range.of_loc loc in + let make_edit () = TextEdit.create ~range ~newText:newName in + match + let occur_start_pos = + Position.of_lexical_position loc.loc_start |> Option.value_exn + in + occur_start_pos + with + | { character = 0; _ } -> make_edit () + | pos -> + let mpos = Position.logical pos in + let (`Offset index) = Msource.get_offset source mpos in + assert (index > 0) + (* [index = 0] if we pass [`Logical (1, 0)], but we handle the case + when [character = 0] in a separate matching branch *); + let source_txt = Msource.text source in + (match source_txt.[index - 1] with + | '~' (* the occurrence is a named argument *) + | '?' (* is an optional argument *) -> + let empty_range_at_occur_end = + let occur_end_pos = range.Range.end_ in + { range with start = occur_end_pos } + in + TextEdit.create ~range:empty_range_at_occur_end ~newText:(":" ^ newName) + | _ -> make_edit ())) in let workspace_edits = let documentChanges = @@ -53,7 +51,8 @@ let rename (state : State.t) let* edit = workspace.workspaceEdit in edit.documentChanges) in - if documentChanges then + if documentChanges + then ( let textDocument = OptionalVersionedTextDocumentIdentifier.create ~uri ~version () in @@ -61,7 +60,8 @@ let rename (state : State.t) WorkspaceEdit.create ~documentChanges: [ `TextDocumentEdit (TextDocumentEdit.create ~textDocument ~edits) ] - () - else WorkspaceEdit.create ~changes:[ (uri, edits) ] () + ()) + else WorkspaceEdit.create ~changes:[ uri, edits ] () in workspace_edits +;; diff --git a/ocaml-lsp-server/src/semantic_highlighting.ml b/ocaml-lsp-server/src/semantic_highlighting.ml index ada46e52e..5832abfc1 100644 --- a/ocaml-lsp-server/src/semantic_highlighting.ml +++ b/ocaml-lsp-server/src/semantic_highlighting.ml @@ -14,23 +14,16 @@ module Token_type : sig type t val of_builtin : SemanticTokenTypes.t -> t - val module_ : t - val module_type : t - val to_int : t -> int - val to_legend : t -> string - val tokenTypes : string list end = struct type t = SemanticTokenTypes.t let of_builtin t = t - let module_ = SemanticTokenTypes.Namespace - let module_type = SemanticTokenTypes.Interface let legend : SemanticTokenTypes.t list = @@ -58,12 +51,14 @@ end = struct ; Operator ; Decorator ] + ;; let tokenTypes : string list = List.map legend ~f:(fun s -> - match SemanticTokenTypes.yojson_of_t s with - | `String s -> s - | _ -> assert false) + match SemanticTokenTypes.yojson_of_t s with + | `String s -> s + | _ -> assert false) + ;; let to_int = let module Table = MoreLabels.Hashtbl in @@ -74,30 +69,27 @@ end = struct t) in fun t -> Table.find (Lazy.force table) t + ;; let to_legend t = match SemanticTokenTypes.yojson_of_t t with | `String s -> s | _ -> assert false + ;; end module Token_modifiers_set : sig type t val to_int : t -> int - val singleton : SemanticTokenModifiers.t -> t - val empty : t - val list : string list - val to_legend : t -> string list end = struct type t = int let to_int x = x - let empty = 0 let singleton : SemanticTokenModifiers.t -> t = function @@ -111,6 +103,7 @@ end = struct | Modification -> 1 lsl 7 | Documentation -> 1 lsl 8 | DefaultLibrary -> 1 lsl 9 + ;; let list = [ "declaration" @@ -124,6 +117,7 @@ end = struct ; "documentation" ; "defaultLibrary" ] + ;; let array = lazy (Array.of_list list) @@ -143,23 +137,24 @@ end = struct let res = translate t 0 [] in Hashtbl.add cache t res; res + ;; end let legend = SemanticTokensLegend.create ~tokenTypes:Token_type.tokenTypes ~tokenModifiers:Token_modifiers_set.list +;; (** Represents a collection of semantic tokens. *) module Tokens : sig type t val create : unit -> t - val append_token : t -> Loc.t -> Token_type.t -> Token_modifiers_set.t -> unit - val append_token' : - t + val append_token' + : t -> Position.t -> length:int -> Token_type.t @@ -167,7 +162,6 @@ module Tokens : sig -> unit val yojson_of_t : t -> Yojson.Safe.t - val encode : t -> int array end = struct type token = @@ -178,63 +172,69 @@ end = struct } type t = - { mutable tokens : - token list (* the last appended token is the head of this list *) + { mutable tokens : token list (* the last appended token is the head of this list *) ; mutable count : int } let create () : t = { tokens = []; count = 0 } - let append_token : t -> Loc.t -> Token_type.t -> Token_modifiers_set.t -> unit - = - fun t loc token_type token_modifiers -> - if loc.loc_ghost then () - else + let append_token : t -> Loc.t -> Token_type.t -> Token_modifiers_set.t -> unit = + fun t loc token_type token_modifiers -> + if loc.loc_ghost + then () + else ( let range = Range.of_loc_opt loc in Option.iter range ~f:(fun ({ start; end_ } : Range.t) -> - (* TODO: we currently don't handle multi-line range; could handle if - client supports it - see client's capabilities on initialization *) - if Int.equal start.line end_.line then ( - let new_token : token = - let length = end_.character - start.character in - { start; length; token_type; token_modifiers } - in - t.tokens <- new_token :: t.tokens; - t.count <- t.count + 1)) - - let append_token' : - t - -> Position.t - -> length:int - -> Token_type.t - -> Token_modifiers_set.t - -> unit = - fun t start ~length token_type token_modifiers -> + (* TODO: we currently don't handle multi-line range; could handle if + client supports it - see client's capabilities on initialization *) + if Int.equal start.line end_.line + then ( + let new_token : token = + let length = end_.character - start.character in + { start; length; token_type; token_modifiers } + in + t.tokens <- new_token :: t.tokens; + t.count <- t.count + 1))) + ;; + + let append_token' + : t -> Position.t -> length:int -> Token_type.t -> Token_modifiers_set.t -> unit + = + fun t start ~length token_type token_modifiers -> let new_token : token = { start; length; token_type; token_modifiers } in t.tokens <- new_token :: t.tokens; t.count <- t.count + 1 - - let set_token arr ~delta_line_index ~delta_line ~delta_start ~length - ~token_type ~token_modifiers = + ;; + + let set_token + arr + ~delta_line_index + ~delta_line + ~delta_start + ~length + ~token_type + ~token_modifiers + = arr.(delta_line_index) <- delta_line; arr.(delta_line_index + 1) <- delta_start; arr.(delta_line_index + 2) <- length; arr.(delta_line_index + 3) <- token_type; arr.(delta_line_index + 4) <- token_modifiers + ;; let yojson_of_token { start; length; token_type; token_modifiers } = `Assoc - [ ("start_pos", Position.yojson_of_t start) - ; ("length", `Int length) - ; ("type", `String (Token_type.to_legend token_type)) + [ "start_pos", Position.yojson_of_t start + ; "length", `Int length + ; "type", `String (Token_type.to_legend token_type) ; ( "modifiers" , Json.Conv.yojson_of_list Json.Conv.yojson_of_string (Token_modifiers_set.to_legend token_modifiers) ) ] + ;; - let yojson_of_t t = - Json.Conv.yojson_of_list yojson_of_token (List.rev t.tokens) + let yojson_of_t t = Json.Conv.yojson_of_list yojson_of_token (List.rev t.tokens) let encode (t : t) : int array = let data = Array.init (t.count * 5) ~f:(fun (_ : int) -> 0) in @@ -252,8 +252,8 @@ end = struct | current :: previous :: rest -> let delta_line = current.start.line - previous.start.line in let delta_start = - if Int.equal delta_line 0 then - current.start.character - previous.start.character + if Int.equal delta_line 0 + then current.start.character - previous.start.character else current.start.character in let { length; token_type; token_modifiers; _ } = current in @@ -270,12 +270,13 @@ end = struct in aux t.count t.tokens; data + ;; end (** To traverse OCaml parsetree and produce semantic tokens. *) module Parsetree_fold (M : sig - val source : string -end) : sig + val source : string + end) : sig val apply : Mreader.parsetree -> Tokens.t end = struct (* mutable state *) @@ -285,29 +286,35 @@ end = struct let start_offset = loc_start.pos_cnum in let end_offset = loc_end.pos_cnum in String.sub M.source ~pos:start_offset ~len:(end_offset - start_offset) + ;; let add_token loc token_type token_modifiers = Tokens.append_token tokens loc token_type token_modifiers + ;; let add_token' pos ~length token_type token_modifiers = Tokens.append_token' tokens pos ~length token_type token_modifiers + ;; (* TODO: make sure we follow specs when parsing - https://v2.ocaml.org/manual/names.html#sss:refer-named *) - let lident ({ loc; _ } : Longident.t Loc.loc) rightmost_name - ?(modifiers = Token_modifiers_set.empty) () = - if loc.loc_ghost then () - else + let lident + ({ loc; _ } : Longident.t Loc.loc) + rightmost_name + ?(modifiers = Token_modifiers_set.empty) + () + = + if loc.loc_ghost + then () + else ( let start = Position.of_lexical_position loc.loc_start in match start with | None -> () | Some start -> let lid = source_excerpt loc in - let i = ref 0 in let line = ref start.line in let character = ref start.character in - let parse_word () : Position.t * [ `Length of int ] = let left_pos = { Position.line = !line; character = !character } in while @@ -320,9 +327,8 @@ end = struct incr character; incr i done; - (left_pos, `Length (!character - left_pos.character)) + left_pos, `Length (!character - left_pos.character) in - while !i < String.length lid do match lid.[!i] with | '\n' -> @@ -335,38 +341,41 @@ end = struct | _ -> let pos, `Length length = parse_word () in let token_type, mods = - if !i = String.length lid then (rightmost_name, modifiers) - else (Token_type.module_, Token_modifiers_set.empty) + if !i = String.length lid + then rightmost_name, modifiers + else Token_type.module_, Token_modifiers_set.empty in add_token' pos ~length token_type mods - done + done) + ;; - let constructor_arguments (self : Ast_iterator.iterator) - (ca : Parsetree.constructor_arguments) = + let constructor_arguments + (self : Ast_iterator.iterator) + (ca : Parsetree.constructor_arguments) + = match ca with | Pcstr_tuple l -> List.iter l ~f:(fun ct -> self.typ self ct) | Pcstr_record l -> List.iter l ~f:(fun r -> self.label_declaration self r) + ;; - let module_binding (self : Ast_iterator.iterator) - ({ pmb_name; pmb_expr; pmb_attributes; pmb_loc = _ } : - Parsetree.module_binding) = - add_token - pmb_name.loc - Token_type.module_ - (Token_modifiers_set.singleton Definition); + let module_binding + (self : Ast_iterator.iterator) + ({ pmb_name; pmb_expr; pmb_attributes; pmb_loc = _ } : Parsetree.module_binding) + = + add_token pmb_name.loc Token_type.module_ (Token_modifiers_set.singleton Definition); self.module_expr self pmb_expr; self.attributes self pmb_attributes + ;; - let typ (self : Ast_iterator.iterator) - ({ ptyp_desc; ptyp_attributes; ptyp_loc; ptyp_loc_stack = _ } as ct : - Parsetree.core_type) = + let typ + (self : Ast_iterator.iterator) + ({ ptyp_desc; ptyp_attributes; ptyp_loc; ptyp_loc_stack = _ } as ct : + Parsetree.core_type) + = let iter = match ptyp_desc with | Ptyp_var _ -> - add_token - ptyp_loc - (Token_type.of_builtin TypeParameter) - Token_modifiers_set.empty; + add_token ptyp_loc (Token_type.of_builtin TypeParameter) Token_modifiers_set.empty; `Custom_iterator | Ptyp_constr (name, cts) | Ptyp_class (name, cts) -> List.iter cts ~f:(fun ct -> self.typ self ct); @@ -374,19 +383,13 @@ end = struct `Custom_iterator | Ptyp_poly (tps, ct) -> List.iter tps ~f:(fun (tp : _ Asttypes.loc) -> - add_token - tp.loc - (Token_type.of_builtin TypeParameter) - Token_modifiers_set.empty); + add_token tp.loc (Token_type.of_builtin TypeParameter) Token_modifiers_set.empty); self.typ self ct; `Custom_iterator | Ptyp_variant (_, _, _) | Ptyp_alias (_, _) - | Ptyp_arrow _ - | Ptyp_extension _ - | Ptyp_package _ - | Ptyp_object _ - | Ptyp_tuple _ -> `Default_iterator + | Ptyp_arrow _ | Ptyp_extension _ | Ptyp_package _ | Ptyp_object _ | Ptyp_tuple _ -> + `Default_iterator | Ptyp_any -> (); `Custom_iterator @@ -394,48 +397,50 @@ end = struct match iter with | `Default_iterator -> Ast_iterator.default_iterator.typ self ct | `Custom_iterator -> self.attributes self ptyp_attributes + ;; - let constructor_declaration (self : Ast_iterator.iterator) - ({ pcd_name; pcd_vars; pcd_args; pcd_res; pcd_loc = _; pcd_attributes } : - Parsetree.constructor_declaration) = + let constructor_declaration + (self : Ast_iterator.iterator) + ({ pcd_name; pcd_vars; pcd_args; pcd_res; pcd_loc = _; pcd_attributes } : + Parsetree.constructor_declaration) + = add_token pcd_name.loc (Token_type.of_builtin EnumMember) (Token_modifiers_set.singleton Declaration); List.iter pcd_vars ~f:(fun (var : _ Asttypes.loc) -> - add_token - var.loc - (Token_type.of_builtin TypeParameter) - Token_modifiers_set.empty); + add_token var.loc (Token_type.of_builtin TypeParameter) Token_modifiers_set.empty); constructor_arguments self pcd_args; Option.iter pcd_res ~f:(fun ct -> self.typ self ct); self.attributes self pcd_attributes + ;; - let label_declaration (self : Ast_iterator.iterator) - ({ pld_name; pld_mutable = _; pld_type; pld_loc = _; pld_attributes } : - Parsetree.label_declaration) = - add_token - pld_name.loc - (Token_type.of_builtin Property) - Token_modifiers_set.empty; + let label_declaration + (self : Ast_iterator.iterator) + ({ pld_name; pld_mutable = _; pld_type; pld_loc = _; pld_attributes } : + Parsetree.label_declaration) + = + add_token pld_name.loc (Token_type.of_builtin Property) Token_modifiers_set.empty; self.typ self pld_type; self.attributes self pld_attributes + ;; - let value_binding (self : Ast_iterator.iterator) - ({ pvb_pat; pvb_expr; pvb_attributes; _ } as vb : Parsetree.value_binding) - = + let value_binding + (self : Ast_iterator.iterator) + ({ pvb_pat; pvb_expr; pvb_attributes; _ } as vb : Parsetree.value_binding) + = match - match (pvb_pat.ppat_desc, pvb_expr.pexp_desc) with - | Parsetree.Ppat_var fn_name, _ -> ( - match pvb_expr.pexp_desc with - | Pexp_fun _ | Pexp_function _ -> - add_token - fn_name.loc - (Token_type.of_builtin Function) - (Token_modifiers_set.singleton Definition); - self.expr self pvb_expr; - `Custom_iterator - | _ -> `Default_iterator) + match pvb_pat.ppat_desc, pvb_expr.pexp_desc with + | Parsetree.Ppat_var fn_name, _ -> + (match pvb_expr.pexp_desc with + | Pexp_fun _ | Pexp_function _ -> + add_token + fn_name.loc + (Token_type.of_builtin Function) + (Token_modifiers_set.singleton Definition); + self.expr self pvb_expr; + `Custom_iterator + | _ -> `Default_iterator) | ( Ppat_constraint ({ ppat_desc = Ppat_var n; _ }, pat_ct) , Pexp_constraint (e, exp_ct) ) when Loc.compare pat_ct.ptyp_loc exp_ct.ptyp_loc = 0 -> @@ -443,9 +448,9 @@ end = struct add_token n.loc (match pat_ct.ptyp_desc with - | Ptyp_poly (_, { ptyp_desc = Ptyp_arrow _; _ }) | Ptyp_arrow _ -> - Token_type.of_builtin Function - | _ -> Token_type.of_builtin Variable) + | Ptyp_poly (_, { ptyp_desc = Ptyp_arrow _; _ }) | Ptyp_arrow _ -> + Token_type.of_builtin Function + | _ -> Token_type.of_builtin Variable) Token_modifiers_set.empty; self.typ self pat_ct; self.expr self e; @@ -454,21 +459,25 @@ end = struct with | `Default_iterator -> Ast_iterator.default_iterator.value_binding self vb | `Custom_iterator -> self.attributes self pvb_attributes - - let type_declaration (self : Ast_iterator.iterator) - ({ ptype_name - ; ptype_params - ; ptype_cstrs - ; ptype_kind - ; ptype_private = _ - ; ptype_manifest - ; ptype_attributes - ; ptype_loc = _ - } : - Parsetree.type_declaration) = + ;; + + let type_declaration + (self : Ast_iterator.iterator) + ({ ptype_name + ; ptype_params + ; ptype_cstrs + ; ptype_kind + ; ptype_private = _ + ; ptype_manifest + ; ptype_attributes + ; ptype_loc = _ + } : + Parsetree.type_declaration) + = List.iter ptype_params - ~f:(fun + ~f: + (fun ((core_type, _) : Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) -> @@ -479,33 +488,32 @@ end = struct add_token ptype_name.loc (match ptype_kind with - | Parsetree.Ptype_abstract | Ptype_open -> Token_type.of_builtin Type - | Ptype_variant _ -> Token_type.of_builtin Enum - | Ptype_record _ -> Token_type.of_builtin Struct) + | Parsetree.Ptype_abstract | Ptype_open -> Token_type.of_builtin Type + | Ptype_variant _ -> Token_type.of_builtin Enum + | Ptype_record _ -> Token_type.of_builtin Struct) (Token_modifiers_set.singleton Declaration); List.iter ptype_cstrs ~f:(fun (ct0, ct1, (_ : Loc.t)) -> - self.typ self ct0; - self.typ self ct1); + self.typ self ct0; + self.typ self ct1); Option.iter ptype_manifest ~f:(fun ct -> self.typ self ct); (match ptype_kind with - | Parsetree.Ptype_abstract | Parsetree.Ptype_open -> () - | Ptype_variant cds -> - List.iter cds ~f:(fun cd -> self.constructor_declaration self cd) - | Ptype_record lds -> - List.iter lds ~f:(fun ld -> self.label_declaration self ld)); + | Parsetree.Ptype_abstract | Parsetree.Ptype_open -> () + | Ptype_variant cds -> + List.iter cds ~f:(fun cd -> self.constructor_declaration self cd) + | Ptype_record lds -> List.iter lds ~f:(fun ld -> self.label_declaration self ld)); self.attributes self ptype_attributes + ;; let const loc (constant : Parsetree.constant) = let token_type = match constant with - | Parsetree.Pconst_integer _ | Pconst_float _ -> - Token_type.of_builtin Number + | Parsetree.Pconst_integer _ | Pconst_float _ -> Token_type.of_builtin Number | Pconst_char _ | Pconst_string _ -> Token_type.of_builtin String in add_token loc token_type Token_modifiers_set.empty + ;; - let pexp_apply (self : Ast_iterator.iterator) (expr : Parsetree.expression) - args = + let pexp_apply (self : Ast_iterator.iterator) (expr : Parsetree.expression) args = match expr.pexp_desc with | Pexp_ident { txt = Ldot (Lident "Array", "set"); _ } | Pexp_ident { txt = Ldot (Lident "Array", "get"); _ } @@ -515,31 +523,31 @@ end = struct `Custom_iterator | Pexp_ident lid -> (match args with - | (_, fst_arg) :: rest - when (* true if applied function is infix, i.e., function name occurs - after the first argument *) - Loc.compare lid.loc fst_arg.pexp_loc > 0 -> - self.expr self fst_arg; - (* [lident] parses the identifier to find module names, which we don't - need to do for infix operators. *) - add_token - lid.loc - (Token_type.of_builtin Function) - Token_modifiers_set.empty; - List.iter rest ~f:(fun (_, e) -> self.expr self e) - | _ -> - lident lid (Token_type.of_builtin Function) (); - List.iter args ~f:(fun (_, e) -> self.expr self e)); + | (_, fst_arg) :: rest + when (* true if applied function is infix, i.e., function name occurs + after the first argument *) + Loc.compare lid.loc fst_arg.pexp_loc > 0 -> + self.expr self fst_arg; + (* [lident] parses the identifier to find module names, which we don't + need to do for infix operators. *) + add_token lid.loc (Token_type.of_builtin Function) Token_modifiers_set.empty; + List.iter rest ~f:(fun (_, e) -> self.expr self e) + | _ -> + lident lid (Token_type.of_builtin Function) (); + List.iter args ~f:(fun (_, e) -> self.expr self e)); `Custom_iterator | Pexp_field (e, l) -> self.expr self e; lident l (Token_type.of_builtin Function) (); `Custom_iterator | _ -> `Default_iterator + ;; - let expr (self : Ast_iterator.iterator) - ({ pexp_desc; pexp_loc; pexp_loc_stack = _; pexp_attributes } as exp : - Parsetree.expression) = + let expr + (self : Ast_iterator.iterator) + ({ pexp_desc; pexp_loc; pexp_loc_stack = _; pexp_attributes } as exp : + Parsetree.expression) + = match match pexp_desc with | Parsetree.Pexp_ident l -> @@ -547,28 +555,29 @@ end = struct `Custom_iterator | Pexp_construct (c, vo) -> (match c.txt with - | Lident "::" -> - (* because [a; b] is desugared to [Pexp_construct (Lident "::", + | Lident "::" -> + (* because [a; b] is desugared to [Pexp_construct (Lident "::", Pexp_tuple(...))] *) - Option.iter vo ~f:(fun v -> self.expr self v) - | Lident "[]" -> () (* TDOO: is this correct? *) - | Lident "()" -> () - | _ -> - lident c (Token_type.of_builtin EnumMember) (); - Option.iter vo ~f:(fun v -> self.expr self v)); + Option.iter vo ~f:(fun v -> self.expr self v) + | Lident "[]" -> () (* TDOO: is this correct? *) + | Lident "()" -> () + | _ -> + lident c (Token_type.of_builtin EnumMember) (); + Option.iter vo ~f:(fun v -> self.expr self v)); `Custom_iterator | Pexp_apply (expr, args) -> pexp_apply self expr args | Pexp_function _ | Pexp_let (_, _, _) -> `Default_iterator | Pexp_fun (_, expr_opt, pat, expr) -> (match expr_opt with - | None -> self.pat self pat - | Some e -> - if Loc.compare e.pexp_loc pat.ppat_loc < 0 then ( - self.expr self e; - self.pat self pat) - else ( - self.pat self pat; - self.expr self e)); + | None -> self.pat self pat + | Some e -> + if Loc.compare e.pexp_loc pat.ppat_loc < 0 + then ( + self.expr self e; + self.pat self pat) + else ( + self.pat self pat; + self.expr self e)); self.expr self expr; `Custom_iterator | Pexp_try (_, _) @@ -580,9 +589,9 @@ end = struct | Pexp_record (props, exp) -> Option.iter exp ~f:(fun e -> self.expr self e); List.iter props ~f:(fun (lid, (exp : Parsetree.expression)) -> - lident lid (Token_type.of_builtin Property) (); - if Loc.compare lid.loc exp.pexp_loc <> 0 (* handles field punning *) - then self.expr self exp); + lident lid (Token_type.of_builtin Property) (); + if Loc.compare lid.loc exp.pexp_loc <> 0 (* handles field punning *) + then self.expr self exp); `Custom_iterator | Pexp_field (e, l) -> self.expr self e; @@ -601,10 +610,7 @@ end = struct lident l (Token_type.of_builtin Class) (); `Custom_iterator | Pexp_newtype (t, e) -> - add_token - t.loc - (Token_type.of_builtin TypeParameter) - Token_modifiers_set.empty; + add_token t.loc (Token_type.of_builtin TypeParameter) Token_modifiers_set.empty; self.expr self e; `Custom_iterator | Pexp_letmodule (name, me, e) -> @@ -622,7 +628,8 @@ end = struct `Custom_iterator | Pexp_constraint (e, ct) -> (* handles [let f () : int = 1] and [let f () = (1 : int)] *) - if Loc.compare e.pexp_loc ct.ptyp_loc > 0 then ( + if Loc.compare e.pexp_loc ct.ptyp_loc > 0 + then ( self.typ self ct; self.expr self e) else ( @@ -634,9 +641,8 @@ end = struct (let_ :: ands) ~f:(fun { Parsetree.pbop_op = _; pbop_pat; pbop_exp; pbop_loc = _ } -> self.pat self pbop_pat; - if - Loc.compare pbop_pat.ppat_loc pbop_exp.pexp_loc - <> 0 (* handles punning as in e.g. [let* foo in ]*) + if Loc.compare pbop_pat.ppat_loc pbop_exp.pexp_loc + <> 0 (* handles punning as in e.g. [let* foo in ]*) then self.expr self pbop_exp); self.expr self body; `Custom_iterator @@ -657,42 +663,39 @@ end = struct with | `Default_iterator -> Ast_iterator.default_iterator.expr self exp | `Custom_iterator -> self.attributes self pexp_attributes + ;; - let pat (self : Ast_iterator.iterator) - ({ ppat_desc; ppat_loc; ppat_loc_stack = _; ppat_attributes } as pat : - Parsetree.pattern) = + let pat + (self : Ast_iterator.iterator) + ({ ppat_desc; ppat_loc; ppat_loc_stack = _; ppat_attributes } as pat : + Parsetree.pattern) + = match match ppat_desc with | Parsetree.Ppat_var v -> - add_token - v.loc - (Token_type.of_builtin Variable) - Token_modifiers_set.empty; + add_token v.loc (Token_type.of_builtin Variable) Token_modifiers_set.empty; `Custom_iterator | Ppat_alias (p, a) -> self.pat self p; - add_token - a.loc - (Token_type.of_builtin Variable) - Token_modifiers_set.empty; + add_token a.loc (Token_type.of_builtin Variable) Token_modifiers_set.empty; `Custom_iterator | Ppat_construct (c, args) -> let process_args () = Option.iter args ~f:(fun (tvs, pat) -> - List.iter tvs ~f:(fun (tv : _ Asttypes.loc) -> - add_token - tv.loc - (Token_type.of_builtin TypeParameter) - Token_modifiers_set.empty); - self.pat self pat) + List.iter tvs ~f:(fun (tv : _ Asttypes.loc) -> + add_token + tv.loc + (Token_type.of_builtin TypeParameter) + Token_modifiers_set.empty); + self.pat self pat) in (match c.txt with - | Lident "::" -> process_args () - | Lident "[]" -> () - | Lident "()" -> () - | _ -> - lident c (Token_type.of_builtin EnumMember) (); - process_args ()); + | Lident "::" -> process_args () + | Lident "[]" -> () + | Lident "()" -> () + | _ -> + lident c (Token_type.of_builtin EnumMember) (); + process_args ()); `Custom_iterator | Ppat_constant c -> const ppat_loc c; @@ -703,16 +706,16 @@ end = struct `Custom_iterator | Ppat_unpack m -> Option.iter m.txt ~f:(fun _ -> - add_token m.loc Token_type.module_ Token_modifiers_set.empty); + add_token m.loc Token_type.module_ Token_modifiers_set.empty); `Custom_iterator | Ppat_type t -> lident t (Token_type.of_builtin Type) (); `Custom_iterator | Ppat_record (flds, _) -> List.iter flds ~f:(fun (fld, (pat : Parsetree.pattern)) -> - lident fld (Token_type.of_builtin Property) (); - if Loc.compare fld.loc pat.ppat_loc <> 0 (* handles field punning *) - then self.pat self pat); + lident fld (Token_type.of_builtin Property) (); + if Loc.compare fld.loc pat.ppat_loc <> 0 (* handles field punning *) + then self.pat self pat); `Custom_iterator | Ppat_constraint (p, ct) -> self.pat self p; @@ -730,10 +733,12 @@ end = struct with | `Default_iterator -> Ast_iterator.default_iterator.pat self pat | `Custom_iterator -> self.attributes self ppat_attributes + ;; - let module_expr (self : Ast_iterator.iterator) - ({ pmod_desc; pmod_loc = _; pmod_attributes } as me : - Parsetree.module_expr) = + let module_expr + (self : Ast_iterator.iterator) + ({ pmod_desc; pmod_loc = _; pmod_attributes } as me : Parsetree.module_expr) + = match match pmod_desc with | Pmod_ident s -> @@ -741,14 +746,15 @@ end = struct `Custom_iterator | Pmod_functor (fp, me) -> (match fp with - | Unit -> () - | Named (n, mt) -> - add_token n.loc Token_type.module_ Token_modifiers_set.empty; - self.module_type self mt); + | Unit -> () + | Named (n, mt) -> + add_token n.loc Token_type.module_ Token_modifiers_set.empty; + self.module_type self mt); self.module_expr self me; `Custom_iterator | Pmod_constraint (me, mt) -> - if Loc.compare me.pmod_loc mt.pmty_loc > 0 then ( + if Loc.compare me.pmod_loc mt.pmty_loc > 0 + then ( self.module_type self mt; self.module_expr self me) else ( @@ -763,44 +769,50 @@ end = struct with | `Custom_iterator -> self.attributes self pmod_attributes | `Default_iterator -> Ast_iterator.default_iterator.module_expr self me + ;; - let module_type_declaration (self : Ast_iterator.iterator) - ({ pmtd_name; pmtd_type; pmtd_attributes; pmtd_loc = _ } : - Parsetree.module_type_declaration) = + let module_type_declaration + (self : Ast_iterator.iterator) + ({ pmtd_name; pmtd_type; pmtd_attributes; pmtd_loc = _ } : + Parsetree.module_type_declaration) + = add_token pmtd_name.loc Token_type.module_type Token_modifiers_set.empty; Option.iter pmtd_type ~f:(fun mdtt -> self.module_type self mdtt); self.attributes self pmtd_attributes + ;; - let value_description (self : Ast_iterator.iterator) - ({ pval_name; pval_type; pval_prim = _; pval_attributes; pval_loc = _ } : - Parsetree.value_description) = + let value_description + (self : Ast_iterator.iterator) + ({ pval_name; pval_type; pval_prim = _; pval_attributes; pval_loc = _ } : + Parsetree.value_description) + = add_token pval_name.loc (match pval_type.ptyp_desc with - | Ptyp_arrow (_, _, _) -> Token_type.of_builtin Function - | Ptyp_class (_, _) -> Token_type.of_builtin Class - | Ptyp_package _ -> Token_type.module_ - | Ptyp_extension _ - | Ptyp_constr (_, _) - | Ptyp_object (_, _) - | Ptyp_alias (_, _) - | Ptyp_variant (_, _, _) - | Ptyp_poly (_, _) - | Ptyp_tuple _ | Ptyp_any | Ptyp_var _ -> Token_type.of_builtin Variable) + | Ptyp_arrow (_, _, _) -> Token_type.of_builtin Function + | Ptyp_class (_, _) -> Token_type.of_builtin Class + | Ptyp_package _ -> Token_type.module_ + | Ptyp_extension _ + | Ptyp_constr (_, _) + | Ptyp_object (_, _) + | Ptyp_alias (_, _) + | Ptyp_variant (_, _, _) + | Ptyp_poly (_, _) + | Ptyp_tuple _ | Ptyp_any | Ptyp_var _ -> Token_type.of_builtin Variable) (Token_modifiers_set.singleton Declaration); self.typ self pval_type; (* TODO: handle pval_prim ? *) self.attributes self pval_attributes + ;; - let module_declaration (self : Ast_iterator.iterator) - ({ pmd_name; pmd_type; pmd_attributes; pmd_loc = _ } : - Parsetree.module_declaration) = - add_token - pmd_name.loc - Token_type.module_ - (Token_modifiers_set.singleton Declaration); + let module_declaration + (self : Ast_iterator.iterator) + ({ pmd_name; pmd_type; pmd_attributes; pmd_loc = _ } : Parsetree.module_declaration) + = + add_token pmd_name.loc Token_type.module_ (Token_modifiers_set.singleton Declaration); self.module_type self pmd_type; self.attributes self pmd_attributes + ;; let module_type (self : Ast_iterator.iterator) (mt : Parsetree.module_type) = match @@ -810,10 +822,10 @@ end = struct `Custom_iterator | Pmty_functor (fp, mt) -> (match fp with - | Unit -> () - | Named (n, mt) -> - add_token n.loc Token_type.module_ Token_modifiers_set.empty; - self.module_type self mt); + | Unit -> () + | Named (n, mt) -> + add_token n.loc Token_type.module_ Token_modifiers_set.empty; + self.module_type self mt); self.module_type self mt; `Custom_iterator | Pmty_alias m -> @@ -826,6 +838,7 @@ end = struct with | `Custom_iterator -> () | `Default_iterator -> Ast_iterator.default_iterator.module_type self mt + ;; (* TODO: *) let attribute _self _attr = () @@ -851,12 +864,14 @@ end = struct ; module_type ; module_declaration } + ;; let apply parsetree = (match parsetree with - | `Interface signature -> iterator.signature iterator signature - | `Implementation structure -> iterator.structure iterator structure); + | `Interface signature -> iterator.signature iterator signature + | `Implementation structure -> iterator.structure iterator structure); tokens + ;; end (** File-wide mutable state that allows to generate unique IDs for semantic @@ -867,85 +882,88 @@ let gen_new_id = let x = !i in incr i; string_of_int x +;; let compute_tokens doc = let+ parsetree, source = - Document.Merlin.with_pipeline_exn - ~name:"semantic highlighting" - doc - (fun p -> (Mpipeline.reader_parsetree p, Mpipeline.input_source p)) + Document.Merlin.with_pipeline_exn ~name:"semantic highlighting" doc (fun p -> + Mpipeline.reader_parsetree p, Mpipeline.input_source p) + in + let module Fold = + Parsetree_fold (struct + let source = Msource.text source + end) in - let module Fold = Parsetree_fold (struct - let source = Msource.text source - end) in Fold.apply parsetree +;; let compute_encoded_tokens doc = let+ tokens = compute_tokens doc in Tokens.encode tokens +;; (** Contains implementation of a custom request that provides human-readable tokens representation *) module Debug = struct let meth_request_full = "ocamllsp/textDocument/semanticTokens/full" - let on_request_full : - params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t = - fun ~params state -> + let on_request_full : params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t = + fun ~params state -> Fiber.of_thunk (fun () -> - match params with - | None -> - Jsonrpc.Response.Error.raise - @@ Jsonrpc.Response.Error.make - ~code:Jsonrpc.Response.Error.Code.InvalidParams - ~message: - (meth_request_full - ^ " expects an argument but didn't receive any") - () - | Some (`Assoc _ as json) | Some (`List _ as json) -> ( - let params = SemanticTokensParams.t_of_yojson json in - let store = state.store in - let uri = params.textDocument.uri in - let doc = Document_store.get store uri in - match Document.kind doc with - | `Other -> - Jsonrpc.Response.Error.raise - @@ Jsonrpc.Response.Error.make - ~code:Jsonrpc.Response.Error.Code.InvalidParams - ~message:"expected a merlin document" - () - | `Merlin merlin -> - let+ tokens = compute_tokens merlin in - Tokens.yojson_of_t tokens)) + match params with + | None -> + Jsonrpc.Response.Error.raise + @@ Jsonrpc.Response.Error.make + ~code:Jsonrpc.Response.Error.Code.InvalidParams + ~message:(meth_request_full ^ " expects an argument but didn't receive any") + () + | Some (`Assoc _ as json) | Some (`List _ as json) -> + let params = SemanticTokensParams.t_of_yojson json in + let store = state.store in + let uri = params.textDocument.uri in + let doc = Document_store.get store uri in + (match Document.kind doc with + | `Other -> + Jsonrpc.Response.Error.raise + @@ Jsonrpc.Response.Error.make + ~code:Jsonrpc.Response.Error.Code.InvalidParams + ~message:"expected a merlin document" + () + | `Merlin merlin -> + let+ tokens = compute_tokens merlin in + Tokens.yojson_of_t tokens)) + ;; end -let on_request_full : - State.t -> SemanticTokensParams.t -> SemanticTokens.t option Fiber.t = - fun state params -> +let on_request_full : State.t -> SemanticTokensParams.t -> SemanticTokens.t option Fiber.t + = + fun state params -> Fiber.of_thunk (fun () -> - let store = state.store in - let uri = params.textDocument.uri in - let doc = Document_store.get store uri in - match Document.kind doc with - | `Other -> Fiber.return None - | `Merlin doc -> - let+ tokens = compute_encoded_tokens doc in - let resultId = gen_new_id () in - Document_store.update_semantic_tokens_cache store uri ~resultId ~tokens; - Some { SemanticTokens.resultId = Some resultId; data = tokens }) + let store = state.store in + let uri = params.textDocument.uri in + let doc = Document_store.get store uri in + match Document.kind doc with + | `Other -> Fiber.return None + | `Merlin doc -> + let+ tokens = compute_encoded_tokens doc in + let resultId = gen_new_id () in + Document_store.update_semantic_tokens_cache store uri ~resultId ~tokens; + Some { SemanticTokens.resultId = Some resultId; data = tokens }) +;; (* TODO: refactor [find_diff] and write (inline?) tests *) (* [find_diff] finds common prefix and common suffix and reports the rest as array difference. This is not ideal but good enough. The idea comes from the Rust Analyzer implementation of this function. *) -let find_diff ~(old : int array) ~(new_ : int array) : SemanticTokensEdit.t list - = +let find_diff ~(old : int array) ~(new_ : int array) : SemanticTokensEdit.t list = let old_len = Array.length old in let new_len = Array.length new_ in let left_offset = Array.common_prefix_len ~equal:Int.equal old new_ in - if left_offset = old_len then - if left_offset = new_len then (* [old] and [new_] are simply equal *) [] + if left_offset = old_len + then + if left_offset = new_len + then (* [old] and [new_] are simply equal *) [] else (* [old] is prefix of [new_] *) [ SemanticTokensEdit.create @@ -954,14 +972,12 @@ let find_diff ~(old : int array) ~(new_ : int array) : SemanticTokensEdit.t list ~data:(Array.sub new_ ~pos:left_offset ~len:(new_len - left_offset)) () ] - else if left_offset = new_len then + else if left_offset = new_len + then (* [new_] is prefix of [old] *) - [ SemanticTokensEdit.create - ~start:left_offset - ~deleteCount:(old_len - left_offset) - () + [ SemanticTokensEdit.create ~start:left_offset ~deleteCount:(old_len - left_offset) () ] - else + else ( let common_suffix_len = let old_noncommon = Array_view.make old ~pos:left_offset in let new_noncommon = Array_view.make new_ ~pos:left_offset in @@ -975,40 +991,36 @@ let find_diff ~(old : int array) ~(new_ : int array) : SemanticTokensEdit.t list let right_offset_new = new_len - common_suffix_len in Array.sub new_ ~pos:left_offset ~len:(right_offset_new - left_offset) in - [ SemanticTokensEdit.create ~start:left_offset ~deleteCount ~data () ] - -let on_request_full_delta : - State.t - -> SemanticTokensDeltaParams.t - -> [ `SemanticTokens of SemanticTokens.t - | `SemanticTokensDelta of SemanticTokensDelta.t - ] + [ SemanticTokensEdit.create ~start:left_offset ~deleteCount ~data () ]) +;; + +let on_request_full_delta + : State.t -> SemanticTokensDeltaParams.t + -> [ `SemanticTokens of SemanticTokens.t + | `SemanticTokensDelta of SemanticTokensDelta.t + ] option - Fiber.t = - fun state params -> + Fiber.t + = + fun state params -> Fiber.of_thunk (fun () -> - let store = state.store in - let uri = params.textDocument.uri in - let doc = Document_store.get store uri in - match Document.kind doc with - | `Other -> Fiber.return None - | `Merlin doc -> ( - let+ tokens = compute_encoded_tokens doc in - let resultId = gen_new_id () in - let cached_token_info = - Document_store.get_semantic_tokens_cache - state.store - params.textDocument.uri - in - Document_store.update_semantic_tokens_cache store uri ~resultId ~tokens; - match cached_token_info with - | Some cached_v - when String.equal cached_v.resultId params.previousResultId -> - let edits = find_diff ~old:cached_v.tokens ~new_:tokens in - Some - (`SemanticTokensDelta - { SemanticTokensDelta.resultId = Some resultId; edits }) - | Some _ | None -> - Some - (`SemanticTokens - { SemanticTokens.resultId = Some resultId; data = tokens }))) + let store = state.store in + let uri = params.textDocument.uri in + let doc = Document_store.get store uri in + match Document.kind doc with + | `Other -> Fiber.return None + | `Merlin doc -> + let+ tokens = compute_encoded_tokens doc in + let resultId = gen_new_id () in + let cached_token_info = + Document_store.get_semantic_tokens_cache state.store params.textDocument.uri + in + Document_store.update_semantic_tokens_cache store uri ~resultId ~tokens; + (match cached_token_info with + | Some cached_v when String.equal cached_v.resultId params.previousResultId -> + let edits = find_diff ~old:cached_v.tokens ~new_:tokens in + Some + (`SemanticTokensDelta { SemanticTokensDelta.resultId = Some resultId; edits }) + | Some _ | None -> + Some (`SemanticTokens { SemanticTokens.resultId = Some resultId; data = tokens }))) +;; diff --git a/ocaml-lsp-server/src/semantic_highlighting.mli b/ocaml-lsp-server/src/semantic_highlighting.mli index 05aafaa60..e4fe87575 100644 --- a/ocaml-lsp-server/src/semantic_highlighting.mli +++ b/ocaml-lsp-server/src/semantic_highlighting.mli @@ -1,22 +1,18 @@ open Import val legend : SemanticTokensLegend.t +val on_request_full : State.t -> SemanticTokensParams.t -> SemanticTokens.t option Fiber.t -val on_request_full : - State.t -> SemanticTokensParams.t -> SemanticTokens.t option Fiber.t - -val on_request_full_delta : - State.t +val on_request_full_delta + : State.t -> SemanticTokensDeltaParams.t -> [ `SemanticTokens of SemanticTokens.t | `SemanticTokensDelta of SemanticTokensDelta.t ] - option - Fiber.t + option + Fiber.t module Debug : sig val meth_request_full : string - - val on_request_full : - params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t + val on_request_full : params:Jsonrpc.Structured.t option -> State.t -> Json.t Fiber.t end diff --git a/ocaml-lsp-server/src/signature_help.ml b/ocaml-lsp-server/src/signature_help.ml index f05deb5b4..5685a3128 100644 --- a/ocaml-lsp-server/src/signature_help.ml +++ b/ocaml-lsp-server/src/signature_help.ml @@ -40,6 +40,7 @@ let extract_ident (exp_desc : Typedtree.expression_desc) = longident ppf li; Some (to_string ()) | _ -> None +;; (* Type variables shared across arguments should all be printed with the same name. [Printtyp.type_scheme] ensure that a name is unique within a given @@ -48,7 +49,8 @@ let extract_ident (exp_desc : Typedtree.expression_desc) = let pp_type env ppf ty = let module Printtyp = Type_utils.Printtyp in Printtyp.wrap_printing_env env ~verbosity:(Lvl 0) (fun () -> - Printtyp.shared_type_scheme ppf ty) + Printtyp.shared_type_scheme ppf ty) +;; let rec type_is_arrow ty = match Types.get_desc ty with @@ -56,11 +58,14 @@ let rec type_is_arrow ty = | Tlink ty -> type_is_arrow ty | Tpoly (ty, _) -> type_is_arrow ty | _ -> false +;; (* surround function types in parentheses *) let pp_parameter_type env ppf ty = - if type_is_arrow ty then Format.fprintf ppf "(%a)" (pp_type env) ty + if type_is_arrow ty + then Format.fprintf ppf "(%a)" (pp_type env) ty else pp_type env ppf ty +;; (* print parameter labels and types *) let pp_parameter env label ppf ty = @@ -72,11 +77,11 @@ let pp_parameter env label ppf ty = [Raw_compat.labels_of_application] *) let unwrap_option ty = match Types.get_desc ty with - | Types.Tconstr (path, [ ty ], _) when Path.same path Predef.path_option - -> ty + | Types.Tconstr (path, [ ty ], _) when Path.same path Predef.path_option -> ty | _ -> ty in Format.fprintf ppf "?%s:%a" l (pp_parameter_type env) (unwrap_option ty) +;; (* record buffer offsets to be able to underline parameter types *) let print_parameter_offset ?arg:argument ppf buffer env label ty = @@ -86,17 +91,16 @@ let print_parameter_offset ?arg:argument ppf buffer env label ty = Format.pp_print_string ppf " -> "; Format.pp_print_flush ppf (); { label; param_start; param_end; argument } +;; let separate_function_signature ~args (e : Typedtree.expression) = Type_utils.Printtyp.reset (); let buffer = Buffer.create 16 in let ppf = Format.formatter_of_buffer buffer in let rec separate ?(i = 0) ?(parameters = []) args ty = - match (args, Types.get_desc ty) with + match args, Types.get_desc ty with | (_l, arg) :: args, Tarrow (label, ty1, ty2, _) -> - let parameter = - print_parameter_offset ppf buffer e.exp_env label ty1 ?arg - in + let parameter = print_parameter_offset ppf buffer e.exp_env label ty1 ?arg in separate args ty2 ~i:(succ i) ~parameters:(parameter :: parameters) | [], Tarrow (label, ty1, ty2, _) -> let parameter = print_parameter_offset ppf buffer e.exp_env label ty1 in @@ -112,47 +116,47 @@ let separate_function_signature ~args (e : Typedtree.expression) = } in separate args e.exp_type +;; let active_parameter_by_arg ~arg params = let find_by_arg = function | { argument = Some a; _ } when a == arg -> true | _ -> false in - try Some (List.index params ~f:find_by_arg) with Not_found -> None + try Some (List.index params ~f:find_by_arg) with + | Not_found -> None +;; let active_parameter_by_prefix ~prefix params = let common = function | Asttypes.Nolabel -> Some 0 - | l - when String.is_prefixed ~by:"~" prefix - || String.is_prefixed ~by:"?" prefix -> + | l when String.is_prefixed ~by:"~" prefix || String.is_prefixed ~by:"?" prefix -> Some (String.common_prefix_len (Btype.prefixed_label_name l) prefix) | _ -> None in - let rec find_by_prefix ?(i = 0) ?longest_len ?longest_i = function | [] -> longest_i - | p :: ps -> ( - match (common p.label, longest_len) with - | Some common_len, Some longest_len when common_len > longest_len -> - find_by_prefix ps ~i:(succ i) ~longest_len:common_len ~longest_i:i - | Some common_len, None -> - find_by_prefix ps ~i:(succ i) ~longest_len:common_len ~longest_i:i - | _ -> find_by_prefix ps ~i:(succ i) ?longest_len ?longest_i) + | p :: ps -> + (match common p.label, longest_len with + | Some common_len, Some longest_len when common_len > longest_len -> + find_by_prefix ps ~i:(succ i) ~longest_len:common_len ~longest_i:i + | Some common_len, None -> + find_by_prefix ps ~i:(succ i) ~longest_len:common_len ~longest_i:i + | _ -> find_by_prefix ps ~i:(succ i) ?longest_len ?longest_i) in find_by_prefix params +;; let is_arrow t = match Types.get_desc t with | Tarrow _ -> true | _ -> false +;; let application_signature ~prefix = function (* provide signature information for applied functions *) | (_, Browse_raw.Expression arg) - :: ( _ - , Expression { exp_desc = Texp_apply (({ exp_type; _ } as e), args); _ } - ) + :: (_, Expression { exp_desc = Texp_apply (({ exp_type; _ } as e), args); _ }) :: _ when is_arrow exp_type -> let result = separate_function_signature e ~args in @@ -170,20 +174,22 @@ let application_signature ~prefix = function let active_param = active_parameter_by_prefix ~prefix result.parameters in Some { result with active_param } | _ -> None +;; let format_doc ~markdown ~doc = `MarkupContent - (if markdown then + (if markdown + then ( let value = match Doc_to_md.translate doc with | Raw d -> sprintf "(** %s *)" d | Markdown d -> d in - { MarkupContent.value; kind = MarkupKind.Markdown } + { MarkupContent.value; kind = MarkupKind.Markdown }) else { MarkupContent.value = doc; kind = MarkupKind.PlainText }) +;; -let run (state : State.t) - { SignatureHelpParams.textDocument = { uri }; position; _ } = +let run (state : State.t) { SignatureHelpParams.textDocument = { uri }; position; _ } = let open Fiber.O in let doc = let store = state.store in @@ -201,69 +207,59 @@ let run (state : State.t) | `Other -> let help = SignatureHelp.create ~signatures:[] () in Fiber.return help - | `Merlin merlin -> ( + | `Merlin merlin -> let* application_signature = - let* inside_comment = - Check_for_comments.position_in_comment ~position ~merlin - in + let* inside_comment = Check_for_comments.position_in_comment ~position ~merlin in match inside_comment with | true -> Fiber.return None | false -> - Document.Merlin.with_pipeline_exn - ~name:"signature-help" - merlin - (fun pipeline -> - let typer = Mpipeline.typer_result pipeline in - let pos = Mpipeline.get_lexing_pos pipeline pos in - let node = Mtyper.node_at typer pos in - application_signature node ~prefix) + Document.Merlin.with_pipeline_exn ~name:"signature-help" merlin (fun pipeline -> + let typer = Mpipeline.typer_result pipeline in + let pos = Mpipeline.get_lexing_pos pipeline pos in + let node = Mtyper.node_at typer pos in + application_signature node ~prefix) in - match application_signature with - | None -> - let help = SignatureHelp.create ~signatures:[] () in - Fiber.return help - | Some application_signature -> - let prefix = - let fun_name = - Option.value ~default:"_" application_signature.function_name - in - sprintf "%s : " fun_name - in - let offset = String.length prefix in - let+ doc = - Document.Merlin.doc_comment - ~name:"signature help-position" - merlin - application_signature.function_position - in - let info = - let parameters = - List.map - application_signature.parameters - ~f:(fun (p : parameter_info) -> - let label = - `Offset (offset + p.param_start, offset + p.param_end) - in - ParameterInformation.create ~label ()) - in - let documentation = - let open Option.O in - let+ doc in - let markdown = - ClientCapabilities.markdown_support - (State.client_capabilities state) - ~field:(fun td -> - let* sh = td.signatureHelp in - let+ si = sh.signatureInformation in - si.documentationFormat) - in - format_doc ~markdown ~doc - in - let label = prefix ^ application_signature.signature in - SignatureInformation.create ~label ?documentation ~parameters () - in - SignatureHelp.create - ~signatures:[ info ] - ~activeSignature:0 - ?activeParameter:(Some application_signature.active_param) - ()) + (match application_signature with + | None -> + let help = SignatureHelp.create ~signatures:[] () in + Fiber.return help + | Some application_signature -> + let prefix = + let fun_name = Option.value ~default:"_" application_signature.function_name in + sprintf "%s : " fun_name + in + let offset = String.length prefix in + let+ doc = + Document.Merlin.doc_comment + ~name:"signature help-position" + merlin + application_signature.function_position + in + let info = + let parameters = + List.map application_signature.parameters ~f:(fun (p : parameter_info) -> + let label = `Offset (offset + p.param_start, offset + p.param_end) in + ParameterInformation.create ~label ()) + in + let documentation = + let open Option.O in + let+ doc in + let markdown = + ClientCapabilities.markdown_support + (State.client_capabilities state) + ~field:(fun td -> + let* sh = td.signatureHelp in + let+ si = sh.signatureInformation in + si.documentationFormat) + in + format_doc ~markdown ~doc + in + let label = prefix ^ application_signature.signature in + SignatureInformation.create ~label ?documentation ~parameters () + in + SignatureHelp.create + ~signatures:[ info ] + ~activeSignature:0 + ?activeParameter:(Some application_signature.active_param) + ()) +;; diff --git a/ocaml-lsp-server/src/state.ml b/ocaml-lsp-server/src/state.ml index c6a9bd253..8d9422f38 100644 --- a/ocaml-lsp-server/src/state.ml +++ b/ocaml-lsp-server/src/state.ml @@ -27,8 +27,8 @@ type t = ; hover_extended : hover_extended } -let create ~store ~merlin ~detached ~configuration ~ocamlformat_rpc - ~symbols_thread ~wheel = +let create ~store ~merlin ~detached ~configuration ~ocamlformat_rpc ~symbols_thread ~wheel + = { init = Uninitialized ; merlin_config = Merlin_config.DB.create () ; store @@ -41,6 +41,7 @@ let create ~store ~merlin ~detached ~configuration ~ocamlformat_rpc ; wheel ; hover_extended = { history = None } } +;; let wheel t = t.wheel @@ -48,37 +49,49 @@ let initialize_params (state : t) = match state.init with | Uninitialized -> assert false | Initialized init -> init.params +;; let workspaces (state : t) = match state.init with | Uninitialized -> assert false | Initialized init -> init.workspaces +;; let workspace_root t = match t.init with | Uninitialized -> assert false - | Initialized init -> ( - match init.params.rootUri with - | None -> assert false - | Some uri -> uri) + | Initialized init -> + (match init.params.rootUri with + | None -> assert false + | Some uri -> uri) +;; let dune t = match t.init with | Uninitialized -> assert false | Initialized init -> init.dune +;; let position_encoding t = match t.init with | Uninitialized -> assert false | Initialized init -> init.position_encoding +;; let diagnostics t = match t.init with | Uninitialized -> assert false | Initialized init -> init.diagnostics - -let initialize t ~position_encoding (params : InitializeParams.t) workspaces - dune diagnostics = +;; + +let initialize + t + ~position_encoding + (params : InitializeParams.t) + workspaces + dune + diagnostics + = assert (t.init = Uninitialized); { t with init = @@ -89,19 +102,19 @@ let initialize t ~position_encoding (params : InitializeParams.t) workspaces ; diagnostics ; position_encoding ; exp_client_caps = - Client.Experimental_capabilities.of_opt_json - params.capabilities.experimental + Client.Experimental_capabilities.of_opt_json params.capabilities.experimental } } +;; let modify_workspaces t ~f = let init = match t.init with | Uninitialized -> assert false - | Initialized init -> - Initialized { init with workspaces = f init.workspaces } + | Initialized init -> Initialized { init with workspaces = f init.workspaces } in { t with init } +;; let client_capabilities t = (initialize_params t).capabilities @@ -109,9 +122,11 @@ let experimental_client_capabilities t = match t.init with | Uninitialized -> assert false | Initialized { exp_client_caps; _ } -> exp_client_caps +;; let log_msg server ~type_ ~message = let state = Server.state server in task_if_running state.detached ~f:(fun () -> - let log = LogMessageParams.create ~type_ ~message in - Server.notification server (Server_notification.LogMessage log)) + let log = LogMessageParams.create ~type_ ~message in + Server.notification server (Server_notification.LogMessage log)) +;; diff --git a/ocaml-lsp-server/src/state.mli b/ocaml-lsp-server/src/state.mli index 49ef2af71..11ea459e4 100644 --- a/ocaml-lsp-server/src/state.mli +++ b/ocaml-lsp-server/src/state.mli @@ -14,9 +14,9 @@ type init = (** State specific to the hoverExtended request. *) type hover_extended = { mutable history : (Uri.t * Position.t * int) option - (** File, position, and verbosity level of the last call to - hoverExtended. This value is used to pick a verbosity level when it - is not specific by the client. *) + (** File, position, and verbosity level of the last call to + hoverExtended. This value is used to pick a verbosity level when it + is not specific by the client. *) } type t = @@ -33,8 +33,8 @@ type t = ; hover_extended : hover_extended } -val create : - store:Document_store.t +val create + : store:Document_store.t -> merlin:Lev_fiber.Thread.t -> detached:Fiber.Pool.t -> configuration:Configuration.t @@ -44,13 +44,11 @@ val create : -> t val position_encoding : t -> [ `UTF16 | `UTF8 ] - val wheel : t -> Lev_fiber.Timer.Wheel.t - val initialize_params : t -> InitializeParams.t -val initialize : - t +val initialize + : t -> position_encoding:[ `UTF16 | `UTF8 ] -> InitializeParams.t -> Workspaces.t @@ -59,11 +57,8 @@ val initialize : -> t val workspace_root : t -> Uri.t - val workspaces : t -> Workspaces.t - val dune : t -> Dune.t - val modify_workspaces : t -> f:(Workspaces.t -> Workspaces.t) -> t (** @return @@ -76,6 +71,4 @@ val client_capabilities : t -> ClientCapabilities.t val experimental_client_capabilities : t -> Client.Experimental_capabilities.t val diagnostics : t -> Diagnostics.t - -val log_msg : - t Server.t -> type_:MessageType.t -> message:string -> unit Fiber.t +val log_msg : t Server.t -> type_:MessageType.t -> message:string -> unit Fiber.t diff --git a/ocaml-lsp-server/src/typed_hole.ml b/ocaml-lsp-server/src/typed_hole.ml index 183c1b551..0dcd83a58 100644 --- a/ocaml-lsp-server/src/typed_hole.ml +++ b/ocaml-lsp-server/src/typed_hole.ml @@ -1,7 +1,6 @@ open Import let syntax_repr = "_" - let can_be_hole s = String.equal syntax_repr s (* the pattern matching below is taken and modified (minimally, to adapt the @@ -17,3 +16,4 @@ let is_a_hole = function | (_, Browse_raw.Module_expr { mod_desc = Tmod_hole; _ }) :: (_, _) :: _ | (_, Browse_raw.Expression { exp_desc = Texp_hole; _ }) :: _ -> true | [] | (_, _) :: _ -> false +;; diff --git a/ocaml-lsp-server/src/version.ml b/ocaml-lsp-server/src/version.ml index 623467378..faebbb263 100644 --- a/ocaml-lsp-server/src/version.ml +++ b/ocaml-lsp-server/src/version.ml @@ -2,3 +2,4 @@ let get () = match Build_info.V1.version () with | None -> "dev" | Some v -> Build_info.V1.Version.to_string v +;; diff --git a/ocaml-lsp-server/src/workspace_symbol.ml b/ocaml-lsp-server/src/workspace_symbol.ml index c873d9d8a..969f70553 100644 --- a/ocaml-lsp-server/src/workspace_symbol.ml +++ b/ocaml-lsp-server/src/workspace_symbol.ml @@ -32,15 +32,19 @@ let browse_of_cmt (cmt_infos : Cmt_format.cmt_infos) : Browse_raw.node option = | Interface sig_ -> Some (Signature sig_) (* TODO support these *) | Packed _ | Partial_implementation _ | Partial_interface _ -> None +;; -let is_directory dir = try Sys.is_directory dir with Sys_error _ -> false +let is_directory dir = + try Sys.is_directory dir with + | Sys_error _ -> false +;; type error = Build_dir_not_found of string let find_build_dir ({ name; uri } : WorkspaceFolder.t) = let build_dir = Filename.concat (Uri.to_path uri) "_build/default" in - if is_directory build_dir then Ok build_dir - else Error (Build_dir_not_found name) + if is_directory build_dir then Ok build_dir else Error (Build_dir_not_found name) +;; type cm_file = | Cmt of string @@ -49,6 +53,7 @@ type cm_file = let string_of_cm cm = match cm with | Cmt f | Cmti f -> f +;; module Outline : sig (* Like merlin's original outline but doesn't print any types. The types @@ -68,6 +73,7 @@ end = struct let id_of_patt = function | { pat_desc = Tpat_var (id, _); _ } -> Some id | _ -> None + ;; let mk ?(children = []) ~location ~deprecated outline_kind id = { Query_protocol.outline_kind @@ -77,37 +83,39 @@ end = struct ; outline_name = Ident.name id ; deprecated } + ;; let get_class_field_desc_infos = function | Typedtree.Tcf_val (str_loc, _, _, _, _) -> Some (str_loc, `Value) | Typedtree.Tcf_method (str_loc, _, _) -> Some (str_loc, `Method) | _ -> None + ;; let rec summarize node = let location = node.t_loc in match node.t_node with - | Value_binding vb -> ( + | Value_binding vb -> let deprecated = Type_utils.is_deprecated vb.vb_attributes in - match id_of_patt vb.vb_pat with - | None -> None - | Some ident -> Some (mk ~location ~deprecated `Value ident)) + (match id_of_patt vb.vb_pat with + | None -> None + | Some ident -> Some (mk ~location ~deprecated `Value ident)) | Value_description vd -> let deprecated = Type_utils.is_deprecated vd.val_attributes in Some (mk ~location ~deprecated `Value vd.val_id) - | Module_declaration md -> ( + | Module_declaration md -> let children = get_mod_children node in - match md.md_id with - | None -> None - | Some id -> - let deprecated = Type_utils.is_deprecated md.md_attributes in - Some (mk ~children ~location ~deprecated `Module id)) - | Module_binding mb -> ( + (match md.md_id with + | None -> None + | Some id -> + let deprecated = Type_utils.is_deprecated md.md_attributes in + Some (mk ~children ~location ~deprecated `Module id)) + | Module_binding mb -> let children = get_mod_children node in - match mb.mb_id with - | None -> None - | Some id -> - let deprecated = Type_utils.is_deprecated mb.mb_attributes in - Some (mk ~children ~location ~deprecated `Module id)) + (match mb.mb_id with + | None -> None + | Some id -> + let deprecated = Type_utils.is_deprecated mb.mb_attributes in + Some (mk ~children ~location ~deprecated `Module id)) | Module_type_declaration mtd -> let children = get_mod_children node in let deprecated = Type_utils.is_deprecated mtd.mtd_attributes in @@ -115,21 +123,19 @@ end = struct | Type_declaration td -> let children = List.concat_map (Lazy.force node.t_children) ~f:(fun child -> - match child.t_node with - | Type_kind _ -> - List.map (Lazy.force child.t_children) ~f:(fun x -> - match x.t_node with - | Constructor_declaration c -> - let deprecated = Type_utils.is_deprecated c.cd_attributes in - mk `Constructor c.cd_id ~deprecated ~location:c.cd_loc - | Label_declaration ld -> - let deprecated = - Type_utils.is_deprecated ld.ld_attributes - in - mk `Label ld.ld_id ~deprecated ~location:ld.ld_loc - | _ -> assert false - (* ! *)) - | _ -> []) + match child.t_node with + | Type_kind _ -> + List.map (Lazy.force child.t_children) ~f:(fun x -> + match x.t_node with + | Constructor_declaration c -> + let deprecated = Type_utils.is_deprecated c.cd_attributes in + mk `Constructor c.cd_id ~deprecated ~location:c.cd_loc + | Label_declaration ld -> + let deprecated = Type_utils.is_deprecated ld.ld_attributes in + mk `Label ld.ld_id ~deprecated ~location:ld.ld_loc + | _ -> assert false + (* ! *)) + | _ -> []) in let deprecated = Type_utils.is_deprecated td.typ_attributes in Some (mk ~children ~location ~deprecated `Type td.typ_id) @@ -137,8 +143,7 @@ end = struct let name = Path.name te.tyext_path in let children = List.filter_map (Lazy.force node.t_children) ~f:(fun x -> - summarize x >>| fun x -> - { x with Query_protocol.outline_kind = `Constructor }) + summarize x >>| fun x -> { x with Query_protocol.outline_kind = `Constructor }) in let deprecated = Type_utils.is_deprecated te.tyext_attributes in Some @@ -153,34 +158,31 @@ end = struct let deprecated = Type_utils.is_deprecated ec.ext_attributes in Some (mk ~location `Exn ec.ext_id ~deprecated) | Class_declaration cd -> - let children = - List.concat_map (Lazy.force node.t_children) ~f:get_class_elements - in + let children = List.concat_map (Lazy.force node.t_children) ~f:get_class_elements in let deprecated = Type_utils.is_deprecated cd.ci_attributes in Some (mk ~children ~location `Class cd.ci_id_class_type ~deprecated) | _ -> None and get_class_elements node = match node.t_node with - | Class_expr _ -> - List.concat_map (Lazy.force node.t_children) ~f:get_class_elements + | Class_expr _ -> List.concat_map (Lazy.force node.t_children) ~f:get_class_elements | Class_structure _ -> List.filter_map (Lazy.force node.t_children) ~f:(fun child -> - match child.t_node with - | Class_field cf -> ( - match get_class_field_desc_infos cf.cf_desc with - | Some (str_loc, outline_kind) -> - let deprecated = Type_utils.is_deprecated cf.cf_attributes in - Some - { Query_protocol.outline_name = str_loc.Location.txt - ; outline_kind - ; outline_type = None - ; location = str_loc.Location.loc - ; children = [] - ; deprecated - } - | None -> None) - | _ -> None) + match child.t_node with + | Class_field cf -> + (match get_class_field_desc_infos cf.cf_desc with + | Some (str_loc, outline_kind) -> + let deprecated = Type_utils.is_deprecated cf.cf_attributes in + Some + { Query_protocol.outline_name = str_loc.Location.txt + ; outline_kind + ; outline_type = None + ; location = str_loc.Location.loc + ; children = [] + ; deprecated + } + | None -> None) + | _ -> None) | _ -> [] and get_mod_children node = @@ -199,6 +201,7 @@ end = struct | Signature_item _ | Structure_item _ -> List.filter_map (Lazy.force t.t_children) ~f:summarize | _ -> [] + ;; let get browses = List.concat @@ List.rev_map ~f:remove_top_indir browses end @@ -216,6 +219,7 @@ let outline_kind kind : SymbolKind.t = | `Exn -> Constructor | `Class -> Class | `Method -> Method +;; let rec symbol_info ?containerName uri (item : Query_protocol.item) = let info = @@ -233,12 +237,11 @@ let rec symbol_info ?containerName uri (item : Query_protocol.item) = List.concat_map item.children ~f:(symbol_info uri ~containerName:info.name) in info :: children +;; -let symbols_of_outline uri outline = - List.concat_map ~f:(symbol_info uri) outline +let symbols_of_outline uri outline = List.concat_map ~f:(symbol_info uri) outline -let symbols_from_cm_file ~filter root_uri (cancel : Fiber.Cancel.t option) - cm_file = +let symbols_from_cm_file ~filter root_uri (cancel : Fiber.Cancel.t option) cm_file = let cmt = let filename = string_of_cm cm_file in let cancelled = @@ -250,25 +253,26 @@ let symbols_from_cm_file ~filter root_uri (cancel : Fiber.Cancel.t option) in match cmt.cmt_sourcefile with | None -> [] - | Some sourcefile -> ( - match Filename.extension sourcefile with - | ".ml" | ".mli" -> ( - match browse_of_cmt cmt with - | None -> [] - | Some browse -> - let outline = - let browse_tree = Merlin_analysis.Browse_tree.of_node browse in - Outline.get [ browse_tree ] - in - let loc = Mbrowse.node_loc browse in - let fname = loc.loc_start.pos_fname in - let uri = Uri.of_path (Filename.concat root_uri fname) in - filter (symbols_of_outline uri outline)) - | _ -> []) + | Some sourcefile -> + (match Filename.extension sourcefile with + | ".ml" | ".mli" -> + (match browse_of_cmt cmt with + | None -> [] + | Some browse -> + let outline = + let browse_tree = Merlin_analysis.Browse_tree.of_node browse in + Outline.get [ browse_tree ] + in + let loc = Mbrowse.node_loc browse in + let fname = loc.loc_start.pos_fname in + let uri = Uri.of_path (Filename.concat root_uri fname) in + filter (symbols_of_outline uri outline)) + | _ -> []) +;; let find_cm_files dir = let choose_file f1 f2 = - match (f1, f2) with + match f1, f2 with | (Cmt _ as f), _ | _, (Cmt _ as f) -> f | (Cmti _ as f), Cmti _ -> f in @@ -276,53 +280,50 @@ let find_cm_files dir = let rec loop acc dir = let contents = Sys.readdir dir in Array.fold_left contents ~init:acc ~f:(fun acc fname -> - let path = Filename.concat dir fname in - if is_directory path then loop acc path - else - match String.rsplit2 ~on:'.' path with - | Some (path_without_ext, "cmt") -> - String.Map.set acc path_without_ext (Cmt path) - | Some (path_without_ext, "cmti") -> ( - let current_file = String.Map.find acc path_without_ext in - let cmi_file = Cmti path in - match current_file with - | None -> String.Map.set acc path_without_ext cmi_file - | Some current_file -> - String.Map.set - acc - path_without_ext - (choose_file current_file cmi_file)) - | _ -> acc) + let path = Filename.concat dir fname in + if is_directory path + then loop acc path + else ( + match String.rsplit2 ~on:'.' path with + | Some (path_without_ext, "cmt") -> String.Map.set acc path_without_ext (Cmt path) + | Some (path_without_ext, "cmti") -> + let current_file = String.Map.find acc path_without_ext in + let cmi_file = Cmti path in + (match current_file with + | None -> String.Map.set acc path_without_ext cmi_file + | Some current_file -> + String.Map.set acc path_without_ext (choose_file current_file cmi_file)) + | _ -> acc)) in loop String.Map.empty dir |> String.Map.values +;; -let run ({ query; _ } : WorkspaceSymbolParams.t) - (workspace_folders : WorkspaceFolder.t list) - (cancel : Fiber.Cancel.t option) = +let run + ({ query; _ } : WorkspaceSymbolParams.t) + (workspace_folders : WorkspaceFolder.t list) + (cancel : Fiber.Cancel.t option) + = let filter = match query with | "" -> fun x -> x | query -> let re = Re.str query |> Re.compile in - List.filter ~f:(fun (symbol : SymbolInformation.t) -> - Re.execp re symbol.name) + List.filter ~f:(fun (symbol : SymbolInformation.t) -> Re.execp re symbol.name) in try Ok - (List.map - workspace_folders - ~f:(fun (workspace_folder : WorkspaceFolder.t) -> - let open Result.O in - let+ build_dir = find_build_dir workspace_folder in - let cm_files = find_cm_files build_dir in - let path = - let uri = workspace_folder.uri in - Uri.to_path uri - in - List.concat_map - ~f:(symbols_from_cm_file ~filter path cancel) - cm_files)) - with Cancelled -> Error `Cancelled + (List.map workspace_folders ~f:(fun (workspace_folder : WorkspaceFolder.t) -> + let open Result.O in + let+ build_dir = find_build_dir workspace_folder in + let cm_files = find_cm_files build_dir in + let path = + let uri = workspace_folder.uri in + Uri.to_path uri + in + List.concat_map ~f:(symbols_from_cm_file ~filter path cancel) cm_files)) + with + | Cancelled -> Error `Cancelled +;; let run server (state : State.t) (params : WorkspaceSymbolParams.t) = let open Fiber.O in @@ -343,7 +344,7 @@ let run server (state : State.t) (params : WorkspaceSymbolParams.t) = | None -> fun f -> let+ res = f () in - (res, Fiber.Cancel.Not_cancelled) + res, Fiber.Cancel.Not_cancelled | Some token -> let on_cancel () = Lev_fiber.Thread.cancel task in fun f -> Fiber.Cancel.with_handler token ~on_cancel f @@ -353,22 +354,19 @@ let run server (state : State.t) (params : WorkspaceSymbolParams.t) = match cancel with | Cancelled () -> let e = - Jsonrpc.Response.Error.make - ~code:RequestCancelled - ~message:"cancelled" - () + Jsonrpc.Response.Error.make ~code:RequestCancelled ~message:"cancelled" () in raise (Jsonrpc.Response.Error.E e) - | Fiber.Cancel.Not_cancelled -> ( - match res with - | Ok (Ok s) -> Fiber.return s - | Ok (Error `Cancelled) -> assert false - | Error `Cancelled -> assert false - | Error (`Exn exn) -> Exn_with_backtrace.reraise exn) + | Fiber.Cancel.Not_cancelled -> + (match res with + | Ok (Ok s) -> Fiber.return s + | Ok (Error `Cancelled) -> assert false + | Error `Cancelled -> assert false + | Error (`Exn exn) -> Exn_with_backtrace.reraise exn) in List.partition_map symbols_results ~f:(function - | Ok r -> Left r - | Error e -> Right e) + | Ok r -> Left r + | Error e -> Right e) in let+ () = match errors with @@ -377,13 +375,14 @@ let run server (state : State.t) (params : WorkspaceSymbolParams.t) = let msg = let message = List.map errors ~f:(function Build_dir_not_found workspace_name -> - workspace_name) + workspace_name) |> String.concat ~sep:", " |> sprintf "No build directory found in workspace(s): %s" in ShowMessageParams.create ~message ~type_:Warning in task_if_running state.detached ~f:(fun () -> - Server.notification server (ShowMessage msg)) + Server.notification server (ShowMessage msg)) in Some (List.concat symbols) +;; diff --git a/ocaml-lsp-server/src/workspace_symbol.mli b/ocaml-lsp-server/src/workspace_symbol.mli index 507b95499..70faa3c4a 100644 --- a/ocaml-lsp-server/src/workspace_symbol.mli +++ b/ocaml-lsp-server/src/workspace_symbol.mli @@ -1,7 +1,7 @@ open Import -val run : - _ Server.t +val run + : _ Server.t -> State.t -> WorkspaceSymbolParams.t -> SymbolInformation.t list option Fiber.t diff --git a/ocaml-lsp-server/src/workspaces.ml b/ocaml-lsp-server/src/workspaces.ml index b5097461d..f72938da3 100644 --- a/ocaml-lsp-server/src/workspaces.ml +++ b/ocaml-lsp-server/src/workspaces.ml @@ -1,10 +1,10 @@ open Import module Uri_map = Map.Make (struct - include Uri + include Uri - let compare x y = Ordering.of_int (compare x y) -end) + let compare x y = Ordering.of_int (compare x y) + end) type t = { workspace_folders : WorkspaceFolder.t Uri_map.t option @@ -17,9 +17,8 @@ let create (ip : InitializeParams.t) = match ip.workspaceFolders with | None | Some None -> None | Some (Some workspace_folders) -> - Uri_map.of_list_map_exn - workspace_folders - ~f:(fun (ws : WorkspaceFolder.t) -> (ws.uri, ws)) + Uri_map.of_list_map_exn workspace_folders ~f:(fun (ws : WorkspaceFolder.t) -> + ws.uri, ws) |> Option.some in let root_uri = ip.rootUri in @@ -29,6 +28,7 @@ let create (ip : InitializeParams.t) = | Some s -> s in { workspace_folders; root_uri; root_path } +;; let on_change t { DidChangeWorkspaceFoldersParams.event = { added; removed } } = assert (t.workspace_folders <> None); @@ -36,35 +36,34 @@ let on_change t { DidChangeWorkspaceFoldersParams.event = { added; removed } } = let init = Option.value t.workspace_folders ~default:Uri_map.empty in let init = List.fold_left removed ~init ~f:(fun acc (a : WorkspaceFolder.t) -> - Uri_map.remove acc a.uri) + Uri_map.remove acc a.uri) in List.fold_left added ~init ~f:(fun acc (a : WorkspaceFolder.t) -> - Uri_map.set acc a.uri a) + Uri_map.set acc a.uri a) |> Option.some in { t with workspace_folders } +;; let workspace_folders { root_uri; root_path; workspace_folders } = match workspace_folders with | Some s -> Uri_map.values s - | None -> ( + | None -> (* WorkspaceFolders has the most priority. Then rootUri and finally rootPath *) - match (workspace_folders, root_uri, root_path) with - | Some workspace_folders, _, _ -> Uri_map.values workspace_folders - | _, Some root_uri, _ -> - [ WorkspaceFolder.create - ~uri:root_uri - ~name:(Filename.basename (Uri.to_path root_uri)) - ] - | _, _, Some root_path -> - [ WorkspaceFolder.create - ~uri:(Uri.of_path root_path) - ~name:(Filename.basename root_path) - ] - | _ -> - let cwd = Sys.getcwd () in - [ WorkspaceFolder.create - ~uri:(Uri.of_path cwd) - ~name:(Filename.basename cwd) - ]) + (match workspace_folders, root_uri, root_path with + | Some workspace_folders, _, _ -> Uri_map.values workspace_folders + | _, Some root_uri, _ -> + [ WorkspaceFolder.create + ~uri:root_uri + ~name:(Filename.basename (Uri.to_path root_uri)) + ] + | _, _, Some root_path -> + [ WorkspaceFolder.create + ~uri:(Uri.of_path root_path) + ~name:(Filename.basename root_path) + ] + | _ -> + let cwd = Sys.getcwd () in + [ WorkspaceFolder.create ~uri:(Uri.of_path cwd) ~name:(Filename.basename cwd) ]) +;; diff --git a/ocaml-lsp-server/src/workspaces.mli b/ocaml-lsp-server/src/workspaces.mli index 67432a69c..b11fc07e9 100644 --- a/ocaml-lsp-server/src/workspaces.mli +++ b/ocaml-lsp-server/src/workspaces.mli @@ -3,7 +3,5 @@ open Import type t val create : InitializeParams.t -> t - val on_change : t -> DidChangeWorkspaceFoldersParams.t -> t - val workspace_folders : t -> WorkspaceFolder.t list diff --git a/ocaml-lsp-server/test/e2e-new/action_extract.ml b/ocaml-lsp-server/test/e2e-new/action_extract.ml index 9360b72e7..e9985d4be 100644 --- a/ocaml-lsp-server/test/e2e-new/action_extract.ml +++ b/ocaml-lsp-server/test/e2e-new/action_extract.ml @@ -1,7 +1,5 @@ let extract_local_test = Code_actions.code_action_test ~title:"Extract local" - -let extract_function_test = - Code_actions.code_action_test ~title:"Extract function" +let extract_function_test = Code_actions.code_action_test ~title:"Extract function" let%expect_test "extract local constant" = extract_local_test {| @@ -12,6 +10,7 @@ let f = let f = let var_name = 1 in 0 + var_name |}] +;; let%expect_test "extract local expression" = extract_local_test {| @@ -25,18 +24,19 @@ let f = let x = 2 in let var_name = 0 + 1 + x in var_name + 1 |}] +;; let%expect_test "extract function single parameter" = extract_function_test {| let f x = $(x * 2)$ + 3 |}; - [%expect - {| + [%expect {| let fun_name x = (x * 2) let f x = fun_name x + 3 |}] +;; let%expect_test "extract function multiple parameter" = extract_function_test {| @@ -51,6 +51,7 @@ let f x = let f x = let y = 0 in fun_name y x + 3 |}] +;; let%expect_test "extract function with local module" = extract_function_test @@ -62,6 +63,7 @@ let f x = $(x * M.y)$ + 3 |}; [%expect {||}] +;; (* TODO: This extraction shouldn't be allowed. *) let%expect_test "extract function with local exception" = @@ -77,18 +79,19 @@ let f x = let f x = let exception Local in fun_name () |}] +;; let%expect_test "extract function with shadowed parameter" = extract_function_test {| let x = 0 let f x = $x + 1$ |}; - [%expect - {| + [%expect {| let x = 0 let fun_name x = x + 1 let f x = fun_name x |}] +;; let%expect_test "extract function with bound variable" = extract_function_test {| @@ -103,6 +106,7 @@ let f x = $x + y$ let fun_name x = x + y let f x = fun_name x |}] +;; let%expect_test "extract higher order function" = extract_function_test {| @@ -115,6 +119,7 @@ let f x = let f x = fun_name x |}] +;; let%expect_test "extract higher order function" = extract_function_test {| @@ -127,6 +132,7 @@ let f y = let f y = fun_name y |}] +;; let%expect_test "extract higher order function" = extract_function_test {| @@ -139,6 +145,7 @@ let f y = let f y = fun_name y |}] +;; let%expect_test "extract inside let binding" = extract_function_test {| @@ -153,6 +160,7 @@ let f y = let f y = let y = y + 1 in fun_name y |}] +;; let%expect_test "extract free variable" = extract_function_test {| @@ -164,3 +172,4 @@ let f () = let f () = fun_name () |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/action_inline.ml b/ocaml-lsp-server/test/e2e-new/action_inline.ml index 5b4350761..0ad51bdc7 100644 --- a/ocaml-lsp-server/test/e2e-new/action_inline.ml +++ b/ocaml-lsp-server/test/e2e-new/action_inline.ml @@ -10,10 +10,10 @@ let _ = let _ = let x = 0 in (0) + 1 |}] +;; let%expect_test "shadow-1" = - inline_test - {| + inline_test {| let _ = let y = 1 in let $x = y in @@ -21,10 +21,10 @@ let _ = x + 1 |}; [%expect {| |}] +;; let%expect_test "shadow-2" = - inline_test - {| + inline_test {| let _ = let y = 1 in let $x y = y in @@ -38,10 +38,10 @@ let _ = let x y = y in let y = 0 in (y) + 1 |}] +;; let%expect_test "shadow-3" = - inline_test - {| + inline_test {| let _ = let y = 1 in let $x z = y + z in @@ -49,6 +49,7 @@ let _ = x y + 1 |}; [%expect {| |}] +;; let%expect_test "shadow-4" = inline_test @@ -64,6 +65,7 @@ let _ = x |}; [%expect {| |}] +;; let%expect_test "shadow-5" = inline_test @@ -89,6 +91,7 @@ let _ = let y = 2 end in (M.y) |}] +;; let%expect_test "" = inline_test {| @@ -100,6 +103,7 @@ let _ = let _ = let x = 0 + 1 in (fun x -> x) (0 + 1) |}] +;; let%expect_test "" = inline_test {| @@ -107,11 +111,11 @@ let _ = let $x = 0 + 1 in (fun ~x -> x) ~x |}; - [%expect - {| + [%expect {| let _ = let x = 0 + 1 in (fun ~x -> x) ~x:(0 + 1) |}] +;; let%expect_test "" = inline_test {| @@ -119,11 +123,11 @@ let _ = let $x = 0 + 1 in (fun ?(x = 2) -> x) ~x |}; - [%expect - {| + [%expect {| let _ = let x = 0 + 1 in (fun ?(x = 2) -> x) ~x:(0 + 1) |}] +;; let%expect_test "" = inline_test {| @@ -132,6 +136,7 @@ let _ = (fun ?(x = 2) -> x) ?x |}; [%expect {| |}] +;; let%expect_test "" = inline_test {| @@ -139,11 +144,11 @@ let _ = let $x = 0 in (fun ~x -> x) ~x:(x + 1) |}; - [%expect - {| + [%expect {| let _ = let x = 0 in (fun ~x -> x) ~x:((0) + 1) |}] +;; let%expect_test "" = inline_test {| @@ -151,11 +156,11 @@ let _ = let $x = 0 in (fun ?(x = 1) -> x) ~x:(x + 1) |}; - [%expect - {| + [%expect {| let _ = let x = 0 in (fun ?(x = 1) -> x) ~x:((0) + 1) |}] +;; let%expect_test "" = inline_test {| @@ -167,6 +172,7 @@ let _ = let _ = let f x = x in (1) |}] +;; let%expect_test "" = inline_test {| @@ -178,6 +184,7 @@ let _ = let _ = let f _ = 0 in (0) |}] +;; let%expect_test "" = inline_test {| @@ -189,6 +196,7 @@ let _ = let _ = let f x = x + x in (1 + 1) |}] +;; let%expect_test "" = inline_test {| @@ -196,11 +204,11 @@ let _ = let $f x = x + x in f (g 1) |}; - [%expect - {| + [%expect {| let _ = let f x = x + x in (let x = g 1 in x + x) |}] +;; let%expect_test "" = inline_test {| @@ -212,6 +220,7 @@ let _ = let _ = let f x y = x + y in (fun y -> 0 + y) |}] +;; let%expect_test "" = inline_test {| @@ -219,11 +228,11 @@ let _ = let $f x ~y = x + y in f ~y:0 |}; - [%expect - {| + [%expect {| let _ = let f x ~y = x + y in ((fun x ~y -> x + y) ~y:0) |}] +;; let%expect_test "" = inline_test {| @@ -235,6 +244,7 @@ let _ = let _ = let f ~x y = x + y in (fun y -> 0 + y) |}] +;; let%expect_test "" = inline_test {| @@ -242,11 +252,11 @@ let _ = let $f ~x ~y = x + y in f ~y:0 |}; - [%expect - {| + [%expect {| let _ = let f ~x ~y = x + y in (fun ~x -> x + 0) |}] +;; let%expect_test "" = inline_test {| @@ -258,6 +268,7 @@ let _ = let _ = let f (x : int) = x + 1 in (0 + 1) |}] +;; (* TODO: allow beta reduction with locally abstract types *) let%expect_test "" = @@ -271,6 +282,7 @@ let _ = let _ = let f (type a) (x : a) = x in ((fun (type a) -> fun (x : a) -> x) 0) |}] +;; let%expect_test "" = inline_test {| @@ -282,10 +294,10 @@ let _ = let _ = let f : int -> int = fun x -> x in (0) |}] +;; let%expect_test "" = - inline_test - {| + inline_test {| let _ = let $f = function Some x -> x | None -> 0 in f (Some 1) @@ -295,6 +307,7 @@ let _ = let _ = let f = function Some x -> x | None -> 0 in ((function | Some x -> x | None -> 0) (Some 1)) |}] +;; (* TODO: allow beta reduction with `as` *) let%expect_test "" = @@ -308,6 +321,7 @@ let _ = let _ = let f (x as y) = y + 1 in (let x as y = 1 in y + 1) |}] +;; let%expect_test "" = inline_test {| @@ -319,6 +333,7 @@ let _ = let _ = let f 1 = 2 in (let 1 = 2 in 2) |}] +;; let%expect_test "" = inline_test {| @@ -330,6 +345,7 @@ let _ = let _ = let f (x, y) = x + y in (1 + 2) |}] +;; let%expect_test "" = inline_test {| @@ -342,10 +358,10 @@ let _ = let _ = let f (x, y) = x + y + y in (let y = 2 + 3 in (1 + y) + y) |}] +;; let%expect_test "" = - inline_test - {| + inline_test {| let _ = let $f (x, y) = x + y + y in let z = (1, 2) in @@ -357,6 +373,7 @@ let _ = let f (x, y) = x + y + y in let z = (1, 2) in (let (x, y) = z in (x + y) + y) |}] +;; (* TODO *) let%expect_test "" = @@ -373,6 +390,7 @@ let _ = let _ = let f { x; y } = x + y in (let { x; y } = { x = 1; y = 1 } in x + y) |}] +;; (* TODO: beta reduce record literals as with tuples *) let%expect_test "" = @@ -389,6 +407,7 @@ let _ = let _ = let f { x; _ } = x + 1 in (let { x;_} = { x = 1; y = 1 } in x + 1) |}] +;; let%expect_test "" = inline_test {| @@ -400,6 +419,7 @@ let _ = let _ = let f x = [%test] x in (([%test ]) 1) |}] +;; let%expect_test "" = inline_test {| @@ -411,6 +431,7 @@ let _ = let _ = let f x = x in [%test] (1) |}] +;; let%expect_test "" = inline_test {| @@ -422,6 +443,7 @@ let _ = let _ = let f x = (* test comment *) x in (1) |}] +;; let%expect_test "" = inline_test {| @@ -433,6 +455,7 @@ let _ = let _ = let f x = x in (* test comment *) (1) |}] +;; let%expect_test "" = inline_test {| @@ -442,11 +465,11 @@ let g y = f y [%expect {| let f x = x let g y = (y) |}] +;; (* TODO *) let%expect_test "" = - inline_test - {| + inline_test {| module M = struct let $f x = x let g y = f y @@ -460,3 +483,4 @@ let h = M.f let g y = (y) end let h = M.f |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/action_mark_remove.ml b/ocaml-lsp-server/test/e2e-new/action_mark_remove.ml index 2b9facedc..204a5c698 100644 --- a/ocaml-lsp-server/test/e2e-new/action_mark_remove.ml +++ b/ocaml-lsp-server/test/e2e-new/action_mark_remove.ml @@ -9,14 +9,14 @@ let run_test ~title ~message source = src range) ~f:print_string +;; let mark_test = function | `Value -> run_test ~title:"Mark as unused" ~message:"unused value" | `Open -> run_test ~title:"Replace with open!" ~message:"unused open" | `For_loop_index -> - run_test - ~title:"Mark for-loop index as unused" - ~message:"unused for-loop index" + run_test ~title:"Mark for-loop index as unused" ~message:"unused for-loop index" +;; let remove_test = function | `Value -> run_test ~title:"Remove unused" ~message:"unused value" @@ -24,11 +24,11 @@ let remove_test = function | `Open_bang -> run_test ~title:"Remove unused open!" ~message:"unused open!" | `Type -> run_test ~title:"Remove unused type" ~message:"unused type" | `Module -> run_test ~title:"Remove unused module" ~message:"unused module" - | `Case -> - run_test ~title:"Remove unused case" ~message:"this match case is unused" + | `Case -> run_test ~title:"Remove unused case" ~message:"this match case is unused" | `Rec -> run_test ~title:"Remove unused rec" ~message:"unused rec flag" | `Constructor -> run_test ~title:"Remove unused constructor" ~message:"unused constructor" +;; let%expect_test "mark value in let" = mark_test `Value {| @@ -40,6 +40,7 @@ let f = let f = let _x = 1 in 0 |}] +;; (* todo *) let%expect_test "mark value in top level let" = @@ -52,6 +53,7 @@ let $f$ = let _f = let x = 1 in 0 |}] +;; let%expect_test "mark value in match" = mark_test `Value {| @@ -61,6 +63,7 @@ let f = function [%expect {| let f = function | _x -> 0 |}] +;; let%expect_test "remove value in let" = remove_test `Value {| @@ -71,6 +74,7 @@ let f = [%expect {| let f = 0 |}] +;; (* todo *) let%expect_test "remove value in top level let" = @@ -79,12 +83,14 @@ let $f$ = let x = 1 in 0 |} +;; let%expect_test "mark open" = mark_test `Open {| $open M$ |}; [%expect {| open! M |}] +;; let%expect_test "mark for loop index" = mark_test `For_loop_index {| @@ -98,6 +104,7 @@ let () = for _i = 0 to 10 do () done |}] +;; let%expect_test "remove open" = remove_test `Open {| @@ -105,6 +112,7 @@ open A $open B$ |}; [%expect {| open A |}] +;; let%expect_test "remove open!" = remove_test `Open_bang {| open A @@ -117,6 +125,7 @@ $type t = int$ type s = bool |}; [%expect {| type s = bool |}] +;; let%expect_test "remove module" = remove_test `Module {| @@ -124,6 +133,7 @@ $module A = struct end$ module B = struct end |}; [%expect {| module B = struct end |}] +;; let%expect_test "remove case" = remove_test `Case {| @@ -134,18 +144,21 @@ let f = function [%expect {| let f = function | 0 -> 0 |}] +;; let%expect_test "remove rec flag" = remove_test `Rec {| let rec $f$ = 0 |}; [%expect {| let f = 0 |}] +;; let%expect_test "remove constructor" = remove_test `Constructor {| type t = A $| B$ |}; [%expect {| type t = A |}] +;; let%expect_test "remove constructor" = remove_test `Constructor {| @@ -156,6 +169,7 @@ type t = [%expect {| type t = | A |}] +;; let%expect_test "remove constructor" = remove_test `Constructor {| @@ -167,6 +181,7 @@ type t = type t = | B |}] +;; let%expect_test "remove constructor" = remove_test `Constructor {| @@ -178,3 +193,4 @@ type t = type t = | B |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/code_actions.ml b/ocaml-lsp-server/test/e2e-new/code_actions.ml index 54bd277ec..24cefa4cb 100644 --- a/ocaml-lsp-server/test/e2e-new/code_actions.ml +++ b/ocaml-lsp-server/test/e2e-new/code_actions.ml @@ -8,31 +8,40 @@ let iter_code_actions ?prep ?path ?(diagnostics = []) ~source range = (CodeActionParams.create ~textDocument ~range ~context ()) in iter_lsp_response ?prep ?path ~makeRequest ~source +;; -let print_code_actions ?(prep = fun _ -> Fiber.return ()) ?(path = "foo.ml") - ?(filter = fun _ -> true) source range = +let print_code_actions + ?(prep = fun _ -> Fiber.return ()) + ?(path = "foo.ml") + ?(filter = fun _ -> true) + source + range + = iter_code_actions ~prep ~path ~source range (function - | None -> print_endline "No code actions" - | Some code_actions -> ( - code_actions |> List.filter ~f:filter |> function - | [] -> print_endline "No code actions" - | actions -> - print_endline "Code actions:"; - List.iter actions ~f:(fun ca -> - let json = - match ca with - | `Command command -> Command.yojson_of_t command - | `CodeAction ca -> CodeAction.yojson_of_t ca - in - Yojson.Safe.pretty_to_string ~std:false json |> print_endline))) + | None -> print_endline "No code actions" + | Some code_actions -> + code_actions + |> List.filter ~f:filter + |> (function + | [] -> print_endline "No code actions" + | actions -> + print_endline "Code actions:"; + List.iter actions ~f:(fun ca -> + let json = + match ca with + | `Command command -> Command.yojson_of_t command + | `CodeAction ca -> CodeAction.yojson_of_t ca + in + Yojson.Safe.pretty_to_string ~std:false json |> print_endline))) +;; let find_action action_name action = match action with | `CodeAction { CodeAction.kind = Some (Other name); _ } -> name = action_name | _ -> false +;; let find_annotate_action = find_action "type-annotate" - let find_remove_annotation_action = find_action "remove type annotation" let%expect_test "code actions" = @@ -81,14 +90,13 @@ let foo = 123 "kind": "switch", "title": "Create foo.mli" } |}] +;; let%expect_test "can type-annotate a function argument" = - let source = - {ocaml| + let source = {ocaml| type t = Foo of int | Bar of bool let f x = Foo x -|ocaml} - in +|ocaml} in let range = let start = Position.create ~line:2 ~character:6 in let end_ = Position.create ~line:2 ~character:7 in @@ -119,6 +127,7 @@ let f x = Foo x "kind": "type-annotate", "title": "Type-annotate" } |}] +;; let%expect_test "can type-annotate a toplevel value" = let source = {ocaml| @@ -167,6 +176,7 @@ let iiii = 3 + 4 "title": "Create foo.mli" } |}] +;; let%expect_test "does not type-annotate function" = let source = {ocaml| @@ -179,6 +189,7 @@ let my_fun x y = 1 in print_code_actions source range ~filter:find_annotate_action; [%expect {| No code actions |}] +;; let%expect_test "can type-annotate an argument in a function call" = let source = @@ -219,15 +230,14 @@ let () = "kind": "type-annotate", "title": "Type-annotate" } |}] +;; let%expect_test "can type-annotate a variant with its name only" = - let source = - {ocaml| + let source = {ocaml| type t = Foo of int | Bar of bool let f (x : t) = x -|ocaml} - in +|ocaml} in let range = let start = Position.create ~line:3 ~character:16 in let end_ = Position.create ~line:3 ~character:17 in @@ -258,6 +268,7 @@ let f (x : t) = x "kind": "type-annotate", "title": "Type-annotate" } |}] +;; let%expect_test "does not type-annotate in a non expression context" = let source = {ocaml| @@ -272,6 +283,7 @@ type x = in print_code_actions source range ~filter:find_annotate_action; [%expect {| No code actions |}] +;; let%expect_test "does not type-annotate already annotated argument" = let source = {ocaml| @@ -284,6 +296,7 @@ let f (x : int) = 1 in print_code_actions source range ~filter:find_annotate_action; [%expect {| No code actions |}] +;; let%expect_test "does not type-annotate already annotated expression" = let source = {ocaml| @@ -296,9 +309,9 @@ let f x = (1 : int) in print_code_actions source range ~filter:find_annotate_action; [%expect {| No code actions |}] +;; -let%expect_test "does not type-annotate already annotated and coerced \ - expression" = +let%expect_test "does not type-annotate already annotated and coerced expression" = let source = {ocaml| let f x = (1 : int :> int) |ocaml} in @@ -309,14 +322,13 @@ let f x = (1 : int :> int) in print_code_actions source range ~filter:find_annotate_action; [%expect {| No code actions |}] +;; let%expect_test "can remove type annotation from a function argument" = - let source = - {ocaml| + let source = {ocaml| type t = Foo of int | Bar of bool let f (x : t) = Foo x -|ocaml} - in +|ocaml} in let range = let start = Position.create ~line:2 ~character:7 in let end_ = Position.create ~line:2 ~character:8 in @@ -347,6 +359,7 @@ let f (x : t) = Foo x "kind": "remove type annotation", "title": "Remove type annotation" } |}] +;; let%expect_test "can remove type annotation from a toplevel value" = let source = {ocaml| @@ -382,9 +395,9 @@ let (iiii : int) = 3 + 4 "kind": "remove type annotation", "title": "Remove type annotation" } |}] +;; -let%expect_test "can remove type annotation from an argument in a function call" - = +let%expect_test "can remove type annotation from an argument in a function call" = let source = {ocaml| let f (x : int) = x + 1 @@ -423,6 +436,7 @@ let f (x : int) = x + 1 "kind": "remove type annotation", "title": "Remove type annotation" } |}] +;; let%expect_test "can remove type annotation from a coerced expression" = let source = {ocaml| @@ -458,6 +472,7 @@ let x = (7 : int :> int) "kind": "remove type annotation", "title": "Remove type annotation" } |}] +;; let%expect_test "does not remove type annotation from function" = let source = {ocaml| @@ -470,23 +485,19 @@ let my_fun x y : int = 1 in print_code_actions source range ~filter:find_remove_annotation_action; [%expect {| No code actions |}] +;; let%expect_test "can destruct sum types" = - let source = - {ocaml| + let source = {ocaml| type t = Foo of int | Bar of bool let f (x : t) = x -|ocaml} - in +|ocaml} in let range = let start = Position.create ~line:2 ~character:16 in let end_ = Position.create ~line:2 ~character:17 in Range.create ~start ~end_ in - print_code_actions - source - range - ~filter:(find_action "destruct (enumerate cases)"); + print_code_actions source range ~filter:(find_action "destruct (enumerate cases)"); [%expect {| Code actions: @@ -512,6 +523,7 @@ let f (x : t) = x "title": "Destruct (enumerate cases)" } |}] +;; let%expect_test "can destruct match line" = let source = {ocaml| @@ -552,6 +564,7 @@ let f (x:bool) = "title": "Destruct-line (enumerate cases, use existing match)" } |}] +;; let%expect_test "can destruct match-with line" = let source = {ocaml| @@ -591,6 +604,7 @@ let%expect_test "can destruct match-with line" = "title": "Destruct-line (enumerate cases, use existing match)" } |}] +;; let%expect_test "can destruct case line" = let source = @@ -639,6 +653,7 @@ let f (x: q) = "title": "Destruct-line (enumerate cases, use existing match)" } |}] +;; let%expect_test "can destruct hole" = let source = @@ -682,6 +697,7 @@ let zip (type a b) (xs : a list) (ys : b list) : (a * b) list = "title": "Destruct-line (enumerate cases, use existing match)" } |}] +;; let%expect_test "destruct hole spacing" = let source = @@ -730,6 +746,7 @@ let f (x: q) = "title": "Destruct-line (enumerate cases, use existing match)" } |}] +;; let%expect_test "destruct a case with a hole but not on the hole" = let source = @@ -778,6 +795,7 @@ let f (x: q) = "title": "Destruct-line (enumerate cases, use existing match)" } |}] +;; let%expect_test "destruct uses the right number of newlines" = let source = @@ -825,6 +843,7 @@ let f (x: t) = "title": "Destruct-line (enumerate cases, use existing match)" } |}] +;; let%expect_test "destruct strips parentheses even on long lines" = let source = @@ -874,14 +893,13 @@ let f (x: q) = "title": "Destruct-line (enumerate cases, use existing match)" } |}] +;; let%expect_test "can infer module interfaces" = - let impl_source = - {ocaml| + let impl_source = {ocaml| type t = Foo of int | Bar of bool let f (x : t) = x -|ocaml} - in +|ocaml} in let uri = DocumentUri.of_path "foo.ml" in let prep client = Test.openDocument ~client ~uri ~source:impl_source in let intf_source = "" in @@ -920,14 +938,13 @@ let f (x : t) = x "kind": "inferred_intf", "title": "Insert inferred interface" } |}] +;; let%expect_test "inferred interface excludes existing names" = - let impl_source = - {ocaml| + let impl_source = {ocaml| type t = Foo of int | Bar of bool let f (x : t) = x -|ocaml} - in +|ocaml} in let uri = DocumentUri.of_path "foo.ml" in let prep client = Test.openDocument ~client ~uri ~source:impl_source in let intf_source = {ocaml| @@ -969,6 +986,7 @@ val f : t -> t "title": "Insert inferred interface" } |}] +;; let%expect_test "update-signatures adds new function args" = let impl_source = @@ -982,12 +1000,10 @@ let f (x : t) (d : bool) = in let uri = DocumentUri.of_path "foo.ml" in let prep client = Test.openDocument ~client ~uri ~source:impl_source in - let intf_source = - {ocaml| + let intf_source = {ocaml| type t = Foo of int | Bar of bool val f : t -> bool -|ocaml} - in +|ocaml} in let range = let start = Position.create ~line:2 ~character:0 in let end_ = Position.create ~line:2 ~character:0 in @@ -1024,6 +1040,7 @@ val f : t -> bool "title": "Update signature(s) to match implementation" } |}] +;; let%expect_test "update-signatures removes old function args" = let impl_source = @@ -1034,11 +1051,9 @@ let f i s b = in let uri = DocumentUri.of_path "foo.ml" in let prep client = Test.openDocument ~client ~uri ~source:impl_source in - let intf_source = - {ocaml| + let intf_source = {ocaml| val f : int -> string -> 'a list -> bool -> bool -|ocaml} - in +|ocaml} in let range = let start = Position.create ~line:1 ~character:10 in let end_ = Position.create ~line:1 ~character:10 in @@ -1075,6 +1090,7 @@ val f : int -> string -> 'a list -> bool -> bool "title": "Update signature(s) to match implementation" } |}] +;; let%expect_test "update-signatures updates parameter types" = let impl_source = @@ -1085,11 +1101,9 @@ let f i s l b = in let uri = DocumentUri.of_path "foo.ml" in let prep client = Test.openDocument ~client ~uri ~source:impl_source in - let intf_source = - {ocaml| + let intf_source = {ocaml| val f : int -> string -> 'a list -> bool -> bool -|ocaml} - in +|ocaml} in let range = let start = Position.create ~line:1 ~character:1 in let end_ = Position.create ~line:1 ~character:12 in @@ -1126,6 +1140,7 @@ val f : int -> string -> 'a list -> bool -> bool "title": "Update signature(s) to match implementation" } |}] +;; let%expect_test "update-signatures preserves functions and their comments" = let impl_source = @@ -1196,6 +1211,7 @@ val h : int -> bool "title": "Update signature(s) to match implementation" } |}] +;; let%expect_test "update-signatures updates modules" = let impl_source = @@ -1215,11 +1231,9 @@ end in let uri = DocumentUri.of_path "foo.ml" in let prep client = Test.openDocument ~client ~uri ~source:impl_source in - let intf_source = - {ocaml| + let intf_source = {ocaml| module M : sig type t = I of int | B of bool end -|ocaml} - in +|ocaml} in let range = let start = Position.create ~line:1 ~character:0 in let end_ = Position.create ~line:1 ~character:0 in @@ -1256,18 +1270,21 @@ module M : sig type t = I of int | B of bool end "title": "Update signature(s) to match implementation" } |}] +;; let position_of_offset src x = assert (0 <= x && x < String.length src); let cnum = ref 0 and lnum = ref 0 in for i = 0 to x - 1 do - if src.[i] = '\n' then ( + if src.[i] = '\n' + then ( incr lnum; cnum := 0) else incr cnum done; Position.create ~character:!cnum ~line:!lnum +;; let parse_selection src = let start_pos = @@ -1278,8 +1295,8 @@ let parse_selection src = let end_pos = match String.index_from src (start_pos + 1) '$' with | Some x -> - if Option.is_some (String.index_from src (x + 1) '$') then - failwith "unexpected third selection mark"; + if Option.is_some (String.index_from src (x + 1) '$') + then failwith "unexpected third selection mark"; x - 1 (* account for opening mark *) | None -> start_pos in @@ -1287,36 +1304,36 @@ let parse_selection src = let end_ = position_of_offset src end_pos in let src' = String.filter_map src ~f:(function - | '$' -> None - | c -> Some c) + | '$' -> None + | c -> Some c) in - (src', Range.create ~start ~end_) + src', Range.create ~start ~end_ +;; let apply_code_action ?diagnostics title source range = let open Option.O in (* collect code action results *) let code_actions = ref None in - iter_code_actions ?diagnostics ~source range (fun ca -> - code_actions := Some ca); + iter_code_actions ?diagnostics ~source range (fun ca -> code_actions := Some ca); let* m_code_actions = !code_actions in let* code_actions = m_code_actions in - let* edit = List.find_map code_actions ~f:(function - | `CodeAction { title = t; edit = Some edit; _ } when t = title -> - Some edit - | _ -> None) + | `CodeAction { title = t; edit = Some edit; _ } when t = title -> Some edit + | _ -> None) in let+ changes = edit.documentChanges in List.concat_map changes ~f:(function - | `TextDocumentEdit x -> - List.map x.edits ~f:(function - | `AnnotatedTextEdit (a : AnnotatedTextEdit.t) -> - TextEdit.create ~newText:a.newText ~range:a.range - | `TextEdit e -> e) - | `CreateFile _ | `DeleteFile _ | `RenameFile _ -> []) + | `TextDocumentEdit x -> + List.map x.edits ~f:(function + | `AnnotatedTextEdit (a : AnnotatedTextEdit.t) -> + TextEdit.create ~newText:a.newText ~range:a.range + | `TextEdit e -> e) + | `CreateFile _ | `DeleteFile _ | `RenameFile _ -> []) |> Test.apply_edits source +;; let code_action_test ~title source = let src, range = parse_selection source in Option.iter (apply_code_action title src range) ~f:print_string +;; diff --git a/ocaml-lsp-server/test/e2e-new/code_actions.mli b/ocaml-lsp-server/test/e2e-new/code_actions.mli index 7e1c0a4ba..b22a4ed5f 100644 --- a/ocaml-lsp-server/test/e2e-new/code_actions.mli +++ b/ocaml-lsp-server/test/e2e-new/code_actions.mli @@ -1,7 +1,7 @@ open Test.Import -val iter_code_actions : - ?prep:(unit Test.Import.Client.t -> unit Fiber.t) +val iter_code_actions + : ?prep:(unit Test.Import.Client.t -> unit Fiber.t) -> ?path:string -> ?diagnostics:Diagnostic.t list -> source:string @@ -11,8 +11,12 @@ val iter_code_actions : val parse_selection : string -> string * Range.t -val apply_code_action : - ?diagnostics:Diagnostic.t list -> string -> string -> Range.t -> string option +val apply_code_action + : ?diagnostics:Diagnostic.t list + -> string + -> string + -> Range.t + -> string option (** [code_action_test title source] runs the code action with title [title] and prints the resulting source. *) diff --git a/ocaml-lsp-server/test/e2e-new/completion.ml b/ocaml-lsp-server/test/e2e-new/completion.ml index 1a9ee961f..2284c0b81 100644 --- a/ocaml-lsp-server/test/e2e-new/completion.ml +++ b/ocaml-lsp-server/test/e2e-new/completion.ml @@ -1,37 +1,52 @@ open Test.Import -let iter_completions ?prep ?path ?(triggerCharacter = "") - ?(triggerKind = CompletionTriggerKind.Invoked) ~position = +let iter_completions + ?prep + ?path + ?(triggerCharacter = "") + ?(triggerKind = CompletionTriggerKind.Invoked) + ~position + = let makeRequest textDocument = let context = CompletionContext.create ~triggerCharacter ~triggerKind () in Lsp.Client_request.TextDocumentCompletion (CompletionParams.create ~textDocument ~position ~context ()) in Lsp_helpers.iter_lsp_response ?prep ?path ~makeRequest +;; -let print_completions ?(prep = fun _ -> Fiber.return ()) ?(path = "foo.ml") - ?(limit = 10) ?(pre_print = fun x -> x) source position = +let print_completions + ?(prep = fun _ -> Fiber.return ()) + ?(path = "foo.ml") + ?(limit = 10) + ?(pre_print = fun x -> x) + source + position + = iter_completions ~prep ~path ~source ~position (function - | None -> print_endline "No completion Items" - | Some completions -> ( - let items = - match completions with - | `CompletionList comp -> comp.items - | `List comp -> comp - in - items |> pre_print |> function - | [] -> print_endline "No completions" - | items -> - print_endline "Completions:"; - - let originalLength = List.length items in - items - |> List.take (min limit originalLength) - |> List.iter ~f:(fun item -> - item |> CompletionItem.yojson_of_t - |> Yojson.Safe.pretty_to_string ~std:false - |> print_endline); - if originalLength > limit then print_endline ".............")) + | None -> print_endline "No completion Items" + | Some completions -> + let items = + match completions with + | `CompletionList comp -> comp.items + | `List comp -> comp + in + items + |> pre_print + |> (function + | [] -> print_endline "No completions" + | items -> + print_endline "Completions:"; + let originalLength = List.length items in + items + |> List.take (min limit originalLength) + |> List.iter ~f:(fun item -> + item + |> CompletionItem.yojson_of_t + |> Yojson.Safe.pretty_to_string ~std:false + |> print_endline); + if originalLength > limit then print_endline ".............")) +;; let%expect_test "can start completion at arbitrary position (before the dot)" = let source = {ocaml|Strin.func|ocaml} in @@ -66,6 +81,7 @@ let%expect_test "can start completion at arbitrary position (before the dot)" = } } } |}] +;; let%expect_test "can start completion at arbitrary position" = let source = {ocaml|StringLabels|ocaml} in @@ -100,6 +116,7 @@ let%expect_test "can start completion at arbitrary position" = } } } |}] +;; let%expect_test "can start completion at arbitrary position 2" = let source = {ocaml|StringLabels|ocaml} in @@ -121,6 +138,7 @@ let%expect_test "can start completion at arbitrary position 2" = } } } |}] +;; let%expect_test "can start completion after operator without space" = let source = {ocaml|[1;2]|>List.ma|ocaml} in @@ -168,6 +186,7 @@ let%expect_test "can start completion after operator without space" = } } } |}] +;; let%expect_test "can start completion after operator with space" = let source = {ocaml|[1;2] |> List.ma|ocaml} in @@ -216,6 +235,7 @@ let%expect_test "can start completion after operator with space" = } } |}] +;; let%expect_test "can start completion in dot chain with tab" = let source = {ocaml|[1;2] |> List. ma|ocaml} in @@ -264,6 +284,7 @@ let%expect_test "can start completion in dot chain with tab" = } } |}] +;; let%expect_test "can start completion in dot chain with newline" = let source = {ocaml|[1;2] |> List. @@ -313,6 +334,7 @@ ma|ocaml} in } } |}] +;; let%expect_test "can start completion in dot chain with space" = let source = {ocaml|[1;2] |> List. ma|ocaml} in @@ -361,6 +383,7 @@ let%expect_test "can start completion in dot chain with space" = } } |}] +;; let%expect_test "can start completion after dereference" = let source = {ocaml|let apple=ref 10 in @@ -384,6 +407,7 @@ let%expect_test "can start completion after dereference" = } } |}] +;; let%expect_test "can complete symbol passed as a named argument" = let source = {ocaml|let g ~f = f 0 in @@ -407,6 +431,7 @@ g ~f:ig|ocaml} in } } |}] +;; let%expect_test "can complete symbol passed as a named argument - 2" = let source = @@ -433,6 +458,7 @@ g ~f:M.ig|ocaml} } } |}] +;; let%expect_test "can complete symbol passed as an optional argument" = let source = {ocaml| @@ -458,6 +484,7 @@ g ?f:ig } } |}] +;; let%expect_test "can complete symbol passed as an optional argument - 2" = let source = @@ -484,6 +511,7 @@ g ?f:M.ig|ocaml} } } |}] +;; let%expect_test "completes identifier after completion-triggering character" = let source = @@ -528,6 +556,7 @@ let x = Test. } } |}] +;; let%expect_test "completes infix operators" = let source = {ocaml| @@ -579,6 +608,7 @@ let y = 1 > } } |}] +;; let%expect_test "completes without prefix" = let source = @@ -622,6 +652,7 @@ let plus_42 (x:int) (y:int) = } } |}] +;; let%expect_test "completes labels" = let source = {ocaml|let f = ListLabels.map ~|ocaml} in @@ -696,9 +727,9 @@ let%expect_test "completes labels" = } } |}] +;; -let%expect_test "works for polymorphic variants - function application context \ - - 1" = +let%expect_test "works for polymorphic variants - function application context - 1" = let source = {ocaml| let f (_a: [`String | `Int of int]) = () @@ -725,9 +756,9 @@ let u = f `Str } } |}] +;; -let%expect_test "works for polymorphic variants - function application context \ - - 2" = +let%expect_test "works for polymorphic variants - function application context - 2" = let source = {ocaml| let f (_a: [`String | `Int of int]) = () @@ -754,6 +785,7 @@ let u = f `In } } |}] +;; let%expect_test "works for polymorphic variants" = let source = {ocaml| @@ -780,13 +812,14 @@ let x : t = `I } } |}] +;; let%expect_test "completion for holes" = let source = {ocaml|let u : int = _|ocaml} in let position = Position.create ~line:0 ~character:15 in let filter = List.filter ~f:(fun (item : CompletionItem.t) -> - not (String.starts_with ~prefix:"__" item.label)) + not (String.starts_with ~prefix:"__" item.label)) in print_completions ~pre_print:filter source position; [%expect @@ -806,6 +839,7 @@ let%expect_test "completion for holes" = } } |}] +;; let%expect_test "completes identifier at top level" = let source = @@ -849,6 +883,7 @@ let () = } } |}] +;; let%expect_test "completes from a module" = let source = {ocaml|let f = List.m|ocaml} in @@ -961,6 +996,7 @@ let%expect_test "completes from a module" = } } }|}] +;; let%expect_test "completes a module name" = let source = {ocaml|let f = L|ocaml} in @@ -1035,6 +1071,7 @@ let%expect_test "completes a module name" = } } |}] +;; let%expect_test "completion doesn't autocomplete record fields" = let source = @@ -1051,12 +1088,12 @@ let%expect_test "completion doesn't autocomplete record fields" = print_completions ~pre_print: (List.filter ~f:(fun (compl : CompletionItem.t) -> - compl.label = "x" || compl.label = "y")) + compl.label = "x" || compl.label = "y")) source position; - (* We expect 0 completions*) [%expect {| No completions |}] +;; let%expect_test "completion for `in` keyword - no prefix" = let source = {ocaml| @@ -1105,6 +1142,7 @@ let foo param1 = } } ............. |}] +;; let%expect_test "completion for `in` keyword - prefix i" = let source = {ocaml| @@ -1154,6 +1192,7 @@ let foo param1 = } } ............. |}] +;; let%expect_test "completion for `in` keyword - prefix in" = let source = {ocaml| @@ -1203,3 +1242,4 @@ let foo param1 = } } ............. |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/completions.ml b/ocaml-lsp-server/test/e2e-new/completions.ml index 08eec8555..c055567f1 100644 --- a/ocaml-lsp-server/test/e2e-new/completions.ml +++ b/ocaml-lsp-server/test/e2e-new/completions.ml @@ -1,21 +1,22 @@ open Test.Import let print_completion - (completions : - [ `CompletionList of CompletionList.t | `List of CompletionItem.t list ] - option) = + (completions : + [ `CompletionList of CompletionList.t | `List of CompletionItem.t list ] option) + = let print_items (items : CompletionItem.t list) = List.map items ~f:(fun item -> - CompletionItem.yojson_of_t item - |> Yojson.Safe.pretty_to_string ~std:false) - |> String.concat ~sep:"\n" |> print_endline + CompletionItem.yojson_of_t item |> Yojson.Safe.pretty_to_string ~std:false) + |> String.concat ~sep:"\n" + |> print_endline in match completions with | None -> print_endline "no completion response" - | Some completions -> ( - match completions with - | `List items -> print_items items - | `CompletionList completions -> print_items completions.items) + | Some completions -> + (match completions with + | `List items -> print_items items + | `CompletionList completions -> print_items completions.items) +;; let completion client position = Client.request @@ -25,6 +26,7 @@ let completion client position = ~position ~textDocument:(TextDocumentIdentifier.create ~uri:Helpers.uri) ())) +;; let%expect_test "completing optional arguments" = let source = @@ -131,3 +133,4 @@ let foo_value = foo ?a } } |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/doc_to_md.ml b/ocaml-lsp-server/test/e2e-new/doc_to_md.ml index 2aa4632f2..a3e64affd 100644 --- a/ocaml-lsp-server/test/e2e-new/doc_to_md.ml +++ b/ocaml-lsp-server/test/e2e-new/doc_to_md.ml @@ -3,29 +3,29 @@ open Ocaml_lsp_server.Doc_to_md let print_doc = function | Raw s -> print_endline s | Markdown s -> print_endline s +;; let%expect_test "superscript" = let doc = {| 2{^30} |} in - translate doc |> print_doc; [%expect {| 2^{30} |}] +;; let%expect_test "subscript" = let doc = {| a{_b} |} in - translate doc |> print_doc; [%expect {| a\_{b} |}] +;; let%expect_test "table" = let doc = {| {table {tr {td some content} {td some other content}} {tr {td in another} {td row}}} |} in - translate doc |> print_doc; - [%expect - {| + [%expect {| | some content | some other content | | in another | row | |}] +;; let%expect_test "table2" = let doc = {| @@ -33,26 +33,26 @@ let%expect_test "table2" = |:-----|---:| | fse | e | } |} in - translate doc |> print_doc; [%expect {| | z | f | |:-|-:| | fse | e | |}] +;; let%expect_test "problematic_translation" = let doc = {| {table {tr {td {ul {li first item} {li second item}}}} } |} in - translate doc |> print_doc; [%expect {| | - first item - second item | |}] +;; let%expect_test "code_with_output" = let doc = {| {@ocaml[foo][output {b foo}]} |} in - translate doc |> print_doc; [%expect {| ```ocaml foo ``` output **foo** |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/document_flow.ml b/ocaml-lsp-server/test/e2e-new/document_flow.ml index 57eee62b0..bde75c2b3 100644 --- a/ocaml-lsp-server/test/e2e-new/document_flow.ml +++ b/ocaml-lsp-server/test/e2e-new/document_flow.ml @@ -4,9 +4,12 @@ let%expect_test "it should allow double opening the same document" = let diagnostics = Fiber.Mvar.create () in let drain_diagnostics () = Fiber.Mvar.read diagnostics in let handler = - let on_request (type resp state) (client : state Client.t) - (req : resp Lsp.Server_request.t) : - (resp Lsp_fiber.Rpc.Reply.t * state) Fiber.t = + let on_request + (type resp state) + (client : state Client.t) + (req : resp Lsp.Server_request.t) + : (resp Lsp_fiber.Rpc.Reply.t * state) Fiber.t + = match req with | Lsp.Server_request.ClientUnregisterCapability _ -> let state = Client.state client in @@ -14,41 +17,42 @@ let%expect_test "it should allow double opening the same document" = | _ -> assert false in Client.Handler.make - ~on_notification:(fun _ -> function + ~on_notification:(fun _ -> + function | PublishDiagnostics _ -> Fiber.Mvar.write diagnostics () | _ -> Fiber.return ()) ~on_request:{ Client.Handler.on_request } () in - ( Test.run ~handler @@ fun client -> - let run_client () = - let capabilities = - let window = - let showDocument = - ShowDocumentClientCapabilities.create ~support:true - in - WindowClientCapabilities.create ~showDocument () - in - ClientCapabilities.create ~window () - in - Client.start client (InitializeParams.create ~capabilities ()) - in - let run = - let* (_ : InitializeResult.t) = Client.initialized client in - let uri = DocumentUri.of_path "foo.ml" in - let open_ text = - let textDocument = - TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text - in - Client.notification - client - (TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument)) - in - let* () = open_ "text 1" in - let* () = drain_diagnostics () in - let+ () = open_ "text 2" in - () - in - Fiber.fork_and_join_unit run_client (fun () -> - run >>> drain_diagnostics () >>> Client.stop client) ); + (Test.run ~handler + @@ fun client -> + let run_client () = + let capabilities = + let window = + let showDocument = ShowDocumentClientCapabilities.create ~support:true in + WindowClientCapabilities.create ~showDocument () + in + ClientCapabilities.create ~window () + in + Client.start client (InitializeParams.create ~capabilities ()) + in + let run = + let* (_ : InitializeResult.t) = Client.initialized client in + let uri = DocumentUri.of_path "foo.ml" in + let open_ text = + let textDocument = + TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text + in + Client.notification + client + (TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument)) + in + let* () = open_ "text 1" in + let* () = drain_diagnostics () in + let+ () = open_ "text 2" in + () + in + Fiber.fork_and_join_unit run_client (fun () -> + run >>> drain_diagnostics () >>> Client.stop client)); [%expect {| |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/exit_notification.ml b/ocaml-lsp-server/test/e2e-new/exit_notification.ml index 9aace97f5..f7ead949a 100644 --- a/ocaml-lsp-server/test/e2e-new/exit_notification.ml +++ b/ocaml-lsp-server/test/e2e-new/exit_notification.ml @@ -14,19 +14,20 @@ end = struct | WSTOPPED s -> Format.eprintf "ocamllsp stopped with signal = %d@.%!" s in a + ;; end let test run = T.run (fun client -> - let run_client () = - Client.start - client - (InitializeParams.create ~capabilities:client_capabilities ()) - in - Fiber.fork_and_join_unit run_client (run client)) + let run_client () = + Client.start client (InitializeParams.create ~capabilities:client_capabilities ()) + in + Fiber.fork_and_join_unit run_client (run client)) +;; let%expect_test "ocamllsp process exits with code 0 after Shutdown and Exit \ - notifications are sent" = + notifications are sent" + = let run client () = let* (_ : InitializeResult.t) = Client.initialized client in let* () = Client.request client Shutdown in @@ -35,6 +36,7 @@ let%expect_test "ocamllsp process exits with code 0 after Shutdown and Exit \ test run; [%expect {| ocamllsp finished with code = 0 |}] +;; let%expect_test "ocamllsp does not exit if only Shutdown notification is sent" = let run client () = @@ -44,9 +46,11 @@ let%expect_test "ocamllsp does not exit if only Shutdown notification is sent" = test run; [%expect {| ocamllsp killed with signal = -7 |}] +;; -let%expect_test "ocamllsp process exits with code 0 after Exit notification is \ - sent (should be 1)" = +let%expect_test "ocamllsp process exits with code 0 after Exit notification is sent \ + (should be 1)" + = let run client () = let* (_ : InitializeResult.t) = Client.initialized client in Client.notification client Exit @@ -54,3 +58,4 @@ let%expect_test "ocamllsp process exits with code 0 after Exit notification is \ test run; [%expect {| ocamllsp finished with code = 0 |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/for_ppx.ml b/ocaml-lsp-server/test/e2e-new/for_ppx.ml index f18215065..f17c6b0d7 100644 --- a/ocaml-lsp-server/test/e2e-new/for_ppx.ml +++ b/ocaml-lsp-server/test/e2e-new/for_ppx.ml @@ -1,3 +1,4 @@ let%expect_test "this is a dummy source for with_ppx" = (* If you edit this file, [with_ppx] will change *) [%expect {||}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/helpers.ml b/ocaml-lsp-server/test/e2e-new/helpers.ml index 5039f1bb2..ba7bd238a 100644 --- a/ocaml-lsp-server/test/e2e-new/helpers.ml +++ b/ocaml-lsp-server/test/e2e-new/helpers.ml @@ -1,32 +1,29 @@ open Test.Import let client_capabilities = ClientCapabilities.create () - let uri = DocumentUri.of_path "test.ml" let test ?extra_env text req = let on_notification, diagnostics = Test.drain_diagnostics () in let handler = Client.Handler.make ~on_notification () in Test.run ~handler ?extra_env (fun client -> - let run_client () = - Client.start - client - (InitializeParams.create ~capabilities:client_capabilities ()) + let run_client () = + Client.start client (InitializeParams.create ~capabilities:client_capabilities ()) + in + let run () = + let* (_ : InitializeResult.t) = Client.initialized client in + let textDocument = + TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text in - let run () = - let* (_ : InitializeResult.t) = Client.initialized client in - let textDocument = - TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text - in - let* () = - Client.notification - client - (TextDocumentDidOpen - (DidOpenTextDocumentParams.create ~textDocument)) - in - let* () = req client in - let* () = Client.request client Shutdown in - let* () = Fiber.Ivar.read diagnostics in - Client.stop client + let* () = + Client.notification + client + (TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument)) in - Fiber.fork_and_join_unit run_client run) + let* () = req client in + let* () = Client.request client Shutdown in + let* () = Fiber.Ivar.read diagnostics in + Client.stop client + in + Fiber.fork_and_join_unit run_client run) +;; diff --git a/ocaml-lsp-server/test/e2e-new/helpers.mli b/ocaml-lsp-server/test/e2e-new/helpers.mli index 8aa6aba9b..18836f82f 100644 --- a/ocaml-lsp-server/test/e2e-new/helpers.mli +++ b/ocaml-lsp-server/test/e2e-new/helpers.mli @@ -1,6 +1,4 @@ open Test.Import val uri : Uri.t - -val test : - ?extra_env:string list -> string -> (unit Client.t -> unit Fiber.t) -> unit +val test : ?extra_env:string list -> string -> (unit Client.t -> unit Fiber.t) -> unit diff --git a/ocaml-lsp-server/test/e2e-new/hover_extended.ml b/ocaml-lsp-server/test/e2e-new/hover_extended.ml index 0a8ee90d4..efc05a53b 100644 --- a/ocaml-lsp-server/test/e2e-new/hover_extended.ml +++ b/ocaml-lsp-server/test/e2e-new/hover_extended.ml @@ -4,9 +4,8 @@ let print_hover hover = match hover with | None -> print_endline "no hover response" | Some hover -> - hover |> Hover.yojson_of_t - |> Yojson.Safe.pretty_to_string ~std:false - |> print_endline + hover |> Hover.yojson_of_t |> Yojson.Safe.pretty_to_string ~std:false |> print_endline +;; let hover client position = Client.request @@ -16,9 +15,11 @@ let hover client position = ; textDocument = TextDocumentIdentifier.create ~uri:Helpers.uri ; workDoneToken = None }) +;; let print_hover_extended resp = resp |> Yojson.Safe.pretty_to_string ~std:false |> print_endline +;; let hover_extended client position verbosity = let params = @@ -26,7 +27,7 @@ let hover_extended client position verbosity = [ ( "textDocument" , TextDocumentIdentifier.yojson_of_t (TextDocumentIdentifier.create ~uri:Helpers.uri) ) - ; ("position", Position.yojson_of_t position) + ; "position", Position.yojson_of_t position ] in let params = @@ -36,18 +37,15 @@ let hover_extended client position verbosity = in Some (Jsonrpc.Structured.t_of_yojson (`Assoc params)) in - Client.request - client - (UnknownRequest { meth = "ocamllsp/hoverExtended"; params }) + Client.request client (UnknownRequest { meth = "ocamllsp/hoverExtended"; params }) +;; let%expect_test "hover reference" = - let source = - {ocaml| + let source = {ocaml| type foo = int option let foo_value : foo = Some 1 -|ocaml} - in +|ocaml} in let position = Position.create ~line:3 ~character:4 in let req client = let* resp = hover client position in @@ -73,6 +71,7 @@ let foo_value : foo = Some 1 "start": { "character": 4, "line": 3 } } } |}] +;; let%expect_test "hover returns type inferred under cursor in a formatted way" = let source = @@ -99,15 +98,14 @@ let f a b c d e f g h i = 1 + a + b + c + d + e + f + g + h + i "start": { "character": 4, "line": 1 } } } |}] +;; let%expect_test "hover extended" = - let source = - {ocaml| + let source = {ocaml| type foo = int option let foo_value : foo = Some 1 -|ocaml} - in +|ocaml} in let position = Position.create ~line:3 ~character:4 in let req client = let* resp = hover client position in @@ -133,15 +131,14 @@ let foo_value : foo = Some 1 "start": { "character": 4, "line": 3 } } } |}] +;; let%expect_test "default verbosity" = - let source = - {ocaml| + let source = {ocaml| type foo = int option let foo_value : foo = Some 1 -|ocaml} - in +|ocaml} in let position = Position.create ~line:3 ~character:4 in let req client = let* resp = hover_extended client position None in @@ -158,15 +155,14 @@ let foo_value : foo = Some 1 "start": { "character": 4, "line": 3 } } } |}] +;; let%expect_test "explicit verbosity 0" = - let source = - {ocaml| + let source = {ocaml| type foo = int option let foo_value : foo = Some 1 -|ocaml} - in +|ocaml} in let position = Position.create ~line:3 ~character:4 in let req client = let* resp = hover_extended client position (Some 0) in @@ -183,15 +179,14 @@ let foo_value : foo = Some 1 "start": { "character": 4, "line": 3 } } } |}] +;; let%expect_test "explicit verbosity 1" = - let source = - {ocaml| + let source = {ocaml| type foo = int option let foo_value : foo = Some 1 -|ocaml} - in +|ocaml} in let position = Position.create ~line:3 ~character:4 in let req client = let* resp = hover_extended client position (Some 1) in @@ -208,15 +203,14 @@ let foo_value : foo = Some 1 "start": { "character": 4, "line": 3 } } } |}] +;; let%expect_test "explicit verbosity 2" = - let source = - {ocaml| + let source = {ocaml| type foo = int option let foo_value : foo = Some 1 -|ocaml} - in +|ocaml} in let position = Position.create ~line:3 ~character:4 in let req client = let* resp = hover_extended client position (Some 2) in @@ -233,15 +227,14 @@ let foo_value : foo = Some 1 "start": { "character": 4, "line": 3 } } } |}] +;; let%expect_test "implicity verbosity increases" = - let source = - {ocaml| + let source = {ocaml| type foo = int option let foo_value : foo = Some 1 -|ocaml} - in +|ocaml} in let position = Position.create ~line:3 ~character:4 in let req client = let* resp = hover_extended client position None in @@ -276,9 +269,9 @@ let foo_value : foo = Some 1 "start": { "character": 4, "line": 3 } } } |}] +;; -let%expect_test "hover extended returns type inferred under cursor in a \ - formatted way" = +let%expect_test "hover extended returns type inferred under cursor in a formatted way" = let source = {ocaml| let f a b c d e f g h i = 1 + a + b + c + d + e + f + g + h + i @@ -303,3 +296,4 @@ let f a b c d e f g h i = 1 + a + b + c + d + e + f + g + h + i "start": { "character": 4, "line": 1 } } } |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/inlay_hints.ml b/ocaml-lsp-server/test/e2e-new/inlay_hints.ml index ad3ae7843..51ce0a658 100644 --- a/ocaml-lsp-server/test/e2e-new/inlay_hints.ml +++ b/ocaml-lsp-server/test/e2e-new/inlay_hints.ml @@ -1,7 +1,13 @@ open Test.Import -let apply_inlay_hints ?(path = "foo.ml") ?range - ?(hint_pattern_variables = false) ?(hint_let_bindings = false) ~source () = +let apply_inlay_hints + ?(path = "foo.ml") + ?range + ?(hint_pattern_variables = false) + ?(hint_let_bindings = false) + ~source + () + = let range = match range with | Some r -> r @@ -9,13 +15,10 @@ let apply_inlay_hints ?(path = "foo.ml") ?range let end_pos = let lines = String.split source ~on:'\n' in let last_line = Option.value_exn (List.last lines) in - Position.create - ~line:(List.length lines - 1) - ~character:(String.length last_line) + Position.create ~line:(List.length lines - 1) ~character:(String.length last_line) in Range.create ~start:(Position.create ~character:0 ~line:0) ~end_:end_pos in - let uri = DocumentUri.of_path path in let request = let textDocument = TextDocumentIdentifier.create ~uri in @@ -28,8 +31,8 @@ let apply_inlay_hints ?(path = "foo.ml") ?range (`Assoc [ ( "inlayHints" , `Assoc - [ ("hintPatternVariables", `Bool hint_pattern_variables) - ; ("hintLetBindings", `Bool hint_let_bindings) + [ "hintPatternVariables", `Bool hint_pattern_variables + ; "hintLetBindings", `Bool hint_let_bindings ] ) ]) (InlayHint request) @@ -38,58 +41,61 @@ let apply_inlay_hints ?(path = "foo.ml") ?range | Some hints -> let text_edits = List.map hints ~f:(fun (hint : InlayHint.t) -> - let paddingLeftStr = - match hint.paddingLeft with - | Some true -> "_$" - | None | Some false -> "$" - in - let paddingRightStr = - match hint.paddingRight with - | Some true -> "$_" - | None | Some false -> "$" - in - - let newText = - match hint.label with - | `String s -> paddingLeftStr ^ s ^ paddingRightStr - | `List _ -> failwith "TODO: implement list hints" - in - TextEdit.create - ~range:(Range.create ~start:hint.position ~end_:hint.position) - ~newText) + let paddingLeftStr = + match hint.paddingLeft with + | Some true -> "_$" + | None | Some false -> "$" + in + let paddingRightStr = + match hint.paddingRight with + | Some true -> "$_" + | None | Some false -> "$" + in + let newText = + match hint.label with + | `String s -> paddingLeftStr ^ s ^ paddingRightStr + | `List _ -> failwith "TODO: implement list hints" + in + TextEdit.create + ~range:(Range.create ~start:hint.position ~end_:hint.position) + ~newText) in Test.apply_edits source text_edits |> print_endline | None -> print_endline "No hints found" +;; let%expect_test "optional argument" = apply_inlay_hints ~source:"let f ?x () = x" (); [%expect {| let f ?x$: 'a option$ () = x |}] +;; let%expect_test "optional argument with value" = apply_inlay_hints ~source:"let f ?(x = 1) () = x" (); [%expect {| let f ?(x$: int$ = 1) () = x |}] +;; let%expect_test "labeled argument" = apply_inlay_hints ~source:"let f ~x = x + 1" (); [%expect {| let f ~x$: int$ = x + 1 |}] +;; let%expect_test "case argument" = apply_inlay_hints ~source:"let f (Some x) = x + 1" (); [%expect {| let f (Some x$: int$) = x + 1 |}] +;; let%expect_test "pattern variables" = let source = "let f x = match x with Some x -> x | None -> 0" in apply_inlay_hints ~source (); [%expect {| let f x$: int option$ = match x with Some x -> x | None -> 0 |}]; - apply_inlay_hints ~hint_pattern_variables:true ~source (); - [%expect - {| let f x$: int option$ = match x with Some x$: int$ -> x | None -> 0 |}] + [%expect {| let f x$: int option$ = match x with Some x$: int$ -> x | None -> 0 |}] +;; let%expect_test "let bindings" = let source = "let f () = let y = 0 in y" in apply_inlay_hints ~source (); [%expect {| let f () = let y = 0 in y |}]; - apply_inlay_hints ~hint_let_bindings:true ~source (); [%expect {| let f () = let y$: int$ = 0 in y |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/lsp_helpers.ml b/ocaml-lsp-server/test/e2e-new/lsp_helpers.ml index 97bf67cb9..7d513ffef 100644 --- a/ocaml-lsp-server/test/e2e-new/lsp_helpers.ml +++ b/ocaml-lsp-server/test/e2e-new/lsp_helpers.ml @@ -7,28 +7,34 @@ let open_document ~client ~uri ~source = Client.notification client (TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument)) +;; -let iter_lsp_response ?(prep = fun _ -> Fiber.return ()) ?(path = "foo.ml") - ~makeRequest ~source k = +let iter_lsp_response + ?(prep = fun _ -> Fiber.return ()) + ?(path = "foo.ml") + ~makeRequest + ~source + k + = let got_diagnostics = Fiber.Ivar.create () in let handler = Client.Handler.make - ~on_notification:(fun _ -> function - | PublishDiagnostics _ -> ( + ~on_notification:(fun _ -> + function + | PublishDiagnostics _ -> let* diag = Fiber.Ivar.peek got_diagnostics in - match diag with - | Some _ -> Fiber.return () - | None -> Fiber.Ivar.fill got_diagnostics ()) + (match diag with + | Some _ -> Fiber.return () + | None -> Fiber.Ivar.fill got_diagnostics ()) | _ -> Fiber.return ()) () in - Test.run ~handler @@ fun client -> + Test.run ~handler + @@ fun client -> let run_client () = let capabilities = let window = - let showDocument = - ShowDocumentClientCapabilities.create ~support:true - in + let showDocument = ShowDocumentClientCapabilities.create ~support:true in WindowClientCapabilities.create ~showDocument () in ClientCapabilities.create ~window () @@ -45,10 +51,10 @@ let iter_lsp_response ?(prep = fun _ -> Fiber.return ()) ?(path = "foo.ml") let textDocument = TextDocumentIdentifier.create ~uri in makeRequest textDocument in - Client.request client request in k resp in Fiber.fork_and_join_unit run_client (fun () -> - run >>> Fiber.Ivar.read got_diagnostics >>> Client.stop client) + run >>> Fiber.Ivar.read got_diagnostics >>> Client.stop client) +;; diff --git a/ocaml-lsp-server/test/e2e-new/lsp_helpers.mli b/ocaml-lsp-server/test/e2e-new/lsp_helpers.mli index 33802cde5..c77e3e738 100644 --- a/ocaml-lsp-server/test/e2e-new/lsp_helpers.mli +++ b/ocaml-lsp-server/test/e2e-new/lsp_helpers.mli @@ -2,13 +2,16 @@ open Test.Import (** Opens a document with the language server. This must be done before trying to access it *) -val open_document : - client:'a Client.t -> uri:DocumentUri.t -> source:string -> unit Fiber.t +val open_document + : client:'a Client.t + -> uri:DocumentUri.t + -> source:string + -> unit Fiber.t (** Performs the request you return from the makeRequest function and then gives it the the handler function you provide *) -val iter_lsp_response : - ?prep:(unit Client.t -> unit Fiber.t) +val iter_lsp_response + : ?prep:(unit Client.t -> unit Fiber.t) -> ?path:string -> makeRequest:(TextDocumentIdentifier.t -> 'a Client.out_request) -> source:string diff --git a/ocaml-lsp-server/test/e2e-new/merlin_call_compatible.ml b/ocaml-lsp-server/test/e2e-new/merlin_call_compatible.ml index 74ce59e24..73a28ffca 100644 --- a/ocaml-lsp-server/test/e2e-new/merlin_call_compatible.ml +++ b/ocaml-lsp-server/test/e2e-new/merlin_call_compatible.ml @@ -4,31 +4,29 @@ let call_merlin_compatible client command args result_as_sexp = let uri = DocumentUri.of_path "test.ml" in let params = `Assoc - [ ("uri", DocumentUri.yojson_of_t uri) - ; ("command", `String command) - ; ("args", args) - ; ("resultAsSexp", `Bool result_as_sexp) + [ "uri", DocumentUri.yojson_of_t uri + ; "command", `String command + ; "args", args + ; "resultAsSexp", `Bool result_as_sexp ] in let params = Some (Jsonrpc.Structured.t_of_yojson params) in let req = - Lsp.Client_request.UnknownRequest - { meth = "ocamllsp/merlinCallCompatible"; params } + Lsp.Client_request.UnknownRequest { meth = "ocamllsp/merlinCallCompatible"; params } in Client.request client req +;; let print_merin_call_compatible result = result |> Yojson.Safe.pretty_to_string ~std:false |> print_endline +;; let list l = `List (List.map ~f:(fun x -> `String x) l) - -let obj l = `Assoc (List.map ~f:(fun (k, v) -> (k, `String v)) l) +let obj l = `Assoc (List.map ~f:(fun (k, v) -> k, `String v) l) let%expect_test "case-analysis on simple example" = - let source = - {|type t = {a: int * int; b: string} -let f ({a; b} : t) = assert false|} - in + let source = {|type t = {a: int * int; b: string} +let f ({a; b} : t) = assert false|} in let request client = let open Fiber.O in let args = list [ "-start"; "2:9"; "-end"; "2:9" ] in @@ -42,15 +40,14 @@ let f ({a; b} : t) = assert false|} "resultAsSexp": false, "result": "{\"class\":\"return\",\"value\":[{\"start\":{\"line\":2,\"col\":8},\"end\":{\"line\":2,\"col\":9}},\"a = (_, _)\"]}" } |}] +;; let%expect_test "case-analysis on simple example using object instead of args" = - let source = - {|type t = {a: int * int; b: string} -let f ({a; b} : t) = assert false|} - in + let source = {|type t = {a: int * int; b: string} +let f ({a; b} : t) = assert false|} in let request client = let open Fiber.O in - let args = obj [ ("start", "2:9"); ("end", "2:9") ] in + let args = obj [ "start", "2:9"; "end", "2:9" ] in let* response = call_merlin_compatible client "case-analysis" args false in let () = print_merin_call_compatible response in Fiber.return () @@ -62,6 +59,7 @@ let f ({a; b} : t) = assert false|} "resultAsSexp": false, "result": "{\"class\":\"return\",\"value\":[{\"start\":{\"line\":2,\"col\":8},\"end\":{\"line\":2,\"col\":9}},\"a = (_, _)\"]}" } |}] +;; let%expect_test "case-analysis on empty example" = let source = {||} in @@ -79,12 +77,11 @@ let%expect_test "case-analysis on empty example" = "resultAsSexp": false, "result": "{\"class\":\"exception\",\"value\":\"Merlin_analysis.Destruct.Nothing_to_do\"}" } |}] +;; let%expect_test "case-analysis on simple example with result as sexp" = - let source = - {|type t = {a: int * int; b: string} -let f ({a; b} : t) = assert false|} - in + let source = {|type t = {a: int * int; b: string} +let f ({a; b} : t) = assert false|} in let request client = let open Fiber.O in let args = list [ "-start"; "2:9"; "-end"; "2:9" ] in @@ -99,6 +96,7 @@ let f ({a; b} : t) = assert false|} "resultAsSexp": true, "result": "((assoc) (class . \"return\") (value ((assoc) (start (assoc) (line . 2) (col . 8)) (end (assoc) (line . 2) (col . 9))) \"a = (_, _)\"))" } |}] +;; let%expect_test "errors: warning is shown" = let source = {|let () = match Some 3 with | None -> ()|} in @@ -116,6 +114,7 @@ let%expect_test "errors: warning is shown" = "resultAsSexp": false, "result": "{\"class\":\"return\",\"value\":[{\"start\":{\"line\":1,\"col\":9},\"end\":{\"line\":1,\"col\":39},\"type\":\"warning\",\"sub\":[],\"valid\":true,\"message\":\"Warning 8: this pattern-matching is not exhaustive.\\nHere is an example of a case that is not matched:\\nSome _\"}]}" } |}] +;; let%expect_test "errors: warning is disabled" = let source = {|let () = match Some 3 with | None -> ()|} in @@ -130,3 +129,4 @@ let%expect_test "errors: warning is disabled" = [%expect {| { "resultAsSexp": false, "result": "{\"class\":\"return\",\"value\":[]}" } |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/metrics.ml b/ocaml-lsp-server/test/e2e-new/metrics.ml index 9c37a9b42..ae74c5ff8 100644 --- a/ocaml-lsp-server/test/e2e-new/metrics.ml +++ b/ocaml-lsp-server/test/e2e-new/metrics.ml @@ -2,14 +2,14 @@ open Test.Import let%expect_test "metrics" = let handler = - let on_request (type r) _ (r : r Lsp.Server_request.t) : - (r Lsp_fiber.Rpc.Reply.t * unit) Fiber.t = + let on_request (type r) _ (r : r Lsp.Server_request.t) + : (r Lsp_fiber.Rpc.Reply.t * unit) Fiber.t + = match r with | ShowDocumentRequest p -> print_endline "client: received show document params"; let json = - ShowDocumentParams.yojson_of_t - { p with uri = Uri.of_path "" } + ShowDocumentParams.yojson_of_t { p with uri = Uri.of_path "" } in Yojson.Safe.to_channel stdout json; print_endline ""; @@ -26,23 +26,21 @@ let%expect_test "metrics" = in Client.Handler.make ~on_request ~on_notification () in - ( Test.run ~handler @@ fun client -> - let run_client () = - let capabilities = ClientCapabilities.create () in - Client.start client (InitializeParams.create ~capabilities ()) - in - let run = - let* (_ : InitializeResult.t) = Client.initialized client in - let view_metrics = - ExecuteCommandParams.create ~command:"ocamllsp/view-metrics" () - in - let+ res = Client.request client (ExecuteCommand view_metrics) in - print_endline "server: receiving response"; - Yojson.Safe.to_channel stdout res; - print_endline "" - in - Fiber.fork_and_join_unit run_client (fun () -> run >>> Client.stop client) - ); + (Test.run ~handler + @@ fun client -> + let run_client () = + let capabilities = ClientCapabilities.create () in + Client.start client (InitializeParams.create ~capabilities ()) + in + let run = + let* (_ : InitializeResult.t) = Client.initialized client in + let view_metrics = ExecuteCommandParams.create ~command:"ocamllsp/view-metrics" () in + let+ res = Client.request client (ExecuteCommand view_metrics) in + print_endline "server: receiving response"; + Yojson.Safe.to_channel stdout res; + print_endline "" + in + Fiber.fork_and_join_unit run_client (fun () -> run >>> Client.stop client)); [%expect {| client: received show document params @@ -51,3 +49,4 @@ let%expect_test "metrics" = {"traceEvents":[]} server: receiving response null |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/semantic_hl_data.ml b/ocaml-lsp-server/test/e2e-new/semantic_hl_data.ml index 8ef5a6bc7..9609b1ff3 100644 --- a/ocaml-lsp-server/test/e2e-new/semantic_hl_data.ml +++ b/ocaml-lsp-server/test/e2e-new/semantic_hl_data.ml @@ -52,3 +52,4 @@ module Foo_inst = Foo (struct } end) |} +;; diff --git a/ocaml-lsp-server/test/e2e-new/semantic_hl_helpers.ml b/ocaml-lsp-server/test/e2e-new/semantic_hl_helpers.ml index af152744b..1ccf0d0f1 100644 --- a/ocaml-lsp-server/test/e2e-new/semantic_hl_helpers.ml +++ b/ocaml-lsp-server/test/e2e-new/semantic_hl_helpers.ml @@ -19,24 +19,29 @@ let tokens encoded_tokens = ; type_ = encoded_tokens.(ix + 3) ; mods = encoded_tokens.(ix + 4) }) +;; let modifiers ~(legend : string array) (encoded_mods : int) = let rec loop encoded_mods i acc = - if encoded_mods = 0 then acc - else + if encoded_mods = 0 + then acc + else ( let k = Stdlib.Int.logand encoded_mods 1 in let new_val = Stdlib.Int.shift_right encoded_mods 1 in - if k = 0 then loop new_val (i + 1) acc - else loop new_val (i + 1) (legend.(k) :: acc) + if k = 0 then loop new_val (i + 1) acc else loop new_val (i + 1) (legend.(k) :: acc)) in loop encoded_mods 0 [] |> List.rev +;; -let annotate_src_with_tokens ~(legend : SemanticTokensLegend.t) - ~(encoded_tokens : int array) ~(annot_mods : bool) (src : string) : string = +let annotate_src_with_tokens + ~(legend : SemanticTokensLegend.t) + ~(encoded_tokens : int array) + ~(annot_mods : bool) + (src : string) + : string + = let token_types = legend.SemanticTokensLegend.tokenTypes |> Array.of_list in - let token_mods = - legend.SemanticTokensLegend.tokenModifiers |> Array.of_list - in + let token_mods = legend.SemanticTokensLegend.tokenModifiers |> Array.of_list in let src_ix = ref 0 in let tokens = Array.Iter.create (tokens encoded_tokens) in let token = ref @@ Array.Iter.next_exn tokens in @@ -46,14 +51,14 @@ let annotate_src_with_tokens ~(legend : SemanticTokensLegend.t) let src_len = String.length src in let b = Buffer.create src_len in while !src_ix < src_len do - if !line = 0 && !character = 0 then ( + if !line = 0 && !character = 0 + then ( Printf.bprintf b "<%s%s-%d>" token_types.(!token.type_) - (if annot_mods then - "|" - ^ String.concat ~sep:"," (modifiers ~legend:token_mods !token.mods) + (if annot_mods + then "|" ^ String.concat ~sep:"," (modifiers ~legend:token_mods !token.mods) else "") !token_id; Buffer.add_substring b src !src_ix !token.len; @@ -69,21 +74,21 @@ let annotate_src_with_tokens ~(legend : SemanticTokensLegend.t) character := next_token.delta_char - !token.len; token := next_token; line := !token.delta_line) - else + else ( let ch = src.[!src_ix] in (match ch with - | '\n' -> - decr line; - character := !token.delta_char - | _ -> decr character); + | '\n' -> + decr line; + character := !token.delta_char + | _ -> decr character); Buffer.add_char b ch; - incr src_ix + incr src_ix) done; Buffer.to_bytes b |> Bytes.to_string +;; (* for tests below *) -let legend = - SemanticTokensLegend.create ~tokenModifiers:[] ~tokenTypes:[ "var"; "mod" ] +let legend = SemanticTokensLegend.create ~tokenModifiers:[] ~tokenTypes:[ "var"; "mod" ] let%expect_test "annotate single-line src" = annotate_src_with_tokens @@ -93,12 +98,12 @@ let%expect_test "annotate single-line src" = {|let foo = bar|} |> print_endline; [%expect {| let foo = bar |}] +;; let%expect_test "annotate multi-line src" = annotate_src_with_tokens ~legend - ~encoded_tokens: - [| 0; 4; 3; 0; 0; 0; 6; 3; 0; 0; 1; 4; 3; 0; 0; 0; 6; 3; 1; 0 |] + ~encoded_tokens:[| 0; 4; 3; 0; 0; 0; 6; 3; 0; 0; 1; 4; 3; 0; 0; 0; 6; 3; 1; 0 |] ~annot_mods:false {|let foo = bar let jar = dar|} @@ -107,3 +112,4 @@ let jar = dar|} {| let foo = bar let jar = dar |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/semantic_hl_helpers.mli b/ocaml-lsp-server/test/e2e-new/semantic_hl_helpers.mli index a8ef27121..89cef7643 100644 --- a/ocaml-lsp-server/test/e2e-new/semantic_hl_helpers.mli +++ b/ocaml-lsp-server/test/e2e-new/semantic_hl_helpers.mli @@ -1,7 +1,7 @@ open Test.Import -val annotate_src_with_tokens : - legend:SemanticTokensLegend.t +val annotate_src_with_tokens + : legend:SemanticTokensLegend.t -> encoded_tokens:int array -> annot_mods:bool -> string diff --git a/ocaml-lsp-server/test/e2e-new/semantic_hl_tests.ml b/ocaml-lsp-server/test/e2e-new/semantic_hl_tests.ml index d93a655a7..8fb2cb777 100644 --- a/ocaml-lsp-server/test/e2e-new/semantic_hl_tests.ml +++ b/ocaml-lsp-server/test/e2e-new/semantic_hl_tests.ml @@ -68,23 +68,26 @@ let client_capabilities = TextDocumentClientCapabilities.create ~semanticTokens () in ClientCapabilities.create ~textDocument () +;; type 'resp req_ctx = { initializeResult : InitializeResult.t ; resp : 'resp } -let test : - type resp. - src:string +let test + : type resp. + src:string -> (SemanticTokensParams.t -> resp Client.out_request) -> (resp req_ctx -> unit Fiber.t) - -> unit = - fun ~src req consume_resp -> + -> unit + = + fun ~src req consume_resp -> let wait_for_diagnostics = Fiber.Ivar.create () in let handler = Client.Handler.make - ~on_notification:(fun client -> function + ~on_notification:(fun client -> + function | Lsp.Server_notification.PublishDiagnostics _ -> (* we don't want to close the connection from client-side before we process diagnostics arrived on the channel. TODO: would a better @@ -96,39 +99,35 @@ let test : () in Test.run ~handler (fun client -> - let run_client () = - Client.start + let run_client () = + Client.start client (InitializeParams.create ~capabilities:client_capabilities ()) + in + let run () = + let* (initializeResult : InitializeResult.t) = Client.initialized client in + let uri = DocumentUri.of_path "test.ml" in + let textDocument = + TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text:src + in + let* () = + Client.notification client - (InitializeParams.create ~capabilities:client_capabilities ()) + (TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument)) + in + let* resp = + let textDocument = TextDocumentIdentifier.create ~uri in + let params = SemanticTokensParams.create ~textDocument () in + Client.request client (req params) in - let run () = - let* (initializeResult : InitializeResult.t) = - Client.initialized client - in - let uri = DocumentUri.of_path "test.ml" in - let textDocument = - TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text:src - in - let* () = - Client.notification - client - (TextDocumentDidOpen - (DidOpenTextDocumentParams.create ~textDocument)) - in - let* resp = - let textDocument = TextDocumentIdentifier.create ~uri in - let params = SemanticTokensParams.create ~textDocument () in - Client.request client (req params) - in - let* () = consume_resp { initializeResult; resp } in - let* () = - Fiber.fork_and_join_unit - (fun () -> Fiber.Ivar.read wait_for_diagnostics) - (fun () -> Client.request client Shutdown) - in - Client.stop client + let* () = consume_resp { initializeResult; resp } in + let* () = + Fiber.fork_and_join_unit + (fun () -> Fiber.Ivar.read wait_for_diagnostics) + (fun () -> Client.request client Shutdown) in - Fiber.fork_and_join_unit run_client run) + Client.stop client + in + Fiber.fork_and_join_unit run_client run) +;; let test_semantic_tokens_full src = let print_resp { initializeResult; resp } = @@ -154,6 +153,7 @@ let test_semantic_tokens_full src = src in test ~src (fun p -> SemanticTokensFull p) print_resp +;; let%expect_test "tokens for ocaml_lsp_server.ml" = test_semantic_tokens_full Semantic_hl_data.src0; @@ -210,6 +210,7 @@ let%expect_test "tokens for ocaml_lsp_server.ml" = ; bar : int } end) |}] +;; let test_semantic_tokens_full_debug src = test @@ -218,14 +219,11 @@ let test_semantic_tokens_full_debug src = UnknownRequest { meth = semantic_tokens_full_debug ; params = - Some - (SemanticTokensParams.yojson_of_t p - |> Jsonrpc.Structured.t_of_yojson) + Some (SemanticTokensParams.yojson_of_t p |> Jsonrpc.Structured.t_of_yojson) }) (fun { resp; _ } -> - resp - |> Yojson.Safe.pretty_to_string ~std:false - |> print_endline |> Fiber.return) + resp |> Yojson.Safe.pretty_to_string ~std:false |> print_endline |> Fiber.return) +;; let%expect_test "tokens for ocaml_lsp_server.ml" = test_semantic_tokens_full_debug Semantic_hl_data.src0; @@ -671,10 +669,10 @@ let%expect_test "tokens for ocaml_lsp_server.ml" = "modifiers": [] } ] |}] +;; let%expect_test "highlighting longidents with space between identifiers" = - test_semantic_tokens_full - @@ String.trim {| + test_semantic_tokens_full @@ String.trim {| let foo = Bar.jar let joo = Bar. jar @@ -684,9 +682,9 @@ let joo = Bar. jar let foo = Bar.jar let joo = Bar. jar |}] +;; -let%expect_test "highlighting longidents with space between identifiers and \ - infix fns" = +let%expect_test "highlighting longidents with space between identifiers and infix fns" = test_semantic_tokens_full @@ String.trim {| Bar.(+) ;; @@ -706,6 +704,7 @@ Bar. ( + ) ;; Bar. (+) ;; Bar. ( + ) ;; |}] +;; let%expect_test "longidents in records" = test_semantic_tokens_full @@ -720,6 +719,7 @@ let x = { M . foo = 0 ; bar = "bar"} module M = struct type r = { foo : int ; bar : string } end let x = { M . foo = 0 ; bar = "bar"} |}] +;; let%expect_test "operators" = test_semantic_tokens_full @@ -733,6 +733,7 @@ let z = 0 >>= 1 let x = 1.0 *. 2.0 let y = 1 * 2 let z = 0 >>= 1 |}] +;; let%expect_test "comment in unit" = test_semantic_tokens_full @@ -747,3 +748,4 @@ let ((*comment*)) = () let y = (* comment *) 0 let x = ((* comment *)) let ((*comment*)) = () |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/start_stop.ml b/ocaml-lsp-server/test/e2e-new/start_stop.ml index 278f13673..f06bd30db 100644 --- a/ocaml-lsp-server/test/e2e-new/start_stop.ml +++ b/ocaml-lsp-server/test/e2e-new/start_stop.ml @@ -7,51 +7,49 @@ let%expect_test "start/stop" = ~on_notification:(fun _ notif -> Queue.push notifs notif |> Fiber.return) () in - ( Test.run ~handler:handler_collecting_notifs @@ fun client -> - let run_client () = - let capabilities = - let window = - let showDocument = - ShowDocumentClientCapabilities.create ~support:true - in - WindowClientCapabilities.create ~showDocument () - in - let textDocument = - let codeAction = - let codeActionLiteralSupport = - let codeActionKind = - CodeActionClientCapabilities.create_codeActionKind ~valueSet:[] - in - CodeActionClientCapabilities.create_codeActionLiteralSupport - ~codeActionKind - in - CodeActionClientCapabilities.create ~codeActionLiteralSupport () - in - TextDocumentClientCapabilities.create ~codeAction () - in - ClientCapabilities.create ~window ~textDocument () - in - Client.start client (InitializeParams.create ~capabilities ()) - in - let print_init = - let+ resp = Client.initialized client in - print_endline "client: server initialized with:"; - InitializeResult.yojson_of_t resp - |> Yojson.Safe.pretty_to_string ~std:false - |> print_endline - in - let run = - let* () = print_init in - print_endline "client: shutting down server"; - Client.request client Shutdown - in - Fiber.fork_and_join_unit run_client (fun () -> run >>> Client.stop client) - ); + (Test.run ~handler:handler_collecting_notifs + @@ fun client -> + let run_client () = + let capabilities = + let window = + let showDocument = ShowDocumentClientCapabilities.create ~support:true in + WindowClientCapabilities.create ~showDocument () + in + let textDocument = + let codeAction = + let codeActionLiteralSupport = + let codeActionKind = + CodeActionClientCapabilities.create_codeActionKind ~valueSet:[] + in + CodeActionClientCapabilities.create_codeActionLiteralSupport ~codeActionKind + in + CodeActionClientCapabilities.create ~codeActionLiteralSupport () + in + TextDocumentClientCapabilities.create ~codeAction () + in + ClientCapabilities.create ~window ~textDocument () + in + Client.start client (InitializeParams.create ~capabilities ()) + in + let print_init = + let+ resp = Client.initialized client in + print_endline "client: server initialized with:"; + InitializeResult.yojson_of_t resp + |> Yojson.Safe.pretty_to_string ~std:false + |> print_endline + in + let run = + let* () = print_init in + print_endline "client: shutting down server"; + Client.request client Shutdown + in + Fiber.fork_and_join_unit run_client (fun () -> run >>> Client.stop client)); print_endline "\nnotifications received:"; Queue.iter notifs ~f:(fun notif -> - Lsp.Server_notification.to_jsonrpc notif - |> Jsonrpc.Notification.yojson_of_t |> Yojson.Safe.pretty_to_string - |> print_endline); + Lsp.Server_notification.to_jsonrpc notif + |> Jsonrpc.Notification.yojson_of_t + |> Yojson.Safe.pretty_to_string + |> print_endline); [%expect {| client: server initialized with: @@ -140,3 +138,4 @@ let%expect_test "start/stop" = notifications received: |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/syntax_doc_tests.ml b/ocaml-lsp-server/test/e2e-new/syntax_doc_tests.ml index 6c1d5a1e6..daf110be2 100644 --- a/ocaml-lsp-server/test/e2e-new/syntax_doc_tests.ml +++ b/ocaml-lsp-server/test/e2e-new/syntax_doc_tests.ml @@ -1,29 +1,25 @@ open! Test.Import -let change_config client params = - Client.notification client (ChangeConfiguration params) - +let change_config client params = Client.notification client (ChangeConfiguration params) let uri = DocumentUri.of_path "test.ml" - let create_postion line character = Position.create ~line ~character let activate_syntax_doc = DidChangeConfigurationParams.create - ~settings: - (`Assoc [ ("syntaxDocumentation", `Assoc [ ("enable", `Bool true) ]) ]) + ~settings:(`Assoc [ "syntaxDocumentation", `Assoc [ "enable", `Bool true ] ]) +;; let deactivate_syntax_doc = DidChangeConfigurationParams.create - ~settings: - (`Assoc [ ("syntaxDocumentation", `Assoc [ ("enable", `Bool false) ]) ]) + ~settings:(`Assoc [ "syntaxDocumentation", `Assoc [ "enable", `Bool false ] ]) +;; let print_hover hover = match hover with | None -> print_endline "no hover response" | Some hover -> - hover |> Hover.yojson_of_t - |> Yojson.Safe.pretty_to_string ~std:false - |> print_endline + hover |> Hover.yojson_of_t |> Yojson.Safe.pretty_to_string ~std:false |> print_endline +;; let hover_req client position = Client.request @@ -33,6 +29,7 @@ let hover_req client position = ; textDocument = TextDocumentIdentifier.create ~uri ; workDoneToken = None }) +;; let run_test text req = let handler = @@ -43,26 +40,26 @@ let run_test text req = () in Test.run ~handler (fun client -> - let run_client () = - let capabilities = ClientCapabilities.create () in - Client.start client (InitializeParams.create ~capabilities ()) + let run_client () = + let capabilities = ClientCapabilities.create () in + Client.start client (InitializeParams.create ~capabilities ()) + in + let run () = + let* (_ : InitializeResult.t) = Client.initialized client in + let textDocument = + TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text in - let run () = - let* (_ : InitializeResult.t) = Client.initialized client in - let textDocument = - TextDocumentItem.create ~uri ~languageId:"ocaml" ~version:0 ~text - in - let* () = - Client.notification - client - (TextDocumentDidOpen - (DidOpenTextDocumentParams.create ~textDocument)) - in - let* () = req client in - let* () = Client.request client Shutdown in - Client.stop client + let* () = + Client.notification + client + (TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument)) in - Fiber.fork_and_join_unit run_client run) + let* () = req client in + let* () = Client.request client Shutdown in + Client.stop client + in + Fiber.fork_and_join_unit run_client run) +;; let%expect_test "syntax doc should display" = let source = {ocaml| @@ -89,6 +86,7 @@ type color = Red|Blue "start": { "character": 0, "line": 1 } } } |}] +;; let%expect_test "syntax doc should not display" = let source = {ocaml| @@ -111,6 +109,7 @@ type color = Red|Blue "start": { "character": 0, "line": 1 } } } |}] +;; let%expect_test "syntax doc should print" = let source = {ocaml| @@ -136,6 +135,7 @@ type t = .. "start": { "character": 0, "line": 1 } } } |}] +;; let%expect_test "should receive no hover response" = let source = {ocaml| @@ -150,3 +150,4 @@ let%expect_test "should receive no hover response" = in run_test source req; [%expect {| no hover response |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/test.ml b/ocaml-lsp-server/test/e2e-new/test.ml index 5a4f71b4b..a375c4235 100644 --- a/ocaml-lsp-server/test/e2e-new/test.ml +++ b/ocaml-lsp-server/test/e2e-new/test.ml @@ -8,22 +8,25 @@ module Import = struct let find_mapi ~f l = let rec k i = function | [] -> None - | x :: xs -> ( - match f i x with - | Some x' -> Some x' - | None -> (k [@tailcall]) (i + 1) xs) + | x :: xs -> + (match f i x with + | Some x' -> Some x' + | None -> (k [@tailcall]) (i + 1) xs) in k 0 l + ;; let take n l = let rec take acc n l = - if n = 0 then acc - else + if n = 0 + then acc + else ( match l with | [] -> failwith "list shorter than n" - | x :: xs -> (take [@tailcall]) (x :: acc) (n - 1) xs + | x :: xs -> (take [@tailcall]) (x :: acc) (n - 1) xs) in List.rev (take [] n l) + ;; end module Array = struct @@ -33,11 +36,8 @@ module Import = struct type 'a t val create : 'a array -> 'a t - val has_next : 'a t -> bool - val next : 'a t -> 'a option - val next_exn : 'a t -> 'a end = struct type 'a t = @@ -46,7 +46,6 @@ module Import = struct } let create contents = { contents; ix = 0 } - let has_next t = t.ix < Array.length t.contents let next_exn t = @@ -54,6 +53,7 @@ module Import = struct let v = contents.(ix) in t.ix <- ix + 1; v + ;; let next t = if has_next t then Some (next_exn t) else None end @@ -70,23 +70,20 @@ end open Import module T : sig - val run_with_status : - ?extra_env:string list + val run_with_status + : ?extra_env:string list -> ?handler:unit Client.Handler.t -> (unit Client.t -> 'a Fiber.t) -> Unix.process_status * 'a - val run : - ?extra_env:string list + val run + : ?extra_env:string list -> ?handler:unit Client.Handler.t -> (unit Client.t -> 'a Fiber.t) -> 'a end = struct - let _PATH = - Bin.parse_path (Option.value ~default:"" @@ Env.get Env.initial "PATH") - - let bin = - Bin.which "ocamllsp" ~path:_PATH |> Option.value_exn |> Path.to_string + let _PATH = Bin.parse_path (Option.value ~default:"" @@ Env.get Env.initial "PATH") + let bin = Bin.which "ocamllsp" ~path:_PATH |> Option.value_exn |> Path.to_string let run_with_status ?(extra_env = []) ?handler f = let stdin_i, stdin_o = Unix.pipe ~cloexec:true () in @@ -96,13 +93,7 @@ end = struct let current = Unix.environment () in Array.to_list current @ extra_env |> Spawn.Env.of_list in - Spawn.spawn - ~env - ~prog:bin - ~argv:[ bin ] - ~stdin:stdin_i - ~stdout:stdout_o - () + Spawn.spawn ~env ~prog:bin ~argv:[ bin ] ~stdin:stdin_i ~stdout:stdout_o () in Unix.close stdin_i; Unix.close stdout_o; @@ -113,7 +104,8 @@ end = struct in let init = let blockity = - if Sys.win32 then `Blocking + if Sys.win32 + then `Blocking else ( Unix.set_nonblock stdout_i; Unix.set_nonblock stdin_o; @@ -137,31 +129,30 @@ end = struct let cancelled = ref false in Fiber.fork_and_join_unit (fun () -> - Lev_fiber.Timer.Wheel.await timeout >>| function + Lev_fiber.Timer.Wheel.await timeout + >>| function | `Cancelled -> () | `Ok -> Unix.kill pid Sys.sigkill; cancelled := true) (fun () -> - let* (server_exit_status : Unix.process_status) = - Lev_fiber.waitpid ~pid - in + let* (server_exit_status : Unix.process_status) = Lev_fiber.waitpid ~pid in let+ () = - if !cancelled then Fiber.return () - else Lev_fiber.Timer.Wheel.cancel timeout + if !cancelled then Fiber.return () else Lev_fiber.Timer.Wheel.cancel timeout in server_exit_status) in Lev_fiber.run (fun () -> - let* wheel = Lev_fiber.Timer.Wheel.create ~delay:3.0 in - let+ res = init - and+ status = - Fiber.fork_and_join_unit - (fun () -> Lev_fiber.Timer.Wheel.run wheel) - (fun () -> waitpid wheel) - in - (status, res)) + let* wheel = Lev_fiber.Timer.Wheel.create ~delay:3.0 in + let+ res = init + and+ status = + Fiber.fork_and_join_unit + (fun () -> Lev_fiber.Timer.Wheel.run wheel) + (fun () -> waitpid wheel) + in + status, res) |> Lev_fiber.Error.ok_exn + ;; let run ?extra_env ?handler f = snd @@ run_with_status ?extra_env ?handler f end @@ -171,25 +162,25 @@ include T let drain_diagnostics () = let diagnostics = Fiber.Ivar.create () in let on_notification _ = function - | Lsp.Server_notification.PublishDiagnostics _ -> ( + | Lsp.Server_notification.PublishDiagnostics _ -> let* diag = Fiber.Ivar.peek diagnostics in - match diag with - | Some _ -> Fiber.return () - | None -> Fiber.Ivar.fill diagnostics ()) + (match diag with + | Some _ -> Fiber.return () + | None -> Fiber.Ivar.fill diagnostics ()) | _ -> Fiber.return () in - (on_notification, diagnostics) + on_notification, diagnostics +;; let run_request ?(prep = fun _ -> Fiber.return ()) ?settings request = let on_notification, diagnostics = drain_diagnostics () in let handler = Client.Handler.make ~on_notification () in - run ~handler @@ fun client -> + run ~handler + @@ fun client -> let run_client () = let capabilities = let window = - let showDocument = - ShowDocumentClientCapabilities.create ~support:true - in + let showDocument = ShowDocumentClientCapabilities.create ~support:true in WindowClientCapabilities.create ~showDocument () in ClientCapabilities.create ~window () @@ -201,17 +192,17 @@ let run_request ?(prep = fun _ -> Fiber.return ()) ?settings request = let* () = prep client in let* () = match settings with - | Some settings -> - Client.notification client (ChangeConfiguration { settings }) + | Some settings -> Client.notification client (ChangeConfiguration { settings }) | None -> Fiber.return () in Client.request client request in Fiber.fork_and_join_unit run_client (fun () -> - let* ret = run in - let* () = Fiber.Ivar.read diagnostics in - let+ () = Client.stop client in - ret) + let* ret = run in + let* () = Fiber.Ivar.read diagnostics in + let+ () = Client.stop client in + ret) +;; let openDocument ~client ~uri ~source = let textDocument = @@ -220,42 +211,42 @@ let openDocument ~client ~uri ~source = Client.notification client (TextDocumentDidOpen (DidOpenTextDocumentParams.create ~textDocument)) +;; let offset_of_position src (pos : Position.t) = let line_offset = - String.split_lines src |> List.take pos.line + String.split_lines src + |> List.take pos.line |> List.fold_left ~init:0 ~f:(fun s l -> s + String.length l) in line_offset + pos.line (* account for line endings *) + pos.character +;; let apply_edits src edits = let edits = List.sort edits ~compare:(fun (e : TextEdit.t) (e' : TextEdit.t) -> - Position.compare e.range.start e'.range.start) + Position.compare e.range.start e'.range.start) in - (* check that edits are non-overlapping *) let rec overlaps : TextEdit.t list -> _ = function | [] | [ _ ] -> false - | e :: e' :: es -> ( - match Position.compare e.range.end_ e'.range.start with - | Gt -> true - | Lt | Eq -> overlaps (e' :: es)) + | e :: e' :: es -> + (match Position.compare e.range.end_ e'.range.start with + | Gt -> true + | Lt | Eq -> overlaps (e' :: es)) in if overlaps edits then failwith "overlapping edits"; - let _, edits = (* compute start and end character offsets for each edit *) List.map edits ~f:(fun (e : TextEdit.t) -> - ( e.newText - , offset_of_position src e.range.start - , offset_of_position src e.range.end_ )) + e.newText, offset_of_position src e.range.start, offset_of_position src e.range.end_) (* update the offsets to account for preceding edits *) |> List.fold_left_map ~init:0 ~f:(fun offset (new_text, start, end_) -> - if end_ < start then failwith "invalid edit: end before start"; - ( offset + (String.length new_text - (end_ - start)) - , (new_text, start + offset, end_ + offset) )) + if end_ < start then failwith "invalid edit: end before start"; + ( offset + (String.length new_text - (end_ - start)) + , (new_text, start + offset, end_ + offset) )) in (* apply edits *) List.fold_left edits ~init:src ~f:(fun src (new_text, start, end_) -> - String.take src start ^ new_text ^ String.drop src end_) + String.take src start ^ new_text ^ String.drop src end_) +;; diff --git a/ocaml-lsp-server/test/e2e-new/type_enclosing.ml b/ocaml-lsp-server/test/e2e-new/type_enclosing.ml index 48959f32f..b235e1478 100644 --- a/ocaml-lsp-server/test/e2e-new/type_enclosing.ml +++ b/ocaml-lsp-server/test/e2e-new/type_enclosing.ml @@ -13,21 +13,19 @@ module Util = struct match TextDocumentIdentifier.yojson_of_t text_document with | `Assoc assoc -> `Assoc - (("at", at) - :: ("index", `Int index) - :: ("verbosity", `Int verbosity) - :: assoc) + (("at", at) :: ("index", `Int index) :: ("verbosity", `Int verbosity) :: assoc) | _ -> (* unreachable *) assert false in let params = Some (Jsonrpc.Structured.t_of_yojson params) in let req = - Lsp.Client_request.UnknownRequest - { meth = "ocamllsp/typeEnclosing"; params } + Lsp.Client_request.UnknownRequest { meth = "ocamllsp/typeEnclosing"; params } in Client.request client req + ;; let print_type_enclosing result = result |> Yojson.Safe.pretty_to_string ~std:false |> print_endline + ;; let test ?range_end ~verbosity ~index ~line ~character source = let start = Position.create ~line ~character in @@ -45,6 +43,7 @@ module Util = struct print_type_enclosing response in Helpers.test source request + ;; end let%expect_test "Application of function without range end" = @@ -74,13 +73,15 @@ let%expect_test "Application of function without range end" = ], "type": "int -> string" } |}] +;; let%expect_test "Application of function with range end (including the current \ - enclosing) it should not change the result" = + enclosing) it should not change the result" + = let source = "string_of_int 42" in let line = 0 and character = 0 - and range_end = (13, 0) + and range_end = 13, 0 and verbosity = 0 and index = 0 in Util.test ~range_end ~verbosity ~index ~line ~character source; @@ -104,13 +105,14 @@ let%expect_test "Application of function with range end (including the current \ ], "type": "int -> string" } |}] +;; -let%expect_test "Application of function with range end (excluding the current \ - enclosing)" = +let%expect_test "Application of function with range end (excluding the current enclosing)" + = let source = "string_of_int 42" in let line = 0 and character = 0 - and range_end = (14, 0) + and range_end = 14, 0 and verbosity = 0 and index = 0 in Util.test ~range_end ~verbosity ~index ~line ~character source; @@ -126,6 +128,7 @@ let%expect_test "Application of function with range end (excluding the current \ ], "type": "string" } |}] +;; let%expect_test {| The cursor is positioned on [x]. @@ -134,7 +137,7 @@ let%expect_test {| than the first one ([00:04-00:05]), because [x] is not nested into an other expression. |} - = + = let source = "let x = string_of_int 2002" in let line = 0 and character = 4 @@ -153,11 +156,12 @@ let%expect_test {| ], "type": "string" } |}] +;; let%expect_test {| The cursor is positioned on [string_of_int] and we do not give a range. |} - = + = let source = "let x = string_of_int 2002" in let line = 0 and character = 8 @@ -184,6 +188,7 @@ let%expect_test {| ], "type": "int -> string" } |}] +;; let%expect_test {| The cursor is positioned on [2002]. @@ -193,7 +198,7 @@ let%expect_test {| 1. [00:08 - 00:26]. the [string_of_int 2002] expr |} - = + = let source = "let x = string_of_int 2002" in let line = 0 and character = 23 @@ -216,6 +221,7 @@ let%expect_test {| ], "type": "int" } |}] +;; let%expect_test {| The cursor is still positioned on [2002] but we ask for @@ -227,7 +233,7 @@ let%expect_test {| 1. [00:08 - 00:26]. the [string_of_int 2002] expr |} - = + = let source = "let x = string_of_int 2002" in let line = 0 and character = 23 @@ -250,6 +256,7 @@ let%expect_test {| ], "type": "string" } |}] +;; let%expect_test {| First, let's locate on [A.z], we expect the type [t], but we @@ -259,7 +266,7 @@ let%expect_test {| 1 : [02:11 - 17:03], the [struct ... end] expr. 2 : [02:00 - 17:03], the [module A] expr. |} - = + = let source = {|type a = Foo | Bar @@ -305,6 +312,7 @@ end|} ], "type": "type t = { a : string; b : float; }" } |}] +;; let%expect_test {| Now, let's use our enclosing to jump to the index [2], in order @@ -313,7 +321,7 @@ let%expect_test {| 1 : [02:11 - 17:03], the [struct ... end] expr. 2 : [02:00 - 17:03], the [module A] expr. |} - = + = let source = {|type a = Foo | Bar @@ -359,6 +367,7 @@ end|} ], "type": "sig\n val f : unit -> int\n val g : a\n val h : 'a -> 'a\n module B : sig type b = Baz val x : b * int val y : a * a end\n type t = { a : string; b : float; }\n val z : t\nend" } |}] +;; let%expect_test {| Now, let's jump on the [10] inside of [A.B.x]. We expect @@ -369,7 +378,7 @@ let%expect_test {| 3. [02:11 - 17:03] the [struct .. end] (of [module A]) 4. [02:00 - 17:03], the [module A] expr. |} - = + = let source = {|type a = Foo | Bar @@ -427,6 +436,7 @@ end|} ], "type": "int" } |}] +;; let%expect_test {| Now, let's jump on the [10] inside of [A.B.x] and ask for index [1]. @@ -437,7 +447,7 @@ let%expect_test {| 3. [02:11 - 17:03] the [struct .. end] (of [module A]) 4. [02:00 - 17:03], the [module A] expr. |} - = + = let source = {|type a = Foo | Bar @@ -495,3 +505,4 @@ end|} ], "type": "b * int" } |}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/with_pp.ml b/ocaml-lsp-server/test/e2e-new/with_pp.ml index e6b4b19fe..88b97e24c 100644 --- a/ocaml-lsp-server/test/e2e-new/with_pp.ml +++ b/ocaml-lsp-server/test/e2e-new/with_pp.ml @@ -1,16 +1,14 @@ open! Test.Import let path = Filename.concat (Sys.getcwd ()) "for_pp.ml" - let uri = DocumentUri.of_path path let print_hover hover = match hover with | None -> print_endline "no hover response" | Some hover -> - hover |> Hover.yojson_of_t - |> Yojson.Safe.pretty_to_string ~std:false - |> print_endline + hover |> Hover.yojson_of_t |> Yojson.Safe.pretty_to_string ~std:false |> print_endline +;; let hover_req client position = Client.request @@ -20,6 +18,7 @@ let hover_req client position = ; textDocument = TextDocumentIdentifier.create ~uri ; workDoneToken = None }) +;; let%expect_test "with-pp" = let position = Position.create ~line:0 ~character:9 in @@ -31,7 +30,8 @@ let%expect_test "with-pp" = () in let output = - Test.run ~handler @@ fun client -> + Test.run ~handler + @@ fun client -> let run_client () = let capabilities = ClientCapabilities.create () in Client.start client (InitializeParams.create ~capabilities ()) @@ -69,3 +69,4 @@ let%expect_test "with-pp" = "start": { "character": 0, "line": 0 } } }|}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/with_ppx.ml b/ocaml-lsp-server/test/e2e-new/with_ppx.ml index b98a46e0e..8da004358 100644 --- a/ocaml-lsp-server/test/e2e-new/with_ppx.ml +++ b/ocaml-lsp-server/test/e2e-new/with_ppx.ml @@ -1,16 +1,14 @@ open! Test.Import let path = Filename.concat (Sys.getcwd ()) "for_ppx.ml" - let uri = DocumentUri.of_path path let print_hover hover = match hover with | None -> print_endline "no hover response" | Some hover -> - hover |> Hover.yojson_of_t - |> Yojson.Safe.pretty_to_string ~std:false - |> print_endline + hover |> Hover.yojson_of_t |> Yojson.Safe.pretty_to_string ~std:false |> print_endline +;; let hover_req client position = Client.request @@ -20,6 +18,7 @@ let hover_req client position = ; textDocument = TextDocumentIdentifier.create ~uri ; workDoneToken = None }) +;; let%expect_test "with-ppx" = (* We will call 'hover' on the last line of this very file *) @@ -32,16 +31,17 @@ let%expect_test "with-ppx" = | PublishDiagnostics diag -> printfn "Received %i diagnostics" (List.length diag.diagnostics); List.iter diag.diagnostics ~f:(fun (d : Diagnostic.t) -> - match d.message with - | `String m -> print_endline m - | `MarkupContent _ -> assert false); + match d.message with + | `String m -> print_endline m + | `MarkupContent _ -> assert false); Fiber.Ivar.fill diagnostics () | _ -> Fiber.return () in Client.Handler.make ~on_notification () in let output = - Test.run ~handler @@ fun client -> + Test.run ~handler + @@ fun client -> let run_client () = let capabilities = ClientCapabilities.create () in Client.start client (InitializeParams.create ~capabilities ()) @@ -85,3 +85,4 @@ let%expect_test "with-ppx" = } } |xxx}] +;; diff --git a/ocaml-lsp-server/test/e2e-new/workspace_change_config.ml b/ocaml-lsp-server/test/e2e-new/workspace_change_config.ml index 76f38d0f3..90e98d447 100644 --- a/ocaml-lsp-server/test/e2e-new/workspace_change_config.ml +++ b/ocaml-lsp-server/test/e2e-new/workspace_change_config.ml @@ -1,70 +1,54 @@ open Test.Import -let change_config client params = - Client.notification client (ChangeConfiguration params) +let change_config client params = Client.notification client (ChangeConfiguration params) let codelens client textDocument = Client.request client (TextDocumentCodeLens { textDocument; workDoneToken = None; partialResultToken = None }) +;; let%expect_test "disable codelens" = let source = {ocaml| let string = "Hello" |ocaml} in - let req client = let text_document = TextDocumentIdentifier.create ~uri:Helpers.uri in let* () = change_config client (DidChangeConfigurationParams.create - ~settings: - (`Assoc [ ("codelens", `Assoc [ ("enable", `Bool false) ]) ])) + ~settings:(`Assoc [ "codelens", `Assoc [ "enable", `Bool false ] ])) in - let* resp_codelens_disabled = codelens client text_document in - - print_endline - ("CodeLens found: " ^ string_of_int (List.length resp_codelens_disabled)); - + print_endline ("CodeLens found: " ^ string_of_int (List.length resp_codelens_disabled)); Fiber.return () in - Helpers.test source req; [%expect {| CodeLens found: 0 |}] +;; let%expect_test "enable hover extended" = - let source = - {ocaml| + let source = {ocaml| type foo = int option let foo_value : foo = Some 1 -|ocaml} - in - +|ocaml} in let position = Position.create ~line:3 ~character:4 in - let req client = let* resp = Hover_extended.hover client position in - let () = Hover_extended.print_hover resp in - let* () = change_config client (DidChangeConfigurationParams.create - ~settings: - (`Assoc [ ("extendedHover", `Assoc [ ("enable", `Bool true) ]) ])) + ~settings:(`Assoc [ "extendedHover", `Assoc [ "enable", `Bool true ] ])) in - (* The first hover request has verbosity = 0 *) let* _ = Hover_extended.hover client position in - (* The second hover request has verbosity = 1 *) let* resp = Hover_extended.hover client position in - let () = Hover_extended.print_hover resp in Fiber.return () in @@ -85,3 +69,4 @@ let foo_value : foo = Some 1 "start": { "character": 4, "line": 3 } } } |}] +;; diff --git a/ocaml-lsp-server/test/ocaml_lsp_tests.ml b/ocaml-lsp-server/test/ocaml_lsp_tests.ml index 229803a28..7d090c36f 100644 --- a/ocaml-lsp-server/test/ocaml_lsp_tests.ml +++ b/ocaml-lsp-server/test/ocaml_lsp_tests.ml @@ -17,3 +17,4 @@ let%expect_test "eat_message tests" = [%expect {| [PASS] |}]; test "foo bar" "foo Bar" false; [%expect {| [PASS] |}] +;; diff --git a/ocaml-lsp-server/test/position_prefix_tests.ml b/ocaml-lsp-server/test/position_prefix_tests.ml index 2a66e4293..73c6ca8ed 100644 --- a/ocaml-lsp-server/test/position_prefix_tests.ml +++ b/ocaml-lsp-server/test/position_prefix_tests.ml @@ -6,81 +6,96 @@ open Ocaml_lsp_server let prefix_test ?(short_path = false) document position = let document_source = Testing.Merlin_kernel.Msource.make document in - let prefix = - Testing.Compl.prefix_of_position ~short_path document_source position - in + let prefix = Testing.Compl.prefix_of_position ~short_path document_source position in Printf.printf "%s " prefix +;; let%expect_test "varible in labelled pararm" = - prefix_test - "let map = ListLabels.map\n\nlet _ = map ~f:Int.abs\n" - (`Logical (3, 22)); + prefix_test "let map = ListLabels.map\n\nlet _ = map ~f:Int.abs\n" (`Logical (3, 22)); [%expect "Int.abs"] +;; let%expect_test "labelled pararm" = prefix_test "let mem = ListLabels.mem\n\nlet _ = mem ~se" (`Logical (3, 15)); [%expect "~se"] +;; let%expect_test "completion of enum" = prefix_test "match kind with\n| `Va" (`Logical (2, 21)); [%expect "`Va"] +;; let%expect_test "labelled pararm" = prefix_test "let mem = ListLabels.mem\n\nlet _ = mem ~" (`Logical (3, 13)); [%expect "~"] +;; let%expect_test "correctly handle typed hole for code action" = prefix_test "let x = _" (`Logical (1, 9)); [%expect "_"] +;; let%expect_test "complete at infix" = prefix_test "let x = 1|>." (`Logical (1, 11)); [%expect "|>"] +;; let%expect_test "complete at arbitrary position" = prefix_test "Strin.func" (`Logical (1, 5)); [%expect "Strin"] +;; let%expect_test "completion prefix multiple dots test" = prefix_test "[1;2]|>Core.List.ma\n" (`Logical (1, 19)); [%expect "Core.List.ma"] +;; let%expect_test "completion prefix touching infix test" = prefix_test "[1;2]|>List.ma\n" (`Logical (1, 14)); [%expect "List.ma"] +;; let%expect_test "completion prefix dot infix test" = prefix_test "[1;2]|>.List.ma\n" (`Logical (1, 15)); [%expect "List.ma"] +;; let%expect_test "completion against bracket" = prefix_test "(List.ma)\n" (`Logical (1, 8)); [%expect "List.ma"] +;; let%expect_test "completion prefix with space test" = prefix_test "[1;2] |> List.ma\n" (`Logical (1, 16)); [%expect "List.ma"] +;; let%expect_test "short path prefix" = prefix_test ~short_path:true "[1;2] |> Core.List.ma\n" (`Logical (1, 22)); [%expect "ma"] +;; let%expect_test "Space in dot chain" = prefix_test "[1;2] |> Other. Thing.Core .List . ma\n" (`Logical (1, 37)); [%expect "Other.Thing.Core.List.ma"] +;; let%expect_test "newline in dot chain" = prefix_test "[1;2] |> Core.\nList.\nma\n" (`Logical (3, 2)); [%expect "Core.List.ma"] +;; let%expect_test "let%lwt thing" = prefix_test "let%lwt" (`Logical (1, 7)); [%expect "let%lwt"] +;; let%expect_test "let+ thing" = prefix_test "let+" (`Logical (1, 4)); [%expect "let+"] +;; let%expect_test "let+$% thing" = prefix_test "let+$%" (`Logical (1, 6)); [%expect "let+$%"] +;; diff --git a/ocaml-lsp-server/test/run_test_e2e.ml b/ocaml-lsp-server/test/run_test_e2e.ml index baad8b5fe..0fa634773 100644 --- a/ocaml-lsp-server/test/run_test_e2e.ml +++ b/ocaml-lsp-server/test/run_test_e2e.ml @@ -1,7 +1,6 @@ let () = let cmd = - Filename.quote_command - "yarn" - [ "--cwd"; "ocaml-lsp-server/test/e2e"; "test" ] + Filename.quote_command "yarn" [ "--cwd"; "ocaml-lsp-server/test/e2e"; "test" ] in Sys.command cmd |> exit +;;