|
@@ -633,7 +633,15 @@ and init_meta_overloads ctx co cf =
|
|
let params = (!type_function_params_rec) ctx f cf.cf_name p in
|
|
let params = (!type_function_params_rec) ctx f cf.cf_name p in
|
|
ctx.type_params <- params @ ctx.type_params;
|
|
ctx.type_params <- params @ ctx.type_params;
|
|
let topt = function None -> error "Explicit type required" p | Some t -> load_complex_type ctx true t in
|
|
let topt = function None -> error "Explicit type required" p | Some t -> load_complex_type ctx true t in
|
|
- let args = List.map (fun ((a,_),opt,_,t,cto) -> a,opt || cto <> None,topt t) f.f_args in
|
|
|
|
|
|
+ let args =
|
|
|
|
+ List.map
|
|
|
|
+ (fun ((a,_),opt,_,t,cto) ->
|
|
|
|
+ let t = if opt then ctx.t.tnull (topt t) else topt t in
|
|
|
|
+ let opt = opt || cto <> None in
|
|
|
|
+ a,opt,t
|
|
|
|
+ )
|
|
|
|
+ f.f_args
|
|
|
|
+ in
|
|
let cf = { cf with cf_type = TFun (args,topt f.f_type); cf_params = params; cf_meta = cf_meta} in
|
|
let cf = { cf with cf_type = TFun (args,topt f.f_type); cf_params = params; cf_meta = cf_meta} in
|
|
generate_args_meta ctx.com co (fun meta -> cf.cf_meta <- meta :: cf.cf_meta) f.f_args;
|
|
generate_args_meta ctx.com co (fun meta -> cf.cf_meta <- meta :: cf.cf_meta) f.f_args;
|
|
overloads := cf :: !overloads;
|
|
overloads := cf :: !overloads;
|