Commit Graph

877 Commits (afa855c656d7404c1b7c474ae322510bfbba6226)

Author SHA1 Message Date
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 dedeab61e2 Ignore missing kind signatures and unused imports for now 2023-05-02 09:16:03 +00:00
Lennart Spitzner 84669034b5 Unhide warning 2023-05-02 09:16:03 +00:00
Lennart Spitzner 7f4730858e Pass ghc -fhide-source-paths by default 2023-05-02 09:16:03 +00:00
Lennart Spitzner bff9bfb312 Support and use nested file structure for tests 2023-05-02 09:16:03 +00:00
Lennart Spitzner 4e397441b9 Revert "Split tests into individual files"
This reverts commit 21e86adf6e.
2023-05-02 09:16:00 +00:00
Lennart Spitzner d4896d2234 Revert "Run tests in serial"
This reverts commit cddb98b124.
2023-04-22 19:54:24 +00:00
Lennart Spitzner eabf4e9d45 Revert "Simplify test suite"
This reverts commit 8f2625dc87.
2023-04-22 19:54:24 +00:00
Lennart Spitzner 5806dfc208 Add seaaye stuff 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 e03ab8425b
Merge pull request #377 from lspitzner/tfausak-patch-1
Announce end of maintenance
2022-11-11 12:13:28 -06:00
Taylor Fausak 420eac889e
Announce end of maintenance 2022-11-11 09:52:57 -06:00
Taylor Fausak 0aa04af4eb
Version 0.14.0.2 2022-01-13 09:28:26 -05: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 29814f919e
Version 0.14.0.1 2022-01-11 08:49:47 -05:00
Taylor Fausak 97da38fab7 Merge remote-tracking branch 'upstream/master' into main 2022-01-11 13:48:58 +00:00