mirror of
https://github.com/ilyakooo0/ormolu.git
synced 2024-10-27 19:49:12 +03:00
a0aa410741
The issue was simply indenting the closing `|]` one more level. However there were a few more issues around them, which led me to a slightly bigger refactor. main reason is that, all `p_*Decl` functions used to print a trailing newline. This makes sense for top-level constructs, however it was making printing something like `[d|data Foo = Foo|]` impossible. In this commit, I removed trailing newlines from individual printers and gave that responsibility to `p_hsDecls`, and inserted an additional trailing newline when printing modules. While doing that, I noticed a few bugs/inconsistencies, and I had to fix them in the process: * Warning pragmas used to not print a trailing newline, so they were always attached to the next expression. I made it more like the other pragmas, where we attach it to a neighbour function if the name matches, otherwise we separate it with a newline. * We used to print single line GADT's and single line `do` notations using multiple lines, which breaks idempotency. I tweak them to prefer single line layout if possible (sometimes it is not possible because of the semicolon syntax).
11 lines
117 B
Haskell
11 lines
117 B
Haskell
{-# WARNING
|
|
test,
|
|
foo
|
|
[ "These are bad functions",
|
|
"Really bad!"
|
|
]
|
|
#-}
|
|
|
|
test :: IO ()
|
|
test = pure ()
|