@@ -40,47 +40,47 @@ module S = Js_stmt_make
4040*)
4141
4242(* TODO: check stackoverflow *)
43- let assemble_obj_args (labels : External_arg_spec.t list ) (args : J.expression list )
43+ let assemble_obj_args (labels : External_arg_spec.obj_params ) (args : J.expression list )
4444 : J.block * J.expression =
45- let rec aux (labels : External_arg_spec.t list ) args
45+ let rec aux (labels : External_arg_spec.obj_params ) args
4646 : (Js_op.property_name * E.t ) list * J.expression list * _ =
4747 match labels, args with
4848 | [] , [] -> [] , [] , []
49- | {arg_label = Label {name = label ; cst = Some cst } } :: labels , args ->
49+ | {obj_arg_label = Obj_label {name = label ; } ; obj_arg_type = Arg_cst cst } :: labels , args ->
5050 let accs, eff, assign = aux labels args in
5151 (label, Lam_compile_const. translate_arg_cst cst )::accs, eff, assign
52- | {arg_label = EmptyCst _ } :: rest , args -> assert false
53- | {arg_label = Empty }::labels, arg::args
52+ (* | {obj_arg_label = EmptyCst _ } :: rest , args -> assert false *)
53+ | {obj_arg_label = Obj_empty }::labels, arg::args
5454 -> (* unit type*)
5555 let (accs, eff, assign) as r = aux labels args in
5656 if Js_analyzer. no_side_effect_expression arg then r
5757 else (accs, arg::eff, assign)
58- | ({arg_label = Label {name = label; cst = None } } as arg_kind)::labels, arg::args
58+ | ({obj_arg_label = Obj_label {name = label;} } as arg_kind)::labels, arg::args
5959 ->
6060 let accs, eff, assign = aux labels args in
61- let acc, new_eff = Lam_compile_external_call. ocaml_to_js_eff ~arg_label: Label ~arg_type: arg_kind.arg_type arg in
61+ let acc, new_eff = Lam_compile_external_call. ocaml_to_js_eff ~arg_label: Arg_label ~arg_type: arg_kind.obj_arg_type arg in
6262 begin match acc with
6363 | Splice2 _
6464 | Splice0 -> assert false
6565 | Splice1 x ->
6666 (label, x) :: accs , Ext_list. append new_eff eff , assign
6767 end (* evaluation order is undefined *)
6868
69- | ({arg_label = Optional {name = label}; arg_type } as arg_kind)::labels, arg::args
69+ | ({obj_arg_label = Obj_optional {name = label}; obj_arg_type } as arg_kind)::labels, arg::args
7070 ->
7171 let (accs, eff, assign) as r = aux labels args in
7272 Js_of_lam_option. destruct_optional arg
7373 ~for_sure_none: r
7474 ~for_sure_some: (fun x -> let acc, new_eff = Lam_compile_external_call. ocaml_to_js_eff
75- ~arg_label: Label ~arg_type x in
75+ ~arg_label: Arg_label ~arg_type: obj_arg_type x in
7676 begin match acc with
7777 | Splice2 _
7878 | Splice0 -> assert false
7979 | Splice1 x ->
8080 (label, x) :: accs , Ext_list. append new_eff eff , assign
8181 end )
8282 ~not_sure: (fun _ -> accs, eff , (arg_kind,arg)::assign )
83- | {arg_label = Empty | Label { cst = None ;_} | Optional _ } :: _ , [] -> assert false
83+ | {obj_arg_label = Obj_empty | Obj_label _ | Obj_optional _ } :: _ , [] -> assert false
8484 | [] , _ :: _ -> assert false
8585 in
8686 let map, eff, assignment = aux labels args in
@@ -101,9 +101,9 @@ let assemble_obj_args (labels : External_arg_spec.t list) (args : J.expression
101101 | x ::xs -> E. seq (E. fuse_to_seq x xs) (E. obj map)
102102 end ) ::
103103 (Ext_list. flat_map assignment (fun
104- ((xlabel : External_arg_spec.t ), (arg : J.expression )) ->
104+ ((xlabel : External_arg_spec.obj_param ), (arg : J.expression )) ->
105105 match xlabel with
106- | {arg_label = Optional {name = label } } ->
106+ | {obj_arg_label = Obj_optional {name = label } } ->
107107 (* Need make sure whether assignment is effectful or not
108108 to avoid code duplication
109109 *)
@@ -112,7 +112,7 @@ let assemble_obj_args (labels : External_arg_spec.t list) (args : J.expression
112112 let acc,new_eff =
113113 Lam_compile_external_call. ocaml_to_js_eff
114114 ~arg_label:
115- Empty ~arg_type: xlabel.arg_type
115+ Arg_empty ~arg_type: xlabel.obj_arg_type
116116 (Js_of_lam_option. val_from_option arg) in
117117 begin match acc with
118118 | Splice1 v ->
@@ -131,8 +131,8 @@ let assemble_obj_args (labels : External_arg_spec.t list) (args : J.expression
131131 let acc,new_eff =
132132 Lam_compile_external_call. ocaml_to_js_eff
133133 ~arg_label:
134- Empty
135- ~arg_type: xlabel.arg_type
134+ Arg_empty
135+ ~arg_type: xlabel.obj_arg_type
136136 (Js_of_lam_option. val_from_option arg) in
137137 begin match acc with
138138 | Splice1 v ->
0 commit comments