[commit: ghc] ghc-8.6: Accommodate API change in transSuperClasses (0282974)
git at git.haskell.org
git at git.haskell.org
Thu Aug 23 22:50:50 UTC 2018
Repository : ssh://git@git.haskell.org/ghc
On branch : ghc-8.6
Link : http://ghc.haskell.org/trac/ghc/changeset/02829747cdf72fe83e511232cef12cd01df5dce6/ghc
>---------------------------------------------------------------
commit 02829747cdf72fe83e511232cef12cd01df5dce6
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Thu Aug 23 09:22:42 2018 +0100
Accommodate API change in transSuperClasses
In this patch
commit 6eabb6ddb7c53784792ee26b1e0657bde7eee7fb
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Tue Dec 15 14:26:13 2015 +0000
Allow recursive (undecidable) superclasses
I changed (transSuperClasses p) to return only the
superclasses of p, but not p itself. (Previously it always
returned p as well.)
The use of transSuperClasses in TcErrors.warnRedundantConstraints
really needs 'p' in the result -- but I faild to fix this
call site, and instead crippled the test for Trac #10100.
This patch sets things right
* Accomodates the API change
* Re-enables T10100
* And thereby fixes Trac #11474
(cherry picked from commit 4293a80a3ea835412737911bcb2a6703e9af378b)
>---------------------------------------------------------------
02829747cdf72fe83e511232cef12cd01df5dce6
compiler/typecheck/TcErrors.hs | 6 +++---
testsuite/tests/typecheck/should_compile/T10100.hs | 1 -
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/compiler/typecheck/TcErrors.hs b/compiler/typecheck/TcErrors.hs
index 355a9e3..1528a49 100644
--- a/compiler/typecheck/TcErrors.hs
+++ b/compiler/typecheck/TcErrors.hs
@@ -462,14 +462,14 @@ warnRedundantConstraints ctxt env info ev_vars
redundant_evs =
filterOut is_type_error $
case info of -- See Note [Redundant constraints in instance decls]
- InstSkol -> filterOut improving ev_vars
+ InstSkol -> filterOut (improving . idType) ev_vars
_ -> ev_vars
-- See #15232
is_type_error = isJust . userTypeError_maybe . idType
- improving ev_var = any isImprovementPred $
- transSuperClasses (idType ev_var)
+ improving pred -- (transSuperClasses p) does not include p
+ = any isImprovementPred (pred : transSuperClasses pred)
reportBadTelescope :: ReportErrCtxt -> TcLclEnv -> Maybe SDoc -> [TcTyVar] -> TcM ()
reportBadTelescope ctxt env (Just telescope) skols
diff --git a/testsuite/tests/typecheck/should_compile/T10100.hs b/testsuite/tests/typecheck/should_compile/T10100.hs
index 031be76..b88803c 100644
--- a/testsuite/tests/typecheck/should_compile/T10100.hs
+++ b/testsuite/tests/typecheck/should_compile/T10100.hs
@@ -2,7 +2,6 @@
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE UndecidableInstances #-}
-{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
module T10100 where
More information about the ghc-commits
mailing list