X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=generator%2Fgenerator_checks.ml;h=347404703b4eaa2371551a6dbc22346448861b93;hp=98649e26712a497e91c8a5534bc4be4e0cb8bd1f;hb=a0f85ba643990da25b6afe6a2bbd2407cf312c73;hpb=0003ea2c3dbaa7e22f4f616539136821d80694b8 diff --git a/generator/generator_checks.ml b/generator/generator_checks.ml index 98649e2..3474047 100644 --- a/generator/generator_checks.ml +++ b/generator/generator_checks.ml @@ -101,7 +101,9 @@ let () = failwithf "%s has param/ret using reserved word %s" name n; in - (match fst style with + let ret, args, optargs = style in + + (match ret with | RErr -> () | RInt n | RInt64 n | RBool n | RConstString n | RConstOptString n | RString n @@ -109,7 +111,22 @@ let () = | RHashtable n | RBufferOut n -> check_arg_ret_name n ); - List.iter (fun arg -> check_arg_ret_name (name_of_argt arg)) (snd style) + List.iter (fun arg -> check_arg_ret_name (name_of_argt arg)) args; + List.iter (fun arg -> check_arg_ret_name (name_of_argt arg)) optargs; + ) all_functions; + + (* Check only certain types allowed in optargs. *) + List.iter ( + fun (name, (_, _, optargs), _, _, _, _, _) -> + if List.length optargs > 64 then + failwithf "maximum of 64 optional args allowed for %s" name; + + List.iter ( + function + | Bool _ | Int _ | Int64 _ | String _ -> () + | _ -> + failwithf "optional args of %s can only have type Bool|Int|Int64|String" name + ) optargs ) all_functions; (* Check short descriptions. *)