Move zonking out of tcFamTyPats
authorSimon Peyton Jones <simonpj@microsoft.com>
Fri, 7 Oct 2016 23:03:53 +0000 (00:03 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Mon, 10 Oct 2016 10:51:09 +0000 (11:51 +0100)
commit76a5477b86c66c52854d8d4fbabbd15ce128fa83
tree3acb9c9a22da701a3a4268bf6c8c1ae6a64e45aa
parent88eb77380936f265fd881afb1d0d27926ca2a233
Move zonking out of tcFamTyPats

In tcFamTyPats we were zonking from the TcType world to the
Type world, ready to build the results into a CoAxiom (which
should have no TcType stuff.  But the 'thing_inside' for
tcFamTyPats also must be zonked, and that zonking must have
the ZonkEnv from the binders zonked tcFamTyPats.

Ugh.  This caused an assertion failure (with DEBUG on) in
RaeBlobPost and TypeLevelVec, both in tests/dependent, as
shown in Trac #12682.  Why it hasn't shown up before now
is obscure to me.

So I moved the zonking stuff out of tcFamTyPats to its
three call sites, where we can do it all together. Very
slightly longer, but much more robust.
compiler/typecheck/TcInstDcls.hs
compiler/typecheck/TcTyClsDecls.hs