Poll: Error message spans

Simon Marlow marlowsd at gmail.com
Mon Jan 11 05:10:03 EST 2010

On 06/01/10 11:35, Ian Lynagh wrote:

> Currently, when GHC reports an error it only gives a source position,
> not a source span. For example, with this module:
>      main = print (f (const 'x' 'x') 'y')
>      f xs y = xs ++ [y]
> you get an error starting:
>      u.hs:1:18:
>          Couldn't match expected type `[a]' against inferred type `Char'
> There's a (probably little-known) flag -ferror-spans with which you get
> this error instead:
>      u.hs:1:18-30:
>          Couldn't match expected type `[a]' against inferred type `Char'
> i.e. rather than just giving the start column number 18, it gives you
> the span 18-30 (the "const 'x' 'x'").
> Would you find the extra information useful, or just noise?
> i.e. should we show error spans by default?

I think we should point out that this will mean tools that interpret GHC 
error messages will need to be updated: e.g. Emacs/vim modes.

Errors that span multiple lines look like this:

   Foo.hs:(1,0)-(10,33): ...

though the exact format could be changed.

I lean towards leaving it turned off. Visual tools that want to turn it 
on can do so, but using GHC from the command line with a text editor I 
don't think I've ever wanted to know the endpoint of the expression to 
which an error message refers, and there are downsides: breaking tools, 
and extra clutter in the error messages.


More information about the Glasgow-haskell-users mailing list