summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2019-01-16 16:34:24 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-01-22 03:02:20 -0500
commita5373c1fe172dee31e07bcb7c7f6caff1035e6ba (patch)
tree35974465290337a66fd6124066e1c1cfe6401ffa /utils
parent64ce6afa21fadd751e1700af145ab77059abadc6 (diff)
downloadhaskell-a5373c1fe172dee31e07bcb7c7f6caff1035e6ba.tar.gz
Fix bogus worker for newtypes
The "worker" for a newtype is actually a function with a small (compulsory) unfolding, namely a cast. But the construction of this function was plain wrong for newtype /instances/; it cast the arguemnt to the family type rather than the representation type. This never actually bit us because, in the case of a family instance, we immediately cast the result to the family type. So we get \x. (x |> co1) |> co2 where the compositio of co1 and co2 is ill-kinded. However the optimiser (even the simple optimiser) just collapsed those casts, ignoring the mis-match in the middle, so we never saw the problem. Trac #16191 is indeed a dup of #16141; but the resaon these tickets produce Lint errors is not the unnecessary forcing; it's because of the ill-typed casts. This patch fixes the ill-typed casts, properly. I can't see a way to trigger an actual failure prior to this patch, but it's still wrong wrong wrong to have ill-typed casts, so better to get rid of them.
Diffstat (limited to 'utils')
0 files changed, 0 insertions, 0 deletions