summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2013-03-04 09:42:21 +0000
committerSimon Peyton Jones <simonpj@microsoft.com>2013-03-04 09:42:21 +0000
commit44129f016a17aaf0f9d14c14b087f59063cb12e5 (patch)
treec3bb241e9425bfc97fba63d5ac25ec66ef504702 /testsuite
parent398c3d02619160e2c1a142115a6707139a7317a2 (diff)
parentb400b60576e637bc1f4102099aa9f5cda3b0dcc9 (diff)
downloadhaskell-44129f016a17aaf0f9d14c14b087f59063cb12e5.tar.gz
Merge branch 'master' of http://darcs.haskell.org/testsuite
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail011.stderr2
-rw-r--r--testsuite/tests/dph/enumfromto/EnumFromToP.hs24
-rw-r--r--testsuite/tests/dph/enumfromto/Makefile3
-rw-r--r--testsuite/tests/dph/enumfromto/dph-enumfromto.T9
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3330c.stderr22
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729.hs28
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729.stderr17
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729a.hs28
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729a.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/all.T4
-rw-r--r--testsuite/tests/polykinds/T6068.stdout2
-rw-r--r--testsuite/tests/typecheck/should_compile/T7641.hs14
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T1
-rw-r--r--testsuite/tests/typecheck/should_fail/T3950.stderr32
-rw-r--r--testsuite/tests/typecheck/should_fail/T5570.stderr18
-rw-r--r--testsuite/tests/typecheck/should_fail/T7368.stderr38
-rw-r--r--testsuite/tests/typecheck/should_fail/T7368a.stderr20
-rw-r--r--testsuite/tests/typecheck/should_fail/T7609.stderr21
-rw-r--r--testsuite/tests/typecheck/should_fail/T7696.hs17
-rw-r--r--testsuite/tests/typecheck/should_fail/T7696.stderr17
-rw-r--r--testsuite/tests/typecheck/should_fail/T7697.hs4
-rw-r--r--testsuite/tests/typecheck/should_fail/T7697.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T7734.hs5
-rw-r--r--testsuite/tests/typecheck/should_fail/T7734.stderr18
-rw-r--r--testsuite/tests/typecheck/should_fail/all.T3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail123.stderr18
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail159.stderr18
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail200.stderr18
28 files changed, 306 insertions, 107 deletions
diff --git a/testsuite/tests/deriving/should_fail/drvfail011.stderr b/testsuite/tests/deriving/should_fail/drvfail011.stderr
index 6ec1df7a03..f4b27e9d21 100644
--- a/testsuite/tests/deriving/should_fail/drvfail011.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail011.stderr
@@ -3,7 +3,7 @@ drvfail011.hs:8:1:
No instance for (Eq a) arising from a use of ‛==’
Possible fix: add (Eq a) to the context of the instance declaration
In the expression: ((a1 == b1))
- In an equation for ‛==’: == (T1 a1) (T1 b1) = ((a1 == b1))
+ In an equation for ‛==’: (==) (T1 a1) (T1 b1) = ((a1 == b1))
When typechecking the code for ‛==’
in a standalone derived instance for ‛Eq (T a)’:
To see the code I am typechecking, use -ddump-deriv
diff --git a/testsuite/tests/dph/enumfromto/EnumFromToP.hs b/testsuite/tests/dph/enumfromto/EnumFromToP.hs
new file mode 100644
index 0000000000..f210f21dab
--- /dev/null
+++ b/testsuite/tests/dph/enumfromto/EnumFromToP.hs
@@ -0,0 +1,24 @@
+-- List enumeration doesn't work for parallel list comprehensions.
+--
+-- > ghc-stage2: panic! (the 'impossible' happened)
+-- > (GHC version 7.7.20130109 for x86_64-unknown-linux):
+-- > DsMonad: uninitialised ds_parr_bi
+--
+-- (I.enumFromToP is a workaround)
+
+{-# LANGUAGE ParallelArrays, ParallelListComp #-}
+{-# OPTIONS -fvectorise #-}
+module EnumFromToP where
+
+import Data.Array.Parallel hiding ((+), (-), (*), (/))
+import Data.Array.Parallel.PArray
+import Data.Array.Parallel.Prelude.Bool as B
+import Data.Array.Parallel.Prelude.Double as D
+import qualified Data.Array.Parallel.Prelude.Int as I
+import qualified Data.Vector as V
+import qualified Prelude as P
+
+
+nums = [: 0 .. 100 :]
+
+
diff --git a/testsuite/tests/dph/enumfromto/Makefile b/testsuite/tests/dph/enumfromto/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/dph/enumfromto/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/dph/enumfromto/dph-enumfromto.T b/testsuite/tests/dph/enumfromto/dph-enumfromto.T
new file mode 100644
index 0000000000..3d8257eb80
--- /dev/null
+++ b/testsuite/tests/dph/enumfromto/dph-enumfromto.T
@@ -0,0 +1,9 @@
+test ('EnumFromToP'
+ , [ extra_clean(['EnumFromToP.o', 'EnumFromToP.hi'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , ignore_output
+ , expect_broken(7736)
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , compile_fail
+ , [ '-O -fno-enable-rewrite-rules -package dph-lifted-vseg'])
diff --git a/testsuite/tests/indexed-types/should_fail/T3330c.stderr b/testsuite/tests/indexed-types/should_fail/T3330c.stderr
index 52d6afe3e7..3d387b5bc7 100644
--- a/testsuite/tests/indexed-types/should_fail/T3330c.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T3330c.stderr
@@ -1,11 +1,11 @@
-
-T3330c.hs:23:43:
- Couldn't match kind ‛*’ with ‛* -> *’
- When matching types
- Der ((->) x) :: * -> *
- R :: (* -> *) -> *
- Expected type: Der ((->) x) (f1 x)
- Actual type: R f1
- In the first argument of ‛plug’, namely ‛rf’
- In the first argument of ‛Inl’, namely ‛(plug rf df x)’
- In the expression: Inl (plug rf df x)
+
+T3330c.hs:23:43:
+ Couldn't match kind ‛* -> *’ with ‛*’
+ When matching types
+ R :: (* -> *) -> *
+ Der ((->) x) :: * -> *
+ Expected type: Der ((->) x) (f1 x)
+ Actual type: R f1
+ In the first argument of ‛plug’, namely ‛rf’
+ In the first argument of ‛Inl’, namely ‛(plug rf df x)’
+ In the expression: Inl (plug rf df x)
diff --git a/testsuite/tests/indexed-types/should_fail/T7729.hs b/testsuite/tests/indexed-types/should_fail/T7729.hs
new file mode 100644
index 0000000000..c542cf0550
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T7729.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE FlexibleContexts, TypeFamilies #-}
+module T7729 where
+
+class Monad m => PrimMonad m where
+ type PrimState m
+
+class MonadTrans t where
+ lift :: Monad m => m a -> t m a
+
+class (PrimMonad (BasePrimMonad m), Monad m) => MonadPrim m where
+ type BasePrimMonad m :: * -> *
+ liftPrim :: BasePrimMonad m a -> m a
+
+
+newtype Rand m a = Rand {
+ runRand :: Maybe (m ()) -> m a
+ }
+
+instance (Monad m) => Monad (Rand m) where
+ return = Rand . const . return
+ (Rand rnd) >>= f = Rand $ \g -> (\x -> runRand (f x) g) =<< rnd g
+
+instance MonadTrans Rand where
+ lift = Rand . const
+
+instance MonadPrim m => MonadPrim (Rand m) where
+ type BasePrimMonad (Rand m) = BasePrimMonad m
+ liftPrim = liftPrim . lift \ No newline at end of file
diff --git a/testsuite/tests/indexed-types/should_fail/T7729.stderr b/testsuite/tests/indexed-types/should_fail/T7729.stderr
new file mode 100644
index 0000000000..4b12b29d96
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T7729.stderr
@@ -0,0 +1,17 @@
+
+T7729.hs:28:14:
+ Could not deduce (BasePrimMonad (Rand m)
+ ~ t0 (BasePrimMonad (Rand m)))
+ from the context (PrimMonad (BasePrimMonad (Rand m)),
+ Monad (Rand m),
+ MonadPrim m)
+ bound by the instance declaration at T7729.hs:26:10-42
+ The type variable ‛t0’ is ambiguous
+ Expected type: t0 (BasePrimMonad (Rand m)) a -> Rand m a
+ Actual type: BasePrimMonad (Rand m) a -> Rand m a
+ Relevant bindings include
+ liftPrim :: BasePrimMonad (Rand m) a -> Rand m a
+ (bound at T7729.hs:28:3)
+ In the first argument of ‛(.)’, namely ‛liftPrim’
+ In the expression: liftPrim . lift
+ In an equation for ‛liftPrim’: liftPrim = liftPrim . lift
diff --git a/testsuite/tests/indexed-types/should_fail/T7729a.hs b/testsuite/tests/indexed-types/should_fail/T7729a.hs
new file mode 100644
index 0000000000..53c163992b
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T7729a.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE FlexibleContexts, TypeFamilies #-}
+module T7729a where
+
+class Monad m => PrimMonad m where
+ type PrimState m
+
+class MonadTrans t where
+ lift :: Monad m => m a -> t m a
+
+class (PrimMonad (BasePrimMonad m), Monad m) => MonadPrim m where
+ type BasePrimMonad m :: * -> *
+ liftPrim :: BasePrimMonad m a -> m a
+
+
+newtype Rand m a = Rand {
+ runRand :: Maybe (m ()) -> m a
+ }
+
+instance (Monad m) => Monad (Rand m) where
+ return = Rand . const . return
+ (Rand rnd) >>= f = Rand $ \g -> (\x -> runRand (f x) g) =<< rnd g
+
+instance MonadTrans Rand where
+ lift = Rand . const
+
+instance MonadPrim m => MonadPrim (Rand m) where
+ type BasePrimMonad (Rand m) = BasePrimMonad m
+ liftPrim x = liftPrim (lift x) -- This line changed from T7729 \ No newline at end of file
diff --git a/testsuite/tests/indexed-types/should_fail/T7729a.stderr b/testsuite/tests/indexed-types/should_fail/T7729a.stderr
new file mode 100644
index 0000000000..54eeea02f4
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T7729a.stderr
@@ -0,0 +1,8 @@
+
+T7729a.hs:28:31:
+ Occurs check: cannot construct the infinite type: m0 ~ t0 m0
+ Expected type: m0 a
+ Actual type: BasePrimMonad (Rand m) a
+ In the first argument of ‛lift’, namely ‛x’
+ In the first argument of ‛liftPrim’, namely ‛(lift x)’
+ In the expression: liftPrim (lift x)
diff --git a/testsuite/tests/indexed-types/should_fail/all.T b/testsuite/tests/indexed-types/should_fail/all.T
index 0196f543ee..2b608f21a6 100644
--- a/testsuite/tests/indexed-types/should_fail/all.T
+++ b/testsuite/tests/indexed-types/should_fail/all.T
@@ -94,4 +94,6 @@ test('T7354a',
['$MAKE -s --no-print-directory T7354a'])
test('T7536', normal, compile_fail, [''])
-test('T7560', normal, compile_fail, ['']) \ No newline at end of file
+test('T7560', normal, compile_fail, [''])
+test('T7729', normal, compile_fail, [''])
+test('T7729a', normal, compile_fail, [''])
diff --git a/testsuite/tests/polykinds/T6068.stdout b/testsuite/tests/polykinds/T6068.stdout
index bf9528b1fd..e0d81eb049 100644
--- a/testsuite/tests/polykinds/T6068.stdout
+++ b/testsuite/tests/polykinds/T6068.stdout
@@ -1,2 +1,2 @@
exists Nothing
- :: Floop * (KProxy (Maybe *)) a mp => Existential (Maybe *) mp
+ :: Floop * (KProxy (Maybe *)) a kp => Existential (Maybe *) kp
diff --git a/testsuite/tests/typecheck/should_compile/T7641.hs b/testsuite/tests/typecheck/should_compile/T7641.hs
new file mode 100644
index 0000000000..5d68f4f8bf
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T7641.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+
+module T7641 where
+
+data Foo b = Foo deriving Show
+
+class ToFoo a b where
+ toFoo :: a -> Foo b
+
+instance ToFoo (c -> ()) b where
+ toFoo _ = Foo
+
+baz () = toFoo $ \_ -> ()
diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T
index 0fdb2ad466..9160781061 100644
--- a/testsuite/tests/typecheck/should_compile/all.T
+++ b/testsuite/tests/typecheck/should_compile/all.T
@@ -397,3 +397,4 @@ test('T7408', normal, compile, [''])
test('UnboxStrictPrimitiveFields', normal, compile, [''])
test('T7541', normal, compile, [''])
test('T7562', normal, compile, [''])
+test('T7641', normal, compile, [''])
diff --git a/testsuite/tests/typecheck/should_fail/T3950.stderr b/testsuite/tests/typecheck/should_fail/T3950.stderr
index b95b4f8177..d318978c8f 100644
--- a/testsuite/tests/typecheck/should_fail/T3950.stderr
+++ b/testsuite/tests/typecheck/should_fail/T3950.stderr
@@ -1,16 +1,16 @@
-
-T3950.hs:15:13:
- Couldn't match kind ‛* -> *’ with ‛*’
- When matching types
- w :: (* -> * -> *) -> *
- Sealed :: (* -> *) -> *
- Expected type: w (Id p)
- Actual type: Sealed (Id p0 x0)
- In the first argument of ‛Just’, namely ‛rp'’
- In the expression: Just rp'
- In an equation for ‛rp’:
- rp _
- = Just rp'
- where
- rp' :: Sealed (Id p x)
- rp' = undefined
+
+T3950.hs:15:13:
+ Couldn't match kind ‛*’ with ‛* -> *’
+ When matching types
+ Sealed :: (* -> *) -> *
+ w :: (* -> * -> *) -> *
+ Expected type: w (Id p)
+ Actual type: Sealed (Id p0 x0)
+ In the first argument of ‛Just’, namely ‛rp'’
+ In the expression: Just rp'
+ In an equation for ‛rp’:
+ rp _
+ = Just rp'
+ where
+ rp' :: Sealed (Id p x)
+ rp' = undefined
diff --git a/testsuite/tests/typecheck/should_fail/T5570.stderr b/testsuite/tests/typecheck/should_fail/T5570.stderr
index 90f9155afa..d9ffbed251 100644
--- a/testsuite/tests/typecheck/should_fail/T5570.stderr
+++ b/testsuite/tests/typecheck/should_fail/T5570.stderr
@@ -1,9 +1,9 @@
-
-T5570.hs:7:16:
- Couldn't match kind ‛*’ with ‛#’
- When matching types
- s0 :: *
- Double# :: #
- In the second argument of ‛($)’, namely ‛D# $ 3.0##’
- In the expression: print $ D# $ 3.0##
- In an equation for ‛main’: main = print $ D# $ 3.0##
+
+T5570.hs:7:16:
+ Couldn't match kind ‛#’ with ‛*’
+ When matching types
+ Double# :: #
+ s0 :: *
+ In the second argument of ‛($)’, namely ‛D# $ 3.0##’
+ In the expression: print $ D# $ 3.0##
+ In an equation for ‛main’: main = print $ D# $ 3.0##
diff --git a/testsuite/tests/typecheck/should_fail/T7368.stderr b/testsuite/tests/typecheck/should_fail/T7368.stderr
index 8f1f478b94..cdb043c10d 100644
--- a/testsuite/tests/typecheck/should_fail/T7368.stderr
+++ b/testsuite/tests/typecheck/should_fail/T7368.stderr
@@ -1,20 +1,18 @@
-
-T7368.hs:3:10:
- Couldn't match kind ‛* -> *’ with ‛*’
- When matching types
- c0 :: (* -> *) -> *
- (->) a0 :: * -> *
- Expected type: a0 -> b0
- Actual type: c0 b1
- In the return type of a call of ‛l’
- Probable cause: ‛l’ is applied to too many arguments
- In the first argument of ‛b’, namely ‛(l ())’
- In the expression: b (l ())
-
-T7368.hs:3:13:
- Couldn't match type ‛()’ with ‛b0 a1’
- Expected type: b1 a1
- Actual type: ()
- In the first argument of ‛l’, namely ‛()’
- In the first argument of ‛b’, namely ‛(l ())’
- In the expression: b (l ())
+
+T7368.hs:3:10:
+ Couldn't match kind ‛* -> *’ with ‛*’
+ When matching types
+ b1 :: * -> *
+ b0 :: *
+ Expected type: a0 -> b0
+ Actual type: c0 b1
+ In the return type of a call of ‛l’
+ Probable cause: ‛l’ is applied to too many arguments
+ In the first argument of ‛b’, namely ‛(l ())’
+ In the expression: b (l ())
+
+T7368.hs:3:13:
+ Couldn't match expected type ‛b1 a1’ with actual type ‛()’
+ In the first argument of ‛l’, namely ‛()’
+ In the first argument of ‛b’, namely ‛(l ())’
+ In the expression: b (l ())
diff --git a/testsuite/tests/typecheck/should_fail/T7368a.stderr b/testsuite/tests/typecheck/should_fail/T7368a.stderr
index bc193cab05..e9a93441c0 100644
--- a/testsuite/tests/typecheck/should_fail/T7368a.stderr
+++ b/testsuite/tests/typecheck/should_fail/T7368a.stderr
@@ -1,10 +1,10 @@
-
-T7368a.hs:8:6:
- Couldn't match kind ‛*’ with ‛* -> *’
- When matching types
- f :: * -> *
- Bad :: (* -> *) -> *
- Expected type: f (Bad f)
- Actual type: Bad t0
- In the pattern: Bad x
- In an equation for ‛fun’: fun (Bad x) = True
+
+T7368a.hs:8:6:
+ Couldn't match kind ‛* -> *’ with ‛*’
+ When matching types
+ Bad :: (* -> *) -> *
+ f :: * -> *
+ Expected type: f (Bad f)
+ Actual type: Bad t0
+ In the pattern: Bad x
+ In an equation for ‛fun’: fun (Bad x) = True
diff --git a/testsuite/tests/typecheck/should_fail/T7609.stderr b/testsuite/tests/typecheck/should_fail/T7609.stderr
index 650329a298..2027c3bb64 100644
--- a/testsuite/tests/typecheck/should_fail/T7609.stderr
+++ b/testsuite/tests/typecheck/should_fail/T7609.stderr
@@ -1,11 +1,10 @@
-
-T7609.hs:7:16:
- Expecting one more argument to ‛Maybe’
- The second argument of a tuple should have kind ‛*’,
- but ‛Maybe’ has kind ‛* -> *’
- In the type signature for ‛f’: f :: (a `X` a, Maybe)
-
-T7609.hs:10:19:
- Expecting one more argument to ‛Maybe’
- Expected a type, but ‛Maybe’ has kind ‛* -> *’
- In the type signature for ‛g’: g :: a `X` a => Maybe
+
+T7609.hs:7:16:
+ Expecting one more argument to ‛Maybe’
+ The second argument of a tuple should have kind ‛*’,
+ but ‛Maybe’ has kind ‛* -> *’
+ In the type signature for ‛f’: f :: (a `X` a, Maybe)
+
+T7609.hs:10:7:
+ Expected a constraint, but ‛a `X` a’ has kind ‛*’
+ In the type signature for ‛g’: g :: a `X` a => Maybe
diff --git a/testsuite/tests/typecheck/should_fail/T7696.hs b/testsuite/tests/typecheck/should_fail/T7696.hs
new file mode 100644
index 0000000000..f2dbdde4ee
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T7696.hs
@@ -0,0 +1,17 @@
+module T7696 where
+
+f1 :: (m a, t m)
+f1 = undefined
+
+f2 :: ((), w ())
+f2 = f1
+
+{-
+m :: * -> *
+t :: (* -> *) -> *
+a :: *
+w :: * -> *
+
+m a ~ ()
+t m ~ w ()
+-} \ No newline at end of file
diff --git a/testsuite/tests/typecheck/should_fail/T7696.stderr b/testsuite/tests/typecheck/should_fail/T7696.stderr
new file mode 100644
index 0000000000..da30556cd6
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T7696.stderr
@@ -0,0 +1,17 @@
+
+T7696.hs:7:6:
+ Couldn't match kind ‛* -> *’ with ‛*’
+ When matching types
+ m0 :: * -> *
+ () :: *
+ Expected type: ((), w ())
+ Actual type: (m0 a0, t0 m0)
+ In the expression: f1
+ In an equation for ‛f2’: f2 = f1
+
+T7696.hs:7:6:
+ Couldn't match type ‛m0 a0’ with ‛()’
+ Expected type: ((), w ())
+ Actual type: (m0 a0, t0 m0)
+ In the expression: f1
+ In an equation for ‛f2’: f2 = f1
diff --git a/testsuite/tests/typecheck/should_fail/T7697.hs b/testsuite/tests/typecheck/should_fail/T7697.hs
new file mode 100644
index 0000000000..00815f7118
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T7697.hs
@@ -0,0 +1,4 @@
+module T7697 where
+
+f :: Int => Int
+f x = x
diff --git a/testsuite/tests/typecheck/should_fail/T7697.stderr b/testsuite/tests/typecheck/should_fail/T7697.stderr
new file mode 100644
index 0000000000..759d4abf5c
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T7697.stderr
@@ -0,0 +1,4 @@
+
+T7697.hs:3:6:
+ Expected a constraint, but ‛Int’ has kind ‛*’
+ In the type signature for ‛f’: f :: Int => Int
diff --git a/testsuite/tests/typecheck/should_fail/T7734.hs b/testsuite/tests/typecheck/should_fail/T7734.hs
new file mode 100644
index 0000000000..85f83f5281
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T7734.hs
@@ -0,0 +1,5 @@
+
+module T7734 where
+
+x `f` y = x x
+(&) x y = x x
diff --git a/testsuite/tests/typecheck/should_fail/T7734.stderr b/testsuite/tests/typecheck/should_fail/T7734.stderr
new file mode 100644
index 0000000000..d90d136a1a
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T7734.stderr
@@ -0,0 +1,18 @@
+
+T7734.hs:4:13:
+ Occurs check: cannot construct the infinite type: t2 ~ t2 -> t1
+ Relevant bindings include
+ f :: (t2 -> t1) -> t -> t1 (bound at T7734.hs:4:1)
+ x :: t2 -> t1 (bound at T7734.hs:4:1)
+ In the first argument of ‛x’, namely ‛x’
+ In the expression: x x
+ In an equation for ‛f’: x `f` y = x x
+
+T7734.hs:5:13:
+ Occurs check: cannot construct the infinite type: t2 ~ t2 -> t1
+ Relevant bindings include
+ & :: (t2 -> t1) -> t -> t1 (bound at T7734.hs:5:1)
+ x :: t2 -> t1 (bound at T7734.hs:5:5)
+ In the first argument of ‛x’, namely ‛x’
+ In the expression: x x
+ In an equation for ‛&’: (&) x y = x x
diff --git a/testsuite/tests/typecheck/should_fail/all.T b/testsuite/tests/typecheck/should_fail/all.T
index 0750c57a81..284f60d628 100644
--- a/testsuite/tests/typecheck/should_fail/all.T
+++ b/testsuite/tests/typecheck/should_fail/all.T
@@ -297,3 +297,6 @@ test('T2247', normal, compile_fail, [''])
test('T7609', normal, compile_fail, [''])
test('T7645', normal, compile_fail, [''])
test('T2354', normal, compile_fail, ['-O'])
+test('T7734', normal, compile_fail, [''])
+test('T7697', normal, compile_fail, [''])
+test('T7696', normal, compile_fail, [''])
diff --git a/testsuite/tests/typecheck/should_fail/tcfail123.stderr b/testsuite/tests/typecheck/should_fail/tcfail123.stderr
index 2a70414aaf..2f18b191b8 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail123.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail123.stderr
@@ -1,9 +1,9 @@
-
-tcfail123.hs:11:9:
- Couldn't match kind ‛*’ with ‛#’
- When matching types
- t0 :: *
- GHC.Prim.Int# :: #
- In the first argument of ‛f’, namely ‛3#’
- In the expression: f 3#
- In an equation for ‛h’: h v = f 3#
+
+tcfail123.hs:11:9:
+ Couldn't match kind ‛#’ with ‛*’
+ When matching types
+ GHC.Prim.Int# :: #
+ t0 :: *
+ In the first argument of ‛f’, namely ‛3#’
+ In the expression: f 3#
+ In an equation for ‛h’: h v = f 3#
diff --git a/testsuite/tests/typecheck/should_fail/tcfail159.stderr b/testsuite/tests/typecheck/should_fail/tcfail159.stderr
index 3ff73d8c72..ab79887bad 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail159.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail159.stderr
@@ -1,9 +1,9 @@
-
-tcfail159.hs:9:11:
- Couldn't match kind ‛*’ with ‛#’
- When matching types
- t0 :: *
- (# Int, Int #) :: #
- In the pattern: ~(# p, q #)
- In a case alternative: ~(# p, q #) -> p
- In the expression: case h x of { ~(# p, q #) -> p }
+
+tcfail159.hs:9:11:
+ Couldn't match kind ‛#’ with ‛*’
+ When matching types
+ (# Int, Int #) :: #
+ t0 :: *
+ In the pattern: ~(# p, q #)
+ In a case alternative: ~(# p, q #) -> p
+ In the expression: case h x of { ~(# p, q #) -> p }
diff --git a/testsuite/tests/typecheck/should_fail/tcfail200.stderr b/testsuite/tests/typecheck/should_fail/tcfail200.stderr
index 57c174d109..8bc22599d7 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail200.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail200.stderr
@@ -1,9 +1,9 @@
-
-tcfail200.hs:5:15:
- Couldn't match kind ‛*’ with ‛#’
- When matching types
- t1 :: *
- GHC.Prim.Int# :: #
- In the expression: 1#
- In the expression: (1#, 'c')
- In an equation for ‛x’: x = (1#, 'c')
+
+tcfail200.hs:5:15:
+ Couldn't match kind ‛#’ with ‛*’
+ When matching types
+ GHC.Prim.Int# :: #
+ t1 :: *
+ In the expression: 1#
+ In the expression: (1#, 'c')
+ In an equation for ‛x’: x = (1#, 'c')