0.14.0
版本发布时间: 2020-04-02 22:56:10
ocaml-ppx/ocamlformat最新发布版本:0.26.2(2024-04-18 18:07:29)
CHANGES:
New features
-
Add an option
--format-invalid-files
to print unparsable parts of the input as verbatim text. This feature is still experimental. (#1026) (Guillaume Petiot) -
Support multi-indices extended indexing operators (#1279, #1277) (Jules Aguillon, Guillaume Petiot) This feature has been added in OCaml 4.10.0
-
Handle OCaml 4.10.0 AST (#1276) (Guillaume Petiot)
-
Preserve functor syntax for consistency (#1312) (Guillaume Petiot) Previously both functor syntax:
module M = functor (K : S) -> struct end
andmodule M (K : S) = struct end
would be formatted as the latter, the original syntax is now preserved.
Changes
-
Add the option
doc-comments-val=before|after
(#1012) (Jules Aguillon) This option set the placement of documentation comment onval
andexternal
only. It is set toafter
by default. -
The default for
doc-comments
is changed fromafter
tobefore
(#1012, #1325) (Jules Aguillon) This affects bothconventional
(default) andocamlformat
profiles. -
Some options are now deprecated:
-
doc-comments
(#1293, #1012) This option depends on a flawed heuristic. It is replaced bydoc-comments-val
forval
andexternal
declarations. There is no equivalent to this option in the general case. -
escape-chars
,escape-strings
andextension-sugar
(#1293) These options are rarely used and their default behavior is considered to be the right behavior.
-
-
Add space between
row_field
attributes and the label or arguments, to be consistent with the non-polymorphic case. (#1299) (Craig Ferguson)
Bug fixes
-
Fix missing parentheses around
let open
(#1229) (Jules Aguillon) eg.M.f (M.(x) [@attr])
would be formatted toM.f M.(x) [@attr]
, which would crash OCamlformat -
Remove unecessary parentheses with attributes in some structure items:
- extensions and eval items (#1230) (Jules Aguillon)
eg. the expression
[%ext (() [@attr])]
or the structure item(() [@attr]) ;;
-
let _ = ...
constructs (#1244) (Etienne Millon)
- extensions and eval items (#1230) (Jules Aguillon)
eg. the expression
-
Fix some bugs related to comments:
- after a function on the rhs of an infix (#1231) (Jules Aguillon)
eg. the comment in
(x >>= fun y -> y (* A *))
would be dropped - in module unpack (#1309) (Jules Aguillon)
eg. in the module expression
module M = (val x : S (* A *))
- after a function on the rhs of an infix (#1231) (Jules Aguillon)
eg. the comment in
-
Fix formatting of empty signature payload
[%a:]
(#1236) (Etienne Millon) -
Fix parenthesizing when accessing field of construct application (#1247) (Guillaume Petiot)
-
Fix formatting of attributes on object overrides
{< >}
(#1238) (Etienne Millon) -
Fix attributes on coercion (#1239) (Etienne Millon)
-
Fix formatting of attributes on packed modules (#1243) (Etienne Millon)
-
Fix parens around binop operations with attributes (#1252, #1306) (Guillaume Petiot, Craig Ferguson)
-
Remove unecessary parentheses in the argument of indexing operators (#1280) (Jules Aguillon)
-
Retain attributes on various AST nodes:
- field set expressions, e.g.
(a.x <- b) [@a]
(#1284) (Craig Ferguson) - instance variable set expressions, e.g.
(a <- b) [@a]
(#1288) (Craig Ferguson) - indexing operators, e.g.
(a.(b)) [@a]
(#1300) (Craig Ferguson) - sequences, e.g.
(a; b) [@a]
(#1291) (Craig Ferguson)
- field set expressions, e.g.
-
Avoid unnecessary spacing after object types inside records and polymorphic variants, e.g.
{foo : < .. > [@a]}
and{ foo : < .. > }
(#1296) (Craig Ferguson) -
Fix missing parentheses around tuples with attributes. (#1301) (Craig Ferguson) Previously,
f ((0, 0) [@a])
would be formatted tof (0, 0) [@a]
, crashing OCamlformat. -
Avoid emitting
>]
when an object type is contained in an extension point or attribute payload (#1298) (Craig Ferguson) -
Fix crash on the expression
(0).*(0)
(#1304) (Jules Aguillon) It was formatting to0.*(0)
which parses as an other expression. -
Preserve empty doc-comments syntax. (#1311) (Guillaume Petiot) Previously
(**)
would be formatted to(***)
. -
Do not crash when a comment contains just a newline (#1290) (Etienne Millon)
-
Handle lazy patterns as arguments to
class
(#1289) (Etienne Millon) -
Preserve cinaps comments containing unparsable code (#1303) (Jules Aguillon) Previously, OCamlformat would fallback to the "wrapping" logic, making the comment unreadable and crashing in some cases.
-
Fix normalization of attributes, fixing the docstrings in attributes (#1314) (Guillaume Petiot)
-
Add missing parentheses around OR-patterns with attributes (#1317) (Guillaume Petiot)
-
Fix spacing inside parens for symbols when the spacing was handled by the englobing exp (#1316) (Guillaume Petiot)
-
Fix invalid (unparsable) docstrings (#1315) (Guillaume Petiot) When parsing a comment raises an error in odoc, it is printed as-is.
-
Fix parenthesizing of optional arguments rebound to non-variables, e.g.
let f ?a:(A) = ()
rather than the unparsablelet f ?a:A = ()
(#1305) (Craig Ferguson)
1、 ocamlformat-0.14.0.tbz 423.13KB