summaryrefslogtreecommitdiff
path: root/testsuite/tests/ghci
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/ghci')
-rw-r--r--testsuite/tests/ghci/prog009/ghci.prog009.stdout16
-rw-r--r--testsuite/tests/ghci/scripts/Defer02.stderr7
-rw-r--r--testsuite/tests/ghci/scripts/Defer02.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/T10122.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/T10508.stderr8
-rw-r--r--testsuite/tests/ghci/scripts/T2182ghci.stderr10
-rw-r--r--testsuite/tests/ghci/scripts/T4087.stdout8
-rw-r--r--testsuite/tests/ghci/scripts/T4175.stdout15
-rw-r--r--testsuite/tests/ghci/scripts/T6018ghcifail.stderr6
-rw-r--r--testsuite/tests/ghci/scripts/T7627.stdout6
-rw-r--r--testsuite/tests/ghci/scripts/T7730.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/T7873.script5
-rw-r--r--testsuite/tests/ghci/scripts/T7873.stderr7
-rw-r--r--testsuite/tests/ghci/scripts/T7873.stdout10
-rw-r--r--testsuite/tests/ghci/scripts/T7939.stdout35
-rw-r--r--testsuite/tests/ghci/scripts/T9181.stdout24
-rw-r--r--testsuite/tests/ghci/scripts/ghci001.stdout4
-rw-r--r--testsuite/tests/ghci/scripts/ghci013.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci047.stderr26
-rw-r--r--testsuite/tests/ghci/scripts/ghci051.stderr4
-rw-r--r--testsuite/tests/ghci/scripts/ghci055.stdout4
-rw-r--r--testsuite/tests/ghci/scripts/ghci059.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci059.stdout2
23 files changed, 119 insertions, 88 deletions
diff --git a/testsuite/tests/ghci/prog009/ghci.prog009.stdout b/testsuite/tests/ghci/prog009/ghci.prog009.stdout
index 74d4c49e88..20c759782f 100644
--- a/testsuite/tests/ghci/prog009/ghci.prog009.stdout
+++ b/testsuite/tests/ghci/prog009/ghci.prog009.stdout
@@ -1,8 +1,8 @@
-nub :: Eq a => [a] -> [a]
-"tan"
-nub :: Eq a => [a] -> [a]
-"tan"
-nub :: Eq a => [a] -> [a]
-A ( A.hs, interpreted )
-nub :: Eq a => [a] -> [a]
-"tan"
+nub :: Eq a => [a] -> [a]
+"tan"
+nub :: Eq a => [a] -> [a]
+"tan"
+nub :: Eq a => [a] -> [a]
+A ( A.hs, interpreted )
+nub :: Eq a => [a] -> [a]
+"tan"
diff --git a/testsuite/tests/ghci/scripts/Defer02.stderr b/testsuite/tests/ghci/scripts/Defer02.stderr
index 8b63df689a..ad39191d08 100644
--- a/testsuite/tests/ghci/scripts/Defer02.stderr
+++ b/testsuite/tests/ghci/scripts/Defer02.stderr
@@ -12,6 +12,11 @@
• In the expression: 'p'
In an equation for ‘a’: a = 'p'
+../../typecheck/should_run/Defer01.hs:18:9: warning:
+ • No instance for (Eq B) arising from a use of ‘==’
+ • In the expression: x == x
+ In an equation for ‘b’: b x = x == x
+
../../typecheck/should_run/Defer01.hs:25:1: warning:
Pattern match(es) have inaccessible right hand side
In an equation for ‘c’: c (C2 x) = ...
@@ -173,7 +178,7 @@
(deferred type error)
<interactive>:13:8: error:
- • Couldn't match expected type ‘Bool’ with actual type ‘Int’
+ • Couldn't match type ‘Int’ with ‘Bool’ arising from a use of ‘k’
• In the first argument of ‘print’, namely ‘(k 2)’
In the expression: print (k 2)
In an equation for ‘it’: it = print (k 2)
diff --git a/testsuite/tests/ghci/scripts/Defer02.stdout b/testsuite/tests/ghci/scripts/Defer02.stdout
index 4fd8c5d880..9d68933c44 100644
--- a/testsuite/tests/ghci/scripts/Defer02.stdout
+++ b/testsuite/tests/ghci/scripts/Defer02.stdout
@@ -1 +1 @@
-Hello World(" \ No newline at end of file
+" \ No newline at end of file
diff --git a/testsuite/tests/ghci/scripts/T10122.stdout b/testsuite/tests/ghci/scripts/T10122.stdout
index c79a8711f3..84d8856c1b 100644
--- a/testsuite/tests/ghci/scripts/T10122.stdout
+++ b/testsuite/tests/ghci/scripts/T10122.stdout
@@ -1,2 +1,2 @@
T :: (k -> *) -> k -> *
-T :: forall (k :: BOX). (k -> *) -> k -> *
+T :: forall k. (k -> *) -> k -> *
diff --git a/testsuite/tests/ghci/scripts/T10508.stderr b/testsuite/tests/ghci/scripts/T10508.stderr
index c5aff2361c..86ee279393 100644
--- a/testsuite/tests/ghci/scripts/T10508.stderr
+++ b/testsuite/tests/ghci/scripts/T10508.stderr
@@ -1,8 +1,8 @@
-<interactive>:1:15:
+<interactive>:1:15: error:
Couldn't match type ‘a0 -> a0’ with ‘[Char]’
- Expected type: Prelude.String
- Actual type: a0 -> a0
+ Expected type: Prelude.String
+ Actual type: a0 -> a0
Probable cause: ‘id’ is applied to too few arguments
In the first argument of ‘return’, namely ‘id’
- In the expression: return id \ No newline at end of file
+ In the expression: return id
diff --git a/testsuite/tests/ghci/scripts/T2182ghci.stderr b/testsuite/tests/ghci/scripts/T2182ghci.stderr
index f5eafdfc88..dd65a7fc1f 100644
--- a/testsuite/tests/ghci/scripts/T2182ghci.stderr
+++ b/testsuite/tests/ghci/scripts/T2182ghci.stderr
@@ -1,25 +1,25 @@
<interactive>:2:1: error:
- No instance for (Show (t0 -> t0)) arising from a use of ‘print’
+ No instance for (Show (r0 -> r0)) arising from a use of ‘print’
(maybe you haven't applied a function to enough arguments?)
In a stmt of an interactive GHCi command: print it
<interactive>:10:1: error:
- No instance for (Show (t0 -> t0)) arising from a use of ‘print’
+ No instance for (Show (r0 -> r0)) arising from a use of ‘print’
(maybe you haven't applied a function to enough arguments?)
In a stmt of an interactive GHCi command: print it
<interactive>:19:1: error:
- No instance for (Show (t0 -> t0)) arising from a use of ‘print’
+ No instance for (Show (r0 -> r0)) arising from a use of ‘print’
(maybe you haven't applied a function to enough arguments?)
In a stmt of an interactive GHCi command: print it
<interactive>:28:1: error:
- No instance for (Show (t0 -> t0)) arising from a use of ‘print’
+ No instance for (Show (r0 -> r0)) arising from a use of ‘print’
(maybe you haven't applied a function to enough arguments?)
In a stmt of an interactive GHCi command: print it
<interactive>:49:1: error:
- No instance for (Show (t0 -> t0)) arising from a use of ‘print’
+ No instance for (Show (r0 -> r0)) arising from a use of ‘print’
(maybe you haven't applied a function to enough arguments?)
In a stmt of an interactive GHCi command: print it
diff --git a/testsuite/tests/ghci/scripts/T4087.stdout b/testsuite/tests/ghci/scripts/T4087.stdout
index 2ca08aa449..3f600bd78d 100644
--- a/testsuite/tests/ghci/scripts/T4087.stdout
+++ b/testsuite/tests/ghci/scripts/T4087.stdout
@@ -1,4 +1,4 @@
-type role Equal nominal nominal
-data Equal a b where
- Equal :: Equal b b
- -- Defined at T4087.hs:5:1
+type role Equal nominal nominal
+data Equal a b where
+ Equal :: Equal a a
+ -- Defined at T4087.hs:5:1
diff --git a/testsuite/tests/ghci/scripts/T4175.stdout b/testsuite/tests/ghci/scripts/T4175.stdout
index cea9a01264..dbf2f371dd 100644
--- a/testsuite/tests/ghci/scripts/T4175.stdout
+++ b/testsuite/tests/ghci/scripts/T4175.stdout
@@ -1,4 +1,6 @@
-type family A a b :: * -- Defined at T4175.hs:7:1
+type family A a b
+ Kind: * -> * -> *
+ -- Defined at T4175.hs:7:1
type instance A (B a) b = () -- Defined at T4175.hs:10:1
type instance A (Maybe a) a = a -- Defined at T4175.hs:9:1
type instance A Int Int = () -- Defined at T4175.hs:8:1
@@ -7,13 +9,16 @@ instance G B -- Defined at T4175.hs:34:10
data instance B () = MkB -- Defined at T4175.hs:13:15
type instance A (B a) b = () -- Defined at T4175.hs:10:1
class C a where
- type family D a b :: *
+ type family D a b
+ Kind: * -> * -> *
-- Defined at T4175.hs:16:5
type instance D () () = Bool -- Defined at T4175.hs:22:5
type instance D Int () = String -- Defined at T4175.hs:19:5
-type family E a :: * where
- E () = Bool
- E Int = String
+type family E a
+ Kind: * -> *
+ where
+ E () = Bool
+ E Int = String
-- Defined at T4175.hs:24:1
data () = () -- Defined in ‘GHC.Tuple’
instance C () -- Defined at T4175.hs:21:10
diff --git a/testsuite/tests/ghci/scripts/T6018ghcifail.stderr b/testsuite/tests/ghci/scripts/T6018ghcifail.stderr
index ff97c50957..110092d514 100644
--- a/testsuite/tests/ghci/scripts/T6018ghcifail.stderr
+++ b/testsuite/tests/ghci/scripts/T6018ghcifail.stderr
@@ -46,7 +46,7 @@
<interactive>:60:15: error:
Type family equation violates injectivity annotation.
- Kind variable ‘k1’ cannot be inferred from the right-hand side.
+ Kind variable ‘k’ cannot be inferred from the right-hand side.
(enabling -fprint-explicit-kinds might help)
In the type family equation:
PolyKindVars '[] = '[] -- Defined at <interactive>:60:15
@@ -56,7 +56,7 @@
Kind variable ‘k’ cannot be inferred from the right-hand side.
(enabling -fprint-explicit-kinds might help)
In the type family equation:
- forall (k :: BOX) (a :: k) (b :: k).
+ forall k (a :: k) (b :: k).
Fc a b = Int -- Defined at <interactive>:64:15
<interactive>:68:15: error:
@@ -65,7 +65,7 @@
cannot be inferred from the right-hand side.
(enabling -fprint-explicit-kinds might help)
In the type family equation:
- forall (k :: BOX) (a :: k) (b :: k).
+ forall k (a :: k) (b :: k).
Gc a b = Int -- Defined at <interactive>:68:15
<interactive>:81:15: error:
diff --git a/testsuite/tests/ghci/scripts/T7627.stdout b/testsuite/tests/ghci/scripts/T7627.stdout
index 158672cc2a..81a360facb 100644
--- a/testsuite/tests/ghci/scripts/T7627.stdout
+++ b/testsuite/tests/ghci/scripts/T7627.stdout
@@ -25,9 +25,9 @@ instance Foldable ((,) a) -- Defined in ‘Data.Foldable’
instance Traversable ((,) a) -- Defined in ‘Data.Traversable’
instance (Monoid a, Monoid b) => Monoid (a, b)
-- Defined in ‘GHC.Base’
-data (#,#) (a :: OpenKind) (b :: OpenKind) = (#,#) a b
+data (#,#) (c :: TYPE a) (d :: TYPE b) = (#,#) c d
-- Defined in ‘GHC.Prim’
(,) :: a -> b -> (a, b)
-(#,#) :: a -> b -> (# a, b #)
+(#,#) :: c -> d -> (# c, d #)
( , ) :: a -> b -> (a, b)
-(# , #) :: a -> b -> (# a, b #)
+(# , #) :: c -> d -> (# c, d #)
diff --git a/testsuite/tests/ghci/scripts/T7730.stdout b/testsuite/tests/ghci/scripts/T7730.stdout
index d91d058e53..fcf9e4c1d2 100644
--- a/testsuite/tests/ghci/scripts/T7730.stdout
+++ b/testsuite/tests/ghci/scripts/T7730.stdout
@@ -4,5 +4,5 @@ data A (x :: k) (y :: k1)
A :: k -> k1 -> *
type role T phantom
data T (a :: k) where
- MkT :: forall (k :: BOX) (a :: k) a1. a1 -> T a
+ MkT :: forall k (a :: k) a1. a1 -> T a
-- Defined at <interactive>:6:1
diff --git a/testsuite/tests/ghci/scripts/T7873.script b/testsuite/tests/ghci/scripts/T7873.script
index 590332665a..404c1f5bda 100644
--- a/testsuite/tests/ghci/scripts/T7873.script
+++ b/testsuite/tests/ghci/scripts/T7873.script
@@ -1,5 +1,6 @@
-:set -XPolyKinds -XRankNTypes -XGADTs
+:set -XPolyKinds -XRankNTypes -XGADTs -XTypeInType
data D1 = MkD1 (forall p (a :: k). p a -> Int)
data D2 = MkD2 (forall p a. p a -> Int)
-:i D1
+data D3 = MkD3 (forall k p (a :: k). p a -> Int)
:i D2
+:i D3
diff --git a/testsuite/tests/ghci/scripts/T7873.stderr b/testsuite/tests/ghci/scripts/T7873.stderr
new file mode 100644
index 0000000000..3b6f4f64c1
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T7873.stderr
@@ -0,0 +1,7 @@
+
+<interactive>:2:1: error:
+ • Kind variable ‘k’ is implicitly bound in datatype
+ ‘D1’, but does not appear as the kind of any
+ of its type variables. Perhaps you meant
+ to bind it (with TypeInType) explicitly somewhere?
+ • In the data declaration for ‘D1’
diff --git a/testsuite/tests/ghci/scripts/T7873.stdout b/testsuite/tests/ghci/scripts/T7873.stdout
index 84f3117958..b7415d6222 100644
--- a/testsuite/tests/ghci/scripts/T7873.stdout
+++ b/testsuite/tests/ghci/scripts/T7873.stdout
@@ -1,6 +1,4 @@
-data D1 where
- MkD1 :: (forall (p :: k -> *) (a :: k). p a -> Int) -> D1
- -- Defined at <interactive>:2:1
-data D2 where
- MkD2 :: (forall (p :: k -> *) (a :: k). p a -> Int) -> D2
- -- Defined at <interactive>:3:1
+data D2 = MkD2 (forall (p :: Any -> *) (a :: Any). p a -> Int)
+ -- Defined at <interactive>:3:1
+data D3 = MkD3 (forall k (p :: k -> *) (a :: k). p a -> Int)
+ -- Defined at <interactive>:4:1
diff --git a/testsuite/tests/ghci/scripts/T7939.stdout b/testsuite/tests/ghci/scripts/T7939.stdout
index feb890c578..ec6c75cca2 100644
--- a/testsuite/tests/ghci/scripts/T7939.stdout
+++ b/testsuite/tests/ghci/scripts/T7939.stdout
@@ -1,25 +1,34 @@
class Foo (a :: k) where
- type family Bar (a :: k) b :: *
+ type family Bar (a :: k) b
+ Kind: forall k1. k1 -> * -> *
-- Defined at T7939.hs:6:4
Bar :: k -> * -> *
-type family F a :: * -- Defined at T7939.hs:8:1
+type family F a
+ Kind: * -> *
+ -- Defined at T7939.hs:8:1
type instance F Int = Bool -- Defined at T7939.hs:9:1
F :: * -> *
-type family G a :: * where
- G Int = Bool
+type family G a
+ Kind: * -> *
+ where G Int = Bool
-- Defined at T7939.hs:11:1
G :: * -> *
-type family H (a :: Bool) :: Bool where
- H 'False = 'True
+type family H (a :: Bool)
+ Kind: Bool -> Bool
+ where H 'False = 'True
-- Defined at T7939.hs:14:1
H :: Bool -> Bool
-type family J (a :: [k]) :: Bool where
- J k '[] = 'False
- forall (k :: BOX) (h :: k) (t :: [k]). J k (h : t) = 'True
+type family J (a :: [k])
+ Kind: forall k1. [k1] -> Bool
+ where
+ [k] J k '[] = 'False
+ [k, (h :: k), (t :: [k])] J k (h : t) = 'True
-- Defined at T7939.hs:17:1
J :: [k] -> Bool
-type family K (a :: [k]) :: Maybe k where
- K k '[] = 'Nothing
- forall (k :: BOX) (h :: k) (t :: [k]). K k (h : t) = 'Just h
+type family K (a1 :: [a])
+ Kind: forall a2. [a2] -> Maybe a2
+ where
+ [a] K a '[] = 'Nothing
+ [a, (h :: a), (t :: [a])] K a (h : t) = 'Just h
-- Defined at T7939.hs:21:1
-K :: [k] -> Maybe k
+K :: [a] -> Maybe a
diff --git a/testsuite/tests/ghci/scripts/T9181.stdout b/testsuite/tests/ghci/scripts/T9181.stdout
index 15504ec324..0e9913966f 100644
--- a/testsuite/tests/ghci/scripts/T9181.stdout
+++ b/testsuite/tests/ghci/scripts/T9181.stdout
@@ -1,10 +1,16 @@
-type family (*) (a :: Nat) (b :: Nat) :: Nat
-type family (+) (a :: Nat) (b :: Nat) :: Nat
-type family (-) (a :: Nat) (b :: Nat) :: Nat
+type family (*) (a :: Nat) (b :: Nat)
+ Kind: Nat -> Nat -> Nat
+type family (+) (a :: Nat) (b :: Nat)
+ Kind: Nat -> Nat -> Nat
+type family (-) (a :: Nat) (b :: Nat)
+ Kind: Nat -> Nat -> Nat
type (<=) (x :: Nat) (y :: Nat) = (x <=? y) ~ 'True
-type family (<=?) (a :: Nat) (b :: Nat) :: Bool
-type family CmpNat (a :: Nat) (b :: Nat) :: Ordering
-type family CmpSymbol (a :: Symbol) (b :: Symbol) :: Ordering
+type family (<=?) (a :: Nat) (b :: Nat)
+ Kind: Nat -> Nat -> Bool
+type family CmpNat (a :: Nat) (b :: Nat)
+ Kind: Nat -> Nat -> Ordering
+type family CmpSymbol (a :: Symbol) (b :: Symbol)
+ Kind: Symbol -> Symbol -> Ordering
data ErrorMessage where
Text :: Symbol -> ErrorMessage
ShowType :: t -> ErrorMessage
@@ -20,8 +26,10 @@ data SomeNat where
SomeNat :: KnownNat n => (Proxy n) -> SomeNat
data SomeSymbol where
SomeSymbol :: KnownSymbol n => (Proxy n) -> SomeSymbol
-type family TypeError (a :: ErrorMessage) :: b where
-type family (^) (a :: Nat) (b :: Nat) :: Nat
+type family TypeError (a :: ErrorMessage)
+ Kind: forall b1. ErrorMessage -> b1
+type family (^) (a :: Nat) (b :: Nat)
+ Kind: Nat -> Nat -> Nat
natVal :: KnownNat n => proxy n -> Integer
natVal' :: KnownNat n => Proxy# n -> Integer
sameNat ::
diff --git a/testsuite/tests/ghci/scripts/ghci001.stdout b/testsuite/tests/ghci/scripts/ghci001.stdout
index b0a2458b59..a1ff2665f5 100644
--- a/testsuite/tests/ghci/scripts/ghci001.stdout
+++ b/testsuite/tests/ghci/scripts/ghci001.stdout
@@ -1,2 +1,2 @@
-(+) :: Num a => a -> a -> a
-enumFromTo :: Enum a => a -> a -> [a]
+(+) :: Num a => a -> a -> a
+enumFromTo :: Enum a => a -> a -> [a]
diff --git a/testsuite/tests/ghci/scripts/ghci013.stdout b/testsuite/tests/ghci/scripts/ghci013.stdout
index 5daf16ee23..6d99b877ba 100644
--- a/testsuite/tests/ghci/scripts/ghci013.stdout
+++ b/testsuite/tests/ghci/scripts/ghci013.stdout
@@ -1 +1 @@
-f :: Monad m => (m a, t) -> m b
+f :: Monad m => (m a, r) -> m b
diff --git a/testsuite/tests/ghci/scripts/ghci047.stderr b/testsuite/tests/ghci/scripts/ghci047.stderr
index dc8dfc9ecb..7e696c02c4 100644
--- a/testsuite/tests/ghci/scripts/ghci047.stderr
+++ b/testsuite/tests/ghci/scripts/ghci047.stderr
@@ -1,16 +1,14 @@
-<interactive>:38:1:
- Couldn't match type ‘HFalse’ with ‘HTrue’
- Expected type: HTrue
- Actual type: Or HFalse HFalse
- In the expression: f
- In the expression: f $ Baz 'a'
- In an equation for ‘it’: it = f $ Baz 'a'
+<interactive>:38:1: error:
+ • Couldn't match type ‘HFalse’ with ‘HTrue’
+ arising from a use of ‘f’
+ • In the expression: f
+ In the expression: f $ Baz 'a'
+ In an equation for ‘it’: it = f $ Baz 'a'
-<interactive>:39:1:
- Couldn't match type ‘HFalse’ with ‘HTrue’
- Expected type: HTrue
- Actual type: Or HFalse HFalse
- In the expression: f
- In the expression: f $ Quz
- In an equation for ‘it’: it = f $ Quz
+<interactive>:39:1: error:
+ • Couldn't match type ‘HFalse’ with ‘HTrue’
+ arising from a use of ‘f’
+ • In the expression: f
+ In the expression: f $ Quz
+ In an equation for ‘it’: it = f $ Quz
diff --git a/testsuite/tests/ghci/scripts/ghci051.stderr b/testsuite/tests/ghci/scripts/ghci051.stderr
index 7a33dd57b6..6d28081344 100644
--- a/testsuite/tests/ghci/scripts/ghci051.stderr
+++ b/testsuite/tests/ghci/scripts/ghci051.stderr
@@ -4,7 +4,7 @@
with ‘Ghci1.T’
NB: ‘Ghci1.T’ is defined at <interactive>:2:1-14
‘T’ is defined at <interactive>:5:1-16
- Expected type: T'
- Actual type: T
+ Expected type: T'
+ Actual type: T
In the expression: C :: T'
In an equation for ‘c’: c = C :: T'
diff --git a/testsuite/tests/ghci/scripts/ghci055.stdout b/testsuite/tests/ghci/scripts/ghci055.stdout
index d57430bb8c..578740d6de 100644
--- a/testsuite/tests/ghci/scripts/ghci055.stdout
+++ b/testsuite/tests/ghci/scripts/ghci055.stdout
@@ -1,6 +1,6 @@
*** Exception: Prelude.undefined
CallStack (from ImplicitParams):
- error, called at libraries/base/GHC/Err.hs:42:14 in base:GHC.Err
+ error, called at libraries/base/GHC/Err.hs:43:14 in base:GHC.Err
undefined, called at <interactive>:1:7 in interactive:Ghci1
-x :: t = _
+x :: r = _
y :: Integer = 3
diff --git a/testsuite/tests/ghci/scripts/ghci059.script b/testsuite/tests/ghci/scripts/ghci059.script
index 936277e336..1d344d7833 100644
--- a/testsuite/tests/ghci/scripts/ghci059.script
+++ b/testsuite/tests/ghci/scripts/ghci059.script
@@ -1,5 +1,5 @@
-- At one point, :info Coercible would not report it as a constraint, but as a
--- data type. So this test case ensures that this is broken later.
+-- data type. So this test case ensures that this is not broken later.
:m + Data.Coerce
:info Coercible
diff --git a/testsuite/tests/ghci/scripts/ghci059.stdout b/testsuite/tests/ghci/scripts/ghci059.stdout
index 6b2c8f886e..fac61163f4 100644
--- a/testsuite/tests/ghci/scripts/ghci059.stdout
+++ b/testsuite/tests/ghci/scripts/ghci059.stdout
@@ -1,4 +1,4 @@
type role Coercible representational representational
-class Coercible (a :: k) (b :: k)
+class a ~R# b => Coercible (a :: k) (b :: k)
-- Defined in ‘GHC.Types’
coerce :: Coercible a b => a -> b -- Defined in ‘GHC.Prim’