diff options
author | Austin Seipp <austin@well-typed.com> | 2015-05-14 10:55:03 -0500 |
---|---|---|
committer | Austin Seipp <austin@well-typed.com> | 2015-05-14 10:55:03 -0500 |
commit | 3cf8ecdc70cb295a2b9606080a1c7b5fa8eb16f4 (patch) | |
tree | e7989a081754885163e9dc20a6545820ebeab532 /compiler/typecheck/FunDeps.hs | |
parent | 04a484eafc9eb9f8774b4bdd41a5dc6c9f640daf (diff) | |
download | haskell-3cf8ecdc70cb295a2b9606080a1c7b5fa8eb16f4.tar.gz |
Revert multiple commits
This reverts multiple commits from Simon:
- 04a484eafc9eb9f8774b4bdd41a5dc6c9f640daf Test Trac #10359
- a9ccd37add8315e061c02e5bf26c08f05fad9ac9 Test Trac #10403
- c0aae6f699cbd222d826d0b8d78d6cb3f682079e Test Trac #10248
- eb6ca851f553262efe0824b8dcbe64952de4963d Make the "matchable-given" check happen first
- ca173aa30467a0b1023682d573fcd94244d85c50 Add a case to checkValidTyCon
- 51cbad15f86fca1d1b0e777199eb1079a1b64d74 Update haddock submodule
- 6e1174da5b8e0b296f5bfc8b39904300d04eb5b7 Separate transCloVarSet from fixVarSet
- a8493e03b89f3b3bfcdb6005795de050501f5c29 Fix imports in HscMain (stage2)
- a154944bf07b2e13175519bafebd5a03926bf105 Two wibbles to fix the build
- 5910a1bc8142b4e56a19abea104263d7bb5c5d3f Change in capitalisation of error msg
- 130e93aab220bdf14d08028771f83df210da340b Refactor tuple constraints
- 8da785d59f5989b9a9df06386d5bd13f65435bc0 Delete commented-out line
These break the build by causing Haddock to fail mysteriously when
trying to examine GHC.Prim it seems.
Diffstat (limited to 'compiler/typecheck/FunDeps.hs')
-rw-r--r-- | compiler/typecheck/FunDeps.hs | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/compiler/typecheck/FunDeps.hs b/compiler/typecheck/FunDeps.hs index 830873c1b9..53ecb48cc7 100644 --- a/compiler/typecheck/FunDeps.hs +++ b/compiler/typecheck/FunDeps.hs @@ -23,7 +23,6 @@ import Name import Var import Class import Type -import TcType( immSuperClasses ) import Unify import InstEnv import VarSet @@ -446,29 +445,32 @@ oclose :: [PredType] -> TyVarSet -> TyVarSet -- See Note [The liberal coverage condition] oclose preds fixed_tvs | null tv_fds = fixed_tvs -- Fast escape hatch for common case. - | otherwise = fixVarSet extend fixed_tvs + | otherwise = loop fixed_tvs where - extend fixed_tvs = foldl add fixed_tvs tv_fds - where - add fixed_tvs (ls,rs) - | ls `subVarSet` fixed_tvs = fixed_tvs `unionVarSet` rs - | otherwise = fixed_tvs + loop fixed_tvs + | new_fixed_tvs `subVarSet` fixed_tvs = fixed_tvs + | otherwise = loop new_fixed_tvs + where new_fixed_tvs = foldl extend fixed_tvs tv_fds + + extend fixed_tvs (ls,rs) + | ls `subVarSet` fixed_tvs = fixed_tvs `unionVarSet` rs + | otherwise = fixed_tvs tv_fds :: [(TyVarSet,TyVarSet)] tv_fds = [ (tyVarsOfTypes xs, tyVarsOfTypes ys) - | (xs, ys) <- concatMap determined preds ] + | (xs, ys) <- concatMap determined preds + ] determined :: PredType -> [([Type],[Type])] determined pred = case classifyPredType pred of + ClassPred cls tys -> + do let (cls_tvs, cls_fds) = classTvsFds cls + fd <- cls_fds + return (instFD fd cls_tvs tys) EqPred NomEq t1 t2 -> [([t1],[t2]), ([t2],[t1])] - ClassPred cls tys -> local_fds ++ concatMap determined superclasses - where - local_fds = [ instFD fd cls_tvs tys - | fd <- cls_fds ] - (cls_tvs, cls_fds) = classTvsFds cls - superclasses = immSuperClasses cls tys - _ -> [] + TuplePred ts -> concatMap determined ts + _ -> [] {- ************************************************************************ |