summaryrefslogtreecommitdiff
path: root/src/Assumed.ml
diff options
context:
space:
mode:
authorSon Ho2022-05-05 17:46:50 +0200
committerSon Ho2022-05-05 17:46:50 +0200
commit3b34326732183dac2f1e397e649c2b8e1bb74af7 (patch)
tree88867e6774bdff1f47b8e14e399f659dad5ff7c1 /src/Assumed.ml
parentbb94d52be2d0ddb317577dc3cd468754646e4b64 (diff)
Make minor fixes
Diffstat (limited to 'src/Assumed.ml')
-rw-r--r--src/Assumed.ml21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/Assumed.ml b/src/Assumed.ml
index 2cd83db5..b3128b9b 100644
--- a/src/Assumed.ml
+++ b/src/Assumed.ml
@@ -92,6 +92,17 @@ module Sig = struct
output = mk_box_ty tvar_0 (* Box<T> *);
}
+ (** `fn<T>(Box<T>) -> ()` *)
+ let box_free_sig : A.fun_sig =
+ {
+ region_params = [];
+ num_early_bound_regions = 0;
+ regions_hierarchy = [];
+ type_params = [ type_param_0 ] (* <T> *);
+ inputs = [ mk_box_ty tvar_0 (* Box<T> *) ];
+ output = mk_unit_ty (* () *);
+ }
+
(** Helper for `Box::deref_shared` and `Box::deref_mut`.
Returns:
`fn<'a, T>(&'a (mut) Box<T>) -> &'a (mut) T`
@@ -248,6 +259,10 @@ let assumed_infos : assumed_info list =
[
(A.Replace, Sig.mem_replace_sig, false, to_name [ "core"; "mem"; "replace" ]);
(BoxNew, Sig.box_new_sig, false, to_name [ "alloc"; "boxed"; "Box"; "new" ]);
+ ( BoxFree,
+ Sig.box_free_sig,
+ false,
+ to_name [ "alloc"; "boxed"; "Box"; "free" ] );
( BoxDeref,
Sig.box_deref_shared_sig,
false,
@@ -271,7 +286,11 @@ let assumed_infos : assumed_info list =
]
let get_assumed_info (id : A.assumed_fun_id) : assumed_info =
- List.find (fun (id', _, _, _) -> id = id') assumed_infos
+ match List.find_opt (fun (id', _, _, _) -> id = id') assumed_infos with
+ | Some info -> info
+ | None ->
+ raise
+ (Failure ("get_assumed_info: not found: " ^ A.show_assumed_fun_id id))
let get_assumed_sig (id : A.assumed_fun_id) : A.fun_sig =
let _, sg, _, _ = get_assumed_info id in