package forester
Source file Lsp_shims.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42(* * SPDX-FileCopyrightText: 2024 The Forester Project Contributors AND The RedPRL Development Team * * SPDX-License-Identifier: GPL-3.0-or-later OR Apache-2.0 WITH LLVM-exception * *) open struct module L = Lsp.Types end module Loc = struct let lsp_pos_of_pos (pos : Asai.Range.position) = L.Position.create ~line: (pos.line_num - 1) ~character: (pos.offset - pos.start_of_line) let lsp_range_of_range (r : Asai.Range.t option) = match r with | Some r -> let (start, stop) = match Asai.Range.view r with | `Range (start, stop) -> start, stop | `End_of_file pos -> pos, pos in L.Range.create ~start: (lsp_pos_of_pos start) ~end_: (lsp_pos_of_pos stop) | None -> (* When we have a message without a location, we set it's location to the start of the file, as we don't have any better choices. *) let start_of_file = L.Position.create ~line: 0 ~character: 0 in L.Range.create ~start: start_of_file ~end_: start_of_file end module Diagnostic = struct let lsp_severity_of_severity : Asai.Diagnostic.severity -> L.DiagnosticSeverity.t = function | Hint -> Hint | Info -> Information | Warning -> Warning | Error -> Error | Bug -> Error end