(* TEST
ocamldoc with html;
ocamldoc with latex;
*)
(* The output of this test demonstrates that the documentation
* is put in the right order, even though the param tags order
* may not correspond to the actual param order.
*)
(**
@param y second arg
@param x first arg
*)
let f1 x ~y = x + y
(**
There's no way to refer to the third arg in documentation.
@param y second arg
@param x first arg
*)
let f2 x ~y = function
| Some z -> String.length x + y + z
| None -> String.length x + y
(**
@param x first arg
@param z third arg
@param y second arg
*)
let f3 = fun x -> fun y -> fun z -> x + y + z
(**
This output is a bit weird: we should probably refer
to the third argument as [z], its label, rather than
[blah], its internally-bound pattern.
@param x first arg
@param blah third arg
@param y second arg
*)
let f4 ?x ?(y = 4) ?z:(blah = 3) () =
Option.value x ~default:5 + y + blah
class m = object (self)
(**
@param self this param should be dropped.
*)
method no_args = ()
(**
@param x first arg
@param z third arg
@param y second arg
*)
method a_few_args x y z = x + y + z
end