Ticket #1432 (closed bug: fixed)

Opened 6 years ago

Last modified 5 years ago

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

Changed 6 years ago by simonpj

  • status changed from new to closed
  • resolution set to fixed

Fixed, thanks.

Simon

Changed 6 years ago by igloo

  • milestone changed from 6.8 branch to 6.8.1

Changed 5 years ago by simonmar

  • architecture changed from Unknown to Unknown/Multiple

Changed 5 years ago by simonmar

  • os changed from Unknown to Unknown/Multiple
Note: See TracTickets for help on using tickets.