@@ -257,7 +257,10 @@ and function_type_to_desc pos env ft =
257257 function_selector = None ;
258258 function_is_method = false ;
259259 function_is_primitive = false ;
260- function_def = None ; }
260+ function_def = None ;
261+ function_ops = [] ;
262+ function_purity = PurityUnknown ;
263+ }
261264
262265and process_fun_params pos env ~ext params =
263266 List. map (fun (t , loc_opt , name_opt ) ->
@@ -321,7 +324,10 @@ let variable_desc_to_function_desc pos vid variable_abs_name vt :
321324 function_selector;
322325 function_is_method = true ;
323326 function_is_primitive = false ;
324- function_def = None ; }
327+ function_def = None ;
328+ function_ops = [] ;
329+ function_purity = PurityUnknown ;
330+ }
325331
326332(* Build the function corresponding to an event *)
327333let event_desc_to_function_desc (ed : event_desc ) : function_desc =
@@ -335,7 +341,10 @@ let event_desc_to_function_desc (ed : event_desc) : function_desc =
335341 function_selector = None ;
336342 function_is_method = false ;
337343 function_is_primitive = false ;
338- function_def = None ; }
344+ function_def = None ;
345+ function_ops = [] ;
346+ function_purity = PurityUnknown ;
347+ }
339348
340349(* Make a ident description for a local variable *)
341350let local_variable_desc variable_type : variable_desc =
@@ -347,7 +356,9 @@ let local_variable_desc variable_type : variable_desc =
347356 variable_override = None ;
348357 variable_getter = None ;
349358 variable_is_primitive = false ;
350- variable_def = None ; }
359+ variable_def = None ;
360+ variable_ops = [] ;
361+ }
351362
352363
353364
@@ -395,7 +406,9 @@ let make_variable_desc vlid vd =
395406 variable_override = None ;
396407 variable_getter = None ;
397408 variable_is_primitive = false ;
398- variable_def = Some (vd); }
409+ variable_def = Some (vd);
410+ variable_ops = [] ;
411+ }
399412
400413let update_variable_desc pos env vd kind_opt =
401414 let vd' =
@@ -428,7 +441,10 @@ let make_function_desc flid fd method_ =
428441 function_selector = None ;
429442 function_is_method = method_;
430443 function_is_primitive = false ;
431- function_def = Some (fd); }
444+ function_def = Some (fd);
445+ function_ops = [] ;
446+ function_purity = PurityUnknown ;
447+ }
432448
433449let update_function_desc pos env fd kind_opt =
434450 let fd' =
@@ -468,6 +484,7 @@ let update_struct_fields sd fields =
468484(* Functions to build primitive types/desc *)
469485
470486let primitive_fun_desc ?(returns_lvalue =false )
487+ ?(purity =PurityPure )
471488 arg_types ret_types function_mutability =
472489 { function_abs_name = LongIdent. empty;
473490 function_params = List. map (fun t -> (t, None )) arg_types;
@@ -479,17 +496,20 @@ let primitive_fun_desc ?(returns_lvalue=false)
479496 function_selector = None ;
480497 function_is_method = false ; (* can be true *)
481498 function_is_primitive = true ;
482- function_def = None ; }
499+ function_def = None ;
500+ function_ops = [] ;
501+ function_purity = purity;
502+ }
483503
484504let primitive_fun_type ?(kind =KOther ) ?(returns_lvalue =false )
485505 arg_types ret_types function_mutability =
486506 let fd = primitive_fun_desc ~returns_lvalue
487507 arg_types ret_types function_mutability in
488508 TFunction (fd, { new_fun_options with kind })
489509
490- let primitive_fun ?(returns_lvalue =false )
510+ let primitive_fun ?(returns_lvalue =false ) ? purity
491511 arg_types ret_types function_mutability =
492- let fd = primitive_fun_desc ~returns_lvalue
512+ let fd = primitive_fun_desc ~returns_lvalue ?purity
493513 arg_types ret_types function_mutability in
494514 Function (fd)
495515
@@ -502,7 +522,9 @@ let primitive_var_desc (*?(is_lvalue=false)*) variable_type =
502522 variable_override = None ;
503523 variable_getter = None ;
504524 variable_is_primitive = true ;
505- variable_def = None ; }
525+ variable_def = None ;
526+ variable_ops = [] ;
527+ }
506528
507529let primitive_var (* ?(is_lvalue=false)*) variable_type =
508530 let vd = primitive_var_desc variable_type in
0 commit comments