diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2014-04-25 00:04:45 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2014-04-28 10:59:51 +0100 |
commit | ba2e20149e2addaccf5ce3122d3a6e93da696a0a (patch) | |
tree | 14d2eb5a30ccb5f98be00caae683393e98d19979 /testsuite/tests/typecheck/should_fail/tcfail140.stderr | |
parent | 0960a37868e6d08857e86465c8ca346b29b1c813 (diff) | |
download | haskell-ba2e20149e2addaccf5ce3122d3a6e93da696a0a.tar.gz |
Do type-class defaulting even if there are insoluble constraints
The argument in Trac #9033 is very compelling: we should not report 20
errors, fix one, and have the other 19 disappear. They were spurious
in the first place.
The fix was easy; do type-class defaulting uncondionally, rather than
only if there are no insoluble constraints.
See Note [When to do type-class defaulting] in TcSimplify.
Error messages generally improve, especially tc211 which actually
had an example of precisely this phenomenon.
Diffstat (limited to 'testsuite/tests/typecheck/should_fail/tcfail140.stderr')
-rw-r--r-- | testsuite/tests/typecheck/should_fail/tcfail140.stderr | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/testsuite/tests/typecheck/should_fail/tcfail140.stderr b/testsuite/tests/typecheck/should_fail/tcfail140.stderr index bb45df3dee..7593497fe2 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail140.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail140.stderr @@ -1,38 +1,38 @@ - -tcfail140.hs:10:7: - Couldn't match expected type ‘a0 -> t’ with actual type ‘Int’ - Relevant bindings include bar :: t (bound at tcfail140.hs:10:1) - The function ‘f’ is applied to two arguments, - but its type ‘Int -> Int’ has only one - In the expression: f 3 9 - In an equation for ‘bar’: bar = f 3 9 - -tcfail140.hs:12:10: - Couldn't match expected type ‘a1 -> t1’ with actual type ‘Int’ - Relevant bindings include - rot :: t -> t1 (bound at tcfail140.hs:12:1) - The operator ‘f’ takes two arguments, - but its type ‘Int -> Int’ has only one - In the expression: 3 `f` 4 - In an equation for ‘rot’: rot xs = 3 `f` 4 - -tcfail140.hs:14:15: - Couldn't match expected type ‘a -> b’ with actual type ‘Int’ - Relevant bindings include - xs :: [a] (bound at tcfail140.hs:14:5) - bot :: [a] -> [b] (bound at tcfail140.hs:14:1) - The operator ‘f’ takes two arguments, - but its type ‘Int -> Int’ has only one - In the first argument of ‘map’, namely ‘(3 `f`)’ - In the expression: map (3 `f`) xs - -tcfail140.hs:16:8: - Constructor ‘Just’ should have 1 argument, but has been given none - In the pattern: Just - In the expression: (\ Just x -> x) :: Maybe a -> a - In the expression: ((\ Just x -> x) :: Maybe a -> a) (Just 1) - -tcfail140.hs:19:1: - Couldn't match expected type ‘t0 -> Bool’ with actual type ‘Int’ - The equation(s) for ‘g’ have two arguments, - but its type ‘Int -> Int’ has only one +
+tcfail140.hs:10:7:
+ Couldn't match expected type ‘Integer -> t’ with actual type ‘Int’
+ Relevant bindings include bar :: t (bound at tcfail140.hs:10:1)
+ The function ‘f’ is applied to two arguments,
+ but its type ‘Int -> Int’ has only one
+ In the expression: f 3 9
+ In an equation for ‘bar’: bar = f 3 9
+
+tcfail140.hs:12:10:
+ Couldn't match expected type ‘Integer -> t1’ with actual type ‘Int’
+ Relevant bindings include
+ rot :: t -> t1 (bound at tcfail140.hs:12:1)
+ The operator ‘f’ takes two arguments,
+ but its type ‘Int -> Int’ has only one
+ In the expression: 3 `f` 4
+ In an equation for ‘rot’: rot xs = 3 `f` 4
+
+tcfail140.hs:14:15:
+ Couldn't match expected type ‘a -> b’ with actual type ‘Int’
+ Relevant bindings include
+ xs :: [a] (bound at tcfail140.hs:14:5)
+ bot :: [a] -> [b] (bound at tcfail140.hs:14:1)
+ The operator ‘f’ takes two arguments,
+ but its type ‘Int -> Int’ has only one
+ In the first argument of ‘map’, namely ‘(3 `f`)’
+ In the expression: map (3 `f`) xs
+
+tcfail140.hs:16:8:
+ Constructor ‘Just’ should have 1 argument, but has been given none
+ In the pattern: Just
+ In the expression: (\ Just x -> x) :: Maybe a -> a
+ In the expression: ((\ Just x -> x) :: Maybe a -> a) (Just 1)
+
+tcfail140.hs:19:1:
+ Couldn't match expected type ‘t0 -> Bool’ with actual type ‘Int’
+ The equation(s) for ‘g’ have two arguments,
+ but its type ‘Int -> Int’ has only one
|