Skip to content

Commit ccb9e95

Browse files
committedFeb 2, 2022
Add special exception for extension failure
1 parent e61e363 commit ccb9e95

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed
 

‎src/extend/extend_main.ml

+11-2
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,23 @@ module Handshake = struct
104104
prerr_endline "Unexpected value after handshake.";
105105
exit 1
106106

107+
exception Error of string
108+
109+
let () =
110+
Printexc.register_printer (function
111+
| Error msg ->
112+
Some (Printf.sprintf "Extend_main.Handshake.Error %S" msg)
113+
| _ -> None
114+
)
115+
107116
let negotiate_driver ext_name i o =
108117
let magic' = really_input_string i (String.length magic_number) in
109118
if magic' <> magic_number then (
110119
let msg = Printf.sprintf
111120
"Extension %s has incompatible protocol version %S (expected %S)"
112121
ext_name magic' magic_number
113122
in
114-
failwith msg
123+
raise (Error msg)
115124
);
116125
let versions' : versions = input_value i in
117126
let check_v prj name =
@@ -120,7 +129,7 @@ module Handshake = struct
120129
"Extension %s %s has incompatible version %S (expected %S)"
121130
ext_name name (prj versions') (prj versions)
122131
in
123-
failwith msg
132+
raise (Error msg)
124133
in
125134
check_v (fun x -> x.ast_impl_magic_number) "implementation AST";
126135
check_v (fun x -> x.ast_intf_magic_number) "interface AST";

‎src/extend/extend_main.mli

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ module Handshake : sig
2525
cmt_magic_number : string;
2626
}
2727

28+
exception Error of string
29+
2830
val versions : versions
2931

3032
val negotiate_driver : string -> in_channel -> out_channel -> capabilities

0 commit comments

Comments
 (0)
Please sign in to comment.