diff --git a/test/passing/dune.inc b/test/passing/dune.inc index 18598598e6..172e04e603 100644 --- a/test/passing/dune.inc +++ b/test/passing/dune.inc @@ -4114,13 +4114,31 @@ (package ocamlformat) (action (diff tests/obuild.ml.err obuild.ml.stderr))) +(rule + (deps tests/.ocamlformat ) + (package ocamlformat) + (action + (with-stdout-to ocp_indent_compat-break_colon_after.ml.stdout + (with-stderr-to ocp_indent_compat-break_colon_after.ml.stderr + (run %{bin:ocamlformat} --margin-check --ocp-indent-compat --break-colon=after %{dep:tests/ocp_indent_compat.ml}))))) + +(rule + (alias runtest) + (package ocamlformat) + (action (diff tests/ocp_indent_compat-break_colon_after.ml.ref ocp_indent_compat-break_colon_after.ml.stdout))) + +(rule + (alias runtest) + (package ocamlformat) + (action (diff tests/ocp_indent_compat-break_colon_after.ml.err ocp_indent_compat-break_colon_after.ml.stderr))) + (rule (deps tests/.ocamlformat ) (package ocamlformat) (action (with-stdout-to ocp_indent_compat.ml.stdout (with-stderr-to ocp_indent_compat.ml.stderr - (run %{bin:ocamlformat} --margin-check %{dep:tests/ocp_indent_compat.ml}))))) + (run %{bin:ocamlformat} --margin-check --ocp-indent-compat --break-colon=before %{dep:tests/ocp_indent_compat.ml}))))) (rule (alias runtest) diff --git a/test/passing/tests/ocp_indent_compat-break_colon_after.ml.opts b/test/passing/tests/ocp_indent_compat-break_colon_after.ml.opts new file mode 100644 index 0000000000..4ebafbf051 --- /dev/null +++ b/test/passing/tests/ocp_indent_compat-break_colon_after.ml.opts @@ -0,0 +1,2 @@ +--ocp-indent-compat +--break-colon=after diff --git a/test/passing/tests/ocp_indent_compat-break_colon_after.ml.ref b/test/passing/tests/ocp_indent_compat-break_colon_after.ml.ref new file mode 100644 index 0000000000..a923926ba5 --- /dev/null +++ b/test/passing/tests/ocp_indent_compat-break_colon_after.ml.ref @@ -0,0 +1,85 @@ +(* Bad: unboxing the function type *) +external i : (int -> float[@unboxed]) = "i" "i_nat" + +module type M = sig + val action : action + (** Formatting action: input type and source, and output destination. *) + + val doc_atrs : + (string Location.loc * payload) list + -> (string Location.loc * bool) list option + * (string Location.loc * payload) list + + val transl_modtype_longident + (* from Typemod *) : + (Location.t -> Env.t -> Longident.t -> Path.t) ref + + val transl_modtype_longident + (* foooooooooo fooooooooooooo foooooooooooo foooooooooooooo + foooooooooooooo foooooooooooo *) : + (Location.t -> Env.t -> Longident.t -> Path.t) ref + + val imported_sets_of_closures_table : + Simple_value_approx.function_declarations option Set_of_closures_id.Tbl.t + + type 'a option_decl = + names:string list + -> doc:string + -> section:[`Formatting | `Operational] + -> ?allow_inline:bool + -> (config -> 'a -> config) + -> (config -> 'a) + -> 'a t + + val select : + (* The fsevents context *) + env + -> (* Additional file descriptor to select for reading *) + ?read_fdl:fd_select list + -> (* Additional file descriptor to select for writing *) + ?write_fdl:fd_select list + -> (* Timeout...like Unix.select *) + timeout:float + -> (* The callback for file system events *) + (event list -> unit) + -> unit + + val f : + x:t + (** an extremely long comment about [x] that does not fit on the same + line with [x] *) + -> unit + + val f : + fooooooooooooooooo: + (fooooooooooooooo + -> fooooooooooooooooooo + -> foooooooooooooo + -> foooooooooooooo * fooooooooooooooooo + -> foooooooooooooooo ) + (** an extremely long comment about [x] that does not fit on the same + line with [x] *) + -> unit +end + +let ssmap : + (module MapT + with type key = string + and type data = string + and type map = SSMap.map ) + = + () + +let ssmap : + (module MapT + with type key = string + and type data = string + and type map = SSMap.map ) + -> unit + = + () + +let long_function_name : + type a. a long_long_type -> a -> a -> a -> wrap_wrap_wrap -> unit + = + fun () -> () diff --git a/test/passing/tests/ocp_indent_compat.ml b/test/passing/tests/ocp_indent_compat.ml index ea9f32eafb..64601e0751 100644 --- a/test/passing/tests/ocp_indent_compat.ml +++ b/test/passing/tests/ocp_indent_compat.ml @@ -1,7 +1,3 @@ -[@@@ocamlformat "ocp-indent-compat=true"] - -[@@@ocamlformat "break-colon=before"] - (* Bad: unboxing the function type *) external i : (int -> float[@unboxed]) = "i" "i_nat" @@ -89,64 +85,11 @@ let long_function_name = fun () -> () -[@@@ocamlformat "ocp-indent-compat=false"] - -[@@@ocamlformat "break-colon=after"] - -module type M = sig - val transl_modtype_longident (* from Typemod *) : - (Location.t -> Env.t -> Longident.t -> Path.t) ref - - val transl_modtype_longident - (* foooooooooo fooooooooooooo foooooooooooo foooooooooooooo - foooooooooooooo foooooooooooo *) : - (Location.t -> Env.t -> Longident.t -> Path.t) ref - - val imported_sets_of_closures_table : - Simple_value_approx.function_declarations option Set_of_closures_id.Tbl.t - - val select : - (* The fsevents context *) - env - -> (* Additional file descriptor to select for reading *) - ?read_fdl:fd_select list - -> (* Additional file descriptor to select for writing *) - ?write_fdl:fd_select list - -> (* Timeout...like Unix.select *) - timeout:float - -> (* The callback for file system events *) - (event list -> unit) - -> unit - - val f : - x:t - (** an extremely long comment about [x] that does not fit on the - same line with [x] *) - -> unit - - val f : - fooooooooooooooooo: - ( fooooooooooooooo - -> fooooooooooooooooooo - -> foooooooooooooo - -> foooooooooooooo * fooooooooooooooooo - -> foooooooooooooooo ) - (** an extremely long comment about [x] that does not fit on the - same line with [x] *) - -> unit -end - -let array_fold_transf (f : numbering -> 'a -> numbering * 'b) n (a : 'a array) - : numbering * 'b array = - match Array.length a with 0 -> (n, [||]) | 1 -> x - -let to_clambda_function (id, (function_decl : Flambda.function_declaration)) - : Clambda.ufunction = - (* All that we need in the environment, for translating one closure from a - closed set of closures, is the substitutions for variables bound to the - various closures in the set. Such closures will always be ... *) - x - -let long_function_name : - type a. a long_long_type -> a -> a -> a -> wrap_wrap_wrap -> unit = - fun () -> () +let add_edge target dep = + if target <> dep + then ( + Hashtbl.replace edges dep + (target :: (try Hashtbl.find edges dep with Not_found -> [])); + Hashtbl.replace edge_count target + (1 + try Hashtbl.find edge_count target with Not_found -> 0); + if not (Hashtbl.mem edge_count dep) then Hashtbl.add edge_count dep 0) diff --git a/test/passing/tests/ocp_indent_compat.ml.err b/test/passing/tests/ocp_indent_compat.ml.err index 6faa1c0e72..e69de29bb2 100644 --- a/test/passing/tests/ocp_indent_compat.ml.err +++ b/test/passing/tests/ocp_indent_compat.ml.err @@ -1 +0,0 @@ -Warning: tests/ocp_indent_compat.ml:138 exceeds the margin diff --git a/test/passing/tests/ocp_indent_compat.ml.opts b/test/passing/tests/ocp_indent_compat.ml.opts new file mode 100644 index 0000000000..7b22536b8d --- /dev/null +++ b/test/passing/tests/ocp_indent_compat.ml.opts @@ -0,0 +1,2 @@ +--ocp-indent-compat +--break-colon=before