fix for Simple9
[ghc-hetmet.git] / compiler / typecheck / TcTyFuns.lhs
index fc19061..f8bf40e 100644 (file)
@@ -68,15 +68,19 @@ tcUnfoldSynFamInst (TyConApp tycon tys)
   | not (isOpenSynTyCon tycon)     -- unfold *only* _synonym_ family instances
   = return Nothing
   | otherwise
-  = do { maybeFamInst <- tcLookupFamInst tycon tys
+  = do { -- we only use the indexing arguments for matching, not the additional ones
+        maybeFamInst <- tcLookupFamInst tycon idxTys
        ; case maybeFamInst of
            Nothing                -> return Nothing
-           Just (rep_tc, rep_tys) -> return $ Just (mkTyConApp rep_tc rep_tys,
-                                                   mkTyConApp coe_tc rep_tys)
+           Just (rep_tc, rep_tys) -> return $ Just (mkTyConApp rep_tc (rep_tys ++ restTys),
+                                                   mkTyConApp coe_tc (rep_tys ++ restTys))
              where
                coe_tc = expectJust "TcTyFun.tcUnfoldSynFamInst" 
                                    (tyConFamilyCoercion_maybe rep_tc)
        }
+    where
+        n                = tyConArity tycon
+        (idxTys, restTys) = splitAt n tys
 tcUnfoldSynFamInst _other = return Nothing
 \end{code}