@@ -492,17 +492,22 @@ let process_obj
492492 param_type::arg_types, result_types
493493 | Nothing ->
494494 let s = (Lam_methname. translate name) in
495- {obj_arg_label = External_arg_spec. optional s; obj_arg_type},
495+ let for_sure_not_nested =
496+ match ty.ptyp_desc with
497+ | Ptyp_constr ({txt = Lident txt ;_} , [] ) ->
498+ Ast_core_type. is_builtin_rank0_type txt
499+ | _ -> false in
500+ {obj_arg_label = External_arg_spec. optional for_sure_not_nested s; obj_arg_type},
496501 param_type :: arg_types,
497502 ( Parsetree. Otag ({Asttypes. txt = name; loc}, [] , Ast_comb. to_undefined_type loc ty) :: result_types)
498503 | Int _ ->
499504 let s = Lam_methname. translate name in
500- {obj_arg_label = External_arg_spec. optional s ; obj_arg_type },
505+ {obj_arg_label = External_arg_spec. optional true s ; obj_arg_type },
501506 param_type :: arg_types,
502507 (Otag ({Asttypes. txt = name; loc}, [] , Ast_comb. to_undefined_type loc @@ Ast_literal. type_int ~loc () ) :: result_types)
503508 | Poly_var_string _ ->
504509 let s = Lam_methname. translate name in
505- {obj_arg_label = External_arg_spec. optional s ; obj_arg_type },
510+ {obj_arg_label = External_arg_spec. optional true s ; obj_arg_type },
506511 param_type::arg_types,
507512 (Otag ({Asttypes. txt = name; loc}, [] , Ast_comb. to_undefined_type loc @@ Ast_literal. type_string ~loc () ) :: result_types)
508513 | Arg_cst _
@@ -1020,7 +1025,7 @@ let pval_prim_of_option_labels
10201025 let label_name = Lam_methname. translate p.txt in
10211026 let obj_arg_label =
10221027 if is_option then
1023- External_arg_spec. optional label_name
1028+ External_arg_spec. optional false label_name
10241029 else External_arg_spec. obj_label label_name
10251030 in
10261031 {obj_arg_type = Nothing ;
0 commit comments