Commit Graph

64 Commits (687b59c62f8a0239ad24194f137140f59b858696)

Author SHA1 Message Date
Lennart Spitzner 687b59c62f Respect newlines before "where" 2023-05-08 14:54:34 +00:00
Lennart Spitzner 2b77142617 Fix layout of type-level list literal 2023-05-03 19:53:19 +00:00
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 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 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