-- The above warning supression flag is a temporary kludge.
-- While working on this module you are encouraged to remove it and fix
-- any warnings in the module. See
--- http://hackage.haskell.org/trac/ghc/wiki/CodingStyle#Warnings
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
-- for details
module Coercion (
where
composeCoercionKindsOf (co1:co2:rest)
= ASSERT( null rest )
- WARN( not (r1 `coreEqType` a2), text "Strange! Type mismatch in trans coercion, probably a bug")
+ WARN( not (r1 `coreEqType` a2),
+ text "Strange! Type mismatch in trans coercion, probably a bug"
+ $$
+ ppr r1 <+> text "=/=" <+> ppr a2)
(a1, r2)
where
(a1, r1) = coercionKind co1
, Just (ty_fun1, ty_arg1) <- splitAppTy_maybe ty1
, Just (ty_fun2, ty_arg2) <- splitAppTy_maybe ty2
= ((ty_fun1, ty_fun2),(ty_arg1, ty_arg2))
+splitCoercionKindOf co
+ = pprPanic "Coercion.splitCoercionKindOf"
+ (ppr co $$ ppr (coercionKindPredTy co))
instCoercionTyCon
= mkCoercionTyCon instCoercionTyConName 2 instCoercionKind