summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--backends/lean/primitives.lean1
-rw-r--r--compiler/Extract.ml32
-rw-r--r--tests/lean/hashmap_on_disk/Base/Primitives.lean1
-rw-r--r--tests/lean/hashmap_on_disk/HashmapMain/Funs.lean173
4 files changed, 106 insertions, 101 deletions
diff --git a/backends/lean/primitives.lean b/backends/lean/primitives.lean
index 09ece14e..d1d04285 100644
--- a/backends/lean/primitives.lean
+++ b/backends/lean/primitives.lean
@@ -101,6 +101,7 @@ def USize.checked_sub (n: USize) (m: USize): result USize :=
-- TODO: settle the style for usize_sub before we write these
def USize.checked_add (n: USize) (m: USize): result USize := sorry
+def USize.checked_rem (n: USize) (m: USize): result USize := sorry
def USize.checked_mul (n: USize) (m: USize): result USize := sorry
def USize.checked_div (n: USize) (m: USize): result USize := sorry
diff --git a/compiler/Extract.ml b/compiler/Extract.ml
index 44bc5e1c..98a5f41a 100644
--- a/compiler/Extract.ml
+++ b/compiler/Extract.ml
@@ -137,13 +137,13 @@ let keywords () =
in
List.concat [ named_unops; named_binops; misc ]
-let assumed_adts : (assumed_ty * string) list =
+let assumed_adts () : (assumed_ty * string) list =
[
(State, "state");
(Result, "result");
(Error, "error");
(Fuel, "nat");
- (Option, "option");
+ (Option, if !backend = Lean then "Option" else "option");
(Vec, "vec");
]
@@ -180,8 +180,8 @@ let assumed_variants () : (assumed_ty * VariantId.id * string) list =
(Error, error_failure_id, "panic");
(* No Fuel::Zero on purpose *)
(* No Fuel::Succ on purpose *)
- (Option, option_some_id, "@some");
- (Option, option_none_id, "@none");
+ (Option, option_some_id, "some");
+ (Option, option_none_id, "none");
]
let assumed_llbc_functions :
@@ -228,7 +228,7 @@ let assumed_pure_functions (): (pure_assumed_fun_id * string) list =
let names_map_init () : names_map_init =
{
keywords = keywords ();
- assumed_adts;
+ assumed_adts = assumed_adts ();
assumed_structs;
assumed_variants = assumed_variants ();
assumed_llbc_functions;
@@ -1380,6 +1380,9 @@ let extract_global_decl_register_names (ctx : extraction_ctx)
TODO: we don't need something very generic anymore (some definitions used
to be polymorphic).
+
+ TODO: this does roughly the same thing as extract_adt_cons -- make the
+ latter call the former
*)
let extract_adt_g_value
(extract_value : extraction_ctx -> bool -> 'v -> extraction_ctx)
@@ -1696,7 +1699,7 @@ and extract_lets (ctx : extraction_ctx) (fmt : F.formatter) (inside : bool)
(* Open a box for the whole expression *)
F.pp_open_hvbox fmt 0;
(* Open parentheses *)
- if inside then F.pp_print_string fmt "(";
+ if inside && !backend <> Lean then F.pp_print_string fmt "(";
(* Extract the let-bindings *)
let extract_let (ctx : extraction_ctx) (monadic : bool) (lv : typed_pattern)
(re : texpression) : extraction_ctx =
@@ -1728,7 +1731,7 @@ and extract_lets (ctx : extraction_ctx) (fmt : F.formatter) (inside : bool)
F.pp_print_space fmt ();
let ctx = extract_typed_pattern ctx fmt true lv in
F.pp_print_space fmt ();
- let eq = match !backend with FStar -> "=" | Coq -> ":=" | Lean -> "<-" in
+ let eq = match !backend with FStar -> "=" | Coq -> ":=" | Lean -> if monadic then "<-" else ":=" in
F.pp_print_string fmt eq;
F.pp_print_space fmt ();
extract_texpression ctx fmt false re;
@@ -1743,9 +1746,10 @@ and extract_lets (ctx : extraction_ctx) (fmt : F.formatter) (inside : bool)
(* Return *)
ctx
in
+ let exists_monadic = List.exists (fun (m, _, _) -> m) lets in
(* If Lean, we rely on monadic blocks, so we insert a do and open a new box
immediately *)
- if !backend = Lean then begin
+ if !backend = Lean && exists_monadic then begin
F.pp_open_vbox fmt ctx.indent_incr;
F.pp_print_string fmt "do";
F.pp_print_space fmt ();
@@ -1762,10 +1766,10 @@ and extract_lets (ctx : extraction_ctx) (fmt : F.formatter) (inside : bool)
(* Close the box for the next expression *)
F.pp_close_box fmt ();
(* do-box (Lean only) *)
- if !backend = Lean then
+ if !backend = Lean && exists_monadic then
F.pp_close_box fmt ();
(* Close parentheses *)
- if inside then F.pp_print_string fmt ")";
+ if inside && !backend <> Lean then F.pp_print_string fmt ")";
(* Close the box for the whole expression *)
F.pp_close_box fmt ()
@@ -1807,9 +1811,11 @@ and extract_Switch (ctx : extraction_ctx) (fmt : F.formatter) (inside : bool)
F.pp_print_space fmt ();
F.pp_print_string fmt "begin";
F.pp_print_space fmt ()
- | Coq | Lean ->
+ | Coq ->
F.pp_print_string fmt " (";
F.pp_print_cut fmt ()
+ | Lean ->
+ F.pp_print_cut fmt ()
);
(* Print the branch expression *)
extract_texpression ctx fmt false e_branch;
@@ -1819,7 +1825,9 @@ and extract_Switch (ctx : extraction_ctx) (fmt : F.formatter) (inside : bool)
| FStar ->
F.pp_print_space fmt ();
F.pp_print_string fmt "end"
- | Coq | Lean -> F.pp_print_string fmt ")");
+ | Coq -> F.pp_print_string fmt ")"
+ | Lean -> ()
+ );
(* Close the box for the branch *)
if not parenth then F.pp_close_box fmt ();
(* Close the box for the then/else+branch *)
diff --git a/tests/lean/hashmap_on_disk/Base/Primitives.lean b/tests/lean/hashmap_on_disk/Base/Primitives.lean
index 09ece14e..d1d04285 100644
--- a/tests/lean/hashmap_on_disk/Base/Primitives.lean
+++ b/tests/lean/hashmap_on_disk/Base/Primitives.lean
@@ -101,6 +101,7 @@ def USize.checked_sub (n: USize) (m: USize): result USize :=
-- TODO: settle the style for usize_sub before we write these
def USize.checked_add (n: USize) (m: USize): result USize := sorry
+def USize.checked_rem (n: USize) (m: USize): result USize := sorry
def USize.checked_mul (n: USize) (m: USize): result USize := sorry
def USize.checked_div (n: USize) (m: USize): result USize := sorry
diff --git a/tests/lean/hashmap_on_disk/HashmapMain/Funs.lean b/tests/lean/hashmap_on_disk/HashmapMain/Funs.lean
index 6ef0df22..260c4254 100644
--- a/tests/lean/hashmap_on_disk/HashmapMain/Funs.lean
+++ b/tests/lean/hashmap_on_disk/HashmapMain/Funs.lean
@@ -13,12 +13,12 @@ def hashmap_hash_map_allocate_slots_loop_fwd
result (vec (hashmap_list_t T))
:=
if n > (USize.ofNatCore 0 (by intlit))
- then (
+ then
do
let slots0 <-
vec_push_back (hashmap_list_t T) slots hashmap_list_t.HashmapListNil
let n0 <- USize.checked_sub n (USize.ofNatCore 1 (by intlit))
- hashmap_hash_map_allocate_slots_loop_fwd T slots0 n0)
+ hashmap_hash_map_allocate_slots_loop_fwd T slots0 n0
else result.ret slots
/- [hashmap_main::hashmap::HashMap::{0}::allocate_slots] -/
@@ -35,7 +35,7 @@ def hashmap_hash_map_new_with_capacity_fwd
result (hashmap_hash_map_t T)
:=
do
- let v <- vec_new (hashmap_list_t T)
+ let v := vec_new (hashmap_list_t T)
let slots <- hashmap_hash_map_allocate_slots_fwd T v capacity
let i <- USize.checked_mul capacity max_load_dividend
let i0 <- USize.checked_div i max_load_divisor
@@ -52,17 +52,16 @@ def hashmap_hash_map_clear_slots_loop_fwd_back
(T : Type) (slots : vec (hashmap_list_t T)) (i : USize) :
result (vec (hashmap_list_t T))
:=
- do
- let i0 <- vec_len (hashmap_list_t T) slots
- if i < i0
- then (
- do
- let i1 <- USize.checked_add i (USize.ofNatCore 1 (by intlit))
- let slots0 <-
- vec_index_mut_back (hashmap_list_t T) slots i
- hashmap_list_t.HashmapListNil
- hashmap_hash_map_clear_slots_loop_fwd_back T slots0 i1)
- else result.ret slots
+ let i0 := vec_len (hashmap_list_t T) slots
+ if i < i0
+ then
+ do
+ let i1 <- USize.checked_add i (USize.ofNatCore 1 (by intlit))
+ let slots0 <-
+ vec_index_mut_back (hashmap_list_t T) slots i
+ hashmap_list_t.HashmapListNil
+ hashmap_hash_map_clear_slots_loop_fwd_back T slots0 i1
+ else result.ret slots
/- [hashmap_main::hashmap::HashMap::{0}::clear_slots] -/
def hashmap_hash_map_clear_slots_fwd_back
@@ -111,14 +110,13 @@ def hashmap_hash_map_insert_in_list_loop_back
| hashmap_list_t.HashmapListCons ckey cvalue tl =>
if ckey = key
then result.ret (hashmap_list_t.HashmapListCons ckey value tl)
- else (
+ else
do
let l <- hashmap_hash_map_insert_in_list_loop_back T key value tl
- result.ret (hashmap_list_t.HashmapListCons ckey cvalue l))
+ result.ret (hashmap_list_t.HashmapListCons ckey cvalue l)
| hashmap_list_t.HashmapListNil =>
- do
- let l <- hashmap_list_t.HashmapListNil
- result.ret (hashmap_list_t.HashmapListCons key value l)
+ let l := hashmap_list_t.HashmapListNil
+ result.ret (hashmap_list_t.HashmapListCons key value l)
/- [hashmap_main::hashmap::HashMap::{0}::insert_in_list] -/
@@ -135,13 +133,13 @@ def hashmap_hash_map_insert_no_resize_fwd_back
:=
do
let hash <- hashmap_hash_key_fwd key
- let i <- vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
+ let i := vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
let hash_mod <- USize.checked_rem hash i
let l <-
vec_index_mut_fwd (hashmap_list_t T) self.hashmap_hash_map_slots hash_mod
let inserted <- hashmap_hash_map_insert_in_list_fwd T key value l
if inserted
- then (
+ then
do
let i0 <- USize.checked_add self.hashmap_hash_map_num_entries
(USize.ofNatCore 1 (by intlit))
@@ -151,8 +149,8 @@ def hashmap_hash_map_insert_no_resize_fwd_back
hash_mod l0
result.ret (mkhashmap_hash_map_t i0
self.hashmap_hash_map_max_load_factor self.hashmap_hash_map_max_load
- v))
- else (
+ v)
+ else
do
let l0 <- hashmap_hash_map_insert_in_list_back T key value l
let v <-
@@ -160,7 +158,7 @@ def hashmap_hash_map_insert_no_resize_fwd_back
hash_mod l0
result.ret (mkhashmap_hash_map_t self.hashmap_hash_map_num_entries
self.hashmap_hash_map_max_load_factor self.hashmap_hash_map_max_load
- v))
+ v)
/- [core::num::u32::{9}::MAX] -/
def core_num_u32_max_body : result UInt32 :=
@@ -193,22 +191,21 @@ def hashmap_hash_map_move_elements_loop_fwd_back
(i : USize) :
result ((hashmap_hash_map_t T) × (vec (hashmap_list_t T)))
:=
- do
- let i0 <- vec_len (hashmap_list_t T) slots
- if i < i0
- then (
- do
- let l <- vec_index_mut_fwd (hashmap_list_t T) slots i
- let ls <-
- mem_replace_fwd (hashmap_list_t T) l hashmap_list_t.HashmapListNil
- let ntable0 <-
- hashmap_hash_map_move_elements_from_list_fwd_back T ntable ls
- let i1 <- USize.checked_add i (USize.ofNatCore 1 (by intlit))
- let l0 <-
- mem_replace_back (hashmap_list_t T) l hashmap_list_t.HashmapListNil
- let slots0 <- vec_index_mut_back (hashmap_list_t T) slots i l0
- hashmap_hash_map_move_elements_loop_fwd_back T ntable0 slots0 i1)
- else result.ret (ntable, slots)
+ let i0 := vec_len (hashmap_list_t T) slots
+ if i < i0
+ then
+ do
+ let l <- vec_index_mut_fwd (hashmap_list_t T) slots i
+ let ls :=
+ mem_replace_fwd (hashmap_list_t T) l hashmap_list_t.HashmapListNil
+ let ntable0 <-
+ hashmap_hash_map_move_elements_from_list_fwd_back T ntable ls
+ let i1 <- USize.checked_add i (USize.ofNatCore 1 (by intlit))
+ let l0 :=
+ mem_replace_back (hashmap_list_t T) l hashmap_list_t.HashmapListNil
+ let slots0 <- vec_index_mut_back (hashmap_list_t T) slots i l0
+ hashmap_hash_map_move_elements_loop_fwd_back T ntable0 slots0 i1
+ else result.ret (ntable, slots)
/- [hashmap_main::hashmap::HashMap::{0}::move_elements] -/
def hashmap_hash_map_move_elements_fwd_back
@@ -223,12 +220,12 @@ def hashmap_hash_map_try_resize_fwd_back
(T : Type) (self : hashmap_hash_map_t T) : result (hashmap_hash_map_t T) :=
do
let max_usize <- scalar_cast U32 Usize core_num_u32_max_c
- let capacity <- vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
+ let capacity := vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
let n1 <- USize.checked_div max_usize (USize.ofNatCore 2 (by intlit))
- let (i, i0) <- self.hashmap_hash_map_max_load_factor
+ let (i, i0) := self.hashmap_hash_map_max_load_factor
let i1 <- USize.checked_div n1 i
if capacity <= i1
- then (
+ then
do
let i2 <- USize.checked_mul capacity (USize.ofNatCore 2 (by intlit))
let ntable <- hashmap_hash_map_new_with_capacity_fwd T i2 i i0
@@ -236,7 +233,7 @@ def hashmap_hash_map_try_resize_fwd_back
hashmap_hash_map_move_elements_fwd_back T ntable
self.hashmap_hash_map_slots (USize.ofNatCore 0 (by intlit))
result.ret (mkhashmap_hash_map_t self.hashmap_hash_map_num_entries (i,
- i0) ntable0.hashmap_hash_map_max_load ntable0.hashmap_hash_map_slots))
+ i0) ntable0.hashmap_hash_map_max_load ntable0.hashmap_hash_map_slots)
else
result.ret (mkhashmap_hash_map_t self.hashmap_hash_map_num_entries (i,
i0) self.hashmap_hash_map_max_load self.hashmap_hash_map_slots)
@@ -274,7 +271,7 @@ def hashmap_hash_map_contains_key_fwd
(T : Type) (self : hashmap_hash_map_t T) (key : USize) : result Bool :=
do
let hash <- hashmap_hash_key_fwd key
- let i <- vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
+ let i := vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
let hash_mod <- USize.checked_rem hash i
let l <-
vec_index_fwd (hashmap_list_t T) self.hashmap_hash_map_slots hash_mod
@@ -301,7 +298,7 @@ def hashmap_hash_map_get_fwd
(T : Type) (self : hashmap_hash_map_t T) (key : USize) : result T :=
do
let hash <- hashmap_hash_key_fwd key
- let i <- vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
+ let i := vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
let hash_mod <- USize.checked_rem hash i
let l <-
vec_index_fwd (hashmap_list_t T) self.hashmap_hash_map_slots hash_mod
@@ -332,10 +329,10 @@ def hashmap_hash_map_get_mut_in_list_loop_back
| hashmap_list_t.HashmapListCons ckey cvalue tl =>
if ckey = key
then result.ret (hashmap_list_t.HashmapListCons ckey ret0 tl)
- else (
+ else
do
let l <- hashmap_hash_map_get_mut_in_list_loop_back T tl key ret0
- result.ret (hashmap_list_t.HashmapListCons ckey cvalue l))
+ result.ret (hashmap_list_t.HashmapListCons ckey cvalue l)
| hashmap_list_t.HashmapListNil => result.fail error.panic
@@ -351,7 +348,7 @@ def hashmap_hash_map_get_mut_fwd
(T : Type) (self : hashmap_hash_map_t T) (key : USize) : result T :=
do
let hash <- hashmap_hash_key_fwd key
- let i <- vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
+ let i := vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
let hash_mod <- USize.checked_rem hash i
let l <-
vec_index_mut_fwd (hashmap_list_t T) self.hashmap_hash_map_slots hash_mod
@@ -364,7 +361,7 @@ def hashmap_hash_map_get_mut_back
:=
do
let hash <- hashmap_hash_key_fwd key
- let i <- vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
+ let i := vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
let hash_mod <- USize.checked_rem hash i
let l <-
vec_index_mut_fwd (hashmap_list_t T) self.hashmap_hash_map_slots hash_mod
@@ -377,27 +374,26 @@ def hashmap_hash_map_get_mut_back
/- [hashmap_main::hashmap::HashMap::{0}::remove_from_list] -/
def hashmap_hash_map_remove_from_list_loop_fwd
- (T : Type) (key : USize) (ls : hashmap_list_t T) : result (option T) :=
+ (T : Type) (key : USize) (ls : hashmap_list_t T) : result (Option T) :=
match ls with
| hashmap_list_t.HashmapListCons ckey t tl =>
if ckey = key
then
- do
- let mv_ls <-
- mem_replace_fwd (hashmap_list_t T) (hashmap_list_t.HashmapListCons
- ckey t tl) hashmap_list_t.HashmapListNil
- match mv_ls with
- | hashmap_list_t.HashmapListCons i cvalue tl0 =>
- result.ret (option.@some cvalue)
- | hashmap_list_t.HashmapListNil => result.fail error.panic
-
+ let mv_ls :=
+ mem_replace_fwd (hashmap_list_t T) (hashmap_list_t.HashmapListCons ckey
+ t tl) hashmap_list_t.HashmapListNil
+ match mv_ls with
+ | hashmap_list_t.HashmapListCons i cvalue tl0 =>
+ result.ret (Option.some cvalue)
+ | hashmap_list_t.HashmapListNil => result.fail error.panic
+
else hashmap_hash_map_remove_from_list_loop_fwd T key tl
- | hashmap_list_t.HashmapListNil => result.ret option.@none
+ | hashmap_list_t.HashmapListNil => result.ret Option.none
/- [hashmap_main::hashmap::HashMap::{0}::remove_from_list] -/
def hashmap_hash_map_remove_from_list_fwd
- (T : Type) (key : USize) (ls : hashmap_list_t T) : result (option T) :=
+ (T : Type) (key : USize) (ls : hashmap_list_t T) : result (Option T) :=
hashmap_hash_map_remove_from_list_loop_fwd T key ls
/- [hashmap_main::hashmap::HashMap::{0}::remove_from_list] -/
@@ -409,18 +405,17 @@ def hashmap_hash_map_remove_from_list_loop_back
| hashmap_list_t.HashmapListCons ckey t tl =>
if ckey = key
then
- do
- let mv_ls <-
- mem_replace_fwd (hashmap_list_t T) (hashmap_list_t.HashmapListCons
- ckey t tl) hashmap_list_t.HashmapListNil
- match mv_ls with
- | hashmap_list_t.HashmapListCons i cvalue tl0 => result.ret tl0
- | hashmap_list_t.HashmapListNil => result.fail error.panic
-
- else (
+ let mv_ls :=
+ mem_replace_fwd (hashmap_list_t T) (hashmap_list_t.HashmapListCons ckey
+ t tl) hashmap_list_t.HashmapListNil
+ match mv_ls with
+ | hashmap_list_t.HashmapListCons i cvalue tl0 => result.ret tl0
+ | hashmap_list_t.HashmapListNil => result.fail error.panic
+
+ else
do
let l <- hashmap_hash_map_remove_from_list_loop_back T key tl
- result.ret (hashmap_list_t.HashmapListCons ckey t l))
+ result.ret (hashmap_list_t.HashmapListCons ckey t l)
| hashmap_list_t.HashmapListNil => result.ret hashmap_list_t.HashmapListNil
@@ -433,21 +428,21 @@ def hashmap_hash_map_remove_from_list_back
/- [hashmap_main::hashmap::HashMap::{0}::remove] -/
def hashmap_hash_map_remove_fwd
- (T : Type) (self : hashmap_hash_map_t T) (key : USize) : result (option T) :=
+ (T : Type) (self : hashmap_hash_map_t T) (key : USize) : result (Option T) :=
do
let hash <- hashmap_hash_key_fwd key
- let i <- vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
+ let i := vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
let hash_mod <- USize.checked_rem hash i
let l <-
vec_index_mut_fwd (hashmap_list_t T) self.hashmap_hash_map_slots hash_mod
let x <- hashmap_hash_map_remove_from_list_fwd T key l
match x with
- | option.@none => result.ret option.@none
- | option.@some x0 =>
+ | Option.none => result.ret Option.none
+ | Option.some x0 =>
do
let _ <- USize.checked_sub self.hashmap_hash_map_num_entries
(USize.ofNatCore 1 (by intlit))
- result.ret (option.@some x0)
+ result.ret (Option.some x0)
/- [hashmap_main::hashmap::HashMap::{0}::remove] -/
@@ -457,13 +452,13 @@ def hashmap_hash_map_remove_back
:=
do
let hash <- hashmap_hash_key_fwd key
- let i <- vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
+ let i := vec_len (hashmap_list_t T) self.hashmap_hash_map_slots
let hash_mod <- USize.checked_rem hash i
let l <-
vec_index_mut_fwd (hashmap_list_t T) self.hashmap_hash_map_slots hash_mod
let x <- hashmap_hash_map_remove_from_list_fwd T key l
match x with
- | option.@none =>
+ | Option.none =>
do
let l0 <- hashmap_hash_map_remove_from_list_back T key l
let v <-
@@ -472,7 +467,7 @@ def hashmap_hash_map_remove_back
result.ret (mkhashmap_hash_map_t self.hashmap_hash_map_num_entries
self.hashmap_hash_map_max_load_factor self.hashmap_hash_map_max_load
v)
- | option.@some x0 =>
+ | Option.some x0 =>
do
let i0 <- USize.checked_sub self.hashmap_hash_map_num_entries
(USize.ofNatCore 1 (by intlit))
@@ -505,7 +500,7 @@ def hashmap_test1_fwd : result Unit :=
hashmap_hash_map_get_fwd UInt64 hm3 (USize.ofNatCore 128 (by intlit))
if not (i = (UInt64.ofNatCore 18 (by intlit)))
then result.fail error.panic
- else (
+ else
do
let hm4 <-
hashmap_hash_map_get_mut_back UInt64 hm3
@@ -516,17 +511,17 @@ def hashmap_test1_fwd : result Unit :=
(USize.ofNatCore 1024 (by intlit))
if not (i0 = (UInt64.ofNatCore 56 (by intlit)))
then result.fail error.panic
- else (
+ else
do
let x <-
hashmap_hash_map_remove_fwd UInt64 hm4
(USize.ofNatCore 1024 (by intlit))
match x with
- | option.@none => result.fail error.panic
- | option.@some x0 =>
+ | Option.none => result.fail error.panic
+ | Option.some x0 =>
if not (x0 = (UInt64.ofNatCore 56 (by intlit)))
then result.fail error.panic
- else (
+ else
do
let hm5 <-
hashmap_hash_map_remove_back UInt64 hm4
@@ -536,22 +531,22 @@ def hashmap_test1_fwd : result Unit :=
(USize.ofNatCore 0 (by intlit))
if not (i1 = (UInt64.ofNatCore 42 (by intlit)))
then result.fail error.panic
- else (
+ else
do
let i2 <-
hashmap_hash_map_get_fwd UInt64 hm5
(USize.ofNatCore 128 (by intlit))
if not (i2 = (UInt64.ofNatCore 18 (by intlit)))
then result.fail error.panic
- else (
+ else
do
let i3 <-
hashmap_hash_map_get_fwd UInt64 hm5
(USize.ofNatCore 1056 (by intlit))
if not (i3 = (UInt64.ofNatCore 256 (by intlit)))
then result.fail error.panic
- else result.ret ())))
- ))
+ else result.ret ()
+
/- Unit test for [hashmap_main::hashmap::test1] -/
#assert (hashmap_test1_fwd = ret ())