Lennart Spitzner
3ad71ce83c
Hardcode more precedences
2023-04-29 12:36:11 +00:00
Lennart Spitzner
6cd83c9d39
Allow special layout for HsApp with HsDo/HsSpiceE args
2023-04-29 11:11:01 +00:00
Lennart Spitzner
209fdc74a2
Fix retaining newlines between do statements
2023-04-29 11:11:01 +00:00
Phil Hazelden
29000c990c
Support promoted type applications.
...
Closes #370 .
Up to GHC 8.10,
foo @ 'Bar
was a valid type application. In GHC 9 it's not, which means brittany
needs to allow
foo @'Bar
which it now does.
The reason the space was needed was to allow a promoted type variable at
the head of a type-level list. That is,
'['Foo]
is invalid syntax, because it initially parses as the character `'['`.
So the promoted type variable was always given a separator at the
beginning, and we'd get
'[ 'Foo]
which was valid. Now we handle this case by specifically examining the
head of a type-level list; if it's promoted we introduce spaces, so
'[ 'Foo ]
'[Foo]
I've added tests for this and some related cases. In doing so I noticed
that unnecessary spaces get added in front of commas in these lists; I
believe that's a separate bug, and I've written a comment explaining why
it happens, but I haven't tried to fix it.
I'm not sure when the first alternates in the `FirstLastSingleton`
and `FirstLast` branches would ever be hit, so I'm not entirely sure if
the separators are necessary there. But since `docSeparator` disappears
at the end of a line and merges with adjacent separators, they should be
harmless.
2023-04-24 15:47:42 +00:00
Lennart Spitzner
ea550b401a
Respect newlines after block-comments
2023-04-24 15:45:28 +00:00
Lennart Spitzner
a3083729af
Refactor WriteBriDoc FlushCommentsPrior code slightly
2023-04-24 15:45:28 +00:00
Lennart Spitzner
e04b90e4c8
Fixup misspelled data-type name
2023-04-24 15:45:28 +00:00
Lennart Spitzner
084125eed3
Allow par-spacing for single-operator 1+n-line layout plus Tweak of OpApp
2023-04-22 19:54:24 +00:00
Lennart Spitzner
396c23191c
Discard special case for non-nested OpApp
2023-04-22 19:54:24 +00:00
Lennart Spitzner
89092d994c
Minor comment updates and cleanup
2023-04-22 19:54:24 +00:00
Lennart Spitzner
05e00f39f2
Simplify/Optimize Decl:layoutPatternBindFinal
2023-04-22 19:54:24 +00:00
Lennart Spitzner
b1e85de95d
setParSpacing for operator-expression ending in par
2023-04-22 19:54:24 +00:00
Lennart Spitzner
99dc88e2f9
Improve one HsLet layout
...
- Allow parSpacing for single-clause layout
- Allow par/sl layout when no where-clause was present
(not sure why this was disabled in the first place)
2023-04-22 19:54:24 +00:00
Lennart Spitzner
f18fd0c4ba
Dont flatten operators without surrounding parens
2023-04-22 19:54:24 +00:00
Lennart Spitzner
e9f66b3fd8
Fix comment-after-context
2023-04-22 19:54:24 +00:00
Lennart Spitzner
a6ed006427
Fix restore-position after block comment
2023-04-22 19:54:24 +00:00
Lennart Spitzner
f2e0044c4a
Fix comments moving after "where"
2023-04-22 19:54:24 +00:00
Lennart Spitzner
bad95f3670
Use dependency-injection for ToBriDoc modules
...
I assume this makes inlining impossible, but it enables
parallel compilation of all these modules. In my tests
this reduce wall clock time to 92%, and with more cores
the benefit should be higher.
2023-04-22 19:54:24 +00:00
Lennart Spitzner
5e1452a5f0
Fix retain comments on matches (lambda rhs etc.)
2023-04-22 19:54:24 +00:00
Lennart Spitzner
0c660e272d
Refactor s/rec/go for extension compat
2023-04-22 19:54:24 +00:00
Lennart Spitzner
6a1edb38f9
Fix BDLines getSpacing computation
2023-04-22 19:54:24 +00:00
Lennart Spitzner
9b5fb89c2b
Do not count warnings for considering exactprint fallback
2023-04-22 19:54:24 +00:00
Lennart Spitzner
7d4d6e77f7
Fixup annotation on error-fallback
2023-04-22 19:54:24 +00:00
Lennart Spitzner
73656eeff6
Implement fixity-aware-ops feature
2023-04-22 19:54:24 +00:00
Lennart Spitzner
4ea66b0e45
Fix double-printing of comments on certain data-decls
2023-04-22 19:54:24 +00:00
Lennart Spitzner
cbfa0d6d22
Partially restore retaining-empty-lines behaviour
...
Currently works for do blocks, multi-line list literals, and
lambda-case cases (apart from top-level blank lines that
never got ignored).
2023-04-22 19:54:24 +00:00
Lennart Spitzner
dafaa8cab8
Improve block-comment behaviour (newlines after or not)
2023-04-22 19:54:24 +00:00
Lennart Spitzner
5693be1be0
Make if-then-layout layout more consistent
2023-04-22 19:54:24 +00:00
Lennart Spitzner
e92580429a
Fix missing comment for MG
2023-04-22 19:54:24 +00:00
Lennart Spitzner
6f380f2be6
Change behaviour: Less par-spacing for function application
2023-04-22 19:54:24 +00:00
Lennart Spitzner
67a6ab8209
Behaviour addition: Allow par-spacing on HsApp
2023-04-22 19:54:24 +00:00
Lennart Spitzner
c58bf7b845
Implement extension support - OverloadedRecordDot
2023-04-22 19:54:24 +00:00
Lennart Spitzner
278dcfc7c6
Fix block-comment delta position special case
2023-04-22 19:54:24 +00:00
Lennart Spitzner
7f5dc46798
Replace BriDoc+BriDocF with single BriDocW + type family
2023-04-22 19:54:24 +00:00
Lennart Spitzner
7db1028223
Reintroduce BDAnnotationKW in the form of BDEntryDelta
2023-04-22 19:54:24 +00:00
Lennart Spitzner
9034a2f59d
Clean up WriteBriDoc monad state handling
2023-04-22 19:54:24 +00:00
Lennart Spitzner
cca049b100
Clean up unused WriteBriDoc operators
2023-04-22 19:54:24 +00:00
Lennart Spitzner
7ebd61db3d
Refactor+Rewrite+Adaptation for ghc-9.2 support
2023-04-22 19:54:24 +00:00
Lennart Spitzner
dd8264797e
Revert "Split tests into individual files"
...
This reverts commit 21e86adf6e
.
2023-04-22 19:54:24 +00:00
Lennart Spitzner
dc008800e7
Switch to butcher-2.0
2023-04-22 19:54:24 +00:00
Taylor Fausak
93a43bf28d
Revert "Remove `Language.Haskell.` from module names"
...
This reverts commit 2fe1432631
.
2022-01-13 14:16:14 +00:00
Taylor Fausak
2fe1432631
Remove `Language.Haskell.` from module names
2021-11-29 12:25:00 +00:00
Taylor Fausak
7fa2a85b30
Format Brittany with Brittany
...
Fixes #238 .
2021-11-29 02:31:50 +00:00
Taylor Fausak
21e86adf6e
Split tests into individual files
2021-11-23 22:41:01 +00:00
Taylor Fausak
89a9f47b72
Ignore warnings when parsing modules
2021-11-21 23:40:15 +00:00
Taylor Fausak
ab59e9acc3
Parse modules "purely", without ghc-paths
2021-11-21 22:58:07 +00:00
Taylor Fausak
8fadac8b2e
Format imports
2021-11-21 13:44:06 +00:00
Taylor Fausak
8d7b46b9e9
Fix handling of comments
2021-11-07 13:01:54 +00:00
Taylor Fausak
4079981b1d
Revert "Format Brittany with Brittany"
...
This reverts commit 4398b5880d
.
2021-11-07 12:37:49 +00:00
Taylor Fausak
4398b5880d
Format Brittany with Brittany
2021-11-06 22:29:34 +00:00