Add test cases for Coercing recursive newtypes (#8503)
[ghc.git] / testsuite / tests / typecheck / should_fail / TcCoercibleFail.stderr
1
2 TcCoercibleFail.hs:11:8:
3     No instance for (Coercible Int ())
4       because ‛Int’ and ‛()’ are different types.
5       arising from a use of ‛coerce’
6     In the expression: coerce
7     In the expression: coerce $ one :: ()
8     In an equation for ‛foo1’: foo1 = coerce $ one :: ()
9
10 TcCoercibleFail.hs:14:8:
11     Could not deduce (Coercible (m Int) (m Age))
12       because ‛m Int’ and ‛m Age’ are different types.
13       arising from a use of ‛coerce’
14     from the context (Monad m)
15       bound by the type signature for foo2 :: Monad m => m Age
16       at TcCoercibleFail.hs:13:9-34
17     In the expression: coerce
18     In the expression: coerce $ (return one :: m Int)
19     In an equation for ‛foo2’: foo2 = coerce $ (return one :: m Int)
20
21 TcCoercibleFail.hs:16:8:
22     No instance for (Coercible (Map Int ()) (Map Age ()))
23       because the first type argument of ‛Map’ has role Nominal,
24       but the arguments ‛Int’ and ‛Age’ differ
25       arising from a use of ‛coerce’
26     In the expression: coerce
27     In the expression: coerce $ Map one () :: Map Age ()
28     In an equation for ‛foo3’: foo3 = coerce $ Map one () :: Map Age ()
29
30 TcCoercibleFail.hs:18:8:
31     No instance for (Coercible Int (Down Int))
32     because the constructor of ‛Down’ is not imported
33       arising from a use of ‛coerce’
34     In the expression: coerce
35     In the expression: coerce $ one :: Down Int
36     In an equation for ‛foo4’: foo4 = coerce $ one :: Down Int
37
38 TcCoercibleFail.hs:21:8:
39     Context reduction stack overflow; size = 21
40     Use -fcontext-stack=N to increase stack size to N
41       Coercible Void ()
42     In the expression: coerce :: Void -> ()
43     In an equation for ‛foo5’: foo5 = coerce :: Void -> ()
44
45 TcCoercibleFail.hs:30:8:
46     Context reduction stack overflow; size = 21
47     Use -fcontext-stack=N to increase stack size to N
48       Coercible Int Age
49     In the expression: coerce :: Fix (Either Int) -> Fix (Either Age)
50     In an equation for ‛foo6’:
51         foo6 = coerce :: Fix (Either Int) -> Fix (Either Age)
52
53 TcCoercibleFail.hs:31:8:
54     No instance for (Coercible (Either Int (Fix (Either Int))) ())
55       because ‛Either
56                  Int (Fix (Either Int))’ and ‛()’ are different types.
57       arising from a use of ‛coerce’
58     In the expression: coerce :: Fix (Either Int) -> ()
59     In an equation for ‛foo7’: foo7 = coerce :: Fix (Either Int) -> ()