Ticket #1432 (closed bug: fixed)
Poor type error messages (refer to generated code rather than the higher level problem)
| Reported by: | igloo | Owned by: | |
|---|---|---|---|
| Priority: | high | Milestone: | 6.8.1 |
| Component: | Compiler (Type checker) | Version: | 6.6.1 |
| Keywords: | Cc: | ||
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | Difficulty: | Unknown | |
| Test Case: | tcfail046,tcfail169,tcfail118 | Blocked By: | |
| Blocking: | Related Tickets: |
Description
With this module:
module Foo where
data Foo a = Foo
data Bar a = Bar (Foo a)
deriving Eq
the HEAD says:
q.hs:5:0:
Non type-variable argument in the constraint: Eq (Foo a)
(Use -fglasgow-exts to permit this)
In the context: (Eq (Foo a))
While checking the context of an instance declaration
In the derived instance: (Eq (Foo a)) => Eq (Bar a)
which isn't really the error message that we want, as it's refering to the generated instance.
6.6 gives the much better:
q.hs:5:5:
No instance for (Eq (Foo a))
arising from the 'deriving' clause of a data type declaration
at q.hs:5:5
Possible fix: add an instance declaration for (Eq (Foo a))
When deriving the instance for `Eq (Bar a)'
This example is from tcfail046; tcfail169 is similar and tcfail118 is also a related issue.
Change History
Note: See
TracTickets for help on using
tickets.
