diff options
author | Richard Eisenberg <rae@richarde.dev> | 2021-04-12 14:46:30 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-06-05 10:29:22 -0400 |
commit | 8c90e6c758769b068aea2891b26cc17577b6d36a (patch) | |
tree | 8915b06885c8938662f8b64f50d3dac37e174519 /compiler/GHC/Platform/Reg.hs | |
parent | 9a28680d2e23e7b25dd7254a439aea31dfae32d5 (diff) | |
download | haskell-8c90e6c758769b068aea2891b26cc17577b6d36a.tar.gz |
Fix #19682 by breaking cycles in Deriveds
This commit expands the old Note [Type variable cycles in Givens] to apply
as well to Deriveds. See the Note for details and examples. This fixes a
regression introduced by my earlier commit that killed off the flattener in
favor of the rewriter.
A few other things happened along the way:
* unifyTest was renamed to touchabilityTest, because that's what it does.
* isInsolubleOccursCheck was folded into checkTypeEq, which does much of the
same work. To get this to work out, though, we need to keep more careful
track of what errors we spot in checkTypeEq, and so CheckTyEqResult has
become rather more glorious.
* A redundant Note or two was eliminated.
* Kill off occCheckForErrors; due to Note [Rewriting synonyms], the
extra occCheckExpand here is always redundant.
* Store blocked equalities separately from other inerts; less stuff
to look through when kicking out.
Close #19682.
test case: typecheck/should_compile/T19682{,b}
Diffstat (limited to 'compiler/GHC/Platform/Reg.hs')
0 files changed, 0 insertions, 0 deletions