Actually fail in failIfEmitsConstraints
authorRichard Eisenberg <rae@cs.brynmawr.edu>
Thu, 1 Nov 2018 19:37:58 +0000 (15:37 -0400)
committerRichard Eisenberg <rae@cs.brynmawr.edu>
Thu, 1 Nov 2018 21:34:47 +0000 (17:34 -0400)
The function TcHsType.failIfEmitsConstraints says that it fails.
It even does so in its name. But it didn't! It *reported* constraints
but didn't fail. Now it does.

This is important in tcHsClsInstType; see the comments therein.

This was discovered while looking at #15797, but that ticket
requires visible kind application to exhibit the bug; the test
case will come with the patch for #12045.

compiler/typecheck/TcHsType.hs
testsuite/tests/polykinds/T11520.stderr
testsuite/tests/rename/should_fail/T5951.stderr
testsuite/tests/rename/should_fail/rnfail026.stderr
testsuite/tests/typecheck/should_fail/T11563.stderr
testsuite/tests/typecheck/should_fail/T13909.stderr
testsuite/tests/typecheck/should_fail/T2994.stderr

index 3706c23..07c3a27 100644 (file)
@@ -2871,7 +2871,7 @@ reportFloatingKvs tycon_name flav all_tvs bad_tvs
 failIfEmitsConstraints :: TcM a -> TcM a
 failIfEmitsConstraints thing_inside
   = do { (res, lie) <- captureConstraints thing_inside
-       ; reportAllUnsolved lie
+       ; checkNoErrs $ reportAllUnsolved lie
        ; return res
        }
 
index 93078aa..11a81ba 100644 (file)
@@ -1,10 +1,4 @@
 
-T11520.hs:15:57: error:
-    • Illegal type synonym family application ‘Any’ in instance:
-        Typeable (Compose f g)
-        Use -fprint-explicit-kinds to see the kind arguments
-    • In the instance declaration for ‘Typeable (Compose f g)’
-
 T11520.hs:15:77: error:
     • Expected kind ‘k20 -> k10’, but ‘g’ has kind ‘k’
     • In the second argument of ‘Compose’, namely ‘g’
index a696997..8fda353 100644 (file)
@@ -4,10 +4,6 @@ T5951.hs:8:8: error:
       Expected a constraint, but ‘A’ has kind ‘* -> Constraint’
     • In the instance declaration for ‘B => C’
 
-T5951.hs:8:8: error:
-    • Instance head is not headed by a class: C
-    • In the instance declaration for ‘B => C’
-
 T5951.hs:9:8: error:
     • Expecting one more argument to ‘B’
       Expected a constraint, but ‘B’ has kind ‘* -> Constraint’
index 79b07c4..c7ce103 100644 (file)
@@ -1,8 +1,4 @@
 
-rnfail026.hs:16:10: error:
-    • Illegal polymorphic type: forall a. Eq a => Set a
-    • In the instance declaration for ‘Monad (forall a. Eq a => Set a)’
-
 rnfail026.hs:16:27: error:
     • Expected kind ‘* -> *’, but ‘Set a’ has kind ‘*’
     • In the first argument of ‘Monad’, namely
index 1283c33..27eca84 100644 (file)
@@ -1,10 +1,4 @@
 
-T11563.hs:5:10: error:
-    • Variable ‘s’ occurs more often
-        in the constraint ‘C s’ than in the instance head ‘C T’
-      (Use UndecidableInstances to permit this)
-    • In the instance declaration for ‘C T’
-
 T11563.hs:5:19: error:
     • Expecting one more argument to ‘T’
       Expected a type, but ‘T’ has kind ‘* -> *’
index d70221c..599be5a 100644 (file)
@@ -1,10 +1,4 @@
 
-T13909.hs:11:10: error:
-    • Illegal type synonym family application ‘GHC.Types.Any’ in instance:
-        HasName Hm
-        Use -fprint-explicit-kinds to see the kind arguments
-    • In the instance declaration for ‘HasName Hm’
-
 T13909.hs:11:18: error:
     • Expected kind ‘k0’, but ‘Hm’ has kind ‘forall k -> k -> *’
     • In the first argument of ‘HasName’, namely ‘Hm’
index 09b3616..7f20acf 100644 (file)
@@ -5,20 +5,12 @@ T2994.hs:11:10: error:
         but ‘MonadReader Int’ has kind ‘* -> Constraint’
     • In the instance declaration for ‘MonadReader Int’
 
-T2994.hs:11:10: error:
-    • Instance head is not headed by a class: MonadReader Int
-    • In the instance declaration for ‘MonadReader Int’
-
 T2994.hs:13:10: error:
     • Expecting one more argument to ‘MonadReader (Reader' r)’
       Expected a constraint,
         but ‘MonadReader (Reader' r)’ has kind ‘* -> Constraint’
     • In the instance declaration for ‘MonadReader (Reader' r)’
 
-T2994.hs:13:10: error:
-    • Instance head is not headed by a class: MonadReader (Reader' r)
-    • In the instance declaration for ‘MonadReader (Reader' r)’
-
 T2994.hs:13:23: error:
     • Expecting one more argument to ‘Reader' r’
       Expected a type, but ‘Reader' r’ has kind ‘* -> *’
@@ -29,8 +21,3 @@ T2994.hs:15:10: error:
     • Expected kind ‘(* -> *) -> Constraint’,
         but ‘MonadReader r r’ has kind ‘Constraint’
     • In the instance declaration for ‘MonadReader r r (Reader' r)’
-
-T2994.hs:15:10: error:
-    • Instance head is not headed by a class:
-        MonadReader r r (Reader' r)
-    • In the instance declaration for ‘MonadReader r r (Reader' r)’