summaryrefslogtreecommitdiff
path: root/compiler/codeGen
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2011-02-17 14:09:21 +0000
committersimonpj@microsoft.com <unknown>2011-02-17 14:09:21 +0000
commit50d0293555691012f96259de7f8682b94db58517 (patch)
tree2d3814f485377175796f05d2aa71014a0230e8d5 /compiler/codeGen
parent53da379cee909d23b9f785c2250e64cba34ad3b2 (diff)
downloadhaskell-50d0293555691012f96259de7f8682b94db58517.tar.gz
Use "on the spot" solving for fundeps
When we spot an equality arising from a functional dependency, we now use that equality (a "wanted") to rewrite the work-item constraint right away. This avoids two dangers Danger 1: If we send the original constraint on down the pipeline it may react with an instance declaration, and in delicate situations (when a Given overlaps with an instance) that may produce new insoluble goals: see Trac #4952 Danger 2: If we don't rewrite the constraint, it may re-react with the same thing later, and produce the same equality again --> termination worries. To achieve this required some refactoring of FunDeps.lhs (nicer now!). This patch also contains a couple of unrelated improvements * A bad bug in TcSMonad.nestImplicTcS whereby the Tcs tyvars of an outer implication were not untouchable inside * Improved logging machinery for the type constraint solver; use -ddump-cs-trace (probably with a wider default line width -dppr-cols=200 or something)
Diffstat (limited to 'compiler/codeGen')
0 files changed, 0 insertions, 0 deletions