%\r
\r
\begin{code}\r
-{-# OPTIONS_GHC -w #-}\r
-module OptCoercion (\r
- optCoercion\r
- ) where \r
+module OptCoercion ( optCoercion ) where \r
\r
#include "HsVersions.h"\r
\r
-import Unify ( tcMatchTy )\r
import Coercion\r
import Type hiding( substTyVarBndr, substTy, extendTvSubst )\r
-import TypeRep\r
import TyCon\r
import Var\r
import VarSet\r
import VarEnv\r
-import PrelNames\r
import StaticFlags ( opt_NoOptCoercion )\r
-import Util\r
import Outputable\r
-import Unify\r
import Pair\r
import Maybes( allMaybes )\r
import FastString\r
\r
opt_co' env _ (Refl ty) = Refl (substTy env ty)\r
opt_co' env sym (SymCo co) = opt_co env (not sym) co\r
-\r
opt_co' env sym (TyConAppCo tc cos) = mkTyConAppCo tc (map (opt_co env sym) cos)\r
+opt_co' env sym (PredCo cos) = mkPredCo (fmap (opt_co env sym) cos)\r
opt_co' env sym (AppCo co1 co2) = mkAppCo (opt_co env sym co1) (opt_co env sym co2)\r
opt_co' env sym (ForAllCo tv co) = case substTyVarBndr env tv of\r
(env', tv') -> mkForAllCo tv' (opt_co env' sym co)\r
opt_trans_pred _ _ = Nothing\r
\r
fireTransRule :: String -> Coercion -> Coercion -> Coercion -> Maybe Coercion\r
-fireTransRule rule co1 co2 res\r
- = -- pprTrace ("Trans rule fired: " ++ rule) (vcat [ppr co1, ppr co2, ppr res]) $\r
+fireTransRule _rule _co1 _co2 res\r
+ = -- pprTrace ("Trans rule fired: " ++ _rule) (vcat [ppr _co1, ppr _co2, ppr res]) $\r
Just res\r
\r
-----------\r