Warn on inferred polymorphic recursion
[ghc.git] / testsuite / tests / indexed-types / should_compile / PushedInAsGivens.stderr
1
2 PushedInAsGivens.hs:10:31: error:
3     • Could not deduce: a1 ~ a
4       from the context: F Int ~ [a1]
5         bound by the type signature for:
6                    foo :: forall a1. (F Int ~ [a1]) => a1 -> Int
7         at PushedInAsGivens.hs:9:13-44
8       ‘a1’ is a rigid type variable bound by
9         the type signature for:
10           foo :: forall a1. (F Int ~ [a1]) => a1 -> Int
11         at PushedInAsGivens.hs:9:13-44
12       ‘a’ is a rigid type variable bound by
13         the inferred type of bar :: a -> (a, Int)
14         at PushedInAsGivens.hs:(9,1)-(11,20)
15     • In the expression: y
16       In the first argument of ‘length’, namely ‘[x, y]’
17       In the expression: length [x, y]
18     • Relevant bindings include
19         x :: a1 (bound at PushedInAsGivens.hs:10:17)
20         foo :: a1 -> Int (bound at PushedInAsGivens.hs:10:13)
21         y :: a (bound at PushedInAsGivens.hs:9:5)
22         bar :: a -> (a, Int) (bound at PushedInAsGivens.hs:9:1)
23
24 PushedInAsGivens.hs:11:15: error:
25     • Couldn't match type ‘F Int’ with ‘[a]’
26         arising from a use of ‘foo’
27     • In the expression: foo y
28       In the expression: (y, foo y)
29       In the expression:
30         let
31           foo :: (F Int ~ [a]) => a -> Int
32           foo x = length [...]
33         in (y, foo y)
34     • Relevant bindings include
35         y :: a (bound at PushedInAsGivens.hs:9:5)
36         bar :: a -> (a, Int) (bound at PushedInAsGivens.hs:9:1)