@@ -363,95 +363,95 @@ let js_mapper _args =
363363 default_loc := expr.pexp_loc;
364364 let { pexp_attributes; _ } = expr in
365365 let new_expr = match expr with
366- (* obj##.var *)
367- | [% expr [% e? obj] ##. [% e? meth] ] ->
368- let obj = mapper.expr mapper obj in
369- let meth = exp_to_string meth in
370- let e_obj, p_obj = mk_id ~loc: obj.pexp_loc " jsoo_obj" in
371- let e_res, p_res = mk_id ~loc: expr.pexp_loc " jsoo_res" in
372- let new_expr =
373- [% expr
374- let [% p p_obj] = [% e obj] in
375- let [% p p_res] = [% e Js. unsafe " get" [e_obj ; str @@ unescape meth]] in
376- [% e
377- constrain_types
378- e_obj
379- e_res [% type : 'jsoo_res]
380- meth (Js. type_ " gen_prop" [[% type : < get : 'jsoo_res; ..> ]])
381- []
382- ]
383- ]
384- in
385- mapper.expr mapper { new_expr with pexp_attributes }
386-
387- (* obj##.var := value *)
388- | [% expr [% e? [% expr [% e? obj] ##. [% e? meth]] as res] := [% e? value]] ->
389- default_loc := res.pexp_loc ;
390- let obj = mapper.expr mapper obj in
391- let value = mapper.expr mapper value in
392- let meth = exp_to_string meth in
393- let e_obj, p_obj = mk_id ~loc: obj.pexp_loc " jsoo_obj" in
394- let e_value, p_value = mk_id ~loc: value.pexp_loc " jsoo_arg" in
395- let new_expr =
396- [% expr
397- let [% p p_obj] = [% e obj]
398- and [% p p_value] = [% e value] in
399- let _ = [% e
400- constrain_types
401- e_obj
402- e_value [% type : 'jsoo_arg]
403- meth (Js. type_ " gen_prop" [[% type : < set : 'jsoo_arg -> unit ; ..> ]])
404- []
405- ]
366+ (* obj##.var *)
367+ | [% expr [% e? obj] ##. [% e? meth] ] ->
368+ let obj = mapper.expr mapper obj in
369+ let meth = exp_to_string meth in
370+ let e_obj, p_obj = mk_id ~loc: obj.pexp_loc " jsoo_obj" in
371+ let e_res, p_res = mk_id ~loc: expr.pexp_loc " jsoo_res" in
372+ let new_expr =
373+ [% expr
374+ let [% p p_obj] = [% e obj] in
375+ let [% p p_res] = [% e Js. unsafe " get" [e_obj ; str @@ unescape meth]] in
376+ [% e
377+ constrain_types
378+ e_obj
379+ e_res [% type : 'jsoo_res]
380+ meth (Js. type_ " gen_prop" [[% type : < get : 'jsoo_res; ..> ]])
381+ []
382+ ]
383+ ]
406384 in
407- [% e Js. unsafe ~loc: expr.pexp_loc " set" [ e_obj ; str @@ unescape meth ; e_value]]
408- ]
409- in
410- mapper.expr mapper { new_expr with pexp_attributes }
411-
412- (* obj##meth arg1 arg2 .. *)
413- (* obj##(meth arg1 arg2) .. *)
414- | {pexp_desc = Pexp_apply (([% expr [% e? obj] ## [% e? meth]] as expr), args); _}
415- | [% expr [% e? obj] ## [% e? {pexp_desc = Pexp_apply ((meth as expr),args); _}]]
416- ->
417- let meth = exp_to_string meth in
418- let obj = mapper.expr mapper obj in
419- let args = List. map (fun (s ,e ) -> s, mapper.expr mapper e) args in
420- let new_expr = method_call ~loc: expr.pexp_loc obj meth args in
421- mapper.expr mapper { new_expr with pexp_attributes }
422- (* obj##meth *)
423- | ([%expr [%e ? obj ] ## [%e ? meth ]] as expr ) ->
424- let obj = mapper.expr mapper obj in
425- let meth = exp_to_string meth in
426- let new_expr = method_call ~loc: expr.pexp_loc obj meth [] in
427- mapper.expr mapper { new_expr with pexp_attributes }
428-
429- (* new%js constr] *)
430- | [% expr [% js [% e? {pexp_desc = Pexp_new constr; _}]]] ->
431- let new_expr = new_object constr [] in
432- mapper.expr mapper { new_expr with pexp_attributes }
433- (* new%js constr arg1 arg2 ..)] *)
434- | {pexp_desc = Pexp_apply
435- ([% expr [% js [% e? {pexp_desc = Pexp_new constr; _}]]]
436- , args); _ } ->
437- let args = List. map (fun (s ,e ) -> s, mapper.expr mapper e) args in
438- let new_expr =
439- new_object constr args
385+ mapper.expr mapper { new_expr with pexp_attributes }
386+
387+ (* obj##.var := value *)
388+ | [% expr [% e? [% expr [% e? obj] ##. [% e? meth]] as res] := [% e? value]] ->
389+ default_loc := res.pexp_loc ;
390+ let obj = mapper.expr mapper obj in
391+ let value = mapper.expr mapper value in
392+ let meth = exp_to_string meth in
393+ let e_obj, p_obj = mk_id ~loc: obj.pexp_loc " jsoo_obj" in
394+ let e_value, p_value = mk_id ~loc: value.pexp_loc " jsoo_arg" in
395+ let new_expr =
396+ [% expr
397+ let [% p p_obj] = [% e obj]
398+ and [% p p_value] = [% e value] in
399+ let _ = [% e
400+ constrain_types
401+ e_obj
402+ e_value [% type : 'jsoo_arg]
403+ meth (Js. type_ " gen_prop" [[% type : < set : 'jsoo_arg -> unit ; ..> ]])
404+ []
405+ ]
406+ in
407+ [% e Js. unsafe ~loc: expr.pexp_loc " set" [ e_obj ; str @@ unescape meth ; e_value]]
408+ ]
409+ in
410+ mapper.expr mapper { new_expr with pexp_attributes }
411+
412+ (* obj##meth arg1 arg2 .. *)
413+ (* obj##(meth arg1 arg2) .. *)
414+ | {pexp_desc = Pexp_apply (([% expr [% e? obj] ## [% e? meth]] as expr), args); _}
415+ | [% expr [% e? obj] ## [% e? {pexp_desc = Pexp_apply ((meth as expr),args); _}]]
416+ ->
417+ let meth = exp_to_string meth in
418+ let obj = mapper.expr mapper obj in
419+ let args = List. map (fun (s ,e ) -> s, mapper.expr mapper e) args in
420+ let new_expr = method_call ~loc: expr.pexp_loc obj meth args in
421+ mapper.expr mapper { new_expr with pexp_attributes }
422+ (* obj##meth *)
423+ | ([%expr [%e ? obj ] ## [%e ? meth ]] as expr ) ->
424+ let obj = mapper.expr mapper obj in
425+ let meth = exp_to_string meth in
426+ let new_expr = method_call ~loc: expr.pexp_loc obj meth [] in
427+ mapper.expr mapper { new_expr with pexp_attributes }
428+
429+ (* new%js constr] *)
430+ | [% expr [% js [% e? {pexp_desc = Pexp_new constr; _}]]] ->
431+ let new_expr = new_object constr [] in
432+ mapper.expr mapper { new_expr with pexp_attributes }
433+ (* new%js constr arg1 arg2 ..)] *)
434+ | {pexp_desc = Pexp_apply
435+ ([% expr [% js [% e? {pexp_desc = Pexp_new constr; _}]]]
436+ , args); _ } ->
437+ let args = List. map (fun (s ,e ) -> s, mapper.expr mapper e) args in
438+ let new_expr =
439+ new_object constr args
440+ in
441+ mapper.expr mapper { new_expr with pexp_attributes }
442+
443+ (* object%js ... end *)
444+ | [% expr [% js [% e? {pexp_desc = Pexp_object class_struct; _} ]]] ->
445+ let fields = preprocess_literal_object (mapper.expr mapper) class_struct.pcstr_fields in
446+ let new_expr = match fields with
447+ | `Fields fields ->
448+ literal_object class_struct.pcstr_self fields
449+ | `Error e -> Exp. extension e in
450+ mapper.expr mapper { new_expr with pexp_attributes }
451+
452+ | _ -> default_mapper.expr mapper expr
440453 in
441- mapper.expr mapper { new_expr with pexp_attributes }
442-
443- (* object%js ... end *)
444- | [% expr [% js [% e? {pexp_desc = Pexp_object class_struct; _} ]]] ->
445- let fields = preprocess_literal_object (mapper.expr mapper) class_struct.pcstr_fields in
446- let new_expr = match fields with
447- | `Fields fields ->
448- literal_object class_struct.pcstr_self fields
449- | `Error e -> Exp. extension e in
450- mapper.expr mapper { new_expr with pexp_attributes }
451-
452- | _ -> default_mapper.expr mapper expr
453- in
454- default_loc := prev_default_loc;
455- new_expr
454+ default_loc := prev_default_loc;
455+ new_expr
456456 )
457457 }
0 commit comments