Bad error message for a misaligned case block in a do-let expression
Consider the following code:
main = do code <- getCode let value = case code of 1 -> 2 3 -> 4 _ -> 5 print value
This is a parse error, as the indent of the case statements is under the indent introduced by let. However, the error message on 8.6 onwards is very misleading:
/home/dkr/example/Bad.hs:2:8: error: Unexpected do block in function application: do code <- getCode let value = ... You could write it with parentheses Or perhaps you meant to enable BlockArguments? | 2 | main = do | ^^...
Compare this with 8.4, which is a bit less bad:
/home/dkr/example/Bad.hs:5:6: error: parse error on input ‘1’ | 5 | 1 -> 2 | ^