- Fix bug in BackendUtil/lowest level of brittany about
alignment being ignored after a comment,
- Properly layout large (more than single-line) types in
record fields and in data decl rhs arguments,
- Properly layout data decl constructors with large "heads"
(forall, constraints),
- Add a config flag to control single-line layout of record
definition,
Only single line formatting of normal records was being supported. For
records with long names we need multi line formatting. This also needs
to support both multi and left indentation policies.
The `Makefile` includes `stack test` configurations to support building
versions of `brittany` with supported versions of `ghc`. Each version
uses a separate `.stack-work` directory to allow minimal compilation on
each change.
Simple records are supports. The tests cover:
- single records
- multi-field types
- columnized alignment
- basic deriving
- deriving strategies
- existential quanitification
A few items block merger
- retaining comments
A few items can be deferred:
- normal types
- sum types
- Finish consolidation, clearing a TODO
- Fix two comment placement issues around record wildcards
- Fix regression in brittany-0.12 about layouting large
(multiline) record field updates
Stops brittany from trying to read a user-global config
flag. Together with --config-file, this can be used to pass
one single config to brittany, thereby controlling exactly
and explicit what the inputs of brittany are.
Should be useful for testing stuff that might depend on
config.
`OverloadedLabels` is a simple enough extension to parse and format. It
is becoming more common with use of `generic-lens`. Since it can be
treated as a `HsVar` its implementation only requires using `docLit`,
along with some marshalling for dealing with `FastString`.