Wibble to implicit-parameter error message
authorSimon Peyton Jones <simonpj@microsoft.com>
Fri, 26 Sep 2014 09:48:25 +0000 (10:48 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Fri, 26 Sep 2014 09:56:47 +0000 (10:56 +0100)
compiler/typecheck/TcRnTypes.lhs
testsuite/tests/typecheck/should_fail/T5246.stderr
testsuite/tests/typecheck/should_fail/T7525.stderr

index bff59ee..1be81cb 100644 (file)
@@ -1734,7 +1734,7 @@ pprSkolInfo (SigSkol (FunSigCtxt f) ty)
                                  2 (pprPrefixOcc f <+> dcolon <+> ppr ty)
 pprSkolInfo (SigSkol cx ty) = hang (pprUserTypeCtxt cx <> colon)
                                  2 (ppr ty)
-pprSkolInfo (IPSkol ips)    = ptext (sLit "the implicit-parameter bindingfor")
+pprSkolInfo (IPSkol ips)    = ptext (sLit "the implicit-parameter binding") <> plural ips <+> ptext (sLit "for")
                               <+> pprWithCommas ppr ips
 pprSkolInfo (ClsSkol cls)   = ptext (sLit "the class declaration for") <+> quotes (ppr cls)
 pprSkolInfo InstSkol        = ptext (sLit "the instance declaration")
index bd075cb..454c2b7 100644 (file)
@@ -1,9 +1,11 @@
-\r
-T5246.hs:11:10:\r
-    Could not deduce (?x::Int) arising from a use of ‘foo’\r
-    from the context (?x::[Char])\r
-      bound by the implicit-parameter bindings for ?x\r
-      at T5246.hs:(10,7)-(11,12)\r
-    In the expression: foo\r
-    In the expression: let ?x = "hello" in foo\r
-    In an equation for ‘bar’: bar = let ?x = "hello" in foo\r
+
+T5246.hs:11:10:
+    Couldn't match type ‘[Char]’ with ‘Int’
+    arising from a functional dependency between constraints:
+      ‘?x::Int’ arising from a use of ‘foo’ at T5246.hs:11:10-12
+      ‘?x::[Char]’
+        arising from the implicit-parameter binding for ?x
+        at T5246.hs:(10,7)-(11,12)
+    In the expression: foo
+    In the expression: let ?x = "hello" in foo
+    In an equation for ‘bar’: bar = let ?x = "hello" in foo
index 9524d1a..ecf3eb1 100644 (file)
@@ -3,7 +3,7 @@ T7525.hs:5:30:
     Could not deduce (?b::Bool)
       arising from a use of implicit parameter ‘?b’
     from the context (?a::Bool)
-      bound by the implicit-parameter bindings for ?a at T7525.hs:5:7-31
+      bound by the implicit-parameter binding for ?a at T7525.hs:5:7-31
     In the second argument of ‘(&&)’, namely ‘?b’
     In the expression: ?a && ?b
     In the expression: let ?a = True in ?a && ?b