Fix tyConToIfaceDecl (Trac #9190)
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 11 Jun 2014 14:09:55 +0000 (15:09 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 11 Jun 2014 19:56:37 +0000 (20:56 +0100)
commite5257f8fe20f5278c23693f1523e298e6fdaa064
tree657800ca261e3f6b73d1cdc5033db76881b3e9e0
parent748bec483b8e1c8ae69e68903f5c3d5bd93e92be
Fix tyConToIfaceDecl (Trac #9190)

There are three bugs here, one serious

 * We were failing to tidy the type arguments in an IfTyConParent
   This is what was causing Trac #9190.

 * toIfaceTcArgs is careful to suppress kind arguments, but there
   was a clone, tidyToIfaceTcArgs in IfaceSyn which didn't.
   Now the latter goes via the former.

 * When pretty-printing a IfaceDecl for an algebraic data type, and
   doing so in Haskell-98 syntax, we were silently assuming that the
   universal type variables of the TyCon and the DataCon were the
   same. But that has not been true for some time. Result: a very
   confusing display.

   Solution: during the conversion to IfaceSyn, take the opportunity
   to make the universal type variables line up exactly.  This is very
   easy to do, makes the pretty-printing easy, and leaves open the future
   possiblity of not serialising the universal type variables of the
   data constructor.
compiler/iface/MkIface.lhs
testsuite/tests/ghci/scripts/T4087.stdout
testsuite/tests/polykinds/T7438.stderr