Ocamlformat 0.5

See full changelog

Features

  • Add: support for new%js (#136, @hhugo)
  • Add: support for Ptyp_object (#104, @smondet)
  • Use original filename when given in error messages. (#96, @mbarbin)

Bug fixes

  • Fix: allow extensions in types (#143, @hhugo)
  • Fix: parens on symbol type constructor
  • Fix: parenthesization of '!=' partial application as a prefix op (#126, @hhugo)
  • Fix: parens around Ppat_constraint under Pexp_match or Pexp_try (#124, @hhugo)
  • Fix: parenthesization of tuple args of variant type declarations (#122, @hhugo)
  • Fix: missing parens around list inside Constr pattern (#123, @hhugo)
  • Fix: incorrect breaking of long strings (#130, @hhugo)
  • Fix: missing parens inside array literal (#129, @hhugo)
  • Fix: attributes on arguments of function (#121, @hhugo)
  • Fix: floating docstrings within a type declaration group
  • Fix: missing parens in sugared Array.set
  • Fix: missing attributes on patterns
  • Fix: is_prefix_id for != (#112, @hhugo)
  • Fix: missing parens around module value types in signatures (#108, @hcarty)
  • Fix: floating docstrings within a value binding group
  • Fix: missing attributes on extension points (#102, @hcarty)
  • Fix: extensible variants with aliases (#100, @hcarty)
  • Fix: several issues with extension sequence expressions
  • Fix: generative functors
  • Fix: preserve files with an empty ast (instead of failing) (#92, @mbarbin)
  • Fix: missing extension on Pexp_sequence
  • Fix: missing docstrings and attributes on types
  • Fix: missing parens around sugared Array and String operations
  • Fix: missing parens around Pexp_newtype
  • Fix: missing parens around Ppat_constraint, Ppat_or, and Ppat_unpack
  • Fix: dropped space when string wrapped between spaces
  • Fix: repeated ppx extension on mutual/recursive let-bindings (#83, @mbarbin)
  • Fix: dropped comments on Pmty_typeof
  • Fix: missing parens around Ppat_unpack under Ppat_constraint

Formatting improvements

  • Improve: two open lines following multiline definition only with --sparse (#144)
  • Improve: indent rhs of ref update (#139, @hhugo)
  • Improve: no parens around precedence 0 infix ops (refines #115) (#141, @hhugo)
  • Improve: support (type a b c) (#142, hhugo)
  • Improve: no parens for { !e with a } (#138, @hhugo)
  • Improve: no parens for constr inside list pattern. (#140, @hhugo)
  • Improve: generative functor applications (#137, @hhugo)
  • Improve: omit parens around lists in local opens (#134, @hhugo)
  • Prepare for ocaml#1705 (#131, @hhugo)
  • Improve: comment wrapping for dangling close
  • Improve: if-then-else conditions that break
  • Improve: suppress spurious terminal line break in wrapped strings
  • Improve: parens for nested constructors in pattern (#125, @hhugo)
  • Improve: remove duplicate parens around Ptyp_package
  • Improve: indentation after comment within record type declaration
  • Improve: add discretionary parens on nested binops with different precedence
  • Improve: empty module as functor argument (#113, @hhugo)
  • Improve: indentation of multiple attributes
  • Improve: attributes on short structure items
  • Improve: attributes on type declarations
  • Improve: tuple attribute args
  • Improve: parenthesization of Ppat_or
  • Improve: determination of file kind based on provided name
  • Improve: extension on the let at toplevel: e.g. let%expect_test _ (#94, @mbarbin)
  • Improve: constraints in punned record fields (#93, @mbarbin)
  • Improve: nullary attributes
  • Improve: Ppat_tuple under Ppat_array with unnecessary but clearer parens
  • Improve: breaking of arguments following wrapped strings

Build, packaging, and testing

  • Simplify using (universe) support in jbuilder 1.0+beta20
  • Add some regtests (#135, @hhugo)
  • Upgrade to Base v0.11.0 (#103, @jeremiedimino)
  • Add Travis CI script
  • Fix: build [make reason] (#97, @mbarbin)
  • Simplify Makefile due to jbuilder 1.0+beta18