summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorZyad Hassan2024-04-03 18:59:58 -0700
committerZyad Hassan2024-04-03 18:59:58 -0700
commit44065f447dc3a2f4b1441b97b9687d1c1b85afbf (patch)
tree3286ef009fa47f78e3a5e0295b3de3022fd4bac5 /compiler
parentebf2ba2fda2a5f8e0a63f4cb6761291c9b501fab (diff)
Add builtins for some checked ops such as checked_add
Diffstat (limited to '')
-rw-r--r--compiler/ExtractBuiltin.ml31
1 files changed, 31 insertions, 0 deletions
diff --git a/compiler/ExtractBuiltin.ml b/compiler/ExtractBuiltin.ml
index 401d0137..a2983573 100644
--- a/compiler/ExtractBuiltin.ml
+++ b/compiler/ExtractBuiltin.ml
@@ -240,6 +240,27 @@ let builtin_funs () : (pattern * bool list option * builtin_fun_info) list =
let f = { extract_name = basename } in
(rust_name, filter, f)
in
+ let mk_scalar_fun (rust_name_prefix : string) (rust_name_suffix : string)
+ (extract_name : string option) (filter : bool list option) :
+ (pattern * bool list option * builtin_fun_info) list =
+ List.map
+ (fun ty ->
+ mk_fun (rust_name_prefix ^ ty ^ rust_name_suffix) extract_name filter)
+ [
+ "usize";
+ "u8";
+ "u16";
+ "u32";
+ "u64";
+ "u128";
+ "isize";
+ "i8";
+ "i16";
+ "i32";
+ "i64";
+ "i128";
+ ]
+ in
[
mk_fun "core::mem::replace" None None;
mk_fun "core::slice::{[@T]}::len"
@@ -325,6 +346,16 @@ let builtin_funs () : (pattern * bool list option * builtin_fun_info) list =
[@T]>}::index_mut"
(Some "core_slice_index_Slice_index_mut") None;
]
+ @ mk_scalar_fun "core::num::{" "}::checked_add" (Some "core.num.checked_add")
+ None
+ @ mk_scalar_fun "core::num::{" "}::checked_sub" (Some "core.num.checked_sub")
+ None
+ @ mk_scalar_fun "core::num::{" "}::checked_mul" (Some "core.num.checked_mul")
+ None
+ @ mk_scalar_fun "core::num::{" "}::checked_div" (Some "core.num.checked_div")
+ None
+ @ mk_scalar_fun "core::num::{" "}::checked_rem" (Some "core.num.checked_rem")
+ None
let mk_builtin_funs_map () =
let m =