-
Simon Peyton Jones authored
------------------------------------ Fix a tiresome and longstanding bug in typechecking of unlifted bindings ------------------------------------ Consider data T = MkT Int# Int# f :: T -> Int# f t = a +# b where MkT a b = if ... then t else t This should really be OK, but if the "..." includes some constraints, the constraint simplifier was trying to generate some d1=d2 bindings. This is Bad because the desugarer treats unlifted bindings very specially (they are strict). This commit fixes the problem, by ensuring we never get local dictionary binding for an unlifted group. This fixes the bug which has been making the Alpha port fall over with a pattern-match failure in DsExpr. Nothing to do with Alpha; it's just that the word-size change gave rise to a little more commoning-up of literals in the type checker which in turn made the desugarer it fall over.
525aeb93