diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2017-10-17 16:32:25 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2017-10-18 08:31:01 +0100 |
commit | 5a66d574890ed09859ca912c9e0969dba72f4a23 (patch) | |
tree | 445c5045583108be2f54815e163b9bab98e8e93d /compiler/cmm | |
parent | 74cd1be0b2778ad99566cde085328bde2090294a (diff) | |
download | haskell-5a66d574890ed09859ca912c9e0969dba72f4a23.tar.gz |
Better solving for representational equalities
This patch adds a bit of extra solving power for representational
equality constraints to fix Trac #14333
The main changes:
* Fix a buglet in TcType.isInsolubleOccursCheck which wrongly
reported a definite occurs-check error for (a ~R# b a)
* Get rid of TcSMonad.emitInsolubles. It had an ad-hoc duplicate-removal
piece that is better handled in interactIrred, now that insolubles
are Irreds.
We need a little care to keep inert_count (which does not include
insolubles) accurate.
* Refactor TcInteract.solveOneFromTheOther, to return a much simpler
type. It was just over-complicated before.
* Make TcInteract.interactIrred look for constraints that match
either way around, in TcInteract.findMatchingIrreds
This wasn't hard and it cleaned up quite a bit of code.
Diffstat (limited to 'compiler/cmm')
0 files changed, 0 insertions, 0 deletions