Opened 8 years ago

Closed 8 years ago

#4917 closed bug (fixed)

ghc7 does not equate type synonyms under RankNTypes

Reported by: kyagrd Owned by:
Priority: normal Milestone:
Component: Compiler (Type checker) Version: 7.0.1
Keywords: Cc:
Operating System: Linux Architecture: x86_64 (amd64)
Type of failure: GHC rejects valid program Test Case: typecheck/should_compile/T4917
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:

Description (last modified by simonpj)

See the source at

It works on ghc6 but not on ghc 7

The type error message is

    Couldn't match expected type `forall a'1.
                                  x a'1 -> Const (Const b a') a'1'
                with actual type `forall a'1. x1 a'1 -> Const b a'1'
    Expected type: (forall a'1. x a'1 -> Const (Const b a') a'1)
                   -> f x a
                   -> Const (Const b a') a
      Actual type: (forall a'1. x1 a'1 -> Const b a'1)
                   -> f1 x1 a1
                   -> Const b a1
    In the first argument of `mcata', namely `f'
    In the first argument of `f', namely `(mcata f)'

Attachments (1)

ghc7rankn.hs (668 bytes) - added by kyagrd 8 years ago.

Download all attachments as: .zip

Change History (4)

Changed 8 years ago by kyagrd

Attachment: ghc7rankn.hs added

comment:1 Changed 8 years ago by kyagrd

Component: CompilerCompiler (Type checker)

comment:2 Changed 8 years ago by simonpj

Description: modified (diff)
Status: newmerge
Test Case: typecheck/should_compile/T4917

Very good point, thank you. Fixed by

Tue Jan 25 11:01:12 GMT 2011
  * Fix Trac #4917: try a bit harder to unify on-the-fly
  This is generally a modest improvement but, more important,
  it fixes a "unify-under-forall" problem.  See Note [Avoid deferring].
  There's still a lurking unsatisfactory-ness in that we can't
  defer arbitrary constraints that are trapped under a forall.

    M ./compiler/typecheck/TcUnify.lhs -8 +28

Ian, please merge.


comment:3 Changed 8 years ago by igloo

Resolution: fixed
Status: mergeclosed


Note: See TracTickets for help on using tickets.