Correct substitution into theta types (after merge)
[ghc-hetmet.git] / compiler / typecheck / TcUnify.lhs
index 000024e..7872c59 100644 (file)
@@ -699,11 +699,10 @@ tc_sub1 mb_fun act_sty actual_ty exp_ib exp_sty expected_ty
        ; traceTc (text "tc_sub_spec" <+> vcat [ppr actual_ty, 
                                                ppr tyvars <+> ppr theta <+> ppr tau,
                                                ppr tau'])
-       ; co_fn2 <- tc_sub mb_fun tau tau exp_ib exp_sty expected_ty
+       ; co_fn2 <- tc_sub mb_fun tau' tau' exp_ib exp_sty expected_ty
 
                -- Deal with the dictionaries
-       ; co_fn1 <- instCall InstSigOrigin (mkTyVarTys tyvars) theta
-       ; co_fn2 <- tc_sub False tau tau exp_sty expected_ty
+       ; co_fn1 <- instCall InstSigOrigin inst_tys (substTheta subst' theta)
        ; return (co_fn2 <.> co_fn1) }
 
 -----------------------------------