diff --git a/generator/tests/jsref/JsInterpreter.ml b/generator/tests/jsref/JsInterpreter.ml index 554f3af514bf8a6abb87847b1d7ad607fac0716e..d60673e7d3cfcf4550d2246dae36210eb985a6c8 100644 --- a/generator/tests/jsref/JsInterpreter.ml +++ b/generator/tests/jsref/JsInterpreter.ml @@ -321,11 +321,11 @@ let run_object_heap_set_extensible b s l = let rec object_has_prop s c l x = if_some (run_object_method object_has_prop_ s l) (fun b -> match b with Coq_builtin_has_prop_default -> - if_spec (run_object_get_prop s c l x) (fun s1 d -> + let%run (s1, d) = (run_object_get_prop s c l x) in res_ter s1 (res_val (Coq_value_prim (Coq_prim_bool (not_decidable - (full_descriptor_comparable d Coq_full_descriptor_undef))))))) + (full_descriptor_comparable d Coq_full_descriptor_undef)))))) (** val object_get_builtin : state -> execution_ctx -> builtin_get -> value -> object_loc @@ -333,7 +333,7 @@ let rec object_has_prop s c l x = and object_get_builtin s c b vthis l x = let_binding (fun s0 l0 -> - if_spec (run_object_get_prop s0 c l0 x) (fun s1 d -> + let%run (s1, d) = (run_object_get_prop s0 c l0 x) in match d with | Coq_full_descriptor_undef -> res_ter s1 (res_val (Coq_value_prim Coq_prim_undef)) @@ -351,7 +351,7 @@ and object_get_builtin s c b vthis l x = | Coq_prim_bool b0 -> Coq_result_impossible | Coq_prim_number n -> Coq_result_impossible | Coq_prim_string s2 -> Coq_result_impossible) - | Coq_value_object lf -> run_call s1 c lf vthis [])))) + | Coq_value_object lf -> run_call s1 c lf vthis []))) (fun def -> let_binding (fun s0 -> if_value (def s0 l) (fun s_2 v -> @@ -364,12 +364,12 @@ and object_get_builtin s c b vthis l x = | Coq_builtin_get_args_obj -> if_some (run_object_method object_parameter_map_ s l) (fun lmapo -> if_some (lmapo) (fun lmap -> - if_spec (run_object_get_own_prop s c lmap x) - (fun s0 d -> + let%run + (s0, d) = (run_object_get_own_prop s c lmap x) in match d with | Coq_full_descriptor_undef -> function0 s0 | Coq_full_descriptor_some a -> - run_object_get s0 c lmap x))))) + run_object_get s0 c lmap x)))) (** val run_object_get : state -> execution_ctx -> object_loc -> prop_name -> result **) @@ -385,7 +385,7 @@ and run_object_get s c l x = and run_object_get_prop s c l x = if_some (run_object_method object_get_prop_ s l) (fun b -> match b with Coq_builtin_get_prop_default -> - if_spec (run_object_get_own_prop s c l x) (fun s1 d -> + let%run (s1, d) = (run_object_get_own_prop s c l x) in if full_descriptor_comparable d Coq_full_descriptor_undef then if_some (run_object_method object_proto_ s1 l) (fun proto -> match proto with @@ -398,7 +398,7 @@ and run_object_get_prop s c l x = ("Found a non-null primitive value as a prototype in [run_object_get_prop].")) | Coq_value_object lproto -> run_object_get_prop s1 c lproto x) - else res_spec s1 d)) + else res_spec s1 d) (** val object_proto_is_prototype_of : state -> object_loc -> object_loc -> result **) @@ -515,7 +515,7 @@ and to_string s c _foo_ = match _foo_ with and object_can_put s c l x = if_some (run_object_method object_can_put_ s l) (fun b -> match b with Coq_builtin_can_put_default -> - if_spec (run_object_get_own_prop s c l x) (fun s1 d -> + let%run (s1, d) = (run_object_get_own_prop s c l x) in match d with | Coq_full_descriptor_undef -> if_some (run_object_method object_proto_ s1 l) (fun vproto -> @@ -530,7 +530,7 @@ and object_can_put s c l x = s1 ("Non-null primitive get as a prototype value in [object_can_put].")) | Coq_value_object lproto -> - if_spec (run_object_get_prop s1 c lproto x) (fun s2 d_2 -> + let%run (s2, d_2) = (run_object_get_prop s1 c lproto x) in match d_2 with | Coq_full_descriptor_undef -> if_some (run_object_method object_extensible_ s2 l) @@ -551,7 +551,7 @@ and object_can_put s c l x = (res_val (Coq_value_prim (Coq_prim_bool (not_decidable (value_comparable aa.attributes_accessor_set - (Coq_value_prim Coq_prim_undef))))))))) + (Coq_value_prim Coq_prim_undef)))))))) | Coq_full_descriptor_some a -> (match a with | Coq_attributes_data_of ad -> @@ -563,7 +563,7 @@ and object_can_put s c l x = (res_val (Coq_value_prim (Coq_prim_bool (not_decidable (value_comparable aa.attributes_accessor_set (Coq_value_prim - Coq_prim_undef))))))))) + Coq_prim_undef)))))))) (** val run_object_define_own_prop_array_loop : state -> execution_ctx -> object_loc -> float -> float -> @@ -611,7 +611,7 @@ and object_define_own_prop s c l x desc throwcont = out_error_or_cst s0 throwcont0 Coq_native_error_type (Coq_value_prim (Coq_prim_bool false))) (fun reject -> let_binding (fun s0 x0 desc0 throwcont0 -> - if_spec (run_object_get_own_prop s0 c l x0) (fun s1 d -> + let%run (s1, d) = (run_object_get_own_prop s0 c l x0) in if_some (run_object_method object_extensible_ s1 l) (fun ext -> match d with | Coq_full_descriptor_undef -> @@ -697,15 +697,15 @@ and object_define_own_prop s c l x desc throwcont = s1 a) else (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) s0 - ("cases are mutually exclusives in [defineOwnProperty]"))))) + ("cases are mutually exclusives in [defineOwnProperty]")))) (fun def -> if_some (run_object_method object_define_own_prop_ s l) (fun b -> match b with | Coq_builtin_define_own_prop_default -> def s x desc throwcont | Coq_builtin_define_own_prop_array -> - if_spec - (run_object_get_own_prop s c l - ("length")) (fun s0 d -> + let%run + (s0, d) = (run_object_get_own_prop s c l + ("length")) in begin match d with | Coq_full_descriptor_undef -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) @@ -725,8 +725,8 @@ and object_define_own_prop s c l x desc throwcont = ("length") then (match descValueOpt with | Some descValue -> - if_spec (to_uint32 s0 c descValue) - (fun s1 newLen -> + let%run + (s1, newLen) = (to_uint32 s0 c descValue) in if_number (to_number s1 c descValue) (fun s2 newLenN -> if not_decidable @@ -786,24 +786,24 @@ and object_define_own_prop s c l x desc throwcont = newLenDesc0 newWritable throwcont - def)))))) + def))))) | None -> def s0 ("length") desc throwcont) - else if_spec - (to_uint32 s0 c (Coq_value_prim - (Coq_prim_string x))) (fun s1 ilen -> + else let%run + (s1, ilen) = (to_uint32 s0 c (Coq_value_prim + (Coq_prim_string x))) in if_string (to_string s1 c (Coq_value_prim (Coq_prim_number (of_int ilen)))) (fun s2 slen -> if and_decidable (string_comparable x slen) (not_decidable ( ilen = 4294967295.)) - then if_spec - (to_uint32 s2 c + then let%run + (s3, index) = (to_uint32 s2 c (Coq_value_prim (Coq_prim_string - x))) (fun s3 index -> + x))) in if and_decidable (le_int_decidable oldLen0 index) @@ -836,8 +836,8 @@ and object_define_own_prop s c l x desc throwcont = (res_val (Coq_value_prim (Coq_prim_bool - true))))) - else def s2 x desc throwcont)))) + true)))) + else def s2 x desc throwcont))) | Coq_value_object l0 -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) s0 @@ -845,12 +845,13 @@ and object_define_own_prop s c l x desc throwcont = | Coq_attributes_accessor_of a -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) s0 - ("Array length property descriptor cannot be accessor."))) + ("Array length property descriptor cannot be accessor.")) + end | Coq_builtin_define_own_prop_args_obj -> if_some (run_object_method object_parameter_map_ s l) (fun lmapo -> if_some (lmapo) (fun lmap -> - if_spec (run_object_get_own_prop s c lmap x) - (fun s0 d -> + let%run + (s0, d) = (run_object_get_own_prop s c lmap x) in if_bool (def s0 x desc false) (fun s1 b0 -> if b0 then let_binding (fun s2 -> @@ -878,7 +879,7 @@ and object_define_own_prop s c l x desc throwcont = (object_put s1 c lmap x v throwcont) (fun s2 -> follow0 s2) | None -> follow0 s1)) - else reject s1 throwcont))))))) + else reject s1 throwcont)))))) (** val run_to_descriptor : state -> execution_ctx -> value -> descriptor specres **) @@ -891,12 +892,12 @@ and run_to_descriptor s c _foo_ = match _foo_ with if neg has then k s1 desc else if_value (run_object_get s1 c l name) (fun s2 v0 -> - if_spec (conv s2 v0 desc) (fun s3 r -> k s3 r))) + let%run (s3, r) = (conv s2 v0 desc) in k s3 r)) (*let%bool (s1,has) = object_has_prop s0 c l name in if neg has then k s1 desc else let%value (s2,v0) = run_object_get s1 c l name in - let%spec (s3,r) = conv s2 v0 desc in + let%run (s3,r) = conv s2 v0 desc in k s3 r))*) in sub0 s descriptor_intro_empty @@ -1062,7 +1063,7 @@ and lexical_env_get_identifier_ref s c x x0 str = strictness_flag -> result **) and object_delete_default s c l x str = - if_spec (run_object_get_own_prop s c l x) (fun s1 d -> + let%run (s1, d) = (run_object_get_own_prop s c l x) in match d with | Coq_full_descriptor_undef -> res_ter s1 (res_val (Coq_value_prim (Coq_prim_bool true))) @@ -1073,7 +1074,7 @@ and object_delete_default s c l x str = Heap.rem string_comparable p x)) (fun s_2 -> res_ter s_2 (res_val (Coq_value_prim (Coq_prim_bool true)))) else out_error_or_cst s1 str Coq_native_error_type (Coq_value_prim - (Coq_prim_bool false))) + (Coq_prim_bool false)) (** val object_delete : state -> execution_ctx -> object_loc -> prop_name -> @@ -1086,7 +1087,7 @@ and object_delete s c l x str = | Coq_builtin_delete_args_obj -> if_some (run_object_method object_parameter_map_ s l) (fun mo -> if_some (mo) (fun m -> - if_spec (run_object_get_own_prop s c m x) (fun s1 d -> + let%run (s1, d) = (run_object_get_own_prop s c m x) in if_bool (object_delete_default s1 c l x str) (fun s2 b0 -> if b0 then (match d with @@ -1098,7 +1099,7 @@ and object_delete s c l x str = (fun s3 b_2 -> res_ter s3 (res_val (Coq_value_prim (Coq_prim_bool b0))))) - else res_ter s2 (res_val (Coq_value_prim (Coq_prim_bool b0)))))))) + else res_ter s2 (res_val (Coq_value_prim (Coq_prim_bool b0))))))) (** val env_record_delete_binding : state -> execution_ctx -> env_loc -> prop_name -> result **) @@ -1255,9 +1256,9 @@ and object_put_complete b s c vthis l x v str = match b with Coq_builtin_put_default -> if_bool (object_can_put s c l x) (fun s1 b0 -> if b0 - then if_spec (run_object_get_own_prop s1 c l x) (fun s2 d -> + then let%run (s2, d) = (run_object_get_own_prop s1 c l x) in let_binding (fun x0 -> - if_spec (run_object_get_prop s2 c l x) (fun s3 d_2 -> + let%run (s3, d_2) = (run_object_get_prop s2 c l x) in let_binding (fun x1 -> match vthis with | Coq_value_prim wthis -> @@ -1282,7 +1283,7 @@ and object_put_complete b s c vthis l x v str = | Coq_value_object lfsetter -> if_success (run_call s3 c lfsetter vthis - (v :: [])) (fun s4 rv -> res_void s4)))))) + (v :: [])) (fun s4 rv -> res_void s4))))) (fun follow -> match d with | Coq_full_descriptor_undef -> follow () @@ -1300,7 +1301,7 @@ and object_put_complete b s c vthis l x v str = if_success (object_define_own_prop s2 c l x desc str) (fun s3 rv -> res_void s3))) - | Coq_attributes_accessor_of a0 -> follow ()))) + | Coq_attributes_accessor_of a0 -> follow ())) else out_error_or_void s1 str Coq_native_error_type) (** val object_put : @@ -1731,12 +1732,12 @@ and run_construct_prealloc s c b args = (fun s0 -> follow s0 1.0) | Coq_prim_number vlen -> - if_spec - (to_uint32 s_2 c (Coq_value_prim - (Coq_prim_number vlen))) (fun s0 ilen -> + let%run + (s0, ilen) = (to_uint32 s_2 c (Coq_value_prim + (Coq_prim_number vlen))) in if number_comparable (of_int ilen) vlen then follow s0 ilen - else run_error s0 Coq_native_error_range) + else run_error s0 Coq_native_error_range | Coq_prim_string s0 -> if_some (object_heap_map_properties_pickable_option s_2 l @@ -1997,10 +1998,10 @@ and binding_inst_function_decls s c l fds str bconfig = (fun s2 has -> if has then if nat_eq l env_loc_global_env_record - then if_spec - (run_object_get_prop s2 c + then let%run + (s3, d) = (run_object_get_prop s2 c (Coq_object_loc_prealloc Coq_prealloc_global) - fname) (fun s3 d -> + fname) in match d with | Coq_full_descriptor_undef -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) @@ -2031,7 +2032,7 @@ and binding_inst_function_decls s c l fds str bconfig = (attributes_enumerable a) false)) then run_error s3 Coq_native_error_type - else follow s3) + else follow s3 else follow s2 else if_void (env_record_create_mutable_binding s2 c l @@ -2347,7 +2348,7 @@ and run_object_get_own_prop s c l x = match b with | Coq_builtin_get_own_prop_default -> def s | Coq_builtin_get_own_prop_args_obj -> - if_spec (def s) (fun s1 d -> + let%run (s1, d) = (def s) in begin match d with | Coq_full_descriptor_undef -> res_spec s1 Coq_full_descriptor_undef @@ -2355,8 +2356,8 @@ and run_object_get_own_prop s c l x = if_some (run_object_method object_parameter_map_ s1 l) (fun lmapo -> if_some (lmapo) (fun lmap -> - if_spec (run_object_get_own_prop s1 c lmap x) - (fun s2 d0 -> + let%run + (s2, d0) = (run_object_get_own_prop s1 c lmap x) in let_binding (fun s_2 a0 -> res_spec s_2 (Coq_full_descriptor_some a0)) (fun follow -> match d0 with @@ -2371,14 +2372,15 @@ and run_object_get_own_prop s c l x = | Coq_attributes_accessor_of aa -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) s3 - ("[run_object_get_own_prop]: received an accessor property descriptor in a point where the specification suppose it never happens."))))))) + ("[run_object_get_own_prop]: received an accessor property descriptor in a point where the specification suppose it never happens."))))) + end | Coq_builtin_get_own_prop_string -> - if_spec (def s) (fun s0 d -> + let%run (s0, d) = (def s) in match d with | Coq_full_descriptor_undef -> - if_spec - (to_int32 s0 c (Coq_value_prim (Coq_prim_string x))) - (fun s1 k -> + let%run + + (s1, k) = (to_int32 s0 c (Coq_value_prim (Coq_prim_string x))) in if_string (to_string s1 c (Coq_value_prim (Coq_prim_number (JsNumber.absolute k)))) @@ -2386,9 +2388,9 @@ and run_object_get_own_prop s c l x = if not_decidable (string_comparable x s3) then res_spec s2 Coq_full_descriptor_undef else if_string (run_object_prim_value s2 l) (fun s4 str -> - if_spec - (to_int32 s4 c (Coq_value_prim - (Coq_prim_string x))) (fun s5 k0 -> + let%run + (s5, k0) = (to_int32 s4 c (Coq_value_prim + (Coq_prim_string x))) in let_binding (number_of_int (strlength str)) (fun len -> if le_int_decidable len k0 then res_spec s5 Coq_full_descriptor_undef @@ -2403,8 +2405,8 @@ and run_object_get_own_prop s c l x = attributes_data_configurable = false } in res_spec s5 (Coq_full_descriptor_some - (Coq_attributes_data_of a))))))) - | Coq_full_descriptor_some a -> res_spec s0 d))) + (Coq_attributes_data_of a))))) + | Coq_full_descriptor_some a -> res_spec s0 d)) (** val run_function_has_instance : state -> object_loc -> value -> result **) @@ -2764,54 +2766,54 @@ and issome : 'a1 . 'a1 option -> bool = fun _foo_ -> and run_binary_op s c op v1 v2 = if binary_op_comparable op Coq_binary_op_add - then if_spec (convert_twice_primitive s c v1 v2) (fun s1 ww -> - (* let%spec (s1,ww) = convert_twice_primitive s c v1 v2 in *) + then let%run (s1, ww) = (convert_twice_primitive s c v1 v2) in + (* let%run (s1,ww) = convert_twice_primitive s c v1 v2 in *) let (w1, w2) = ww in if or_decidable (type_comparable (type_of (Coq_value_prim w1)) Coq_type_string) (type_comparable (type_of (Coq_value_prim w2)) Coq_type_string) - then if_spec - (convert_twice_string s1 c (Coq_value_prim w1) - (Coq_value_prim w2)) (fun s2 ss -> + then let%run + (s2, ss) = (convert_twice_string s1 c (Coq_value_prim w1) + (Coq_value_prim w2)) in let (s3, s4) = ss in res_out (Coq_out_ter (s2, - (res_val (Coq_value_prim (Coq_prim_string (strappend s3 s4))))))) - else if_spec - (convert_twice_number s1 c (Coq_value_prim w1) - (Coq_value_prim w2)) (fun s2 nn -> + (res_val (Coq_value_prim (Coq_prim_string (strappend s3 s4)))))) + else let%run + (s2, nn) = (convert_twice_number s1 c (Coq_value_prim w1) + (Coq_value_prim w2)) in let (n1, n2) = nn in res_out (Coq_out_ter (s2, - (res_val (Coq_value_prim (Coq_prim_number (n1 +. n2)))))))) + (res_val (Coq_value_prim (Coq_prim_number (n1 +. n2)))))) else if issome (get_puremath_op op) then if_some (get_puremath_op op) (fun mop -> - if_spec (convert_twice_number s c v1 v2) (fun s1 nn -> + let%run (s1, nn) = (convert_twice_number s c v1 v2) in let (n1, n2) = nn in res_out (Coq_out_ter (s1, - (res_val (Coq_value_prim (Coq_prim_number (mop n1 n2)))))))) + (res_val (Coq_value_prim (Coq_prim_number (mop n1 n2))))))) else if issome (get_shift_op op) then if_some (get_shift_op op) (fun so -> let (b_unsigned, f) = so in - if_spec - ((if b_unsigned then to_uint32 else to_int32) s c - v1) (fun s1 k1 -> - if_spec (to_uint32 s1 c v2) (fun s2 k2 -> + let%run + (s1, k1) = ((if b_unsigned then to_uint32 else to_int32) s c + v1) in + let%run (s2, k2) = (to_uint32 s1 c v2) in let k2_2 = JsNumber.modulo_32 k2 in res_ter s2 (res_val (Coq_value_prim (Coq_prim_number - (of_int (f k1 k2_2)))))))) + (of_int (f k1 k2_2)))))) else if issome (get_bitwise_op op) then if_some (get_bitwise_op op) (fun bo -> - if_spec (to_int32 s c v1) (fun s1 k1 -> - if_spec (to_int32 s1 c v2) (fun s2 k2 -> + let%run (s1, k1) = (to_int32 s c v1) in + let%run (s2, k2) = (to_int32 s1 c v2) in res_ter s2 (res_val (Coq_value_prim (Coq_prim_number - (of_int (bo k1 k2)))))))) + (of_int (bo k1 k2)))))) else if issome (get_inequality_op op) then if_some (get_inequality_op op) (fun io -> let (b_swap, b_neg) = io in - if_spec - (convert_twice_primitive s c v1 v2) - (fun s1 ww -> + let%run + + (s1, ww) = (convert_twice_primitive s c v1 v2) in let (w1, w2) = ww in let_binding (if b_swap then (w2, w1) else (w1, w2)) @@ -2836,7 +2838,7 @@ and run_binary_op s c op v1 v2 = then res_val (Coq_value_prim (Coq_prim_bool true)) else res_val (Coq_value_prim - wr))))))) + wr)))))) else if binary_op_comparable op Coq_binary_op_instanceof then (match v2 with @@ -2932,7 +2934,7 @@ and run_typeof_value s _foo_ = match _foo_ with and run_unary_op s c op e = if prepost_unary_op_dec op then if_success (run_expr s c e) (fun s1 rv1 -> - if_spec (ref_get_value s1 c rv1) (fun s2 v2 -> + let%run (s2, v2) = (ref_get_value s1 c rv1) in if_number (to_number s2 c v2) (fun s3 n1 -> if_some (run_prepost_op op) (fun po -> let (number_op, is_pre) = po in @@ -2943,7 +2945,7 @@ and run_unary_op s c op e = (ref_put_value s3 c rv1 (Coq_value_prim (Coq_prim_number n2))) (fun s4 -> result_out (Coq_out_ter (s4, - (res_val (Coq_value_prim v))))))))))) + (res_val (Coq_value_prim v)))))))))) else (match op with | Coq_unary_op_delete -> if_success (run_expr s c e) (fun s0 rv -> @@ -2983,13 +2985,13 @@ and run_unary_op s c op e = then res_ter s1 (res_val (Coq_value_prim (Coq_prim_string ("undefined")))) - else if_spec (ref_get_value s1 c (Coq_resvalue_ref r)) - (fun s2 v -> + else let%run + (s2, v) = (ref_get_value s1 c (Coq_resvalue_ref r)) in res_ter s2 (res_val (Coq_value_prim (Coq_prim_string - (run_typeof_value s2 v)))))) + (run_typeof_value s2 v))))) | _ -> - if_spec (run_expr_get_value s c e) (fun s1 v -> + let%run (s1, v) = (run_expr_get_value s c e) in match op with | Coq_unary_op_void -> res_ter s1 (res_val (Coq_value_prim Coq_prim_undef)) @@ -3000,10 +3002,10 @@ and run_unary_op s c op e = (res_val (Coq_value_prim (Coq_prim_number (JsNumber.neg n))))) | Coq_unary_op_bitwise_not -> - if_spec (to_int32 s1 c v) (fun s2 k -> + let%run (s2, k) = (to_int32 s1 c v) in res_ter s2 (res_val (Coq_value_prim (Coq_prim_number - (of_int (JsNumber.int32_bitwise_not k)))))) + (of_int (JsNumber.int32_bitwise_not k))))) | Coq_unary_op_not -> res_ter s1 (res_val (Coq_value_prim (Coq_prim_bool @@ -3011,7 +3013,7 @@ and run_unary_op s c op e = | _ -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) s1 - ("Undealt regular operator in [run_unary_op]."))) + ("Undealt regular operator in [run_unary_op].")) (** val create_new_function_in : state -> execution_ctx -> string list -> funcbody -> @@ -3034,13 +3036,13 @@ and init_object s c l _foo_ = match _foo_ with (fun s2 rv -> init_object s2 c l pds_2)) (fun follows -> match pb with | Coq_propbody_val e0 -> - if_spec (run_expr_get_value s c e0) (fun s1 v0 -> + let%run (s1, v0) = (run_expr_get_value s c e0) in let desc = { descriptor_value = (Some v0); descriptor_writable = (Some true); descriptor_get = None; descriptor_set = None; descriptor_enumerable = (Some true); descriptor_configurable = (Some true) } in - follows s1 desc) + follows s1 desc | Coq_propbody_get bd -> if_value (create_new_function_in s c [] bd) (fun s1 v0 -> let desc = { descriptor_value = None; descriptor_writable = None; @@ -3071,11 +3073,11 @@ and run_array_element_list s c l oes n = let_binding (fun s0 -> run_array_element_list s0 c l oes_2 0.) (fun loop_result -> - if_spec (run_expr_get_value s c e) (fun s0 v -> + let%run (s0, v) = (run_expr_get_value s c e) in if_value (run_object_get s0 c l ("length")) (fun s1 vlen -> - if_spec (to_uint32 s1 c vlen) (fun s2 ilen -> + let%run (s2, ilen) = (to_uint32 s1 c vlen) in if_string (to_string s2 c (Coq_value_prim (Coq_prim_number (ilen +. n)))) (fun s3 slen -> @@ -3088,7 +3090,7 @@ and run_array_element_list s c l oes n = (descriptor_of_attributes (Coq_attributes_data_of desc)) false) (fun s4 x -> let%object (s5, l0) = (loop_result s4) in - res_ter s5 (res_val (Coq_value_object l0))))))))) + res_ter s5 (res_val (Coq_value_object l0))))))) | None -> let_binding (elision_head_count (None :: oes_2)) (fun firstIndex -> run_array_element_list s c l @@ -3106,29 +3108,29 @@ and init_array s c l oes = if_value (run_object_get s0 c l0 ("length")) (fun s1 vlen -> - if_spec (to_uint32 s1 c vlen) (fun s2 ilen -> - if_spec - (to_uint32 s2 c (Coq_value_prim (Coq_prim_number - (ilen +. number_of_int elisionLength)))) - (fun s3 len -> + let%run (s2, ilen) = (to_uint32 s1 c vlen) in + let%run + + (s3, len) = (to_uint32 s2 c (Coq_value_prim (Coq_prim_number + (ilen +. number_of_int elisionLength)))) in if_not_throw (object_put s3 c l0 ("length") (Coq_value_prim (Coq_prim_number (of_int len))) throw_false) (fun s4 x -> result_out (Coq_out_ter (s4, - (res_val (Coq_value_object l0)))))))))) + (res_val (Coq_value_object l0)))))))) (** val run_var_decl_item : state -> execution_ctx -> prop_name -> expr option -> result **) and run_var_decl_item s c x _foo_ = match _foo_ with | Some e -> - if_spec (identifier_resolution s c x) (fun s1 ir -> - if_spec (run_expr_get_value s1 c e) (fun s2 v -> + let%run (s1, ir) = (identifier_resolution s c x) in + let%run (s2, v) = (run_expr_get_value s1 c e) in if_void (ref_put_value s2 c (Coq_resvalue_ref ir) v) (fun s3 -> result_out (Coq_out_ter (s3, - (res_val (Coq_value_prim (Coq_prim_string x)))))))) + (res_val (Coq_value_prim (Coq_prim_string x)))))) | None -> result_out (Coq_out_ter (s, (res_val (Coq_value_prim (Coq_prim_string x))))) @@ -3151,8 +3153,8 @@ and run_var_decl s c _foo_ = match _foo_ with and run_list_expr s1 c vs _foo_ = match _foo_ with | [] -> res_spec s1 (rev vs) | e :: es_2 -> - if_spec (run_expr_get_value s1 c e) (fun s2 v -> - run_list_expr s2 c (v :: vs) es_2) + let%run (s2, v) = (run_expr_get_value s1 c e) in + run_list_expr s2 c (v :: vs) es_2 (** val run_block : state -> execution_ctx -> stat list -> result **) @@ -3172,28 +3174,28 @@ and run_block s c _foo_ = match _foo_ with and run_expr_binary_op s c op e1 e2 = match is_lazy_op op with | Some b_ret -> - if_spec (run_expr_get_value s c e1) (fun s1 v1 -> + let%run (s1, v1) = (run_expr_get_value s c e1) in let_binding (convert_value_to_boolean v1) (fun b1 -> if bool_comparable b1 b_ret then res_ter s1 (res_val v1) - else if_spec (run_expr_get_value s1 c e2) (fun s2 v -> - res_ter s2 (res_val v)))) + else let%run (s2, v) = (run_expr_get_value s1 c e2) in + res_ter s2 (res_val v)) | None -> - if_spec (run_expr_get_value s c e1) (fun s1 v1 -> - if_spec (run_expr_get_value s1 c e2) (fun s2 v2 -> - run_binary_op s2 c op v1 v2)) + let%run (s1, v1) = (run_expr_get_value s c e1) in + let%run (s2, v2) = (run_expr_get_value s1 c e2) in + run_binary_op s2 c op v1 v2 *) and run_expr_binary_op s c op e1 e2 = match is_lazy_op op with | Some b_ret -> - if_spec (run_expr_get_value s c e1) (fun s1 v1 -> + let%run (s1, v1) = (run_expr_get_value s c e1) in let_binding (convert_value_to_boolean v1) (fun b1 -> if bool_comparable b1 b_ret then res_ter s1 (res_val v1) - else if_spec (run_expr_get_value s1 c e2) (fun s2 v -> - res_ter s2 (res_val v)))) + else let%run (s2, v) = (run_expr_get_value s1 c e2) in + res_ter s2 (res_val v)) | None -> let%run (s1,v1) = run_expr_get_value s c e1 in let%run (s2,v2) = run_expr_get_value s1 c e2 in @@ -3204,14 +3206,14 @@ and run_expr_binary_op s c op e1 e2 = (* TODO DEPRECATEd and run_expr_access s c e1 e2 = - if_spec (run_expr_get_value s c e1) (fun s1 v1 -> - if_spec (run_expr_get_value s1 c e2) (fun s2 v2 -> + let%run (s1, v1) = (run_expr_get_value s c e1) in + let%run (s2, v2) = (run_expr_get_value s1 c e2) in if or_decidable (value_comparable v1 (Coq_value_prim Coq_prim_undef)) (value_comparable v1 (Coq_value_prim Coq_prim_null)) then run_error s2 Coq_native_error_type else if_string (to_string s2 c v2) (fun s3 x -> res_ter s3 - (res_ref (ref_create_value v1 x c.execution_ctx_strict))))) + (res_ref (ref_create_value v1 x c.execution_ctx_strict))) *) and run_expr_access s c e1 e2 = @@ -3245,12 +3247,12 @@ and run_expr_assign s c opo e1 e2 = (fun follow -> match opo with | Some op -> - if_spec (ref_get_value s1 c rv1) (fun s2 v1 -> - if_spec (run_expr_get_value s2 c e2) (fun s3 v2 -> - if_success (run_binary_op s3 c op v1 v2) (fun s4 v -> follow s4 v))) + let%run (s2, v1) = (ref_get_value s1 c rv1) in + let%run (s3, v2) = (run_expr_get_value s2 c e2) in + if_success (run_binary_op s3 c op v1 v2) (fun s4 v -> follow s4 v) | None -> - if_spec (run_expr_get_value s1 c e2) (fun x x0 -> - follow x (Coq_resvalue_value x0)))) + let%run (x, x0 )= (run_expr_get_value s1 c e2) in + follow x (Coq_resvalue_value x0))) (** val run_expr_function : state -> execution_ctx -> prop_name option -> string list @@ -3356,8 +3358,8 @@ and run_eval s c is_direct_call vs = and run_expr_call s c e1 e2s = let_binding (is_syntactic_eval e1) (fun is_eval_direct -> if_success (run_expr s c e1) (fun s1 rv -> - if_spec (ref_get_value s1 c rv) (fun s2 f -> - if_spec (run_list_expr s2 c [] e2s) (fun s3 vs -> + let%run (s2, f) = (ref_get_value s1 c rv) in + let%run (s3, vs) = (run_list_expr s2 c [] e2s) in match f with | Coq_value_prim p -> run_error s3 Coq_native_error_type | Coq_value_object l -> @@ -3391,31 +3393,31 @@ and run_expr_call s c e1 e2s = ("[run_expr_call] unable to call a non-property function.") | Coq_ref_base_type_env_loc l0 -> if_some (env_record_implicit_this_value s3 l0) (fun v -> follow v))) - else run_error s3 Coq_native_error_type)))) + else run_error s3 Coq_native_error_type)) (** val run_expr_conditionnal : state -> execution_ctx -> expr -> expr -> expr -> result **) and run_expr_conditionnal s c e1 e2 e3 = - if_spec (run_expr_get_value s c e1) (fun s1 v1 -> + let%run (s1, v1) = (run_expr_get_value s c e1) in let_binding (convert_value_to_boolean v1) (fun b -> let_binding (if b then e2 else e3) (fun e -> - if_spec (run_expr_get_value s1 c e) (fun s0 r -> - res_ter s0 (res_val r))))) + let%run (s0, r) = (run_expr_get_value s1 c e) in + res_ter s0 (res_val r))) (** val run_expr_new : state -> execution_ctx -> expr -> expr list -> result **) and run_expr_new s c e1 e2s = - if_spec (run_expr_get_value s c e1) (fun s1 v -> - if_spec (run_list_expr s1 c [] e2s) (fun s2 args -> + let%run (s1, v) = (run_expr_get_value s c e1) in + let%run (s2, args) = (run_list_expr s1 c [] e2s) in match v with | Coq_value_prim p -> run_error s2 Coq_native_error_type | Coq_value_object l -> if_some (run_object_method object_construct_ s2 l) (fun coo -> match coo with | Some co -> run_construct s2 c co l args - | None -> run_error s2 Coq_native_error_type))) + | None -> run_error s2 Coq_native_error_type) (** val run_stat_label : state -> execution_ctx -> label -> stat -> result **) @@ -3431,35 +3433,35 @@ and run_stat_label s c lab t = state -> execution_ctx -> expr -> stat -> result **) and run_stat_with s c e1 t2 = - if_spec (run_expr_get_value s c e1) (fun s1 v1 -> + let%run (s1, v1) = (run_expr_get_value s c e1) in let%object (s2, l) = (to_object s1 v1) in let_binding c.execution_ctx_lexical_env (fun lex -> let_binding (lexical_env_alloc_object s2 lex l provide_this_true) (fun p -> let (lex_2, s3) = p in let_binding (execution_ctx_with_lex c lex_2) (fun c_2 -> - run_stat s3 c_2 t2)))) + run_stat s3 c_2 t2))) (** val run_stat_if : state -> execution_ctx -> expr -> stat -> stat option -> result **) and run_stat_if s c e1 t2 to0 = - if_spec (run_expr_get_value s c e1) (fun s1 v1 -> + let%run (s1, v1) = (run_expr_get_value s c e1) in let_binding (convert_value_to_boolean v1) (fun b -> if b then run_stat s1 c t2 else (match to0 with | Some t3 -> run_stat s1 c t3 | None -> - result_out (Coq_out_ter (s1, (res_normal Coq_resvalue_empty)))))) + result_out (Coq_out_ter (s1, (res_normal Coq_resvalue_empty))))) (** val run_stat_while : state -> execution_ctx -> resvalue -> label_set -> expr -> stat -> result **) and run_stat_while s c rv labs e1 t2 = - if_spec (run_expr_get_value s c e1) (fun s1 v1 -> + let%run (s1, v1) = (run_expr_get_value s c e1) in let_binding (convert_value_to_boolean v1) (fun b -> if b then if_ter (run_stat s1 c t2) (fun s2 r -> @@ -3484,7 +3486,7 @@ and run_stat_while s c rv labs e1 t2 = then res_ter s2 r else loop () else loop ()))) - else res_ter s1 (res_normal rv))) + else res_ter s1 (res_normal rv)) (** val run_stat_switch_end : state -> execution_ctx -> resvalue -> switchclause list -> @@ -3505,12 +3507,12 @@ and run_stat_switch_no_default s c vi rv _foo_ = match _foo_ with | [] -> result_out (Coq_out_ter (s, (res_normal rv))) | y :: scs_2 -> match y with Coq_switchclause_intro (e, ts) -> - if_spec (run_expr_get_value s c e) (fun s1 v1 -> + let%run (s1, v1) = (run_expr_get_value s c e) in let_binding (strict_equality_test v1 vi) (fun b -> if b then if_success (run_block s1 c (rev ts)) (fun s2 rv2 -> run_stat_switch_end s2 c rv2 scs_2) - else run_stat_switch_no_default s1 c vi rv scs_2)) + else run_stat_switch_no_default s1 c vi rv scs_2) (** val run_stat_switch_with_default_default : state -> execution_ctx -> stat list -> switchclause list -> @@ -3528,12 +3530,12 @@ and run_stat_switch_with_default_B s c vi rv ts0 scs = match scs with | [] -> run_stat_switch_with_default_default s c ts0 scs | y :: scs_2 -> match y with Coq_switchclause_intro (e, ts) -> - if_spec (run_expr_get_value s c e) (fun s1 v1 -> + let%run (s1, v1) = (run_expr_get_value s c e) in let_binding (strict_equality_test v1 vi) (fun b -> if b then if_success (run_block s1 c (rev ts)) (fun s2 rv2 -> run_stat_switch_end s2 c rv2 scs_2) - else run_stat_switch_with_default_B s1 c vi rv ts0 scs_2)) + else run_stat_switch_with_default_B s1 c vi rv ts0 scs_2) (** val run_stat_switch_with_default_A : state -> execution_ctx -> bool -> value -> resvalue -> @@ -3553,19 +3555,19 @@ and run_stat_switch_with_default_A s c found vi rv scs1 ts0 scs2 = (fun follow -> if found then follow s - else if_spec (run_expr_get_value s c e) (fun s1 v1 -> + else let%run (s1, v1) = (run_expr_get_value s c e) in let_binding (strict_equality_test v1 vi) (fun b -> if b then follow s1 else run_stat_switch_with_default_A s1 c false vi rv - scs_2 ts0 scs2))) + scs_2 ts0 scs2)) (** val run_stat_switch : state -> execution_ctx -> label_set -> expr -> switchbody -> result **) and run_stat_switch s c labs e sb = - if_spec (run_expr_get_value s c e) (fun s1 vi -> + let%run (s1, vi) = (run_expr_get_value s c e) in let_binding (fun w -> if_success (if_break (w) (fun s2 r -> @@ -3580,7 +3582,7 @@ and run_stat_switch s c labs e sb = | Coq_switchbody_withdefault (scs1, ts, scs2) -> follow (run_stat_switch_with_default_A s1 c false vi - Coq_resvalue_empty scs1 ts scs2))) + Coq_resvalue_empty scs1 ts scs2)) (** val run_stat_do_while : state -> execution_ctx -> resvalue -> label_set -> expr -> @@ -3593,11 +3595,11 @@ and run_stat_do_while s c rv labs e1 t2 = then rv else r.res_value) (fun rv_2 -> let_binding (fun x -> - if_spec (run_expr_get_value s1 c e1) (fun s2 v1 -> + let%run (s2, v1) = (run_expr_get_value s1 c e1) in let_binding (convert_value_to_boolean v1) (fun b -> if b then run_stat_do_while s2 c rv_2 labs e1 t2 - else res_ter s2 (res_normal rv_2)))) (fun loop -> + else res_ter s2 (res_normal rv_2))) (fun loop -> if and_decidable (restype_comparable r.res_type Coq_restype_continue) (bool_decidable (res_label_in r labs)) then loop () @@ -3644,16 +3646,16 @@ and run_stat_try s c t1 t2o t3o = state -> execution_ctx -> expr -> result **) and run_stat_throw s c e = - if_spec (run_expr_get_value s c e) (fun s1 v1 -> - res_ter s1 (res_throw (Coq_resvalue_value v1))) + let%run (s1, v1) = (run_expr_get_value s c e) in + res_ter s1 (res_throw (Coq_resvalue_value v1)) (** val run_stat_return : state -> execution_ctx -> expr option -> result **) and run_stat_return s c _foo_ = match _foo_ with | Some e -> - if_spec (run_expr_get_value s c e) (fun s1 v1 -> - res_ter s1 (res_return (Coq_resvalue_value v1))) + let%run (s1, v1) = (run_expr_get_value s c e) in + res_ter s1 (res_return (Coq_resvalue_value v1)) | None -> result_out (Coq_out_ter (s, (res_return (Coq_resvalue_value (Coq_value_prim Coq_prim_undef))))) @@ -3682,15 +3684,15 @@ and run_stat_for_loop s c labs rv eo2 eo3 t = (bool_decidable (res_label_in r labs))) then (match eo3 with | Some e3 -> - if_spec (run_expr_get_value s1 c e3) - (fun s2 v3 -> loop s2) + let%run + (s2, v3) = (run_expr_get_value s1 c e3) in loop s2 | None -> loop s1) else res_ter s1 r)))) (fun follows -> match eo2 with | Some e2 -> - if_spec (run_expr_get_value s c e2) (fun s0 v2 -> + let%run (s0, v2) = (run_expr_get_value s c e2) in let_binding (convert_value_to_boolean v2) (fun b -> - if b then follows s0 else res_ter s0 (res_normal rv))) + if b then follows s0 else res_ter s0 (res_normal rv)) | None -> follows s) (** val run_stat_for : @@ -3703,7 +3705,7 @@ and run_stat_for s c labs eo1 eo2 eo3 t = in (match eo1 with | Some e1 -> - if_spec (run_expr_get_value s c e1) (fun s0 v1 -> follows s0) + let%run (s0, v1) = (run_expr_get_value s c e1) in follows s0 | None -> follows s) (** val run_stat_for_var : @@ -3720,8 +3722,8 @@ and run_expr s c _term_ = match _term_ with | Coq_expr_this -> result_out (Coq_out_ter (s, (res_val c.execution_ctx_this_binding))) | Coq_expr_identifier x -> - if_spec (identifier_resolution s c x) (fun s0 r -> - res_ter s0 (res_ref r)) + let%run (s0, r) = (identifier_resolution s c x) in + res_ter s0 (res_ref r) | Coq_expr_literal i -> result_out (Coq_out_ter (s, (res_val (Coq_value_prim (convert_literal_to_prim i))))) @@ -3748,8 +3750,8 @@ and run_expr s c _term_ = match _term_ with and run_stat s c _term_ = match _term_ with | Coq_stat_expr e -> - if_spec (run_expr_get_value s c e) (fun s0 r -> - res_ter s0 (res_val r)) + let%run (s0, r) = (run_expr_get_value s c e) in + res_ter s0 (res_val r) | Coq_stat_label (lab, t0) -> run_stat_label s c (Coq_label_string lab) t0 | Coq_stat_block ts -> run_block s c (rev ts) @@ -3825,7 +3827,7 @@ and run_object_is_sealed s c l _foo_ = match _foo_ with if_some (run_object_method object_extensible_ s l) (fun ext -> res_ter s (res_val (Coq_value_prim (Coq_prim_bool (neg ext))))) | x :: xs_2 -> - if_spec (run_object_get_own_prop s c l x) (fun s0 d -> + let%run (s0, d) = (run_object_get_own_prop s c l x) in match d with | Coq_full_descriptor_undef -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) @@ -3834,7 +3836,7 @@ and run_object_is_sealed s c l _foo_ = match _foo_ with | Coq_full_descriptor_some a -> if attributes_configurable a then res_ter s0 (res_val (Coq_value_prim (Coq_prim_bool false))) - else run_object_is_sealed s0 c l xs_2) + else run_object_is_sealed s0 c l xs_2 (** val run_object_seal : state -> execution_ctx -> object_loc -> prop_name list -> @@ -3845,7 +3847,7 @@ and run_object_seal s c l _foo_ = match _foo_ with if_some (run_object_heap_set_extensible false s l) (fun s0 -> res_ter s0 (res_val (Coq_value_object l))) | x :: xs_2 -> - if_spec (run_object_get_own_prop s c l x) (fun s0 d -> + let%run (s0, d) = (run_object_get_own_prop s c l x) in match d with | Coq_full_descriptor_undef -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) @@ -3864,7 +3866,7 @@ and run_object_seal s c l _foo_ = match _foo_ with in if_bool (object_define_own_prop s0 c l x (descriptor_of_attributes a_2) - true) (fun s1 x0 -> run_object_seal s1 c l xs_2)) + true) (fun s1 x0 -> run_object_seal s1 c l xs_2) (** val run_object_freeze : state -> execution_ctx -> object_loc -> prop_name list -> @@ -3875,7 +3877,7 @@ and run_object_freeze s c l _foo_ = match _foo_ with if_some (run_object_heap_set_extensible false s l) (fun s0 -> res_ter s0 (res_val (Coq_value_object l))) | x :: xs_2 -> - if_spec (run_object_get_own_prop s c l x) (fun s0 d -> + let%run (s0, d) = (run_object_get_own_prop s c l x) in match d with | Coq_full_descriptor_undef -> (fun s m -> Debug.impossible_with_heap_because __LOC__ s m; Coq_result_impossible) @@ -3904,7 +3906,7 @@ and run_object_freeze s c l _foo_ = match _foo_ with in if_bool (object_define_own_prop s0 c l x (descriptor_of_attributes a_3) - true) (fun s1 x0 -> run_object_freeze s1 c l xs_2)) + true) (fun s1 x0 -> run_object_freeze s1 c l xs_2) (** val run_object_is_frozen : state -> execution_ctx -> object_loc -> prop_name list -> @@ -3915,7 +3917,7 @@ and run_object_is_frozen s c l _foo_ = match _foo_ with if_some (run_object_method object_extensible_ s l) (fun ext -> res_ter s (res_val (Coq_value_prim (Coq_prim_bool (neg ext))))) | x :: xs_2 -> - if_spec (run_object_get_own_prop s c l x) (fun s0 d -> + let%run (s0, d) = (run_object_get_own_prop s c l x) in let_binding (fun a -> if attributes_configurable a then res_ter s0 (res_val (Coq_value_prim (Coq_prim_bool false))) @@ -3932,7 +3934,7 @@ and run_object_is_frozen s c l _foo_ = match _foo_ with then res_ter s0 (res_val (Coq_value_prim (Coq_prim_bool false))) else check_configurable (Coq_attributes_data_of ad) | Coq_attributes_accessor_of aa -> - check_configurable (Coq_attributes_accessor_of aa)))) + check_configurable (Coq_attributes_accessor_of aa))) (** val run_get_args_for_apply : state -> execution_ctx -> object_loc -> float -> float -> @@ -3947,7 +3949,7 @@ and run_get_args_for_apply s c l index n = let_binding (run_get_args_for_apply s1 c l (index +. 1.) n) (fun tail_args -> - if_spec (tail_args) (fun s2 tail -> res_spec s2 (v :: tail))))) + let%run (s2, tail) = (tail_args) in res_spec s2 (v :: tail)))) else res_spec s [] (** val valueToStringForJoin : @@ -3981,10 +3983,10 @@ and run_array_join_elements s c l k length0 sep sR = if k < length0 then let_binding (strappend sR sep) (fun ss -> let_binding (valueToStringForJoin s c l k) (fun sE -> - if_spec (sE) (fun s0 element -> + let%run (s0, element) = (sE) in let_binding (strappend ss element) (fun sR0 -> run_array_join_elements s0 c l (k +. 1.) - length0 sep sR0)))) + length0 sep sR0))) else res_ter s (res_val (Coq_value_prim (Coq_prim_string sR))) (** val run_call_prealloc : @@ -4033,8 +4035,8 @@ and run_call_prealloc s c b vthis args = | Coq_value_object l -> if_string (to_string s c (get_arg 1 args)) (fun s1 x -> - if_spec (run_object_get_own_prop s1 c l x) (fun s2 d -> - from_prop_descriptor s2 c d))) + let%run (s2, d) = (run_object_get_own_prop s1 c l x) in + from_prop_descriptor s2 c d)) | Coq_prealloc_object_define_prop -> let_binding (get_arg 0 args) (fun o -> let_binding (get_arg 1 args) (fun p -> @@ -4044,9 +4046,9 @@ and run_call_prealloc s c b vthis args = | Coq_value_prim p0 -> run_error s Coq_native_error_type | Coq_value_object l -> if_string (to_string s c p) (fun s1 name -> - if_spec (run_to_descriptor s1 c attr) (fun s2 desc -> + let%run (s2, desc) = (run_to_descriptor s1 c attr) in if_bool (object_define_own_prop s2 c l name desc true) - (fun s3 x -> res_ter s3 (res_val (Coq_value_object l)))))))) + (fun s3 x -> res_ter s3 (res_val (Coq_value_object l))))))) | Coq_prealloc_object_seal -> let_binding (get_arg 0 args) (fun v -> match v with @@ -4140,12 +4142,12 @@ and run_call_prealloc s c b vthis args = let_binding (get_arg 0 args) (fun v -> if_string (to_string s c v) (fun s1 x -> let%object (s2, l) = (to_object s1 vthis) in - if_spec (run_object_get_own_prop s2 c l x) (fun s3 d -> + let%run (s3, d) = (run_object_get_own_prop s2 c l x) in match d with | Coq_full_descriptor_undef -> res_ter s3 (res_val (Coq_value_prim (Coq_prim_bool false))) | Coq_full_descriptor_some a -> - res_ter s3 (res_val (Coq_value_prim (Coq_prim_bool true)))))) + res_ter s3 (res_val (Coq_value_prim (Coq_prim_bool true))))) | Coq_prealloc_object_proto_is_prototype_of -> let_binding (get_arg 0 args) (fun v -> match v with @@ -4159,14 +4161,14 @@ and run_call_prealloc s c b vthis args = let_binding (get_arg 0 args) (fun v -> if_string (to_string s c v) (fun s1 x -> let%object (s2, l) = (to_object s1 vthis) in - if_spec (run_object_get_own_prop s2 c l x) (fun s3 d -> + let%run (s3, d) = (run_object_get_own_prop s2 c l x) in match d with | Coq_full_descriptor_undef -> res_ter s3 (res_val (Coq_value_prim (Coq_prim_bool false))) | Coq_full_descriptor_some a -> res_ter s3 (res_val (Coq_value_prim (Coq_prim_bool - (attributes_enumerable a))))))) + (attributes_enumerable a)))))) | Coq_prealloc_function_proto -> result_out (Coq_out_ter (s, (res_val (Coq_value_prim Coq_prim_undef)))) | Coq_prealloc_function_proto_to_string -> @@ -4199,11 +4201,11 @@ and run_call_prealloc s c b vthis args = (run_object_get s c array ("length")) (fun s0 v -> - if_spec (to_uint32 s0 c v) (fun s1 ilen -> - if_spec - (run_get_args_for_apply s1 c array 0. ilen) - (fun s2 arguments_ -> - run_call s2 c thisobj thisArg arguments_))))) + let%run (s1, ilen) = (to_uint32 s0 c v) in + let%run + + (s2, arguments_) = (run_get_args_for_apply s1 c array 0. ilen) in + run_call s2 c thisobj thisArg arguments_))) else run_error s Coq_native_error_type)) | Coq_prealloc_function_proto_call -> if is_callable_dec s vthis @@ -4260,18 +4262,18 @@ and run_call_prealloc s c b vthis args = (run_object_get s_2 c thisobj ("length")) (fun s10 n -> - if_spec - (to_int32 s10 c (Coq_value_prim - (Coq_prim_number n))) - (fun s11 ilen -> + let%run + + (s11, ilen) = (to_int32 s10 c (Coq_value_prim + (Coq_prim_number n))) in if ilen < (number_of_int (LibList.length a)) then res_spec s11 0. else res_spec s11 (ilen -. - (number_of_int (LibList.length a))))) + (number_of_int (LibList.length a)))) else res_spec s_2 0.)) (fun vlength -> - if_spec (vlength) (fun s10 length0 -> + let%run (s10, length0) = (vlength) in let_binding { attributes_data_value = (Coq_value_prim (Coq_prim_number (of_int length0))); @@ -4310,7 +4312,7 @@ and run_call_prealloc s c b vthis args = (Coq_attributes_accessor_of a1)) false) (fun s13 x0 -> res_ter s13 - (res_val (Coq_value_object l)))))))))))))))))) + (res_val (Coq_value_object l))))))))))))))))) else run_error s Coq_native_error_type | Coq_prealloc_bool -> result_out @@ -4459,7 +4461,7 @@ and run_call_prealloc s c b vthis args = if_value (run_object_get s0 c l ("length")) (fun s1 vlen -> - if_spec (to_uint32 s1 c vlen) (fun s2 ilen -> + let%run (s2, ilen) = (to_uint32 s1 c vlen) in let_binding (if not_decidable (value_comparable vsep (Coq_value_prim Coq_prim_undef)) @@ -4471,14 +4473,14 @@ and run_call_prealloc s c b vthis args = (res_val (Coq_value_prim (Coq_prim_string ""))) else let_binding (valueToStringForJoin s3 c l 0.) (fun sR -> - if_spec (sR) (fun s4 sR0 -> - run_array_join_elements s4 c l 1. ilen sep sR0))))))) + let%run (s4, sR0) = (sR) in + run_array_join_elements s4 c l 1. ilen sep sR0))))) | Coq_prealloc_array_proto_pop -> let%object (s0, l) = (to_object s vthis) in if_value (run_object_get s0 c l ("length")) (fun s1 vlen -> - if_spec (to_uint32 s1 c vlen) (fun s2 ilen -> + let%run (s2, ilen) = (to_uint32 s1 c vlen) in if ilen = 0.0 then if_not_throw (object_put s2 c l @@ -4500,14 +4502,14 @@ and run_call_prealloc s c b vthis args = ("length") (Coq_value_prim (Coq_prim_string sindx)) throw_true) (fun s6 x0 -> - result_out (Coq_out_ter (s6, (res_val velem))))))))) + result_out (Coq_out_ter (s6, (res_val velem)))))))) | Coq_prealloc_array_proto_push -> let%object (s0, l) = (to_object s vthis) in if_value (run_object_get s0 c l ("length")) (fun s1 vlen -> - if_spec (to_uint32 s1 c vlen) (fun s2 ilen -> - push s2 c l args ilen)) + let%run (s2, ilen) = (to_uint32 s1 c vlen) in + push s2 c l args ilen) | Coq_prealloc_string -> if list_eq_nil_decidable args then res_ter s (res_val (Coq_value_prim (Coq_prim_string "")))