@@ -267,7 +267,8 @@ let translate_scoped_access scopes obj =
267267 | [] -> obj
268268 | x :: xs -> Ext_list. fold_left xs (E. dot obj x) E. dot
269269
270- let translate_ffi (cxt : Lam_compile_context.t ) arg_types
270+ let translate_ffi ?(transformed_jsx : Parsetree.jsx_element option )
271+ (cxt : Lam_compile_context.t ) arg_types
271272 (ffi : External_ffi_types.external_spec ) (args : J.expression list )
272273 ~dynamic_import =
273274 match ffi with
@@ -290,7 +291,11 @@ let translate_ffi (cxt : Lam_compile_context.t) arg_types
290291 add_eff eff
291292 (E. call
292293 ~info:
293- {arity = Full ; call_info = Call_na ; call_transformed_jsx = None }
294+ {
295+ arity = Full ;
296+ call_info = Call_na ;
297+ call_transformed_jsx = transformed_jsx;
298+ }
294299 fn args))
295300 | Js_call
296301 {
@@ -309,14 +314,22 @@ let translate_ffi (cxt : Lam_compile_context.t) arg_types
309314 add_eff eff
310315 (E. call
311316 ~info:
312- {arity = Full ; call_info = Call_na ; call_transformed_jsx = None }
317+ {
318+ arity = Full ;
319+ call_info = Call_na ;
320+ call_transformed_jsx = transformed_jsx;
321+ }
313322 fn args)
314323 else
315324 let args, eff = assemble_args_no_splice arg_types args in
316325 add_eff eff
317326 @@ E. call
318327 ~info:
319- {arity = Full ; call_info = Call_na ; call_transformed_jsx = None }
328+ {
329+ arity = Full ;
330+ call_info = Call_na ;
331+ call_transformed_jsx = transformed_jsx;
332+ }
320333 fn args
321334 | Js_module_as_fn {external_module_name; splice} ->
322335 let fn = external_var external_module_name ~dynamic_import in
@@ -326,15 +339,23 @@ let translate_ffi (cxt : Lam_compile_context.t) arg_types
326339 add_eff eff
327340 (E. call
328341 ~info:
329- {arity = Full ; call_info = Call_na ; call_transformed_jsx = None }
342+ {
343+ arity = Full ;
344+ call_info = Call_na ;
345+ call_transformed_jsx = transformed_jsx;
346+ }
330347 fn args)
331348 else
332349 let args, eff = assemble_args_no_splice arg_types args in
333350 (* TODO: fix in rest calling convention *)
334351 add_eff eff
335352 (E. call
336353 ~info:
337- {arity = Full ; call_info = Call_na ; call_transformed_jsx = None }
354+ {
355+ arity = Full ;
356+ call_info = Call_na ;
357+ call_transformed_jsx = transformed_jsx;
358+ }
338359 fn args)
339360 | Js_new {external_module_name = module_name ; name = fn ; splice; scopes} ->
340361 (* handle [@@new]*)
@@ -383,15 +404,23 @@ let translate_ffi (cxt : Lam_compile_context.t) arg_types
383404 (let self = translate_scoped_access js_send_scopes self in
384405 E. call
385406 ~info:
386- {arity = Full ; call_info = Call_na ; call_transformed_jsx = None }
407+ {
408+ arity = Full ;
409+ call_info = Call_na ;
410+ call_transformed_jsx = transformed_jsx;
411+ }
387412 (E. dot self name) args)
388413 else
389414 let args, eff = assemble_args_no_splice arg_types args in
390415 add_eff eff
391416 (let self = translate_scoped_access js_send_scopes self in
392417 E. call
393418 ~info:
394- {arity = Full ; call_info = Call_na ; call_transformed_jsx = None }
419+ {
420+ arity = Full ;
421+ call_info = Call_na ;
422+ call_transformed_jsx = transformed_jsx;
423+ }
395424 (E. dot self name) args)
396425 | _ -> assert false )
397426 | Js_module_as_var module_name -> external_var module_name ~dynamic_import
@@ -408,7 +437,12 @@ let translate_ffi (cxt : Lam_compile_context.t) arg_types
408437 if args = [] then e
409438 else
410439 E. call
411- ~info: {arity = Full ; call_info = Call_na ; call_transformed_jsx = None }
440+ ~info:
441+ {
442+ arity = Full ;
443+ call_info = Call_na ;
444+ call_transformed_jsx = transformed_jsx;
445+ }
412446 e args
413447 | Js_module_as_class module_name ->
414448 let fn = external_var module_name ~dynamic_import in
0 commit comments