Skip to content

Commit 8461bc3

Browse files
committed
refactor: remove [Stdune.Io]
Signed-off-by: Rudi Grinberg <me@rgrinberg.com> <!-- ps-id: b6e8b645-d9e0-4e56-bd51-78e6a26e8488 --> Signed-off-by: Rudi Grinberg <me@rgrinberg.com>
1 parent 60bf40a commit 8461bc3

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

ocaml-lsp-server/src/dune.ml

+1-4
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,7 @@ module Poll =
112112
| s -> Ok (`Mtime s.st_mtime)
113113
;;
114114

115-
let read_file s =
116-
Fiber.of_thunk (fun () ->
117-
Fiber.return (Result.try_with (fun () -> Io.String_path.read_file s)))
118-
;;
115+
let read_file s = Fiber.of_thunk (fun () -> Fiber.return (Io.read_file s))
119116
end)
120117

121118
type config =

ocaml-lsp-server/src/import.ml

+25-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ include struct
1010
module Table = Table
1111
module Tuple = Tuple
1212
module Unix_env = Env
13-
module Io = Io
1413
module Map = Map
1514
module Monoid = Monoid
1615
module Pid = Pid
@@ -19,6 +18,31 @@ include struct
1918
let sprintf = sprintf
2019
end
2120

21+
module Io = struct
22+
open Base
23+
24+
let read_file f =
25+
Base.Result.try_with (fun () ->
26+
let fd = Unix.openfile f [ O_CLOEXEC; O_RDONLY ] 0 in
27+
Exn.protect
28+
~finally:(fun () -> Unix.close fd)
29+
~f:(fun () ->
30+
match Unix.fstat fd with
31+
| { Unix.st_size; _ } ->
32+
let buf = Bytes.create st_size in
33+
let rec loop pos remains =
34+
if remains > 0
35+
then (
36+
let read = Unix.read fd buf pos remains in
37+
if read = 0
38+
then failwith (sprintf "unable to read all of %s" f)
39+
else loop (pos + read) (remains - read))
40+
in
41+
loop 0 st_size;
42+
Stdlib.Bytes.unsafe_to_string buf))
43+
;;
44+
end
45+
2246
include struct
2347
open Base
2448
module Queue = Queue

ocaml-lsp-server/src/inference.ml

+3-3
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,12 @@ let language_id_of_fname s =
7979
let open_document_from_file (state : State.t) uri =
8080
let filename = Uri.to_path uri in
8181
Fiber.of_thunk (fun () ->
82-
match Io.String_path.read_file filename with
83-
| exception Sys_error _ ->
82+
match Io.read_file filename with
83+
| Error _ ->
8484
Log.log ~section:"debug" (fun () ->
8585
Log.msg "Unable to open file" [ "filename", `String filename ]);
8686
Fiber.return None
87-
| text ->
87+
| Ok text ->
8888
let languageId = language_id_of_fname filename in
8989
let text_document = TextDocumentItem.create ~uri ~languageId ~version:0 ~text in
9090
let params = DidOpenTextDocumentParams.create ~textDocument:text_document in

0 commit comments

Comments
 (0)