Weird error spans in patterns
I just copied this code from base in a file to test something: ```haskell charIsRepresentable :: TextEncoding -> Char -> IO Bool charIsRepresentable !enc c = withCString enc [c] (\cstr -> do str <- peekCString enc cstr case str of [ch] | ch == c -> pure True _ -> pure False) `catch` \(_ :: IOException) -> pure False ``` and these are the errors I got: ``` Test.hs:4:21: warning: [-Wmissing-space-after-bang] Did you forget to enable BangPatterns? If you mean to bind (!) then perhaps you want to add a space after the bang for clarity. | 4 | charIsRepresentable !enc c = | ^^^^^^ Test.hs:4:22: error: Parse error in pattern: enc | 4 | charIsRepresentable !enc c = | ^^^^^ ``` The main problem is that the span is too large: only the `!enc` part is the problem, not `c`. Also in the second error the "bang" is outside of the span. Another problem is I think these should be merged into one error. The first message already explains the problem: I either need to enable BangPatterns or add a space after `!`. After that the latter is not helpful.
issue