typecheck: Don't warn about "redundant" TypeError constraints
authorBen Gamari <bgamari.foss@gmail.com>
Thu, 7 Jun 2018 17:40:57 +0000 (13:40 -0400)
committerBen Gamari <ben@smart-cactus.org>
Fri, 8 Jun 2018 00:11:32 +0000 (20:11 -0400)
Summary: This fixes #15232, where we would warn about `TypeError` constraints being redundant.

Test Plan: Validate

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15232

Differential Revision: https://phabricator.haskell.org/D4808

compiler/typecheck/TcErrors.hs
testsuite/tests/typecheck/should_compile/all.T

index 897ed96..95dc152 100644 (file)
@@ -459,9 +459,14 @@ warnRedundantConstraints ctxt env info ev_vars
    doc = text "Redundant constraint" <> plural redundant_evs <> colon
          <+> pprEvVarTheta redundant_evs
 
-   redundant_evs = case info of -- See Note [Redundant constraints in instance decls]
-                     InstSkol -> filterOut improving ev_vars
-                     _        -> ev_vars
+   redundant_evs =
+       filterOut is_type_error $
+       case info of -- See Note [Redundant constraints in instance decls]
+         InstSkol -> filterOut improving ev_vars
+         _        -> ev_vars
+
+   -- See #15232
+   is_type_error = isJust . userTypeError_maybe . idType
 
    improving ev_var = any isImprovementPred $
                       transSuperClasses (idType ev_var)
index 2b7b9ef..0d2b089 100644 (file)
@@ -621,5 +621,4 @@ test('SplitWD', normal, compile, [''])
 test('T14441', omit_ways(['profasm']), compile, [''])
 test('T15050', [expect_broken(15050)], compile, [''])
 test('T14735', normal, compile, [''])
-test('T15232', expect_broken(15232), compile, [''])
-
+test('T15232', normal, compile, [''])