Lennart Spitzner
84e703d7f3
Respect and Fix disable-next-binding/decl
2023-05-02 12:37:02 +00:00
Lennart Spitzner
fe876ea0b0
Hardcode more precedences
2023-05-02 12:37:02 +00:00
Lennart Spitzner
884c7da97c
Allow special layout for HsApp with HsDo/HsSpiceE args
2023-05-02 09:56:39 +00:00
Lennart Spitzner
ab67a794db
Fix retaining newlines between do statements
2023-05-02 09:56:39 +00:00
Phil Hazelden
52bde7910f
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-05-02 09:56:39 +00:00
Lennart Spitzner
e11188eb16
Respect newlines after block-comments
2023-05-02 09:56:39 +00:00
Lennart Spitzner
556bc896a6
Refactor WriteBriDoc FlushCommentsPrior code slightly
2023-05-02 09:56:39 +00:00
Lennart Spitzner
d2a48ba559
Fixup misspelled data-type name
2023-05-02 09:56:39 +00:00
Lennart Spitzner
7ab6a207ae
Update OpApp layouting options
...
- Allow par-spacing for single-operator 1+n-line layout
- Tweak when to flatten operators, i.e. when to allow a flat one-line-each
layout for the operator sequence "$ $ $ + +".
2023-05-02 09:16:44 +00:00
Lennart Spitzner
99e5aacb5e
Discard special case for non-nested OpApp
2023-05-02 09:16:04 +00:00
Lennart Spitzner
52e4658314
Minor comment updates and cleanup
2023-05-02 09:16:04 +00:00
Lennart Spitzner
56e7d6b5b9
Simplify/Optimize Decl:layoutPatternBindFinal
2023-05-02 09:16:04 +00:00
Lennart Spitzner
156b5cf407
setParSpacing for operator-expression ending in par
2023-05-02 09:16:04 +00:00
Lennart Spitzner
d29303d4cd
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-05-02 09:16:04 +00:00
Lennart Spitzner
5563cd4d93
Dont flatten operators without surrounding parens
2023-05-02 09:16:04 +00:00
Lennart Spitzner
09ec59eaf9
Fix comment-after-context
2023-05-02 09:16:04 +00:00
Lennart Spitzner
b24379d104
Fix restore-position after block comment
2023-05-02 09:16:04 +00:00
Lennart Spitzner
2fef44559e
Fix comments moving after "where"
2023-05-02 09:16:04 +00:00
Lennart Spitzner
ebe85a5949
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-05-02 09:16:04 +00:00
Lennart Spitzner
736c2a8d46
Fix retain comments on matches (lambda rhs etc.)
2023-05-02 09:16:04 +00:00
Lennart Spitzner
0a76fe952c
Refactor s/rec/go for extension compat
2023-05-02 09:16:03 +00:00
Lennart Spitzner
dc4e59f2a1
Fix BDLines getSpacing computation
2023-05-02 09:16:03 +00:00
Lennart Spitzner
412c5460aa
Do not count warnings for considering exactprint fallback
2023-05-02 09:16:03 +00:00
Lennart Spitzner
dd4367c6e8
Fixup annotation on error-fallback
2023-05-02 09:16:03 +00:00
Lennart Spitzner
676695a609
Implement fixity-aware-ops feature
2023-05-02 09:16:03 +00:00
Lennart Spitzner
75d17b961c
Fix double-printing of comments on certain data-decls
2023-05-02 09:16:03 +00:00
Lennart Spitzner
f13a82964a
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-05-02 09:16:03 +00:00
Lennart Spitzner
05270ecb45
Improve block-comment behaviour (newlines after or not)
2023-05-02 09:16:03 +00:00
Lennart Spitzner
7c329d391b
Make if-then-layout layout more consistent
2023-05-02 09:16:03 +00:00
Lennart Spitzner
5bee3fa93d
Fix missing comment for MG
2023-05-02 09:16:03 +00:00
Lennart Spitzner
83b13d61a0
Change behaviour: Less par-spacing for function application
2023-05-02 09:16:03 +00:00
Lennart Spitzner
3121ccacfe
Behaviour addition: Allow par-spacing on HsApp
2023-05-02 09:16:03 +00:00
Lennart Spitzner
d9373ec80e
Implement extension support - OverloadedRecordDot
2023-05-02 09:16:03 +00:00
Lennart Spitzner
72c9e4c3ab
Fix block-comment delta position special case
2023-05-02 09:16:03 +00:00
Lennart Spitzner
b116529005
Replace BriDoc+BriDocF with single BriDocW + type family
2023-05-02 09:16:03 +00:00
Lennart Spitzner
ee2814e3a8
Reintroduce BDAnnotationKW in the form of BDEntryDelta
2023-05-02 09:16:03 +00:00
Lennart Spitzner
7d3490b80a
Clean up WriteBriDoc monad state handling
2023-05-02 09:16:03 +00:00
Lennart Spitzner
847e01cc30
Clean up unused WriteBriDoc operators
2023-05-02 09:16:03 +00:00
Lennart Spitzner
d11141d34d
Refactor+Rewrite+Adaptation for ghc-9.2 support
2023-05-02 09:16:03 +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
97da38fab7
Merge remote-tracking branch 'upstream/master' into main
2022-01-11 13:48:58 +00:00
Sergey Vinokurov
3996efd5eb
Use defaultDynFlags to obtain ghc’s DynFlags
...
This way brittany can avoid dealing with incompatibilities in DynFlags
structure between ghc versions (e.g. different versions having
different fields).
2022-01-09 20:11:23 +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