Commit d22b4d8c authored by TomSchrijvers's avatar TomSchrijvers
Browse files

fix for Simple9

No longer include non-indexed arguments
in lookup of matching type function clause.
By including non-indexed (additional) arguments,
the lookup always fails.
parent e34157d4
......@@ -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}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment