Merge b737a4 into the 7.6 branch, curing Trac #7748
The caching of goals in the constraint solver led to a equality-constraint loop even in a really simple program! commit b737a453 Author: Simon Peyton Jones <simonpj@microsoft.com> Date: Fri Aug 31 10:05:03 2012 +0100 More simplifications to the constraint solver * inert_solved becomes dictionaries-only, inert_solved_dicts * inert_solved_dicts is used only to cache the result of uses of a top level instance declaration, just like inert_solved_funeqs * That in turn simplifies xCtFlavor and rewriteCtFlavor, because they no longer need a "should I cache" parameter. (Moreover the settings for this parameter were very subtle; it's easy to get loops if you cache too much. Caching only top-level instance uses is much safer, and eliminates all these subtle cases.)
Showing
- compiler/typecheck/TcCanonical.lhs 13 additions, 14 deletionscompiler/typecheck/TcCanonical.lhs
- compiler/typecheck/TcInteract.lhs 9 additions, 9 deletionscompiler/typecheck/TcInteract.lhs
- compiler/typecheck/TcSMonad.lhs 43 additions, 61 deletionscompiler/typecheck/TcSMonad.lhs
- compiler/typecheck/TcSimplify.lhs 1 addition, 1 deletioncompiler/typecheck/TcSimplify.lhs
Loading
Please register or sign in to comment