X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Ftypes%2FOptCoercion.lhs;h=559ea659e144b52cf0d8117c171f1fb2f52e8ba9;hp=c95571245b538c5e65fdcacddf686f4b1713027c;hb=db4f42a8e38bfead11f5af78557e18b9f42b10b3;hpb=15bea1b740be3d5ee755e0e7a7b214b587ad2205 diff --git a/compiler/types/OptCoercion.lhs b/compiler/types/OptCoercion.lhs index c955712..559ea65 100644 --- a/compiler/types/OptCoercion.lhs +++ b/compiler/types/OptCoercion.lhs @@ -100,10 +100,13 @@ opt_co env sym co opt_co' env _ (Refl ty) = Refl (substTy env ty) opt_co' env sym (SymCo co) = opt_co env (not sym) co -opt_co' env sym (TyConAppCo tc cos) = TyConAppCo tc (map (opt_co env sym) cos) + +opt_co' env sym (TyConAppCo tc cos) = mkTyConAppCo tc (map (opt_co env sym) cos) opt_co' env sym (AppCo co1 co2) = mkAppCo (opt_co env sym co1) (opt_co env sym co2) opt_co' env sym (ForAllCo tv co) = case substTyVarBndr env tv of - (env', tv') -> ForAllCo tv' (opt_co env' sym co) + (env', tv') -> mkForAllCo tv' (opt_co env' sym co) + -- Use the "mk" functions to check for nested Refls + opt_co' env sym (CoVarCo cv) | Just co <- lookupCoVar env cv = opt_co (zapCvSubstEnv env) sym co