-
Notifications
You must be signed in to change notification settings - Fork 85
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
When trying to format a multiline arrow expression enclosed with parenthesis, ormolu generates an incorrect result.
To Reproduce
The following file:
{-# LANGUAGE Arrows #-}
import Control.Arrow
foo :: () -> ()
foo = proc () -> do
(proc () ->
returnA -< ()
) -< ()
Calling ormolu -i
on it leads to:
Bug.hs:9:3
Parsing of formatted code failed:
[GHC-58481] parse error (possibly incorrect indentation or mismatched brackets)
We can force the result to be written on disk, with ormolu -i -u
, which leads to:
{-# LANGUAGE Arrows #-}
import Control.Arrow
foo :: () -> ()
foo = proc () -> do
( proc () ->
returnA -< ()
)
-<
()
See how the parenthesis are aligned, which is incorrect. The file can be fixed by indenting by 1 space the closing space. I'm unsure about the details of the correct arrow syntax here.
Note that the arrow expression must be multiline to trigger this behavior.
Expected behavior
Ormolu should not fail to format on these arrows syntax.
Environment
- OS name + version: linux nixos
- Version of the code: ormolu 0.7.7.0
Additional context
Add any other context about the problem here.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working