[GHC] #12864: Produce type errors after looking at whole applications
GHC
ghc-devs at haskell.org
Wed Nov 23 21:34:31 UTC 2016
#12864: Produce type errors after looking at whole applications
-------------------------------------+-------------------------------------
Reporter: nomeata | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler (Type | Version: 8.0.1
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Poor/confusing | Unknown/Multiple
error message | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by nomeata):
We briefly talked about this, and it is not obviously easily possible.
Currently, the type checker will, for example with `ex2 = fid d1 i1`,
create two insoluble wanted constraints, one at `d1` and one at `i1`,
which are then reported separately.
So here is a wild and not-thought through idea: We already have the
machinery to turn (some) type errors into coercions. So how about this
scheme:
* The type checker runs. Type errors that can be “fixed” by coercions are
fixed this way, and ''not'' reported right now. The others are reported as
ususal.
* (New step) We try to detect common, interesting patterns of code and
error coercions, and possibly move them around. For example:
{{{
(i ▷ (DelayedError Int Double), d ▷ (DelayedError Double Int)) ::
(Double, Int)
}}}
would be re-written to
{{{
(i, d) ▷ (DelayedError (Int, Double) (Double, Int)) :: (Double, Int)
}}}
This pass would only move these coercion wrappers around, otherwise, we
preserve the AST as entered by the user.
* Finally, the syntax tree is traversed as well, and all `DelayedError`
axioms are reported.
One side-effect of this would be that we could report error messages
citing the actual source of the context where they appear, in the actual
syntax of the user (using annotations), which might work better than our
current context-explanation-generating machinery.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12864#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list