Trailing comment inhibits a following empty line
ChickenProp opened this issue · 0 comments
Describe the bug
In layout mode (i.e. where
, do
, let
), empty lines between blocks of code are optional. But if one block ends with a trailing comment on its final line, then an empty line before the next block is removed.
To Reproduce
The blank lines between the a
and b
lines in this snippet are removed.
test1 = foo where
a = a --
b = b
test2 = do
a --
b
test3 = let a = a --
b = b
in c
This also happens if the comment includes text (a = a -- foo
), or if it's a block comment with nothing after it (a = a {- foo -}
), or if there's another comment on the next line. It doesn't happen if the comment is on the next line without one on the current line, or if the expression continues on the next line, or if it's a block comment with something following (a = a {- foo -} 1
). (A block comment with newlines has the same behavior as one without.) Also, it doesn't happen if the following block starts with a comment, as long as it does have a newline before it. That is:
-- all these blank lines are preserved
test4 = do
a --
--
bar
-- this one is removed
test5 = do
a --
--
bar
Expected behavior
I'd expect all these blank lines to be preserved
Environment
Tested on the web at https://ormolu-live.tweag.io/. Version 0.7.7.0, commit 392b2bc, using ghc-lib-parser 9.10.1.20240511.