diff options
author | simonpj@microsoft.com <unknown> | 2009-12-11 12:01:22 +0000 |
---|---|---|
committer | simonpj@microsoft.com <unknown> | 2009-12-11 12:01:22 +0000 |
commit | dcba7784a1af5fd0c054031c49fe159d69af4f86 (patch) | |
tree | 602a9bbc98221971dafaa4511f13d8e1846d8cb8 /rts | |
parent | ab222dbdbf95e9a6a63dc4f8ed8cb7fc7784a991 (diff) | |
download | haskell-dcba7784a1af5fd0c054031c49fe159d69af4f86.tar.gz |
Fix two related bugs in u_tys
When we normalise a type family application we must recursively call
uTys, *not* 'go', because the latter loop is only there to look
through type synonyms. This bug made the type checker generate
ill-typed coercions, which were rejected by Core Lint.
A related bug only affects the size of coercions. If faced with
(m a) ~ (F b c)
where F has arity 1, we want to decompose to
m ~ F Int, a ~ c
rather than deferring. The application decomposition was being
tried last, so we were missing this opportunity.
Thanks to Roman for an example that showed all this up.
Diffstat (limited to 'rts')
0 files changed, 0 insertions, 0 deletions