Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
sexp_conv_error.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
(* Conv_error: Module for Handling Errors during Automated S-expression Conversions *) open StdLabels open Printf open Sexp_conv exception Of_sexp_error = Of_sexp_error (* Errors concerning tuples *) let tuple_of_size_n_expected loc n sexp = of_sexp_error (sprintf "%s_of_sexp: tuple of size %d expected" loc n) sexp (* Errors concerning sum types *) let stag_no_args loc sexp = of_sexp_error (loc ^ "_of_sexp: sum tag does not take arguments") sexp let stag_incorrect_n_args loc tag sexp = let msg = sprintf "%s_of_sexp: sum tag %S has incorrect number of arguments" loc tag in of_sexp_error msg sexp let stag_takes_args loc sexp = of_sexp_error (loc ^ "_of_sexp: sum tag must be a structured value") sexp let nested_list_invalid_sum loc sexp = of_sexp_error (loc ^ "_of_sexp: a nested list is an invalid sum") sexp let empty_list_invalid_sum loc sexp = of_sexp_error (loc ^ "_of_sexp: the empty list is an invalid sum") sexp let unexpected_stag loc sexp = of_sexp_error (loc ^ "_of_sexp: unexpected sum tag") sexp (* Errors concerning records *) let record_sexp_bool_with_payload loc sexp = let msg = loc ^ "_of_sexp: record conversion: a [sexp.bool] field was given a payload." in of_sexp_error msg sexp let record_only_pairs_expected loc sexp = let msg = loc ^ "_of_sexp: record conversion: only pairs expected, \ their first element must be an atom" in of_sexp_error msg sexp let record_superfluous_fields ~what ~loc rev_fld_names sexp = let fld_names_str = String.concat (List.rev rev_fld_names) ~sep:" " in let msg = sprintf "%s_of_sexp: %s: %s" loc what fld_names_str in of_sexp_error msg sexp let record_duplicate_fields loc rev_fld_names sexp = record_superfluous_fields ~what:"duplicate fields" ~loc rev_fld_names sexp let record_extra_fields loc rev_fld_names sexp = record_superfluous_fields ~what:"extra fields" ~loc rev_fld_names sexp let rec record_get_undefined_loop fields = function | [] -> String.concat (List.rev fields) ~sep:" " | (true, field) :: rest -> record_get_undefined_loop (field :: fields) rest | _ :: rest -> record_get_undefined_loop fields rest let record_undefined_elements loc sexp lst = let undefined = record_get_undefined_loop [] lst in let msg = sprintf "%s_of_sexp: the following record elements were undefined: %s" loc undefined in of_sexp_error msg sexp let record_list_instead_atom loc sexp = let msg = loc ^ "_of_sexp: list instead of atom for record expected" in of_sexp_error msg sexp let record_poly_field_value loc sexp = let msg = loc ^ "_of_sexp: cannot convert values of types resulting from polymorphic \ record fields" in of_sexp_error msg sexp (* Errors concerning polymorphic variants *) exception No_variant_match let no_variant_match () = raise No_variant_match let no_matching_variant_found loc sexp = of_sexp_error (loc ^ "_of_sexp: no matching variant found") sexp let ptag_no_args loc sexp = of_sexp_error ( loc ^ "_of_sexp: polymorphic variant does not take arguments") sexp let ptag_incorrect_n_args loc cnstr sexp = let msg = sprintf "%s_of_sexp: polymorphic variant tag %S has incorrect number of arguments" loc cnstr in of_sexp_error msg sexp let ptag_takes_args loc sexp = of_sexp_error (loc ^ "_of_sexp: polymorphic variant tag takes an argument") sexp let nested_list_invalid_poly_var loc sexp = of_sexp_error ( loc ^ "_of_sexp: a nested list is an invalid polymorphic variant") sexp let empty_list_invalid_poly_var loc sexp = of_sexp_error ( loc ^ "_of_sexp: the empty list is an invalid polymorphic variant") sexp let empty_type loc sexp = of_sexp_error (loc ^ "_of_sexp: trying to convert an empty type") sexp