diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2015-07-24 12:50:42 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2015-07-27 14:02:33 +0100 |
commit | 2d88a531b7e4dbf4016dca4b1ba3b5dc34256cf4 (patch) | |
tree | 8a7819918d5a8e8fc69c3c036fb3c7670498cb84 /compiler/codeGen | |
parent | bc4b64ca5b99bff6b3d5051b57cb2bc52bd4c841 (diff) | |
download | haskell-2d88a531b7e4dbf4016dca4b1ba3b5dc34256cf4.tar.gz |
Improve warnings for rules that might not fire
Two main things here
* Previously we only warned about the "head" function of the rule,
but actually the warning applies to any free variable on the LHS.
* We now warn not only when one of these free vars can inline, but
also if it has an active RULE (c.f. Trac #10528)
See Note [Rules and inlining/other rules] in Desugar
This actually shows up quite a few warnings in the libraries, notably
in Control.Arrow, where it correctly points out that rules like
"compose/arr" forall f g .
(arr f) . (arr g) = arr (f . g)
might never fire, because the rule for 'arr' (dictionary selection)
might fire first. I'm not really sure what to do here; there is some
discussion in Trac #10595.
A minor change is adding BasicTypes.pprRuleName to pretty-print RuleName.
Diffstat (limited to 'compiler/codeGen')
0 files changed, 0 insertions, 0 deletions