From: Tim Chevalier Date: Mon, 14 Apr 2008 03:16:54 +0000 (+0000) Subject: Eta-expand newtype coercions in External Core X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=d89d0f0a7d39a4390894b7b36c2b0ce24b1b300e Eta-expand newtype coercions in External Core Typechecking External Core is easier if we eta-expand axioms in newtype declarations. For a fuller explanation, see: http://www.haskell.org/pipermail/cvs-ghc/2008-April/041948.html --- diff --git a/compiler/coreSyn/MkExternalCore.lhs b/compiler/coreSyn/MkExternalCore.lhs index 337b21a..5ca4345 100644 --- a/compiler/coreSyn/MkExternalCore.lhs +++ b/compiler/coreSyn/MkExternalCore.lhs @@ -95,7 +95,11 @@ collect_tdefs tcon tdefs -- See Note [Newtype coercions] in -- types/TyCon Just (arity,coKindFun) | (l,r) <- (coKindFun $ map mkTyVarTy vs) -> - (vs,l,r) where vs = take arity tyvars + -- Here we eta-expand the newtype coercion, + -- which makes the ext-core typechecker somewhat simpler. + (tyvars,mkAppTys l extraVs,mkAppTys r extraVs) + where (vs, extraVs) = (take arity tyvars, + map mkTyVarTy $ drop arity tyvars) Nothing -> pprPanic "MkExternalCore: coercion tcon lacks a kind fun" (ppr tcon)