Tidy up a remaining glitch in unification
authorSimon Peyton Jones <simonpj@microsoft.com>
Tue, 1 May 2012 07:07:52 +0000 (08:07 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Tue, 1 May 2012 07:07:52 +0000 (08:07 +0100)
commit67c793a3a13482bc897810e3b5e13f96942afc68
tree9cafebc647e5bc030e8f41232e4992339798dcdc
parent2822e00d3e126e30c3ed2ca8dc90a075180e42ec
Tidy up a remaining glitch in unification

There was one place, in type checking parallel list comprehensions
where we were unifying types, but had no convenient way to use the
resulting coercion; instead we just checked that it was Refl.  This
was Wrong Wrong; it might fail unpredicably in a GADT-like situation,
and it led to extra error-generation code used only in this one place.

This patch tidies it all up, by moving the 'return' method from the
*comprehension* to the ParStmtBlock. The latter is a new data type,
now used for each sub-chunk of a parallel list comprehension.

Because of the data type change, quite a few modules are touched,
but only in a fairly trivial way. The real changes are in TcMatches
(and corresponding desugaring); plus deleting code from TcUnify.

This patch also fixes the pretty-printing bug in Trac #6060
13 files changed:
compiler/deSugar/Coverage.lhs
compiler/deSugar/DsArrows.lhs
compiler/deSugar/DsListComp.lhs
compiler/hsSyn/Convert.lhs
compiler/hsSyn/HsExpr.lhs
compiler/hsSyn/HsUtils.lhs
compiler/main/HscMain.hs
compiler/parser/Parser.y.pp
compiler/rename/RnExpr.lhs
compiler/typecheck/TcErrors.lhs
compiler/typecheck/TcHsSyn.lhs
compiler/typecheck/TcMatches.lhs
compiler/typecheck/TcUnify.lhs