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.
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list