diff options
Diffstat (limited to 'testsuite/tests')
380 files changed, 1937 insertions, 1553 deletions
diff --git a/testsuite/tests/ado/T13242a.stderr b/testsuite/tests/ado/T13242a.stderr index 9e32035ebb..5e6bc9899d 100644 --- a/testsuite/tests/ado/T13242a.stderr +++ b/testsuite/tests/ado/T13242a.stderr @@ -1,7 +1,8 @@ T13242a.hs:10:5: error: • Couldn't match expected type ‘a0’ with actual type ‘a’ - ‘a’ is a rigid type variable bound by + because type variable ‘a’ would escape its scope + This (rigid, skolem) type variable is bound by a pattern with constructor: A :: forall a. Eq a => a -> T, in a pattern binding in a 'do' block diff --git a/testsuite/tests/ado/ado002.stderr b/testsuite/tests/ado/ado002.stderr index d7c0b6da68..3402d0df55 100644 --- a/testsuite/tests/ado/ado002.stderr +++ b/testsuite/tests/ado/ado002.stderr @@ -1,7 +1,7 @@ ado002.hs:8:8: error: - • Couldn't match expected type ‘Char -> IO b0’ - with actual type ‘IO Char’ + • Couldn't match expected type: Char -> IO b0 + with actual type: IO Char • The function ‘getChar’ is applied to one value argument, but its type ‘IO Char’ has none In a stmt of a 'do' block: y <- getChar 'a' @@ -12,8 +12,8 @@ ado002.hs:8:8: error: ado002.hs:9:3: error: • Couldn't match type ‘()’ with ‘Int’ - Expected type: IO Int - Actual type: IO () + Expected: IO Int + Actual: IO () • In a stmt of a 'do' block: print (x, y) In the expression: do x <- getChar @@ -43,8 +43,8 @@ ado002.hs:15:13: error: return (y, x) ado002.hs:23:9: error: - • Couldn't match expected type ‘Char -> IO t0’ - with actual type ‘IO Char’ + • Couldn't match expected type: Char -> IO a0 + with actual type: IO Char • The function ‘getChar’ is applied to one value argument, but its type ‘IO Char’ has none In a stmt of a 'do' block: x5 <- getChar x4 diff --git a/testsuite/tests/ado/ado004.stderr b/testsuite/tests/ado/ado004.stderr index 47024fdfd1..2ac9b26388 100644 --- a/testsuite/tests/ado/ado004.stderr +++ b/testsuite/tests/ado/ado004.stderr @@ -22,9 +22,9 @@ TYPE SIGNATURES (Functor f, Num t, Num b) => (t -> f b) -> f b test2d :: - forall {f :: * -> *} {t1} {b} {t2}. - (Functor f, Num t1, Num b) => - (t1 -> f t2) -> f b + forall {f :: * -> *} {t} {b} {a}. + (Functor f, Num t, Num b) => + (t -> f a) -> f b test3 :: forall {m :: * -> *} {t1} {t2} {a}. (Monad m, Num t1) => @@ -42,5 +42,5 @@ TYPE SIGNATURES (Monad m, Num (m a)) => (m a -> m (m a)) -> p -> m a Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/annotations/should_fail/annfail06.hs b/testsuite/tests/annotations/should_fail/annfail06.hs index 1362f1956e..6fc5ae2cf2 100644 --- a/testsuite/tests/annotations/should_fail/annfail06.hs +++ b/testsuite/tests/annotations/should_fail/annfail06.hs @@ -11,8 +11,8 @@ import Data.Typeable deriving instance Typeable InstancesInWrongModule instance Data InstancesInWrongModule where - gfoldl = undefined - gunfold = undefined + gfoldl k z = undefined + gunfold k z = undefined {-# ANN module InstancesInWrongModule #-} @@ -20,4 +20,4 @@ instance Data InstancesInWrongModule where data Foo = Bar {-# ANN f InstancesInWrongModule #-} -f x = x
\ No newline at end of file +f x = x diff --git a/testsuite/tests/arrows/should_fail/T5380.stderr b/testsuite/tests/arrows/should_fail/T5380.stderr index 8b1c81af99..a116513014 100644 --- a/testsuite/tests/arrows/should_fail/T5380.stderr +++ b/testsuite/tests/arrows/should_fail/T5380.stderr @@ -17,13 +17,13 @@ T5380.hs:7:27: error: T5380.hs:7:34: error: • Couldn't match type ‘not_unit’ with ‘()’ + Expected: () -> not_unit + Actual: () -> () ‘not_unit’ is a rigid type variable bound by the type signature for: testB :: forall not_bool not_unit. not_bool -> (() -> ()) -> () -> not_unit at T5380.hs:6:1-49 - Expected type: () -> not_unit - Actual type: () -> () • In the expression: f In the command: f -< () In the expression: proc () -> if b then f -< () else f -< () diff --git a/testsuite/tests/backpack/should_fail/bkpfail24.stderr b/testsuite/tests/backpack/should_fail/bkpfail24.stderr index 484ebf144b..65a79bf119 100644 --- a/testsuite/tests/backpack/should_fail/bkpfail24.stderr +++ b/testsuite/tests/backpack/should_fail/bkpfail24.stderr @@ -24,9 +24,8 @@ bkpfail24.bkp:14:15: error: f :: a -> b (bound at bkpfail24.bkp:14:9) bkpfail24.bkp:19:15: error: - • Couldn't match expected type ‘{H2.T}’ - with actual type ‘{H1.T}’ - NB: ‘{H1.T}’ is defined at bkpfail24.bkp:4:9-14 - ‘{H2.T}’ is defined at bkpfail24.bkp:6:9-14 + • Couldn't match expected type ‘{H2.T}’ with actual type ‘{H1.T}’ + NB: ‘{H2.T}’ is defined at bkpfail24.bkp:6:9-14 + ‘{H1.T}’ is defined at bkpfail24.bkp:4:9-14 • In the expression: x In an equation for ‘g’: g x = x diff --git a/testsuite/tests/boxy/Base1.stderr b/testsuite/tests/boxy/Base1.stderr index 75a8e0cfe2..e9b2144533 100644 --- a/testsuite/tests/boxy/Base1.stderr +++ b/testsuite/tests/boxy/Base1.stderr @@ -1,15 +1,17 @@ Base1.hs:20:13: error: - • Couldn't match type ‘a0 -> a0’ with ‘forall a. a -> a’ - Expected type: MEither Sid b - Actual type: MEither (a0 -> a0) b + • Couldn't match type: a0 -> a0 + with: forall a. a -> a + Expected: MEither Sid b + Actual: MEither (a0 -> a0) b • In the expression: MLeft fid In an equation for ‘test1’: test1 fid = MLeft fid Base1.hs:25:39: error: - • Couldn't match type ‘a1 -> a1’ with ‘forall a. a -> a’ - Expected type: Maybe (Sid, Sid) - Actual type: Maybe (a1 -> a1, a2 -> a2) + • Couldn't match type: a1 -> a1 + with: forall a. a -> a + Expected: Maybe (Sid, Sid) + Actual: Maybe (a1 -> a1, a2 -> a2) • In the expression: Just (x, y) In a case alternative: MRight y -> Just (x, y) In the expression: diff --git a/testsuite/tests/deSugar/should_compile/T10662.stderr b/testsuite/tests/deSugar/should_compile/T10662.stderr index f27fc977b6..6a5cc457fc 100644 --- a/testsuite/tests/deSugar/should_compile/T10662.stderr +++ b/testsuite/tests/deSugar/should_compile/T10662.stderr @@ -1,5 +1,5 @@ T10662.hs:3:3: warning: [-Wunused-do-bind (in -Wall)] - A do-notation statement discarded a result of type ‘[Char]’ + A do-notation statement discarded a result of type ‘String’ Suppress this warning by saying ‘_ <- return $ let a = "hello" in a’ diff --git a/testsuite/tests/dependent/should_compile/dynamic-paper.stderr b/testsuite/tests/dependent/should_compile/dynamic-paper.stderr index 89b88f45ab..44af3fd5f7 100644 --- a/testsuite/tests/dependent/should_compile/dynamic-paper.stderr +++ b/testsuite/tests/dependent/should_compile/dynamic-paper.stderr @@ -12,4 +12,4 @@ Simplifier ticks exhausted simplifier non-termination has been judged acceptable. To see detailed counts use -ddump-simpl-stats - Total ticks: 138082 + Total ticks: 136724 diff --git a/testsuite/tests/dependent/should_fail/BadTelescope5.stderr b/testsuite/tests/dependent/should_fail/BadTelescope5.stderr index 57b2ee7876..d2ec36e5df 100644 --- a/testsuite/tests/dependent/should_fail/BadTelescope5.stderr +++ b/testsuite/tests/dependent/should_fail/BadTelescope5.stderr @@ -1,6 +1,10 @@ BadTelescope5.hs:10:81: error: - • Expected kind ‘k1’, but ‘d’ has kind ‘Proxy a1’ + • Expected kind ‘k’, but ‘d’ has kind ‘Proxy a’ + ‘k’ is a rigid type variable bound by + ‘forall a k (b :: k) (c :: Proxy b) (d :: Proxy a). + Proxy c -> SameKind b d’ + at BadTelescope5.hs:10:17 • In the second argument of ‘SameKind’, namely ‘d’ In the type signature: bar :: forall a k (b :: k) (c :: Proxy b) (d :: Proxy a). diff --git a/testsuite/tests/dependent/should_fail/T11407.stderr b/testsuite/tests/dependent/should_fail/T11407.stderr index b07aa2bbd8..df87248f2e 100644 --- a/testsuite/tests/dependent/should_fail/T11407.stderr +++ b/testsuite/tests/dependent/should_fail/T11407.stderr @@ -1,6 +1,6 @@ T11407.hs:10:40: error: - • Occurs check: cannot construct the infinite kind: k0 ~ x a + • Expected kind ‘x a’, but ‘a’ has kind ‘k0’ • In the second argument of ‘UhOh’, namely ‘(a :: x a)’ In the data instance declaration for ‘UhOh’ • Type variable kinds: diff --git a/testsuite/tests/dependent/should_fail/T11471.stderr b/testsuite/tests/dependent/should_fail/T11471.stderr index 640ae6c754..7772850564 100644 --- a/testsuite/tests/dependent/should_fail/T11471.stderr +++ b/testsuite/tests/dependent/should_fail/T11471.stderr @@ -4,8 +4,8 @@ T11471.hs:15:10: error: When matching types a :: * Int# :: TYPE 'IntRep - Expected type: Proxy a - Actual type: Proxy Int# + Expected: Proxy a + Actual: Proxy Int# • In the first argument of ‘f’, namely ‘(undefined :: Proxy Int#)’ In the expression: f (undefined :: Proxy Int#) 3# In an equation for ‘bad’: bad = f (undefined :: Proxy Int#) 3# diff --git a/testsuite/tests/dependent/should_fail/T13780a.stderr b/testsuite/tests/dependent/should_fail/T13780a.stderr index 3b113bd89e..5253ed0dbd 100644 --- a/testsuite/tests/dependent/should_fail/T13780a.stderr +++ b/testsuite/tests/dependent/should_fail/T13780a.stderr @@ -1,6 +1,7 @@ T13780a.hs:9:40: error: - • Expected kind ‘Foo a’, but ‘MkFoo’ has kind ‘Foo Bool’ + • Couldn't match kind ‘a’ with ‘Bool’ + Expected kind ‘Foo a’, but ‘MkFoo’ has kind ‘Foo Bool’ • In the second argument of ‘(~)’, namely ‘MkFoo’ In the definition of data constructor ‘SMkFoo’ In the data instance declaration for ‘Sing’ diff --git a/testsuite/tests/dependent/should_fail/T14066.stderr b/testsuite/tests/dependent/should_fail/T14066.stderr index a6780ff75f..d958f9a519 100644 --- a/testsuite/tests/dependent/should_fail/T14066.stderr +++ b/testsuite/tests/dependent/should_fail/T14066.stderr @@ -1,6 +1,10 @@ T14066.hs:15:59: error: - • Expected kind ‘k2’, but ‘b’ has kind ‘k3’ + • Expected kind ‘k0’, but ‘b’ has kind ‘k’ + because kind variable ‘k’ would escape its scope + This (rigid, skolem) kind variable is bound by + ‘forall k (b :: k). SameKind a b’ + at T14066.hs:15:29-59 • In the second argument of ‘SameKind’, namely ‘b’ In the type signature: g :: forall k (b :: k). SameKind a b In the expression: @@ -8,6 +12,4 @@ T14066.hs:15:59: error: g :: forall k (b :: k). SameKind a b g = undefined in () - • Relevant bindings include - x :: Proxy a (bound at T14066.hs:15:4) - f :: Proxy a -> () (bound at T14066.hs:15:1) + • Relevant bindings include x :: Proxy a (bound at T14066.hs:15:4) diff --git a/testsuite/tests/dependent/should_fail/T14066d.stderr b/testsuite/tests/dependent/should_fail/T14066d.stderr index 289c7a121a..169897c416 100644 --- a/testsuite/tests/dependent/should_fail/T14066d.stderr +++ b/testsuite/tests/dependent/should_fail/T14066d.stderr @@ -1,6 +1,8 @@ T14066d.hs:11:35: error: • Couldn't match type ‘b1’ with ‘b’ + Expected: (Proxy a, Proxy c, b1) + Actual: (Proxy a, Proxy c, b) ‘b1’ is a rigid type variable bound by a type expected by the context: forall c b1 (a :: c). (Proxy a, Proxy c, b1) @@ -9,8 +11,6 @@ T14066d.hs:11:35: error: the type signature for: f :: forall b. b -> (Proxy Maybe, ()) at T14066d.hs:10:1-37 - Expected type: (Proxy a, Proxy c, b1) - Actual type: (Proxy a, Proxy c, b) • In the first argument of ‘g’, namely ‘y’ In the expression: g y In the expression: (fstOf3 y :: Proxy Maybe, g y) diff --git a/testsuite/tests/dependent/should_fail/T14066e.stderr b/testsuite/tests/dependent/should_fail/T14066e.stderr index ee903d6b4c..b103b16187 100644 --- a/testsuite/tests/dependent/should_fail/T14066e.stderr +++ b/testsuite/tests/dependent/should_fail/T14066e.stderr @@ -1,6 +1,11 @@ T14066e.hs:13:65: error: • Expected a type, but ‘c'’ has kind ‘k1’ + ‘k1’ is a rigid type variable bound by + the type signature for: + j :: forall {k1} {k2} (c :: k1) (b :: k2). + Proxy a -> Proxy b -> Proxy c -> Proxy b + at T14066e.hs:12:5-61 • In the kind ‘c'’ In the first argument of ‘Proxy’, namely ‘(b' :: c')’ In an expression type signature: Proxy (b' :: c') diff --git a/testsuite/tests/dependent/should_fail/T16326_Fail10.stderr b/testsuite/tests/dependent/should_fail/T16326_Fail10.stderr index bceccb1dcd..4ef380e5ba 100644 --- a/testsuite/tests/dependent/should_fail/T16326_Fail10.stderr +++ b/testsuite/tests/dependent/should_fail/T16326_Fail10.stderr @@ -3,5 +3,5 @@ T16326_Fail10.hs:12:18: error: • Illegal visible, dependent quantification in the type of a term: forall a -> a -> a (GHC does not yet support this) - • In a RULE for ‘x’: forall a -> a -> a + • In the type signature for ‘x’: forall a -> a -> a When checking the transformation rule "flurmp" diff --git a/testsuite/tests/dependent/should_fail/T17131.stderr b/testsuite/tests/dependent/should_fail/T17131.stderr index dd250ed414..daad6ac054 100644 --- a/testsuite/tests/dependent/should_fail/T17131.stderr +++ b/testsuite/tests/dependent/should_fail/T17131.stderr @@ -1,7 +1,10 @@ T17131.hs:12:34: error: - • Expected kind ‘TYPE ('TupleRep (TypeReps xs))’, + • Couldn't match kind: TypeReps xs + with: '[ 'LiftedRep] + Expected kind ‘TYPE ('TupleRep (TypeReps xs))’, but ‘(# a #)’ has kind ‘TYPE ('TupleRep '[ 'LiftedRep])’ + The type variable ‘xs’ is ambiguous • In the type ‘(# a #)’ In the type family declaration for ‘Tuple#’ NB: Type ‘Tuple#’ was inferred to use visible dependent quantification. diff --git a/testsuite/tests/dependent/should_fail/T17541.stderr b/testsuite/tests/dependent/should_fail/T17541.stderr index e17206c734..d0ea673a2b 100644 --- a/testsuite/tests/dependent/should_fail/T17541.stderr +++ b/testsuite/tests/dependent/should_fail/T17541.stderr @@ -1,7 +1,8 @@ T17541.hs:20:17: error: - • Expected kind ‘TYPE (Rep rep)’, - but ‘Int#’ has kind ‘TYPE 'IntRep’ + • Couldn't match kind ‘Rep rep’ with ‘'IntRep’ + Expected kind ‘TYPE (Rep rep)’, but ‘Int#’ has kind ‘TYPE 'IntRep’ + The type variable ‘rep’ is ambiguous • In the type ‘Int#’ In the type family declaration for ‘Unboxed’ NB: Type ‘Unboxed’ was inferred to use visible dependent quantification. diff --git a/testsuite/tests/dependent/should_fail/TypeSkolEscape.stderr b/testsuite/tests/dependent/should_fail/TypeSkolEscape.stderr index e2ef266914..a919095337 100644 --- a/testsuite/tests/dependent/should_fail/TypeSkolEscape.stderr +++ b/testsuite/tests/dependent/should_fail/TypeSkolEscape.stderr @@ -1,5 +1,9 @@ TypeSkolEscape.hs:9:52: error: • Expected kind ‘k0’, but ‘a’ has kind ‘TYPE v’ + because kind variable ‘v’ would escape its scope + This (rigid, skolem) kind variable is bound by + ‘forall (v :: RuntimeRep) (a :: TYPE v). a’ + at TypeSkolEscape.hs:9:12-52 • In the type ‘forall (v :: RuntimeRep) (a :: TYPE v). a’ In the type declaration for ‘Bad’ diff --git a/testsuite/tests/deriving/should_fail/T1496.stderr b/testsuite/tests/deriving/should_fail/T1496.stderr index c560f5fe0f..6183819bc4 100644 --- a/testsuite/tests/deriving/should_fail/T1496.stderr +++ b/testsuite/tests/deriving/should_fail/T1496.stderr @@ -1,9 +1,10 @@ T1496.hs:10:32: error: - Couldn't match representation of type ‘c Int’ with that of ‘c Moo’ - arising from the coercion of the method ‘isInt’ - from type ‘forall (c :: * -> *). c Int -> c Int’ - to type ‘forall (c :: * -> *). c Int -> c Moo’ - NB: We cannot know what roles the parameters to ‘c’ have; - we must assume that the role is nominal - When deriving the instance for (IsInt Moo) + • Couldn't match representation of type: c Int + with that of: c Moo + arising from the coercion of the method ‘isInt’ + from type ‘forall (c :: * -> *). c Int -> c Int’ + to type ‘forall (c :: * -> *). c Int -> c Moo’ + NB: We cannot know what roles the parameters to ‘c’ have; + we must assume that the role is nominal + • When deriving the instance for (IsInt Moo) diff --git a/testsuite/tests/deriving/should_fail/T5498.stderr b/testsuite/tests/deriving/should_fail/T5498.stderr index ce87ef1867..1960487c38 100644 --- a/testsuite/tests/deriving/should_fail/T5498.stderr +++ b/testsuite/tests/deriving/should_fail/T5498.stderr @@ -1,10 +1,10 @@ T5498.hs:30:39: error: - Couldn't match representation of type ‘c a’ - with that of ‘c (Down a)’ - arising from the coercion of the method ‘intIso’ - from type ‘forall (c :: * -> *). c a -> c Int’ - to type ‘forall (c :: * -> *). c (Down a) -> c Int’ - NB: We cannot know what roles the parameters to ‘c’ have; - we must assume that the role is nominal - When deriving the instance for (IntIso (Down a)) + • Couldn't match representation of type: c a + with that of: c (Down a) + arising from the coercion of the method ‘intIso’ + from type ‘forall (c :: * -> *). c a -> c Int’ + to type ‘forall (c :: * -> *). c (Down a) -> c Int’ + NB: We cannot know what roles the parameters to ‘c’ have; + we must assume that the role is nominal + • When deriving the instance for (IntIso (Down a)) diff --git a/testsuite/tests/deriving/should_fail/T7148.stderr b/testsuite/tests/deriving/should_fail/T7148.stderr index ee42cc91f1..487d2da622 100644 --- a/testsuite/tests/deriving/should_fail/T7148.stderr +++ b/testsuite/tests/deriving/should_fail/T7148.stderr @@ -1,14 +1,20 @@ T7148.hs:27:40: error: - • Occurs check: cannot construct the infinite type: b ~ Tagged a b + • Couldn't match type ‘b’ with ‘Tagged a b’ arising from the coercion of the method ‘iso2’ from type ‘forall b1. SameType b1 () -> SameType b1 b’ to type ‘forall b1. SameType b1 () -> SameType b1 (Tagged a b)’ + ‘b’ is a rigid type variable bound by + the deriving clause for ‘IsoUnit (Tagged a b)’ + at T7148.hs:27:40-46 • When deriving the instance for (IsoUnit (Tagged a b)) T7148.hs:27:40: error: - • Occurs check: cannot construct the infinite type: b ~ Tagged a b + • Couldn't match type ‘b’ with ‘Tagged a b’ arising from the coercion of the method ‘iso1’ from type ‘forall b1. SameType () b1 -> SameType b b1’ to type ‘forall b1. SameType () b1 -> SameType (Tagged a b) b1’ + ‘b’ is a rigid type variable bound by + the deriving clause for ‘IsoUnit (Tagged a b)’ + at T7148.hs:27:40-46 • When deriving the instance for (IsoUnit (Tagged a b)) diff --git a/testsuite/tests/deriving/should_fail/T8984.stderr b/testsuite/tests/deriving/should_fail/T8984.stderr index 1cdc425293..9908f70f0a 100644 --- a/testsuite/tests/deriving/should_fail/T8984.stderr +++ b/testsuite/tests/deriving/should_fail/T8984.stderr @@ -1,9 +1,9 @@ T8984.hs:7:46: error: - Couldn't match representation of type ‘cat a (N cat a Int)’ - with that of ‘cat a (cat a Int)’ - arising from the coercion of the method ‘app’ - from type ‘cat a (cat a Int)’ to type ‘N cat a (N cat a Int)’ - NB: We cannot know what roles the parameters to ‘cat a’ have; - we must assume that the role is nominal - When deriving the instance for (C (N cat a)) + • Couldn't match representation of type: cat a (N cat a Int) + with that of: cat a (cat a Int) + arising from the coercion of the method ‘app’ + from type ‘cat a (cat a Int)’ to type ‘N cat a (N cat a Int)’ + NB: We cannot know what roles the parameters to ‘cat a’ have; + we must assume that the role is nominal + • When deriving the instance for (C (N cat a)) diff --git a/testsuite/tests/determinism/determ004/determ004.hs b/testsuite/tests/determinism/determ004/determ004.hs index 643fa0769d..97d268f1fa 100644 --- a/testsuite/tests/determinism/determ004/determ004.hs +++ b/testsuite/tests/determinism/determ004/determ004.hs @@ -302,13 +302,13 @@ sFoldr1 sF (SCons sX (SCons sWild_1627448474 sWild_1627448476)) sXs = applySing (applySing - (singFun2 (undefined :: Proxy (:$)) SCons) wild_1627448474_afeF) + (singFun2 (undefined :: Proxy (:$)) (\ x y -> SCons x y)) wild_1627448474_afeF) wild_1627448476_afeG in applySing (applySing f_afeD x_afeE) (applySing - (applySing (singFun2 (undefined :: Proxy Foldr1Sym0) sFoldr1) f_afeD) + (applySing (singFun2 (undefined :: Proxy Foldr1Sym0) (\x y -> sFoldr1 x y)) f_afeD) sXs) in lambda_afeC sF sX sWild_1627448474 sWild_1627448476 sFoldr1 _ SNil = undefined diff --git a/testsuite/tests/gadt/T3169.stderr b/testsuite/tests/gadt/T3169.stderr index d0f650b9ab..5770e03c70 100644 --- a/testsuite/tests/gadt/T3169.stderr +++ b/testsuite/tests/gadt/T3169.stderr @@ -1,8 +1,12 @@ T3169.hs:13:22: error: - • Occurs check: cannot construct the infinite type: elt ~ Map b elt - Expected type: Map a (Map b elt) - Actual type: Map (a, b) elt + • Couldn't match type ‘elt’ with ‘Map b elt’ + Expected: Map a (Map b elt) + Actual: Map (a, b) elt + ‘elt’ is a rigid type variable bound by + the type signature for: + lookup :: forall elt. (a, b) -> Map (a, b) elt -> Maybe elt + at T3169.hs:12:3-8 • In the second argument of ‘lookup’, namely ‘m’ In the expression: lookup a m :: Maybe (Map b elt) In the expression: diff --git a/testsuite/tests/gadt/T3651.stderr b/testsuite/tests/gadt/T3651.stderr index 62e3bf16d7..cd235748bb 100644 --- a/testsuite/tests/gadt/T3651.stderr +++ b/testsuite/tests/gadt/T3651.stderr @@ -1,14 +1,14 @@ T3651.hs:11:15: error: • Couldn't match type ‘()’ with ‘Bool’ - Expected type: a - Actual type: () + Expected: a + Actual: () • In the expression: () In an equation for ‘unsafe1’: unsafe1 B U = () T3651.hs:14:15: error: • Couldn't match type ‘()’ with ‘Bool’ - Expected type: a - Actual type: () + Expected: a + Actual: () • In the expression: () In an equation for ‘unsafe2’: unsafe2 B U = () diff --git a/testsuite/tests/gadt/T7558.stderr b/testsuite/tests/gadt/T7558.stderr index 29d7fa65a3..c8b9ec4223 100644 --- a/testsuite/tests/gadt/T7558.stderr +++ b/testsuite/tests/gadt/T7558.stderr @@ -1,6 +1,10 @@ T7558.hs:8:18: error: - • Occurs check: cannot construct the infinite type: a ~ Maybe a + • Couldn't match expected type ‘a’ with actual type ‘Maybe a’ + ‘a’ is a rigid type variable bound by + the type signature for: + f :: forall a. T a a -> Bool + at T7558.hs:7:1-18 • In the expression: y In the first argument of ‘seq’, namely ‘[x, y]’ In the expression: [x, y] `seq` True diff --git a/testsuite/tests/gadt/gadt-escape1.stderr b/testsuite/tests/gadt/gadt-escape1.stderr index 41322f9cbc..19aa501a4c 100644 --- a/testsuite/tests/gadt/gadt-escape1.stderr +++ b/testsuite/tests/gadt/gadt-escape1.stderr @@ -1,16 +1,17 @@ gadt-escape1.hs:19:58: error: • Couldn't match type ‘p’ with ‘ExpGADT Int’ + Expected: p + Actual: ExpGADT t ‘p’ is untouchable inside the constraints: t ~ Int bound by a pattern with constructor: ExpInt :: Int -> ExpGADT Int, in a case alternative at gadt-escape1.hs:19:43-50 ‘p’ is a rigid type variable bound by - the inferred type of weird1 :: p at gadt-escape1.hs:19:1-58 + the inferred type of weird1 :: p + at gadt-escape1.hs:19:1-58 Possible fix: add a type signature for ‘weird1’ - Expected type: p - Actual type: ExpGADT t • In the expression: a In a case alternative: Hidden (ExpInt _) a -> a In the expression: diff --git a/testsuite/tests/gadt/rw.stderr b/testsuite/tests/gadt/rw.stderr index 067595f2d7..fe6ba1edee 100644 --- a/testsuite/tests/gadt/rw.stderr +++ b/testsuite/tests/gadt/rw.stderr @@ -15,12 +15,12 @@ rw.hs:14:47: error: rw.hs:19:43: error: • Couldn't match type ‘a’ with ‘Bool’ + Expected: a -> IO () + Actual: Bool -> IO () ‘a’ is a rigid type variable bound by the type signature for: readBool :: forall a. T a -> IORef a -> IO () at rw.hs:16:1-34 - Expected type: a -> IO () - Actual type: Bool -> IO () • In the second argument of ‘(>>=)’, namely ‘(print . not)’ In the expression: readIORef ref >>= (print . not) In a case alternative: ~(Lb x) -> readIORef ref >>= (print . not) diff --git a/testsuite/tests/ghci.debugger/scripts/T14628.stderr b/testsuite/tests/ghci.debugger/scripts/T14628.stderr index 276d63ff38..8990cdb97b 100644 --- a/testsuite/tests/ghci.debugger/scripts/T14628.stderr +++ b/testsuite/tests/ghci.debugger/scripts/T14628.stderr @@ -1,12 +1,13 @@ -<interactive>:4:7: - Couldn't match type ‘m’ with ‘(,) a0’ + +<interactive>:4:7: error: + • Couldn't match type ‘m’ with ‘(,) a0’ + Expected: (a0, ((), Int)) + Actual: m ((), Int) ‘m’ is untouchable inside the constraints: () bound by the inferred type of it :: ((), Int) at <interactive>:4:1-25 ‘m’ is an interactive-debugger skolem - Expected type: (a0, ((), Int)) - Actual type: m ((), Int) - In the second argument of ‘($)’, namely ‘runStateT _result 0’ + • In the second argument of ‘($)’, namely ‘runStateT _result 0’ In the expression: snd $ runStateT _result 0 In an equation for ‘it’: it = snd $ runStateT _result 0 diff --git a/testsuite/tests/ghci/scripts/Defer02.stderr b/testsuite/tests/ghci/scripts/Defer02.stderr index 0defd52b38..c25cc4b81f 100644 --- a/testsuite/tests/ghci/scripts/Defer02.stderr +++ b/testsuite/tests/ghci/scripts/Defer02.stderr @@ -1,8 +1,8 @@ Defer01.hs:11:40: warning: [-Wdeferred-type-errors (in -Wdefault)] • Couldn't match type ‘Char’ with ‘[Char]’ - Expected type: String - Actual type: Char + Expected: String + Actual: Char • In the first argument of ‘putStr’, namely ‘','’ In the second argument of ‘(>>)’, namely ‘putStr ','’ In the expression: putStr "Hello World" >> putStr ',' @@ -60,16 +60,16 @@ Defer01.hs:47:7: warning: [-Wdeferred-type-errors (in -Wdefault)] In an equation for ‘k’: k x = x Defer01.hs:50:5: warning: [-Wdeferred-type-errors (in -Wdefault)] - • Couldn't match expected type ‘IO a0’ - with actual type ‘Char -> IO ()’ + • Couldn't match expected type: IO a0 + with actual type: Char -> IO () • Probable cause: ‘putChar’ is applied to too few arguments In the first argument of ‘(>>)’, namely ‘putChar’ In the expression: putChar >> putChar 'p' In an equation for ‘l’: l = putChar >> putChar 'p' *** Exception: Defer01.hs:11:40: error: • Couldn't match type ‘Char’ with ‘[Char]’ - Expected type: String - Actual type: Char + Expected: String + Actual: Char • In the first argument of ‘putStr’, namely ‘','’ In the second argument of ‘(>>)’, namely ‘putStr ','’ In the expression: putStr "Hello World" >> putStr ',' @@ -87,8 +87,8 @@ Defer01.hs:50:5: warning: [-Wdeferred-type-errors (in -Wdefault)] <interactive>:10:11: error: • Couldn't match type ‘Bool’ with ‘Int’ - Expected type: C Int - Actual type: C Bool + Expected: C Int + Actual: C Bool • In the first argument of ‘c’, namely ‘(C2 True)’ In the first argument of ‘print’, namely ‘(c (C2 True))’ In the expression: print (c (C2 True)) @@ -140,8 +140,8 @@ Defer01.hs:50:5: warning: [-Wdeferred-type-errors (in -Wdefault)] In the expression: print (k 2) In an equation for ‘it’: it = print (k 2) *** Exception: Defer01.hs:50:5: error: - • Couldn't match expected type ‘IO a0’ - with actual type ‘Char -> IO ()’ + • Couldn't match expected type: IO a0 + with actual type: Char -> IO () • Probable cause: ‘putChar’ is applied to too few arguments In the first argument of ‘(>>)’, namely ‘putChar’ In the expression: putChar >> putChar 'p' diff --git a/testsuite/tests/ghci/scripts/T10508.stderr b/testsuite/tests/ghci/scripts/T10508.stderr index 365bf9fcae..f7931e48e2 100644 --- a/testsuite/tests/ghci/scripts/T10508.stderr +++ b/testsuite/tests/ghci/scripts/T10508.stderr @@ -1,8 +1,9 @@ <interactive>:1:8: error: - • Couldn't match type ‘a0 -> a0’ with ‘[Char]’ - Expected type: IO Prelude.String - Actual type: IO (a0 -> a0) + • Couldn't match type: a0 -> a0 + with: [Char] + Expected: IO Prelude.String + Actual: IO (a0 -> a0) • In the expression: return id In the second argument of ‘(.)’, namely ‘(\ _ -> return id)’ In the expression: diff --git a/testsuite/tests/ghci/scripts/T12005.script b/testsuite/tests/ghci/scripts/T12005.script index a86e7d5e8e..4be674ede8 100644 --- a/testsuite/tests/ghci/scripts/T12005.script +++ b/testsuite/tests/ghci/scripts/T12005.script @@ -1,8 +1,8 @@ -:set -XKindSignatures -XRank2Types -XConstraintKinds -XAllowAmbiguousTypes -XInstanceSigs +:set -XKindSignatures -XRank2Types -XConstraintKinds -XAllowAmbiguousTypes import Data.Kind class Defer (p :: Constraint) where defer :: (p => r) -> r -instance Defer () where defer :: r -> r; defer = id +instance Defer () where defer x = x :i Defer diff --git a/testsuite/tests/ghci/scripts/T12447.stdout b/testsuite/tests/ghci/scripts/T12447.stdout index 7a64e1546d..6c469eeef3 100644 --- a/testsuite/tests/ghci/scripts/T12447.stdout +++ b/testsuite/tests/ghci/scripts/T12447.stdout @@ -1,3 +1,3 @@ deferEither @(_ ~ _) - :: (Typeable _1, Typeable _2) => - proxy (_1 ~ _2) -> ((_1 ~ _2) => r) -> Either String r + :: (Typeable w1, Typeable w2) => + proxy (w1 ~ w2) -> ((w1 ~ w2) => r) -> Either String r diff --git a/testsuite/tests/ghci/scripts/T16767.stdout b/testsuite/tests/ghci/scripts/T16767.stdout index 340ed6ee80..5cd96f96a7 100644 --- a/testsuite/tests/ghci/scripts/T16767.stdout +++ b/testsuite/tests/ghci/scripts/T16767.stdout @@ -1,2 +1,2 @@ -'Proxy @_ :: forall {k} {_ :: k}. Proxy @{k} _ -= 'Proxy @{k} @_ +'Proxy @_ :: forall {k} {w :: k}. Proxy @{k} w += 'Proxy @{k} @w diff --git a/testsuite/tests/ghci/scripts/T2976.stdout b/testsuite/tests/ghci/scripts/T2976.stdout index 9c977a2cb3..8d8edae907 100644 --- a/testsuite/tests/ghci/scripts/T2976.stdout +++ b/testsuite/tests/ghci/scripts/T2976.stdout @@ -1,6 +1,6 @@ test :: Int = 0 test = 0 test :: Int = 0 -test :: [Char] = _ +test :: String = _ test = "test" -test :: [Char] = "test" +test :: String = "test" diff --git a/testsuite/tests/ghci/scripts/T8357.stdout b/testsuite/tests/ghci/scripts/T8357.stdout index 7975d1f1a1..2f2cf22b47 100644 --- a/testsuite/tests/ghci/scripts/T8357.stdout +++ b/testsuite/tests/ghci/scripts/T8357.stdout @@ -1,3 +1,3 @@ -foo :: Rec '["foo" ::: [Char]] -bar :: Rec '["bar" ::: [Char]] -both :: Rec '["foo" ::: [Char], "bar" ::: [Char]] +foo :: Rec '["foo" ::: String] +bar :: Rec '["bar" ::: String] +both :: Rec '["foo" ::: [Char], "bar" ::: String] diff --git a/testsuite/tests/ghci/scripts/T8649.stderr b/testsuite/tests/ghci/scripts/T8649.stderr index aa40d50c2e..96afa36a54 100644 --- a/testsuite/tests/ghci/scripts/T8649.stderr +++ b/testsuite/tests/ghci/scripts/T8649.stderr @@ -1,9 +1,8 @@ <interactive>:4:4: error: - Couldn't match expected type ‘Ghci1.X’ - with actual type ‘X’ - NB: ‘X’ is defined at <interactive>:3:1-25 - ‘Ghci1.X’ is defined at <interactive>:1:1-14 - In the first argument of ‘f’, namely ‘(Y 3)’ - In the expression: f (Y 3) - In an equation for ‘it’: it = f (Y 3) + • Couldn't match expected type ‘Ghci1.X’ with actual type ‘X’ + NB: ‘Ghci1.X’ is defined at <interactive>:1:1-14 + ‘X’ is defined at <interactive>:3:1-25 + • In the first argument of ‘f’, namely ‘(Y 3)’ + In the expression: f (Y 3) + In an equation for ‘it’: it = f (Y 3) diff --git a/testsuite/tests/ghci/scripts/T8959b.stderr b/testsuite/tests/ghci/scripts/T8959b.stderr index a814d2e5cb..971261ba40 100644 --- a/testsuite/tests/ghci/scripts/T8959b.stderr +++ b/testsuite/tests/ghci/scripts/T8959b.stderr @@ -10,7 +10,7 @@ T8959b.hs:8:7: error: In an equation for ‘bar’: bar = proc x -> do return ⤙ x T8959b.hs:10:7: error: - • Couldn't match expected type ‘(∀ a2. a2 → a2) → a1’ + • Couldn't match expected type ‘(∀ a. a → a) → a1’ with actual type ‘()’ • In the expression: () ∷ (∀ a. a → a) → a In an equation for ‘baz’: baz = () ∷ (∀ a. a → a) → a diff --git a/testsuite/tests/ghci/scripts/ghci012.stdout b/testsuite/tests/ghci/scripts/ghci012.stdout index 0fc695c4d1..32ceac8b06 100644 --- a/testsuite/tests/ghci/scripts/ghci012.stdout +++ b/testsuite/tests/ghci/scripts/ghci012.stdout @@ -1 +1 @@ -($$$) :: [a -> c] -> [a] -> [c] -- Defined at <interactive>:1:8 +($$$) :: [b -> c] -> [b] -> [c] -- Defined at <interactive>:1:8 diff --git a/testsuite/tests/ghci/scripts/ghci051.stderr b/testsuite/tests/ghci/scripts/ghci051.stderr index 6d28081344..9407837580 100644 --- a/testsuite/tests/ghci/scripts/ghci051.stderr +++ b/testsuite/tests/ghci/scripts/ghci051.stderr @@ -1,10 +1,9 @@ <interactive>:6:9: error: - Couldn't match type ‘T’ - 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 - In the expression: C :: T' - In an equation for ‘c’: c = C :: T' + • Couldn't match type ‘T’ with ‘Ghci1.T’ + Expected: T' + Actual: T + NB: ‘Ghci1.T’ is defined at <interactive>:2:1-14 + ‘T’ is defined at <interactive>:5:1-16 + • In the expression: C :: T' + In an equation for ‘c’: c = C :: T' diff --git a/testsuite/tests/ghci/scripts/ghci052.stderr b/testsuite/tests/ghci/scripts/ghci052.stderr index 224726f822..047ab5e966 100644 --- a/testsuite/tests/ghci/scripts/ghci052.stderr +++ b/testsuite/tests/ghci/scripts/ghci052.stderr @@ -1,35 +1,35 @@ <interactive>:8:4: error: - Couldn't match expected type ‘Ghci1.Planet’ - with actual type ‘Planet’ - NB: ‘Planet’ is defined at <interactive>:7:1-36 - ‘Ghci1.Planet’ is defined at <interactive>:4:1-37 - In the first argument of ‘pn’, namely ‘Mercury’ - In the expression: pn Mercury - In an equation for ‘it’: it = pn Mercury + • Couldn't match expected type ‘Ghci1.Planet’ + with actual type ‘Planet’ + NB: ‘Ghci1.Planet’ is defined at <interactive>:4:1-37 + ‘Planet’ is defined at <interactive>:7:1-36 + • In the first argument of ‘pn’, namely ‘Mercury’ + In the expression: pn Mercury + In an equation for ‘it’: it = pn Mercury <interactive>:9:4: error: - Couldn't match expected type ‘Ghci1.Planet’ - with actual type ‘Planet’ - NB: ‘Planet’ is defined at <interactive>:7:1-36 - ‘Ghci1.Planet’ is defined at <interactive>:4:1-37 - In the first argument of ‘pn’, namely ‘Venus’ - In the expression: pn Venus - In an equation for ‘it’: it = pn Venus + • Couldn't match expected type ‘Ghci1.Planet’ + with actual type ‘Planet’ + NB: ‘Ghci1.Planet’ is defined at <interactive>:4:1-37 + ‘Planet’ is defined at <interactive>:7:1-36 + • In the first argument of ‘pn’, namely ‘Venus’ + In the expression: pn Venus + In an equation for ‘it’: it = pn Venus <interactive>:10:4: error: - Couldn't match expected type ‘Ghci1.Planet’ - with actual type ‘Planet’ - NB: ‘Planet’ is defined at <interactive>:7:1-36 - ‘Ghci1.Planet’ is defined at <interactive>:4:1-37 - In the first argument of ‘pn’, namely ‘Mars’ - In the expression: pn Mars - In an equation for ‘it’: it = pn Mars + • Couldn't match expected type ‘Ghci1.Planet’ + with actual type ‘Planet’ + NB: ‘Ghci1.Planet’ is defined at <interactive>:4:1-37 + ‘Planet’ is defined at <interactive>:7:1-36 + • In the first argument of ‘pn’, namely ‘Mars’ + In the expression: pn Mars + In an equation for ‘it’: it = pn Mars <interactive>:12:44: error: - Couldn't match expected type ‘Planet’ - with actual type ‘Ghci1.Planet’ - NB: ‘Ghci1.Planet’ is defined at <interactive>:4:1-37 - ‘Planet’ is defined at <interactive>:7:1-36 - In the pattern: Earth - In an equation for ‘pn’: pn Earth = "E" + • Couldn't match expected type ‘Planet’ + with actual type ‘Ghci1.Planet’ + NB: ‘Planet’ is defined at <interactive>:7:1-36 + ‘Ghci1.Planet’ is defined at <interactive>:4:1-37 + • In the pattern: Earth + In an equation for ‘pn’: pn Earth = "E" diff --git a/testsuite/tests/ghci/scripts/ghci053.stderr b/testsuite/tests/ghci/scripts/ghci053.stderr index 76d5ae2548..d2cd0a6a68 100644 --- a/testsuite/tests/ghci/scripts/ghci053.stderr +++ b/testsuite/tests/ghci/scripts/ghci053.stderr @@ -1,18 +1,18 @@ <interactive>:9:12: error: - Couldn't match expected type ‘Ghci1.Planet’ - with actual type ‘Planet’ - NB: ‘Planet’ is defined at <interactive>:7:1-41 - ‘Ghci1.Planet’ is defined at <interactive>:4:1-49 - In the second argument of ‘(==)’, namely ‘Mercury’ - In the expression: mercury == Mercury - In an equation for ‘it’: it = mercury == Mercury + • Couldn't match expected type ‘Ghci1.Planet’ + with actual type ‘Planet’ + NB: ‘Ghci1.Planet’ is defined at <interactive>:4:1-49 + ‘Planet’ is defined at <interactive>:7:1-41 + • In the second argument of ‘(==)’, namely ‘Mercury’ + In the expression: mercury == Mercury + In an equation for ‘it’: it = mercury == Mercury <interactive>:11:10: error: - Couldn't match expected type ‘Planet’ - with actual type ‘Ghci1.Planet’ - NB: ‘Ghci1.Planet’ is defined at <interactive>:4:1-49 - ‘Planet’ is defined at <interactive>:7:1-41 - In the second argument of ‘(==)’, namely ‘Earth’ - In the expression: Venus == Earth - In an equation for ‘it’: it = Venus == Earth + • Couldn't match expected type ‘Planet’ + with actual type ‘Ghci1.Planet’ + NB: ‘Planet’ is defined at <interactive>:7:1-41 + ‘Ghci1.Planet’ is defined at <interactive>:4:1-49 + • In the second argument of ‘(==)’, namely ‘Earth’ + In the expression: Venus == Earth + In an equation for ‘it’: it = Venus == Earth diff --git a/testsuite/tests/ghci/scripts/ghci061.stderr b/testsuite/tests/ghci/scripts/ghci061.stderr index 1ba00c5609..27dac2cb77 100644 --- a/testsuite/tests/ghci/scripts/ghci061.stderr +++ b/testsuite/tests/ghci/scripts/ghci061.stderr @@ -1,16 +1,18 @@ <interactive>:1:2: error: - • Couldn't match type ‘IO String’ with ‘Int -> IO String’ - Expected type: [String] -> Int -> IO String - Actual type: [String] -> IO String + • Couldn't match type: IO String + with: Int -> IO String + Expected: [String] -> Int -> IO String + Actual: [String] -> IO String • In the expression: (two_args) :: [String] -> Int -> IO String In an equation for ‘_compileParsedExpr’: _compileParsedExpr = (two_args) :: [String] -> Int -> IO String <interactive>:1:2: error: - • Couldn't match type ‘IO String’ with ‘Int -> IO String’ - Expected type: [String] -> Int -> IO String - Actual type: [String] -> IO String + • Couldn't match type: IO String + with: Int -> IO String + Expected: [String] -> Int -> IO String + Actual: [String] -> IO String • In the expression: (two_args) :: [String] -> Int -> IO String In an equation for ‘_compileParsedExpr’: _compileParsedExpr = (two_args) :: [String] -> Int -> IO String diff --git a/testsuite/tests/ghci/scripts/ghci064.stdout b/testsuite/tests/ghci/scripts/ghci064.stdout index e3fe5a9804..9190a68e67 100644 --- a/testsuite/tests/ghci/scripts/ghci064.stdout +++ b/testsuite/tests/ghci/scripts/ghci064.stdout @@ -6,25 +6,25 @@ instance GHC.Base.MonadPlus Maybe -- Defined in ‘GHC.Base’ instance MonadFail Maybe -- Defined in ‘Control.Monad.Fail’ instance Foldable Maybe -- Defined in ‘Data.Foldable’ instance Traversable Maybe -- Defined in ‘Data.Traversable’ -instance Eq _ => Eq (Maybe _) -- Defined in ‘GHC.Maybe’ -instance Semigroup _ => Monoid (Maybe _) -- Defined in ‘GHC.Base’ -instance Ord _ => Ord (Maybe _) -- Defined in ‘GHC.Maybe’ -instance Semigroup _ => Semigroup (Maybe _) +instance Eq w => Eq (Maybe w) -- Defined in ‘GHC.Maybe’ +instance Semigroup w => Monoid (Maybe w) -- Defined in ‘GHC.Base’ +instance Ord w => Ord (Maybe w) -- Defined in ‘GHC.Maybe’ +instance Semigroup w => Semigroup (Maybe w) -- Defined in ‘GHC.Base’ -instance Show _ => Show (Maybe _) -- Defined in ‘GHC.Show’ -instance Read _ => Read (Maybe _) -- Defined in ‘GHC.Read’ -instance GHC.Generics.Generic (Maybe _) +instance Show w => Show (Maybe w) -- Defined in ‘GHC.Show’ +instance Read w => Read (Maybe w) -- Defined in ‘GHC.Read’ +instance GHC.Generics.Generic (Maybe w) -- Defined in ‘GHC.Generics’ -instance GHC.Generics.SingKind _ => GHC.Generics.SingKind (Maybe _) +instance GHC.Generics.SingKind w => GHC.Generics.SingKind (Maybe w) -- Defined in ‘GHC.Generics’ -instance Eq _ => Eq [_] -- Defined in ‘GHC.Classes’ -instance Monoid [_] -- Defined in ‘GHC.Base’ -instance Ord _ => Ord [_] -- Defined in ‘GHC.Classes’ -instance Semigroup [_] -- Defined in ‘GHC.Base’ -instance Show _ => Show [_] -- Defined in ‘GHC.Show’ -instance Read _ => Read [_] -- Defined in ‘GHC.Read’ -instance GHC.Generics.Generic [_] -- Defined in ‘GHC.Generics’ -instance [safe] MyShow _ => MyShow [_] +instance Eq w => Eq [w] -- Defined in ‘GHC.Classes’ +instance Monoid [w] -- Defined in ‘GHC.Base’ +instance Ord w => Ord [w] -- Defined in ‘GHC.Classes’ +instance Semigroup [w] -- Defined in ‘GHC.Base’ +instance Show w => Show [w] -- Defined in ‘GHC.Show’ +instance Read w => Read [w] -- Defined in ‘GHC.Read’ +instance GHC.Generics.Generic [w] -- Defined in ‘GHC.Generics’ +instance [safe] MyShow w => MyShow [w] -- Defined at ghci064.hs:7:10 instance Monoid [T] -- Defined in ‘GHC.Base’ instance Semigroup [T] -- Defined in ‘GHC.Base’ diff --git a/testsuite/tests/ghci/should_fail/T16287.stderr b/testsuite/tests/ghci/should_fail/T16287.stderr index 8b0f882ab7..df162c1b1b 100644 --- a/testsuite/tests/ghci/should_fail/T16287.stderr +++ b/testsuite/tests/ghci/should_fail/T16287.stderr @@ -4,6 +4,8 @@ <interactive>:1:4: error: • Expected kind ‘forall k. k’, but ‘F2’ has kind ‘k0’ + Cannot instantiate unification variable ‘k0’ + with a kind involving polytypes: forall k. k • In the first argument of ‘T2’, namely ‘F2’ In the type ‘T2 F2’ @@ -12,6 +14,8 @@ <interactive>:1:11: error: • Expected kind ‘forall k. k’, but ‘F2’ has kind ‘k0’ + Cannot instantiate unification variable ‘k0’ + with a kind involving polytypes: forall k. k • In the first argument of ‘T2’, namely ‘F2’ In the first argument of ‘Maybe’, namely ‘(T2 F2)’ In the type ‘Maybe (T2 F2)’ diff --git a/testsuite/tests/ghci/should_run/T13456.stdout b/testsuite/tests/ghci/should_run/T13456.stdout index 8bfc0283fd..7d354f4355 100644 --- a/testsuite/tests/ghci/should_run/T13456.stdout +++ b/testsuite/tests/ghci/should_run/T13456.stdout @@ -3,8 +3,8 @@ macro 'type' overwrites builtin command. Use ':def!' to overwrite. macro 'ty' overwrites builtin command. Use ':def!' to overwrite. I'm a macro I'm a macro -macro :: p -> IO [Char] -macro :: p -> IO [Char] +macro :: p -> IO String +macro :: p -> IO String macro 'test' is already defined. Use ':def!' to overwrite. the following macros are defined: test diff --git a/testsuite/tests/hiefile/should_run/HieQueries.stdout b/testsuite/tests/hiefile/should_run/HieQueries.stdout index 59bfb1d19d..98f0466815 100644 --- a/testsuite/tests/hiefile/should_run/HieQueries.stdout +++ b/testsuite/tests/hiefile/should_run/HieQueries.stdout @@ -19,7 +19,7 @@ At point (31,9), we found: | `- ┌ │ $dC at HieQueries.hs:31:1-13, of type: C a - │ is an evidence variable bound by a type signature + │ is an evidence variable bound by a HsWrapper │ with scope: LocalScope HieQueries.hs:31:1-13 │ bound at: HieQueries.hs:31:1-13 │ Defined at <no location info> @@ -74,7 +74,7 @@ At point (37,9), we found: | +- ┌ | │ $dShow at HieQueries.hs:37:1-22, of type: Show x - | │ is an evidence variable bound by a type signature + | │ is an evidence variable bound by a HsWrapper | │ with scope: LocalScope HieQueries.hs:37:1-22 | │ bound at: HieQueries.hs:37:1-22 | │ Defined at <no location info> diff --git a/testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr b/testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr index 5b6863c740..5ba9df0d1a 100644 --- a/testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr +++ b/testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr @@ -22,7 +22,8 @@ PushedInAsGivens.hs:10:31: error: bar :: a -> (a, Int) (bound at PushedInAsGivens.hs:9:1) PushedInAsGivens.hs:11:15: error: - • Couldn't match type ‘F Int’ with ‘[a]’ + • Couldn't match type: F Int + with: [a] arising from a use of ‘foo’ • In the expression: foo y In the expression: (y, foo y) diff --git a/testsuite/tests/indexed-types/should_compile/Simple14.hs b/testsuite/tests/indexed-types/should_compile/Simple14.hs index 0a47a649a5..dba26194f1 100644 --- a/testsuite/tests/indexed-types/should_compile/Simple14.hs +++ b/testsuite/tests/indexed-types/should_compile/Simple14.hs @@ -5,21 +5,23 @@ module Simple14 where data EQ_ x y = EQ_ -- Nov 2014: actually eqE has an ambiguous type +-- Apr 2020: now it doesn't again eqE :: EQ_ x y -> (x~y => EQ_ z z) -> p -eqE = error "eqE" +eqE x y = error "eqE" eqI :: EQ_ x x eqI = error "eqI" ntI :: (forall p. EQ_ x y -> p) -> EQ_ x y -ntI = error "ntI" +ntI x = error "ntI" foo :: forall m n. EQ_ (Maybe m) (Maybe n) -foo = ntI (`eqE` (eqI :: EQ_ m n)) +foo = ntI (\x -> x `eqE` (eqI :: EQ_ m n)) + -- Alternative -- foo = ntI (\eq -> eq `eqE` (eqI :: EQ_ m n)) -- eq :: EQ_ (Maybe m) (Maybe n) -- Need (Maybe m ~ Maybe n) => EQ_ m n ~ EQ_ zeta zeta -- which reduces to (m~n) => m ~ zeta --- but then we are stuck
\ No newline at end of file +-- but then we are stuck diff --git a/testsuite/tests/indexed-types/should_compile/Simple14.stderr b/testsuite/tests/indexed-types/should_compile/Simple14.stderr index 4c61d95cc9..6159b08898 100644 --- a/testsuite/tests/indexed-types/should_compile/Simple14.stderr +++ b/testsuite/tests/indexed-types/should_compile/Simple14.stderr @@ -1,17 +1,21 @@ -Simple14.hs:8:8: error: - • Couldn't match type ‘z0’ with ‘z’ +Simple14.hs:19:27: error: + • Couldn't match type ‘z0’ with ‘n’ + Expected: EQ_ z0 z0 + Actual: EQ_ m n ‘z0’ is untouchable - inside the constraints: x ~ y + inside the constraints: Maybe m ~ Maybe n bound by a type expected by the context: - (x ~ y) => EQ_ z0 z0 - at Simple14.hs:8:8-39 - ‘z’ is a rigid type variable bound by + (Maybe m ~ Maybe n) => EQ_ z0 z0 + at Simple14.hs:19:26-41 + ‘n’ is a rigid type variable bound by the type signature for: - eqE :: forall x y z p. EQ_ x y -> ((x ~ y) => EQ_ z z) -> p - at Simple14.hs:8:8-39 - Expected type: EQ_ z0 z0 - Actual type: EQ_ z z - • In the ambiguity check for ‘eqE’ - To defer the ambiguity check to use sites, enable AllowAmbiguousTypes - In the type signature: eqE :: EQ_ x y -> (x ~ y => EQ_ z z) -> p + foo :: forall m n. EQ_ (Maybe m) (Maybe n) + at Simple14.hs:18:1-42 + • In the second argument of ‘eqE’, namely ‘(eqI :: EQ_ m n)’ + In the expression: x `eqE` (eqI :: EQ_ m n) + In the first argument of ‘ntI’, namely + ‘(\ x -> x `eqE` (eqI :: EQ_ m n))’ + • Relevant bindings include + x :: EQ_ (Maybe m) (Maybe n) (bound at Simple14.hs:19:13) + foo :: EQ_ (Maybe m) (Maybe n) (bound at Simple14.hs:19:1) diff --git a/testsuite/tests/indexed-types/should_compile/T10806.stderr b/testsuite/tests/indexed-types/should_compile/T10806.stderr index c78a10bd7b..96284e6c75 100644 --- a/testsuite/tests/indexed-types/should_compile/T10806.stderr +++ b/testsuite/tests/indexed-types/should_compile/T10806.stderr @@ -1,7 +1,7 @@ T10806.hs:11:32: error: - • Couldn't match expected type ‘Char -> Bool’ - with actual type ‘IO ()’ + • Couldn't match expected type: Char -> Bool + with actual type: IO () • The function ‘print’ is applied to two value arguments, but its type ‘Char -> IO ()’ has only one In the expression: print 'x' 'y' diff --git a/testsuite/tests/indexed-types/should_compile/T12538.stderr b/testsuite/tests/indexed-types/should_compile/T12538.stderr index ca106246e7..7a26b9c483 100644 --- a/testsuite/tests/indexed-types/should_compile/T12538.stderr +++ b/testsuite/tests/indexed-types/should_compile/T12538.stderr @@ -3,10 +3,11 @@ T12538.hs:37:8: error: • Could not deduce: a' ~ Tagged Int a from the context: (TagImpl a a', b ~ DF a') bound by the instance declaration at T12538.hs:36:10-46 + Expected: a -> b + Actual: a -> DF (Tagged Int a) ‘a'’ is a rigid type variable bound by - the instance declaration at T12538.hs:36:10-46 - Expected type: a -> b - Actual type: a -> DF (Tagged Int a) + the instance declaration + at T12538.hs:36:10-46 • In the expression: DF . tag In an equation for ‘df’: df = DF . tag In the instance declaration for ‘ToDF a b’ diff --git a/testsuite/tests/indexed-types/should_compile/T17923.hs b/testsuite/tests/indexed-types/should_compile/T17923.hs index 8c34024864..a6840ff616 100644 --- a/testsuite/tests/indexed-types/should_compile/T17923.hs +++ b/testsuite/tests/indexed-types/should_compile/T17923.hs @@ -38,7 +38,7 @@ data ShowCharSym0 :: E ~> E ~> E sShow_tuple :: SLambda Sym4 sShow_tuple - = applySing (singFun2 @Sym3 und) + = applySing (singFun2 @Sym3 (\x -> und x)) (und (singFun2 @Sym3 - (und (applySing (singFun2 @Sym3 und) - (applySing (singFun2 @ShowCharSym0 und) und))))) + (\y -> und (applySing (singFun2 @Sym3 (\x -> und x)) + (applySing (singFun2 @ShowCharSym0 (\x -> und x)) und)) y))) diff --git a/testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr b/testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr index 5bc6aca64c..63f24fa268 100644 --- a/testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr +++ b/testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr @@ -1,6 +1,7 @@ ExtraTcsUntch.hs:23:18: error: - • Couldn't match expected type ‘F Int’ with actual type ‘[p]’ + • Couldn't match expected type: F Int + with actual type: [p] • In the first argument of ‘h’, namely ‘[x]’ In the expression: h [x] In an equation for ‘g1’: g1 _ = h [x] @@ -9,7 +10,8 @@ ExtraTcsUntch.hs:23:18: error: f :: p -> ((), ((), ())) (bound at ExtraTcsUntch.hs:21:1) ExtraTcsUntch.hs:25:38: error: - • Couldn't match expected type ‘F Int’ with actual type ‘[[a0]]’ + • Couldn't match expected type: F Int + with actual type: [[a0]] The type variable ‘a0’ is ambiguous • In the first argument of ‘h’, namely ‘[[undefined]]’ In the expression: h [[undefined]] diff --git a/testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr b/testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr index 9eab513529..1f155bbea0 100644 --- a/testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr +++ b/testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr @@ -1,8 +1,9 @@ NoMatchErr.hs:19:7: error: - • Couldn't match type ‘Memo d0’ with ‘Memo d’ - Expected type: Memo d a -> Memo d a - Actual type: Memo d0 a -> Memo d0 a + • Couldn't match type: Memo d0 + with: Memo d + Expected: Memo d a -> Memo d a + Actual: Memo d0 a -> Memo d0 a NB: ‘Memo’ is a non-injective type family The type variable ‘d0’ is ambiguous • In the ambiguity check for ‘f’ diff --git a/testsuite/tests/indexed-types/should_fail/Overlap6.stderr b/testsuite/tests/indexed-types/should_fail/Overlap6.stderr index c0b1d64889..b1aaea25b1 100644 --- a/testsuite/tests/indexed-types/should_fail/Overlap6.stderr +++ b/testsuite/tests/indexed-types/should_fail/Overlap6.stderr @@ -1,12 +1,12 @@ Overlap6.hs:15:7: error: • Couldn't match type ‘x’ with ‘And x 'True’ + Expected: Proxy (And x 'True) + Actual: Proxy x ‘x’ is a rigid type variable bound by the type signature for: g :: forall (x :: Bool). Proxy x -> Proxy (And x 'True) at Overlap6.hs:14:1-34 - Expected type: Proxy (And x 'True) - Actual type: Proxy x • In the expression: x In an equation for ‘g’: g x = x • Relevant bindings include diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr index fa635378a4..df131da8a3 100644 --- a/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr +++ b/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr @@ -1,9 +1,10 @@ SimpleFail16.hs:10:12: error: - Couldn't match expected type ‘p0 a0’ with actual type ‘F ()’ - The type variables ‘p0’, ‘a0’ are ambiguous - In the first argument of ‘foo’, namely ‘(undefined :: F ())’ - In the expression: foo (undefined :: F ()) - In an equation for ‘bar’: bar = foo (undefined :: F ()) - Relevant bindings include - bar :: p0 a0 (bound at SimpleFail16.hs:10:1) + • Couldn't match expected type: p0 a0 + with actual type: F () + The type variables ‘p0’, ‘a0’ are ambiguous + • In the first argument of ‘foo’, namely ‘(undefined :: F ())’ + In the expression: foo (undefined :: F ()) + In an equation for ‘bar’: bar = foo (undefined :: F ()) + • Relevant bindings include + bar :: p0 a0 (bound at SimpleFail16.hs:10:1) diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr index 69a7170504..c437d95501 100644 --- a/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr +++ b/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr @@ -1,12 +1,12 @@ SimpleFail5a.hs:31:11: error: • Couldn't match type ‘a’ with ‘Int’ + Expected: S3 a + Actual: S3 Int ‘a’ is a rigid type variable bound by the type signature for: bar3wrong :: forall a. S3 a -> a at SimpleFail5a.hs:30:1-22 - Expected type: S3 a - Actual type: S3 Int • In the pattern: D3Int In an equation for ‘bar3wrong’: bar3wrong D3Int = 1 • Relevant bindings include diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr index 0dfd570cc0..7398ef0fe8 100644 --- a/testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr +++ b/testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr @@ -1,7 +1,7 @@ -SimpleFail5b.hs:31:12: - Couldn't match type ‘Char’ with ‘Int’ - Expected type: S3 Int - Actual type: S3 Char - In the pattern: D3Char - In an equation for ‘bar3wrong'’: bar3wrong' D3Char = 'a' +SimpleFail5b.hs:31:12: error: + • Couldn't match type ‘Char’ with ‘Int’ + Expected: S3 Int + Actual: S3 Char + • In the pattern: D3Char + In an equation for ‘bar3wrong'’: bar3wrong' D3Char = 'a' diff --git a/testsuite/tests/indexed-types/should_fail/T13674.stderr b/testsuite/tests/indexed-types/should_fail/T13674.stderr index 53a7cb705c..55798b1189 100644 --- a/testsuite/tests/indexed-types/should_fail/T13674.stderr +++ b/testsuite/tests/indexed-types/should_fail/T13674.stderr @@ -1,8 +1,12 @@ T13674.hs:56:21: error: - • Occurs check: cannot construct the infinite type: m ~ Lcm m m - Expected type: GF m - Actual type: GF (Lcm m m) + • Couldn't match type ‘m’ with ‘Lcm m m’ + Expected: GF m + Actual: GF (Lcm m m) + ‘m’ is a rigid type variable bound by + the type signature for: + bar :: forall (m :: Nat). KnownNat m => GF m -> GF m -> GF m + at T13674.hs:55:1-44 • In the first argument of ‘(-)’, namely ‘foo x y’ In the expression: foo x y - foo y x \\ lcmNat @m @m \\ Sub @() (lcmIsIdempotent @m) @@ -15,9 +19,13 @@ T13674.hs:56:21: error: bar :: GF m -> GF m -> GF m (bound at T13674.hs:56:1) T13674.hs:56:31: error: - • Occurs check: cannot construct the infinite type: m ~ Lcm m m - Expected type: GF m - Actual type: GF (Lcm m m) + • Couldn't match type ‘m’ with ‘Lcm m m’ + Expected: GF m + Actual: GF (Lcm m m) + ‘m’ is a rigid type variable bound by + the type signature for: + bar :: forall (m :: Nat). KnownNat m => GF m -> GF m -> GF m + at T13674.hs:55:1-44 • In the first argument of ‘(\\)’, namely ‘foo y x’ In the first argument of ‘(\\)’, namely ‘foo y x \\ lcmNat @m @m’ In the second argument of ‘(-)’, namely diff --git a/testsuite/tests/indexed-types/should_fail/T13784.stderr b/testsuite/tests/indexed-types/should_fail/T13784.stderr index 63edf0482f..11b1a188f2 100644 --- a/testsuite/tests/indexed-types/should_fail/T13784.stderr +++ b/testsuite/tests/indexed-types/should_fail/T13784.stderr @@ -1,11 +1,11 @@ T13784.hs:29:28: error: • Couldn't match type ‘as’ with ‘a : Divide a as’ + Expected: Product (Divide a (a : as)) + Actual: Product as1 ‘as’ is a rigid type variable bound by the instance declaration at T13784.hs:25:10-30 - Expected type: Product (Divide a (a : as)) - Actual type: Product as1 • In the expression: as In the expression: (a, as) In an equation for ‘divide’: divide (a :* as) = (a, as) @@ -14,10 +14,10 @@ T13784.hs:29:28: error: (bound at T13784.hs:29:5) T13784.hs:33:24: error: - • Couldn't match type ‘Product (a : as0)’ - with ‘(b, Product (Divide b (a : as)))’ - Expected type: (b, Product (Divide b (a : as))) - Actual type: Product (a1 : as0) + • Couldn't match type: Product (a : as0) + with: (b, Product (Divide b (a : as))) + Expected: (b, Product (Divide b (a : as))) + Actual: Product (a1 : as0) • In the expression: a :* divide as In an equation for ‘divide’: divide (a :* as) = a :* divide as In the instance declaration for ‘Divideable b (a : as)’ @@ -26,10 +26,10 @@ T13784.hs:33:24: error: (bound at T13784.hs:33:5) T13784.hs:33:29: error: - • Couldn't match type ‘(a0, Product (Divide a0 as))’ - with ‘Product as0’ - Expected type: Product as0 - Actual type: (a0, Product (Divide a0 as1)) + • Couldn't match type: (a0, Product (Divide a0 as)) + with: Product as0 + Expected: Product as0 + Actual: (a0, Product (Divide a0 as1)) • In the second argument of ‘(:*)’, namely ‘divide as’ In the expression: a :* divide as In an equation for ‘divide’: divide (a :* as) = a :* divide as diff --git a/testsuite/tests/indexed-types/should_fail/T14246.stderr b/testsuite/tests/indexed-types/should_fail/T14246.stderr index fcc2605527..d6bfde7b5b 100644 --- a/testsuite/tests/indexed-types/should_fail/T14246.stderr +++ b/testsuite/tests/indexed-types/should_fail/T14246.stderr @@ -5,20 +5,24 @@ T14246.hs:18:5: error: In the type family declaration for ‘KLN’ T14246.hs:22:27: error: - • Expected kind ‘Vect (KLN f) L’, + • Couldn't match kind: 'S (KLN (f t)) + with: KLN f + Expected kind ‘Vect (KLN f) L’, but ‘Cons (Label (t :: v)) l’ has kind ‘Vect ('S (KLN (f t))) (*)’ • In the second argument of ‘Reveal’, namely ‘(Cons (Label (t :: v)) l)’ In the type family declaration for ‘Reveal’ T14246.hs:22:67: error: - • Expected kind ‘Vect (KLN (f t)) L’, + • Couldn't match kind ‘*’ with ‘L’ + Expected kind ‘Vect (KLN (f t)) L’, but ‘l’ has kind ‘Vect (KLN (f t)) (*)’ • In the second argument of ‘Reveal’, namely ‘l’ In the type ‘Reveal (f t) l’ In the type family declaration for ‘Reveal’ T14246.hs:23:24: error: - • Expected kind ‘Vect (KLN a) L’, but ‘Nil’ has kind ‘Vect 'Z L’ + • Couldn't match kind ‘'Z’ with ‘KLN a’ + Expected kind ‘Vect (KLN a) L’, but ‘Nil’ has kind ‘Vect 'Z L’ • In the second argument of ‘Reveal’, namely ‘Nil’ In the type family declaration for ‘Reveal’ diff --git a/testsuite/tests/indexed-types/should_fail/T14369.stderr b/testsuite/tests/indexed-types/should_fail/T14369.stderr index accd2d9b01..d31a77b2fa 100644 --- a/testsuite/tests/indexed-types/should_fail/T14369.stderr +++ b/testsuite/tests/indexed-types/should_fail/T14369.stderr @@ -1,8 +1,9 @@ T14369.hs:29:5: error: - • Couldn't match type ‘Demote a’ with ‘Demote a1’ - Expected type: Sing x -> Maybe (Demote a1) - Actual type: Sing x -> Demote (Maybe a) + • Couldn't match type: Demote a + with: Demote a1 + Expected: Sing x -> Maybe (Demote a1) + Actual: Sing x -> Demote (Maybe a) • In the expression: fromSing In an equation for ‘f’: f = fromSing • Relevant bindings include diff --git a/testsuite/tests/indexed-types/should_fail/T14904.stderr b/testsuite/tests/indexed-types/should_fail/T14904.stderr index dd5506c855..8a7142d350 100644 --- a/testsuite/tests/indexed-types/should_fail/T14904.stderr +++ b/testsuite/tests/indexed-types/should_fail/T14904.stderr @@ -1,6 +1,8 @@ T14904.hs:8:8: error: • Expected kind ‘forall (a :: k1). g a’, but ‘f’ has kind ‘k0’ + Cannot instantiate unification variable ‘k0’ + with a kind involving polytypes: forall (a :: k1). g a • In the first argument of ‘F’, namely ‘((f :: forall a. g a) :: forall a. g a)’ In the type family declaration for ‘F’ diff --git a/testsuite/tests/indexed-types/should_fail/T15870.stderr b/testsuite/tests/indexed-types/should_fail/T15870.stderr index 4acacbab50..2cba04fd97 100644 --- a/testsuite/tests/indexed-types/should_fail/T15870.stderr +++ b/testsuite/tests/indexed-types/should_fail/T15870.stderr @@ -1,6 +1,7 @@ T15870.hs:32:34: error: - • Expected kind ‘Optic a’, but ‘g2’ has kind ‘Optic b’ + • Couldn't match kind ‘k’ with ‘*’ + Expected kind ‘Optic a’, but ‘g2’ has kind ‘Optic b’ • In the second argument of ‘Get’, namely ‘g2’ In the type ‘Get a g2’ In the type instance declaration for ‘Get’ diff --git a/testsuite/tests/indexed-types/should_fail/T1897b.stderr b/testsuite/tests/indexed-types/should_fail/T1897b.stderr index a2055816ae..9048b59770 100644 --- a/testsuite/tests/indexed-types/should_fail/T1897b.stderr +++ b/testsuite/tests/indexed-types/should_fail/T1897b.stderr @@ -1,8 +1,9 @@ T1897b.hs:16:1: error: - • Couldn't match type ‘Depend a’ with ‘Depend a0’ - Expected type: t (Depend a) -> Bool - Actual type: t (Depend a0) -> Bool + • Couldn't match type: Depend a0 + with: Depend a + Expected: t (Depend a) -> Bool + Actual: t (Depend a0) -> Bool NB: ‘Depend’ is a non-injective type family The type variable ‘a0’ is ambiguous • In the ambiguity check for the inferred type for ‘isValid’ diff --git a/testsuite/tests/indexed-types/should_fail/T1900.stderr b/testsuite/tests/indexed-types/should_fail/T1900.stderr index 4b144f85f6..a9fb9051e8 100644 --- a/testsuite/tests/indexed-types/should_fail/T1900.stderr +++ b/testsuite/tests/indexed-types/should_fail/T1900.stderr @@ -1,8 +1,9 @@ T1900.hs:7:3: error: - • Couldn't match type ‘Depend s0’ with ‘Depend s’ - Expected type: Depend s -> Depend s - Actual type: Depend s0 -> Depend s0 + • Couldn't match type: Depend s0 + with: Depend s + Expected: Depend s -> Depend s + Actual: Depend s0 -> Depend s0 NB: ‘Depend’ is a non-injective type family The type variable ‘s0’ is ambiguous • In the ambiguity check for ‘trans’ diff --git a/testsuite/tests/indexed-types/should_fail/T2239.hs b/testsuite/tests/indexed-types/should_fail/T2239.hs index 0d675b175c..c64021c070 100644 --- a/testsuite/tests/indexed-types/should_fail/T2239.hs +++ b/testsuite/tests/indexed-types/should_fail/T2239.hs @@ -45,11 +45,11 @@ simpleTF = id :: (forall b. b~Bool => b->b) -- Actually these two do not involve impredicative instantiation, -- so they now succeed -complexFD = id :: (forall b. MyEq b Bool => b->b) - -> (forall c. MyEq c Bool => c->c) +complexFD = (\x -> x) :: (forall b. MyEq b Bool => b->b) + -> (forall c. MyEq c Bool => c->c) -complexTF = id :: (forall b. b~Bool => b->b) - -> (forall c. c~Bool => c->c) +complexTF = (\x -> x) :: (forall b. b~Bool => b->b) + -> (forall c. c~Bool => c->c) {- For example, here is how the subsumption check works for complexTF when type-checking the expression @@ -65,4 +65,4 @@ complexTF = id :: (forall b. b~Bool => b->b) b~Bool |-3 alpha[3] ~ b->b, (forall c. c~Bool => c->c) <= a And this is perfectly soluble. alpha is touchable; and c is instantiated. --}
\ No newline at end of file +-} diff --git a/testsuite/tests/indexed-types/should_fail/T2544.stderr b/testsuite/tests/indexed-types/should_fail/T2544.stderr index 6b1a6bd075..40409c10cc 100644 --- a/testsuite/tests/indexed-types/should_fail/T2544.stderr +++ b/testsuite/tests/indexed-types/should_fail/T2544.stderr @@ -1,8 +1,9 @@ T2544.hs:19:18: error: - • Couldn't match type ‘IxMap i0’ with ‘IxMap l’ - Expected type: IxMap l [Int] - Actual type: IxMap i0 [Int] + • Couldn't match type: IxMap i0 + with: IxMap l + Expected: IxMap l [Int] + Actual: IxMap i0 [Int] NB: ‘IxMap’ is a non-injective type family The type variable ‘i0’ is ambiguous • In the first argument of ‘BiApp’, namely ‘empty’ diff --git a/testsuite/tests/indexed-types/should_fail/T2627b.stderr b/testsuite/tests/indexed-types/should_fail/T2627b.stderr index 63f11b97f1..b69883ab88 100644 --- a/testsuite/tests/indexed-types/should_fail/T2627b.stderr +++ b/testsuite/tests/indexed-types/should_fail/T2627b.stderr @@ -1,8 +1,18 @@ T2627b.hs:20:24: error: - • Occurs check: cannot construct the infinite type: - b0 ~ Dual (Dual b0) + • Could not deduce: Dual (Dual b0) ~ b0 arising from a use of ‘conn’ + from the context: (Dual a ~ b, Dual b ~ a) + bound by the type signature for: + conn :: forall a b. + (Dual a ~ b, Dual b ~ a) => + Comm a -> Comm b -> (Int, Int) + at T2627b.hs:19:1-66 + or from: a ~ R c d + bound by a pattern with constructor: + Rd :: forall c d. (c -> Comm d) -> Comm (R c d), + in an equation for ‘conn’ + at T2627b.hs:20:7-10 The type variable ‘b0’ is ambiguous • In the expression: conn undefined undefined In an equation for ‘conn’: diff --git a/testsuite/tests/indexed-types/should_fail/T2664.stderr b/testsuite/tests/indexed-types/should_fail/T2664.stderr index f52703865f..64fa851258 100644 --- a/testsuite/tests/indexed-types/should_fail/T2664.stderr +++ b/testsuite/tests/indexed-types/should_fail/T2664.stderr @@ -7,8 +7,8 @@ T2664.hs:31:9: error: ((a :*: b) ~ Dual c, c ~ Dual (a :*: b)) => IO (PChan (a :*: b), PChan c) at T2664.hs:23:5-12 - Expected type: IO (PChan (a :*: b), PChan c) - Actual type: IO (PChan (a :*: b), PChan (Dual b :+: Dual a)) + Expected: IO (PChan (a :*: b), PChan c) + Actual: IO (PChan (a :*: b), PChan (Dual b :+: Dual a)) NB: ‘Dual’ is a non-injective type family • In a stmt of a 'do' block: return diff --git a/testsuite/tests/indexed-types/should_fail/T2693.stderr b/testsuite/tests/indexed-types/should_fail/T2693.stderr index f9485d1d42..57d4303849 100644 --- a/testsuite/tests/indexed-types/should_fail/T2693.stderr +++ b/testsuite/tests/indexed-types/should_fail/T2693.stderr @@ -1,6 +1,7 @@ T2693.hs:12:15: error: - • Couldn't match expected type ‘(a8, b1)’ with actual type ‘TFn a6’ + • Couldn't match expected type: (a8, b1) + with actual type: TFn a6 The type variables ‘a6’, ‘a8’, ‘b1’ are ambiguous • In the first argument of ‘fst’, namely ‘x’ In the first argument of ‘(+)’, namely ‘fst x’ @@ -8,7 +9,8 @@ T2693.hs:12:15: error: • Relevant bindings include n :: a8 (bound at T2693.hs:12:7) T2693.hs:12:23: error: - • Couldn't match expected type ‘(a8, b2)’ with actual type ‘TFn a7’ + • Couldn't match expected type: (a8, b2) + with actual type: TFn a7 The type variables ‘a7’, ‘a8’, ‘b2’ are ambiguous • In the first argument of ‘fst’, namely ‘x’ In the second argument of ‘(+)’, namely ‘fst x’ @@ -16,7 +18,8 @@ T2693.hs:12:23: error: • Relevant bindings include n :: a8 (bound at T2693.hs:12:7) T2693.hs:19:15: error: - • Couldn't match expected type ‘(a5, b0)’ with actual type ‘TFn a2’ + • Couldn't match expected type: (a5, b0) + with actual type: TFn a2 The type variables ‘a2’, ‘a5’, ‘b0’ are ambiguous • In the first argument of ‘fst’, namely ‘x’ In the first argument of ‘(+)’, namely ‘fst x’ @@ -24,7 +27,8 @@ T2693.hs:19:15: error: • Relevant bindings include n :: a5 (bound at T2693.hs:19:7) T2693.hs:19:23: error: - • Couldn't match expected type ‘(a4, a5)’ with actual type ‘TFn a3’ + • Couldn't match expected type: (a4, a5) + with actual type: TFn a3 The type variables ‘a3’, ‘a4’, ‘a5’ are ambiguous • In the first argument of ‘snd’, namely ‘x’ In the second argument of ‘(+)’, namely ‘snd x’ @@ -32,9 +36,10 @@ T2693.hs:19:23: error: • Relevant bindings include n :: a5 (bound at T2693.hs:19:7) T2693.hs:29:20: error: - • Couldn't match type ‘TFn a0’ with ‘PVR a1’ - Expected type: () -> Maybe (PVR a1) - Actual type: () -> Maybe (TFn a0) + • Couldn't match type: TFn a0 + with: PVR a1 + Expected: () -> Maybe (PVR a1) + Actual: () -> Maybe (TFn a0) The type variables ‘a0’, ‘a1’ are ambiguous • In the first argument of ‘mapM’, namely ‘g’ In a stmt of a 'do' block: pvs <- mapM g undefined diff --git a/testsuite/tests/indexed-types/should_fail/T3330a.stderr b/testsuite/tests/indexed-types/should_fail/T3330a.stderr index dfc2e4223d..1fba198ab7 100644 --- a/testsuite/tests/indexed-types/should_fail/T3330a.stderr +++ b/testsuite/tests/indexed-types/should_fail/T3330a.stderr @@ -2,14 +2,13 @@ T3330a.hs:19:34: error: • Couldn't match type ‘ix’ with ‘r ix1 -> Writer [AnyF s] (r'0 ix1)’ + Expected: (s0 ix0 -> ix1) -> r ix1 -> Writer [AnyF s] (r'0 ix1) + Actual: s ix ‘ix’ is a rigid type variable bound by the type signature for: children :: forall (s :: * -> *) ix (r :: * -> *). s ix -> PF s r ix -> [AnyF s] at T3330a.hs:18:1-43 - Expected type: (s0 ix0 -> ix1) - -> r ix1 -> Writer [AnyF s] (r'0 ix1) - Actual type: s ix • In the first argument of ‘hmapM’, namely ‘p’ In the first argument of ‘execWriter’, namely ‘(hmapM p collect x)’ In the expression: execWriter (hmapM p collect x) @@ -21,13 +20,13 @@ T3330a.hs:19:34: error: T3330a.hs:19:44: error: • Couldn't match type ‘ix’ with ‘r0 ix0 -> Writer [AnyF s0] (r0 ix0)’ + Expected: PF s r (r0 ix0 -> Writer [AnyF s0] (r0 ix0)) + Actual: PF s r ix ‘ix’ is a rigid type variable bound by the type signature for: children :: forall (s :: * -> *) ix (r :: * -> *). s ix -> PF s r ix -> [AnyF s] at T3330a.hs:18:1-43 - Expected type: PF s r (r0 ix0 -> Writer [AnyF s0] (r0 ix0)) - Actual type: PF s r ix • In the third argument of ‘hmapM’, namely ‘x’ In the first argument of ‘execWriter’, namely ‘(hmapM p collect x)’ In the expression: execWriter (hmapM p collect x) diff --git a/testsuite/tests/indexed-types/should_fail/T3330c.stderr b/testsuite/tests/indexed-types/should_fail/T3330c.stderr index 943dbb148b..9222e6fffe 100644 --- a/testsuite/tests/indexed-types/should_fail/T3330c.stderr +++ b/testsuite/tests/indexed-types/should_fail/T3330c.stderr @@ -4,8 +4,8 @@ T3330c.hs:25:43: error: When matching types f1 :: * -> * f1 x :: * - Expected type: Der ((->) x) (f1 x) - Actual type: R f1 + Expected: Der ((->) x) (f1 x) + Actual: 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/T4093a.stderr b/testsuite/tests/indexed-types/should_fail/T4093a.stderr index 826fe1934a..81d9c404ed 100644 --- a/testsuite/tests/indexed-types/should_fail/T4093a.stderr +++ b/testsuite/tests/indexed-types/should_fail/T4093a.stderr @@ -5,12 +5,12 @@ T4093a.hs:8:8: error: bound by the type signature for: hang :: forall e. (Foo e ~ Maybe e) => Foo e at T4093a.hs:7:1-34 + Expected: Foo e + Actual: Maybe () ‘e’ is a rigid type variable bound by the type signature for: hang :: forall e. (Foo e ~ Maybe e) => Foo e at T4093a.hs:7:1-34 - Expected type: Foo e - Actual type: Maybe () • In the expression: Just () In an equation for ‘hang’: hang = Just () • Relevant bindings include hang :: Foo e (bound at T4093a.hs:8:1) diff --git a/testsuite/tests/indexed-types/should_fail/T4093b.stderr b/testsuite/tests/indexed-types/should_fail/T4093b.stderr index 195b113ede..367c904e4f 100644 --- a/testsuite/tests/indexed-types/should_fail/T4093b.stderr +++ b/testsuite/tests/indexed-types/should_fail/T4093b.stderr @@ -9,6 +9,8 @@ T4093b.hs:31:13: error: EitherCO x (A C C n) (A C O n) ~ A C x n) => Block n e x -> A e x n at T4093b.hs:(19,1)-(22,26) + Expected: EitherCO e (A C O n) (A O O n) + Actual: (MaybeC C (n C O), MaybeC O (n O C)) ‘e’ is a rigid type variable bound by the type signature for: blockToNodeList :: forall (n :: * -> * -> *) e x. @@ -16,8 +18,6 @@ T4093b.hs:31:13: error: EitherCO x (A C C n) (A C O n) ~ A C x n) => Block n e x -> A e x n at T4093b.hs:(19,1)-(22,26) - Expected type: EitherCO e (A C O n) (A O O n) - Actual type: (MaybeC C (n C O), MaybeC O (n O C)) • In the expression: (JustC n, NothingC) In an equation for ‘f’: f n _ = (JustC n, NothingC) In an equation for ‘blockToNodeList’: diff --git a/testsuite/tests/indexed-types/should_fail/T4099.stderr b/testsuite/tests/indexed-types/should_fail/T4099.stderr index acc2ed29ae..5ed4d36640 100644 --- a/testsuite/tests/indexed-types/should_fail/T4099.stderr +++ b/testsuite/tests/indexed-types/should_fail/T4099.stderr @@ -1,6 +1,7 @@ T4099.hs:11:30: error: - • Couldn't match expected type ‘T a0’ with actual type ‘T b’ + • Couldn't match expected type: T a0 + with actual type: T b NB: ‘T’ is a non-injective type family The type variable ‘a0’ is ambiguous • In the second argument of ‘foo’, namely ‘x’ @@ -12,7 +13,8 @@ T4099.hs:11:30: error: bar1 :: b -> T b -> Int (bound at T4099.hs:11:1) T4099.hs:14:30: error: - • Couldn't match expected type ‘T a1’ with actual type ‘Maybe b’ + • Couldn't match expected type: T a1 + with actual type: Maybe b The type variable ‘a1’ is ambiguous • In the second argument of ‘foo’, namely ‘x’ In the expression: foo (error "urk") x diff --git a/testsuite/tests/indexed-types/should_fail/T4174.stderr b/testsuite/tests/indexed-types/should_fail/T4174.stderr index ccc88ced1e..ae962edf36 100644 --- a/testsuite/tests/indexed-types/should_fail/T4174.stderr +++ b/testsuite/tests/indexed-types/should_fail/T4174.stderr @@ -1,14 +1,14 @@ T4174.hs:44:12: error: • Couldn't match type ‘b’ with ‘RtsSpinLock’ + Expected: m (Field (Way (GHC6'8 minor) n t p) a b) + Actual: m (Field (WayOf m) SmStep RtsSpinLock) ‘b’ is a rigid type variable bound by the type signature for: testcase :: forall (m :: * -> *) minor n t p a b. Monad m => m (Field (Way (GHC6'8 minor) n t p) a b) at T4174.hs:43:1-63 - Expected type: m (Field (Way (GHC6'8 minor) n t p) a b) - Actual type: m (Field (WayOf m) SmStep RtsSpinLock) • In the expression: sync_large_objects In an equation for ‘testcase’: testcase = sync_large_objects • Relevant bindings include diff --git a/testsuite/tests/indexed-types/should_fail/T4179.stderr b/testsuite/tests/indexed-types/should_fail/T4179.stderr index 2f0d5e3644..4665a1a321 100644 --- a/testsuite/tests/indexed-types/should_fail/T4179.stderr +++ b/testsuite/tests/indexed-types/should_fail/T4179.stderr @@ -1,12 +1,12 @@ T4179.hs:26:16: error: - • Couldn't match type ‘A2 (x (A2 (FCon x) -> A3 (FCon x)))’ - with ‘A2 (FCon x)’ - Expected type: x (A2 (FCon x) -> A3 (FCon x)) - -> A2 (FCon x) -> A3 (FCon x) - Actual type: x (A2 (FCon x) -> A3 (FCon x)) - -> A2 (x (A2 (FCon x) -> A3 (FCon x))) - -> A3 (x (A2 (FCon x) -> A3 (FCon x))) + • Couldn't match type: A2 (x (A2 (FCon x) -> A3 (FCon x))) + with: A2 (FCon x) + Expected: x (A2 (FCon x) -> A3 (FCon x)) + -> A2 (FCon x) -> A3 (FCon x) + Actual: x (A2 (FCon x) -> A3 (FCon x)) + -> A2 (x (A2 (FCon x) -> A3 (FCon x))) + -> A3 (x (A2 (FCon x) -> A3 (FCon x))) NB: ‘A2’ is a non-injective type family • In the first argument of ‘foldDoC’, namely ‘op’ In the expression: foldDoC op diff --git a/testsuite/tests/indexed-types/should_fail/T4272.stderr b/testsuite/tests/indexed-types/should_fail/T4272.stderr index f0c5ab57f0..69df514c0f 100644 --- a/testsuite/tests/indexed-types/should_fail/T4272.stderr +++ b/testsuite/tests/indexed-types/should_fail/T4272.stderr @@ -1,9 +1,12 @@ T4272.hs:15:26: error: - • Occurs check: cannot construct the infinite type: - a ~ TermFamily a a - Expected type: TermFamily a (TermFamily a a) - Actual type: TermFamily a a + • Couldn't match type ‘a’ with ‘TermFamily a a’ + Expected: TermFamily a (TermFamily a a) + Actual: TermFamily a a + ‘a’ is a rigid type variable bound by + the type signature for: + laws :: forall a b. TermLike a => TermFamily a a -> b + at T4272.hs:14:1-53 • In the first argument of ‘terms’, namely ‘(undefined :: TermFamily a a)’ In the second argument of ‘prune’, namely diff --git a/testsuite/tests/indexed-types/should_fail/T5439.stderr b/testsuite/tests/indexed-types/should_fail/T5439.stderr index f712d47f0e..5dcce91edb 100644 --- a/testsuite/tests/indexed-types/should_fail/T5439.stderr +++ b/testsuite/tests/indexed-types/should_fail/T5439.stderr @@ -1,8 +1,8 @@ T5439.hs:82:33: error: - • Couldn't match expected type ‘Attempt (HElemOf rs)’ - with actual type ‘Attempt (HHead (HDrop n0 l0)) - -> Attempt (HElemOf l0)’ + • Couldn't match expected type: Attempt (HElemOf rs) + with actual type: Attempt (HHead (HDrop n0 l0)) + -> Attempt (HElemOf l0) • In the second argument of ‘($)’, namely ‘inj $ Failure (e :: SomeException)’ In a stmt of a 'do' block: @@ -21,8 +21,8 @@ T5439.hs:82:33: error: (bound at T5439.hs:61:3) T5439.hs:82:39: error: - • Couldn't match expected type ‘Peano n0’ - with actual type ‘Attempt α0’ + • Couldn't match expected type: Peano n0 + with actual type: Attempt α0 • In the second argument of ‘($)’, namely ‘Failure (e :: SomeException)’ In the second argument of ‘($)’, namely diff --git a/testsuite/tests/indexed-types/should_fail/T5934.stderr b/testsuite/tests/indexed-types/should_fail/T5934.stderr index e7448a9722..48f8bacef5 100644 --- a/testsuite/tests/indexed-types/should_fail/T5934.stderr +++ b/testsuite/tests/indexed-types/should_fail/T5934.stderr @@ -1,7 +1,8 @@ T5934.hs:12:7: error: - • Cannot instantiate unification variable ‘a0’ + • Couldn't match expected type ‘(forall s. GenST s) -> Int’ + with actual type ‘a0’ + Cannot instantiate unification variable ‘a0’ with a type involving polytypes: (forall s. GenST s) -> Int - GHC doesn't yet support impredicative polymorphism • In the expression: 0 In an equation for ‘run’: run = 0 diff --git a/testsuite/tests/indexed-types/should_fail/T6123.stderr b/testsuite/tests/indexed-types/should_fail/T6123.stderr index 0ae1a5e3c1..eafd27c454 100644 --- a/testsuite/tests/indexed-types/should_fail/T6123.stderr +++ b/testsuite/tests/indexed-types/should_fail/T6123.stderr @@ -1,7 +1,6 @@ T6123.hs:10:14: error: - • Occurs check: cannot construct the infinite type: a0 ~ Id a0 - arising from a use of ‘cid’ + • Couldn't match type ‘a0’ with ‘Id a0’ arising from a use of ‘cid’ The type variable ‘a0’ is ambiguous • In the expression: cid undefined In an equation for ‘cundefined’: cundefined = cid undefined diff --git a/testsuite/tests/indexed-types/should_fail/T7010.stderr b/testsuite/tests/indexed-types/should_fail/T7010.stderr index 0da40f7a69..12f443df7d 100644 --- a/testsuite/tests/indexed-types/should_fail/T7010.stderr +++ b/testsuite/tests/indexed-types/should_fail/T7010.stderr @@ -1,8 +1,9 @@ T7010.hs:53:27: error: - • Couldn't match type ‘IO Float’ with ‘Serial (IO Float)’ - Expected type: (Float, ValueTuple Vector) - Actual type: (Float, ValueTuple Float) + • Couldn't match type: IO Float + with: Serial (IO Float) + Expected: (Float, ValueTuple Vector) + Actual: (Float, ValueTuple Float) • In the first argument of ‘withArgs’, namely ‘plug’ In the expression: withArgs plug In an equation for ‘filterFormants’: filterFormants = withArgs plug diff --git a/testsuite/tests/indexed-types/should_fail/T7354.stderr b/testsuite/tests/indexed-types/should_fail/T7354.stderr index b7b70b8f4e..1a20e096f1 100644 --- a/testsuite/tests/indexed-types/should_fail/T7354.stderr +++ b/testsuite/tests/indexed-types/should_fail/T7354.stderr @@ -1,9 +1,8 @@ T7354.hs:28:11: error: - • Occurs check: cannot construct the infinite type: - p ~ Base t (Prim [p] p) - Expected type: Prim [p] p -> Base t (Prim [p] p) - Actual type: Prim [p] p -> p + • Couldn't match type ‘p’ with ‘Base t (Prim [p] p)’ + Expected: Prim [p] p -> Base t (Prim [p] p) + Actual: Prim [p] p -> p • In the first argument of ‘ana’, namely ‘alg’ In the expression: ana alg In an equation for ‘foo’: foo = ana alg diff --git a/testsuite/tests/indexed-types/should_fail/T7729.stderr b/testsuite/tests/indexed-types/should_fail/T7729.stderr index b209c9c4b7..baf93df666 100644 --- a/testsuite/tests/indexed-types/should_fail/T7729.stderr +++ b/testsuite/tests/indexed-types/should_fail/T7729.stderr @@ -1,8 +1,9 @@ T7729.hs:36:14: error: - • Couldn't match type ‘BasePrimMonad m’ with ‘t0 (BasePrimMonad m)’ - Expected type: t0 (BasePrimMonad m) a -> Rand m a - Actual type: BasePrimMonad (Rand m) a -> Rand m a + • Couldn't match type: BasePrimMonad m + with: t0 (BasePrimMonad m) + Expected: t0 (BasePrimMonad m) a -> Rand m a + Actual: BasePrimMonad (Rand m) a -> Rand m a The type variable ‘t0’ is ambiguous • In the first argument of ‘(.)’, namely ‘liftPrim’ In the expression: liftPrim . lift diff --git a/testsuite/tests/indexed-types/should_fail/T7729a.stderr b/testsuite/tests/indexed-types/should_fail/T7729a.stderr index e5a6289d96..60be4271ed 100644 --- a/testsuite/tests/indexed-types/should_fail/T7729a.stderr +++ b/testsuite/tests/indexed-types/should_fail/T7729a.stderr @@ -1,8 +1,9 @@ T7729a.hs:36:26: error: - • Couldn't match type ‘BasePrimMonad m’ with ‘t0 (BasePrimMonad m)’ - Expected type: BasePrimMonad (Rand m) a - Actual type: t0 (BasePrimMonad m) a + • Couldn't match type: BasePrimMonad m + with: t0 (BasePrimMonad m) + Expected: BasePrimMonad (Rand m) a + Actual: t0 (BasePrimMonad m) a The type variable ‘t0’ is ambiguous • In the first argument of ‘liftPrim’, namely ‘(lift x)’ In the expression: liftPrim (lift x) diff --git a/testsuite/tests/indexed-types/should_fail/T7967.stderr b/testsuite/tests/indexed-types/should_fail/T7967.stderr index 63d2ba8328..8a7e419a5d 100644 --- a/testsuite/tests/indexed-types/should_fail/T7967.stderr +++ b/testsuite/tests/indexed-types/should_fail/T7967.stderr @@ -1,7 +1,8 @@ T7967.hs:33:26: error: - • Couldn't match type ‘h0 : t0’ with ‘'[]’ - Expected type: Index n l - Actual type: Index 'Zero (h0 : t0) + • Couldn't match type: h0 : t0 + with: '[] + Expected: Index n l + Actual: Index 'Zero (h0 : t0) • In the expression: IZero In an equation for ‘sNatToIndex’: sNatToIndex SZero HNil = IZero diff --git a/testsuite/tests/indexed-types/should_fail/T8227.stderr b/testsuite/tests/indexed-types/should_fail/T8227.stderr index f86ac68d95..99d1763163 100644 --- a/testsuite/tests/indexed-types/should_fail/T8227.stderr +++ b/testsuite/tests/indexed-types/should_fail/T8227.stderr @@ -1,10 +1,10 @@ T8227.hs:17:27: error: - • Couldn't match type ‘Scalar (V a)’ - with ‘Scalar (V a) -> Scalar (V a)’ - Expected type: Scalar (V a) - Actual type: Scalar (V (Scalar (V a) -> Scalar (V a))) - -> Scalar (V (Scalar (V a) -> Scalar (V a))) + • Couldn't match type: Scalar (V a) + with: Scalar (V a) -> Scalar (V a) + Expected: Scalar (V a) + Actual: Scalar (V (Scalar (V a) -> Scalar (V a))) + -> Scalar (V (Scalar (V a) -> Scalar (V a))) • In the expression: arcLengthToParam eps eps In an equation for ‘absoluteToParam’: absoluteToParam eps seg = arcLengthToParam eps eps diff --git a/testsuite/tests/indexed-types/should_fail/T8518.stderr b/testsuite/tests/indexed-types/should_fail/T8518.stderr index b18202fec9..1f244f9ee2 100644 --- a/testsuite/tests/indexed-types/should_fail/T8518.stderr +++ b/testsuite/tests/indexed-types/should_fail/T8518.stderr @@ -1,7 +1,7 @@ T8518.hs:14:18: error: - • Couldn't match expected type ‘Z c -> B c -> Maybe (F c)’ - with actual type ‘F c’ + • Couldn't match expected type: Z c -> B c -> Maybe (F c) + with actual type: F c • The function ‘rpt’ is applied to four value arguments, but its type ‘Int -> c -> F c’ has only two In the expression: rpt (4 :: Int) c z b @@ -18,9 +18,10 @@ T8518.hs:14:18: error: callCont :: c -> Z c -> B c -> Maybe (F c) (bound at T8518.hs:14:1) T8518.hs:16:9: error: - • Couldn't match type ‘F t1’ with ‘Z t1 -> B t1 -> F t1’ - Expected type: t -> t1 -> F t1 - Actual type: t -> t1 -> Z t1 -> B t1 -> F t1 + • Couldn't match type: F t1 + with: Z t1 -> B t1 -> F t1 + Expected: t -> t1 -> F t1 + Actual: t -> t1 -> Z t1 -> B t1 -> F t1 • In an equation for ‘callCont’: callCont c z b = rpt (4 :: Int) c z b diff --git a/testsuite/tests/indexed-types/should_fail/T9036.stderr b/testsuite/tests/indexed-types/should_fail/T9036.stderr index 151dfb7f2d..0f783738ba 100644 --- a/testsuite/tests/indexed-types/should_fail/T9036.stderr +++ b/testsuite/tests/indexed-types/should_fail/T9036.stderr @@ -1,9 +1,10 @@ T9036.hs:18:17: error: - • Couldn't match type ‘Curried t0 [t0]’ with ‘Curried t [t]’ - Expected type: Maybe (GetMonad t after) -> Curried t [t] - Actual type: Maybe (GetMonad t0 after) -> Curried t0 [t0] - NB: ‘Curried’ is a non-injective type family + • Couldn't match type: GetMonad t0 + with: GetMonad t + Expected: Maybe (GetMonad t after) -> Curried t [t] + Actual: Maybe (GetMonad t0 after) -> Curried t0 [t0] + NB: ‘GetMonad’ is a non-injective type family The type variable ‘t0’ is ambiguous • In the ambiguity check for ‘simpleLogger’ To defer the ambiguity check to use sites, enable AllowAmbiguousTypes diff --git a/testsuite/tests/indexed-types/should_fail/T9171.stderr b/testsuite/tests/indexed-types/should_fail/T9171.stderr index 320a6add8d..6922be8ade 100644 --- a/testsuite/tests/indexed-types/should_fail/T9171.stderr +++ b/testsuite/tests/indexed-types/should_fail/T9171.stderr @@ -1,9 +1,9 @@ T9171.hs:10:20: error: - • Couldn't match expected type ‘GetParam - @(*) @k2 @(*) Base (GetParam @(*) @(*) @k2 Base Int)’ - with actual type ‘GetParam - @(*) @k20 @(*) Base (GetParam @(*) @(*) @k20 Base Int)’ + • Couldn't match expected type: GetParam + @(*) @k2 @(*) Base (GetParam @(*) @(*) @k2 Base Int) + with actual type: GetParam + @(*) @k20 @(*) Base (GetParam @(*) @(*) @k20 Base Int) NB: ‘GetParam’ is a non-injective type family The type variable ‘k20’ is ambiguous • In the ambiguity check for an expression type signature diff --git a/testsuite/tests/indexed-types/should_fail/T9662.stderr b/testsuite/tests/indexed-types/should_fail/T9662.stderr index 4f35d92b5e..04acdc653d 100644 --- a/testsuite/tests/indexed-types/should_fail/T9662.stderr +++ b/testsuite/tests/indexed-types/should_fail/T9662.stderr @@ -1,17 +1,17 @@ T9662.hs:49:8: error: - • Couldn't match type ‘k’ with ‘Int’ - ‘k’ is a rigid type variable bound by + • Couldn't match type ‘n’ with ‘Int’ + Expected: Exp (((sh :. k) :. m) :. n) + -> Exp (((sh :. k) :. m) :. n) + Actual: Exp + (Tuple (((Atom a0 :. Atom Int) :. Atom Int) :. Atom Int)) + -> Exp + (Plain (((Unlifted (Atom a0) :. Exp Int) :. Exp Int) :. Exp Int)) + ‘n’ is a rigid type variable bound by the type signature for: test :: forall sh k m n. Shape (((sh :. k) :. m) :. n) -> Shape (((sh :. m) :. n) :. k) at T9662.hs:46:1-50 - Expected type: Exp (((sh :. m) :. n) :. k) - -> Exp (((sh :. m) :. n) :. k) - Actual type: Exp - (Tuple (((Atom a0 :. Atom Int) :. Atom Int) :. Atom Int)) - -> Exp - (Plain (((Unlifted (Atom a0) :. Exp Int) :. Exp Int) :. Exp Int)) • In the first argument of ‘backpermute’, namely ‘(modify (atom :. atom :. atom :. atom) diff --git a/testsuite/tests/module/mod180.stderr b/testsuite/tests/module/mod180.stderr index f76cfc8480..1518a63e82 100644 --- a/testsuite/tests/module/mod180.stderr +++ b/testsuite/tests/module/mod180.stderr @@ -1,8 +1,8 @@ mod180.hs:8:5: error: - Couldn't match expected type ‘T’ - with actual type ‘main:Mod180_A.T’ - NB: ‘main:Mod180_A.T’ is defined at Mod180_A.hs:3:1-10 - ‘T’ is defined at Mod180_B.hs:3:1-10 - In the expression: x - In an equation for ‘z’: z = x + • Couldn't match expected type ‘T’ + with actual type ‘main:Mod180_A.T’ + NB: ‘T’ is defined at Mod180_B.hs:3:1-10 + ‘main:Mod180_A.T’ is defined at Mod180_A.hs:3:1-10 + • In the expression: x + In an equation for ‘z’: z = x diff --git a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr index 4d55087e18..3ff4cb3678 100644 --- a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr +++ b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr @@ -1,8 +1,8 @@ overloadedlistsfail03.hs:3:28: error: • Couldn't match type ‘[Char]’ with ‘Char’ - Expected type: GHC.Exts.Item [Char] - Actual type: [Char] + Expected: GHC.Exts.Item [Char] + Actual: String • In the expression: "b" In the first argument of ‘length’, namely ‘(['a', "b"] :: [Char])’ In the first argument of ‘print’, namely diff --git a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr index edd0c7fcef..6f0045a462 100644 --- a/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr +++ b/testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr @@ -1,8 +1,8 @@ overloadedlistsfail05.hs:3:24: error: • Couldn't match type ‘Char’ with ‘Int’ - Expected type: GHC.Exts.Item [Int] - Actual type: Char + Expected: GHC.Exts.Item [Int] + Actual: Char • In the expression: 'a' In the first argument of ‘length’, namely ‘(['a' .. (10 :: Int)] :: [Int])’ diff --git a/testsuite/tests/parser/should_compile/T2245.stderr b/testsuite/tests/parser/should_compile/T2245.stderr index b823c00ed0..8e48cfb189 100644 --- a/testsuite/tests/parser/should_compile/T2245.stderr +++ b/testsuite/tests/parser/should_compile/T2245.stderr @@ -13,10 +13,10 @@ T2245.hs:5:10: warning: [-Wmissing-methods (in -Wdefault)] T2245.hs:7:27: warning: [-Wtype-defaults (in -Wall)] • Defaulting the following constraints to type ‘T’ - (Ord a0) arising from a use of ‘<’ at T2245.hs:7:27 - (Fractional a0) + (Ord b0) arising from a use of ‘<’ at T2245.hs:7:27 + (Fractional b0) arising from the literal ‘1e400’ at T2245.hs:7:29-33 - (Read a0) arising from a use of ‘read’ at T2245.hs:7:38-41 + (Read b0) arising from a use of ‘read’ at T2245.hs:7:38-41 • In the first argument of ‘(.)’, namely ‘(< 1e400)’ In the second argument of ‘(.)’, namely ‘(< 1e400) . read’ In the second argument of ‘($)’, namely ‘show . (< 1e400) . read’ diff --git a/testsuite/tests/parser/should_fail/T8501c.stderr b/testsuite/tests/parser/should_fail/T8501c.stderr index b12b53e8ad..3b02432822 100644 --- a/testsuite/tests/parser/should_fail/T8501c.stderr +++ b/testsuite/tests/parser/should_fail/T8501c.stderr @@ -1,6 +1,6 @@ T8501c.hs:4:7: error: • Variable not in scope: - mdo :: (String -> IO ()) -> [Char] -> IO () + mdo :: (String -> IO ()) -> String -> IO () • Perhaps you meant ‘mod’ (imported from Prelude) Perhaps you meant to use RecursiveDo diff --git a/testsuite/tests/parser/should_fail/readFail003.stderr b/testsuite/tests/parser/should_fail/readFail003.stderr index 933f16179a..dbcc63f419 100644 --- a/testsuite/tests/parser/should_fail/readFail003.stderr +++ b/testsuite/tests/parser/should_fail/readFail003.stderr @@ -1,7 +1,7 @@ readFail003.hs:4:27: error: - • Occurs check: cannot construct the infinite type: - a ~ (a, [a1], [a2]) + • Couldn't match expected type ‘(a, [a1], [a2])’ + with actual type ‘a’ • In the expression: a In a pattern binding: ~(a, b, c) diff --git a/testsuite/tests/parser/should_fail/readFail032.stderr b/testsuite/tests/parser/should_fail/readFail032.stderr index 7cd106d69a..c845203048 100644 --- a/testsuite/tests/parser/should_fail/readFail032.stderr +++ b/testsuite/tests/parser/should_fail/readFail032.stderr @@ -1,11 +1,10 @@ -readFail032.hs:25:38: - Couldn't match type ‘Char’ with ‘[Char]’ - Expected type: [[Char]] - Actual type: [Char] - In the second argument of ‘(:)’, namely ‘"Type error on line 25"’ +readFail032.hs:25:38: error: + • Couldn't match type ‘Char’ with ‘[Char]’ + Expected: [String] + Actual: String + • In the second argument of ‘(:)’, namely ‘"Type error on line 25"’ In the expression: - "Type error on line 25" : "Type error on line 25" + "Type error on line 25" : "Type error on line 25" In an equation for ‘type_error’: type_error = "Type error on line 25" : "Type error on line 25" - diff --git a/testsuite/tests/parser/should_fail/readFail048.stderr b/testsuite/tests/parser/should_fail/readFail048.stderr index 62276db0c9..b1d7ab4dd2 100644 --- a/testsuite/tests/parser/should_fail/readFail048.stderr +++ b/testsuite/tests/parser/should_fail/readFail048.stderr @@ -1,11 +1,10 @@ -readFail048.hs:25:38: - Couldn't match type ‘Char’ with ‘[Char]’ - Expected type: [[Char]] - Actual type: [Char] - In the second argument of ‘(:)’, namely ‘"Type error on line 25"’ +readFail048.hs:25:38: error: + • Couldn't match type ‘Char’ with ‘[Char]’ + Expected: [String] + Actual: String + • In the second argument of ‘(:)’, namely ‘"Type error on line 25"’ In the expression: - "Type error on line 25" : "Type error on line 25" + "Type error on line 25" : "Type error on line 25" In an equation for ‘type_error’: type_error = "Type error on line 25" : "Type error on line 25" - diff --git a/testsuite/tests/partial-sigs/should_compile/DataFamilyInstanceLHS.stderr b/testsuite/tests/partial-sigs/should_compile/DataFamilyInstanceLHS.stderr index 7a7a36472b..6672efb7ac 100644 --- a/testsuite/tests/partial-sigs/should_compile/DataFamilyInstanceLHS.stderr +++ b/testsuite/tests/partial-sigs/should_compile/DataFamilyInstanceLHS.stderr @@ -15,5 +15,5 @@ DATA CONSTRUCTORS FAMILY INSTANCES data instance Sing _ -- Defined at DataFamilyInstanceLHS.hs:8:15 Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/Defaulting2MROff.stderr b/testsuite/tests/partial-sigs/should_compile/Defaulting2MROff.stderr index 4332d07a03..441bfa5720 100644 --- a/testsuite/tests/partial-sigs/should_compile/Defaulting2MROff.stderr +++ b/testsuite/tests/partial-sigs/should_compile/Defaulting2MROff.stderr @@ -1,5 +1,5 @@ TYPE SIGNATURES - bravo :: forall {_}. Num _ => _ + bravo :: forall {w}. Num w => w Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/Defaulting2MROn.stderr b/testsuite/tests/partial-sigs/should_compile/Defaulting2MROn.stderr index 4332d07a03..441bfa5720 100644 --- a/testsuite/tests/partial-sigs/should_compile/Defaulting2MROn.stderr +++ b/testsuite/tests/partial-sigs/should_compile/Defaulting2MROn.stderr @@ -1,5 +1,5 @@ TYPE SIGNATURES - bravo :: forall {_}. Num _ => _ + bravo :: forall {w}. Num w => w Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/Either.stderr b/testsuite/tests/partial-sigs/should_compile/Either.stderr index f5f54d209e..6e48357b33 100644 --- a/testsuite/tests/partial-sigs/should_compile/Either.stderr +++ b/testsuite/tests/partial-sigs/should_compile/Either.stderr @@ -1,5 +1,5 @@ TYPE SIGNATURES - barry :: forall {_}. _ -> (Either [Char] _, Either [Char] _) + barry :: forall {w}. w -> (Either String w, Either String w) Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/EveryNamed.stderr b/testsuite/tests/partial-sigs/should_compile/EveryNamed.stderr index 28c25b80b6..eff1cb3577 100644 --- a/testsuite/tests/partial-sigs/should_compile/EveryNamed.stderr +++ b/testsuite/tests/partial-sigs/should_compile/EveryNamed.stderr @@ -1,5 +1,5 @@ TYPE SIGNATURES - every :: forall {_}. (_ -> Bool) -> [_] -> Bool + every :: forall {w}. (w -> Bool) -> [w] -> Bool Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/ExtraConstraints3.stderr b/testsuite/tests/partial-sigs/should_compile/ExtraConstraints3.stderr index 09a6ce2a17..73b2c3058f 100644 --- a/testsuite/tests/partial-sigs/should_compile/ExtraConstraints3.stderr +++ b/testsuite/tests/partial-sigs/should_compile/ExtraConstraints3.stderr @@ -132,12 +132,12 @@ TYPE SIGNATURES (P.Foldable t, Monad m) => (a -> m b) -> t a -> m () max :: forall {a}. Ord a => a -> a -> a - maxBound :: forall {_}. Bounded _ => _ + maxBound :: forall {w}. Bounded w => w maximum :: forall {t :: * -> *} {a}. (P.Foldable t, Ord a) => t a -> a maybe :: forall {b} {a}. b -> (a -> b) -> Maybe a -> b min :: forall {a}. Ord a => a -> a -> a - minBound :: forall {_}. Bounded _ => _ + minBound :: forall {w}. Bounded w => w minimum :: forall {t :: * -> *} {a}. (P.Foldable t, Ord a) => t a -> a mod :: forall {a}. Integral a => a -> a -> a @@ -149,7 +149,7 @@ TYPE SIGNATURES odd :: forall {a}. Integral a => a -> Bool or :: forall {t :: * -> *}. P.Foldable t => t Bool -> Bool otherwise :: Bool - pi :: forall {_}. Floating _ => _ + pi :: forall {w}. Floating w => w pred :: forall {a}. Enum a => a -> a print :: forall {a}. Show a => a -> IO () product :: @@ -219,7 +219,7 @@ TYPE SIGNATURES toRational :: forall {a}. Real a => a -> Rational truncate :: forall {a} {b}. (RealFrac a, Integral b) => a -> b uncurry :: forall {a} {b} {c}. (a -> b -> c) -> (a, b) -> c - undefined :: forall {_}. _ + undefined :: forall {w}. w unlines :: [String] -> String until :: forall {a}. (a -> Bool) -> (a -> a) -> a -> a unwords :: [String] -> String diff --git a/testsuite/tests/partial-sigs/should_compile/SimpleGen.stderr b/testsuite/tests/partial-sigs/should_compile/SimpleGen.stderr index 49e98e3b0d..0bb722daf6 100644 --- a/testsuite/tests/partial-sigs/should_compile/SimpleGen.stderr +++ b/testsuite/tests/partial-sigs/should_compile/SimpleGen.stderr @@ -1,5 +1,5 @@ TYPE SIGNATURES - bar :: forall {_}. _ -> Bool + bar :: forall {w}. w -> Bool Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/SplicesUsed.stderr b/testsuite/tests/partial-sigs/should_compile/SplicesUsed.stderr index 298aa30c40..ea48244e0c 100644 --- a/testsuite/tests/partial-sigs/should_compile/SplicesUsed.stderr +++ b/testsuite/tests/partial-sigs/should_compile/SplicesUsed.stderr @@ -7,9 +7,9 @@ SplicesUsed.hs:7:15: warning: [-Wpartial-type-signatures (in -Wdefault)] In the type signature: maybeBool :: (_) SplicesUsed.hs:8:14: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_a’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of <expression> :: _ -> _ + • Found type wildcard ‘_a’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of <expression> :: w -> w at SplicesUsed.hs:8:14-23 • In an expression type signature: _a -> _a In the expression: id :: _a -> _a @@ -72,9 +72,9 @@ SplicesUsed.hs:16:2: warning: [-Wpartial-type-signatures (in -Wdefault)] • In the type signature: foo :: _ => _ SplicesUsed.hs:18:2: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_b’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: Bool -> _ -> (Bool, _) + • Found type wildcard ‘_b’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: Bool -> w -> (Bool, w) at SplicesUsed.hs:18:2-11 • In the type signature: bar :: _a -> _b -> (_a, _b) diff --git a/testsuite/tests/partial-sigs/should_compile/T10403.stderr b/testsuite/tests/partial-sigs/should_compile/T10403.stderr index fcc5e38e87..e59a28a99d 100644 --- a/testsuite/tests/partial-sigs/should_compile/T10403.stderr +++ b/testsuite/tests/partial-sigs/should_compile/T10403.stderr @@ -2,22 +2,22 @@ T10403.hs:15:7: warning: [-Wpartial-type-signatures (in -Wdefault)] • Found type wildcard ‘_’ standing for ‘Functor f’ Where: ‘f’ is a rigid type variable bound by - the inferred type of h1 :: Functor f => (a -> b) -> f a -> H f + the inferred type of h1 :: Functor f => (a -> a1) -> f a -> H f at T10403.hs:17:1-41 • In the type signature: h1 :: _ => _ T10403.hs:15:12: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘(a -> b) -> f a -> H f’ - Where: ‘b’, ‘a’, ‘f’ are rigid type variables bound by - the inferred type of h1 :: Functor f => (a -> b) -> f a -> H f + • Found type wildcard ‘_’ standing for ‘(a -> a1) -> f a -> H f’ + Where: ‘a1’, ‘a’, ‘f’ are rigid type variables bound by + the inferred type of h1 :: Functor f => (a -> a1) -> f a -> H f at T10403.hs:17:1-41 • In the type signature: h1 :: _ => _ T10403.hs:19:7: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘(a -> b) -> f0 a -> H f0’ + • Found type wildcard ‘_’ standing for ‘(a -> a1) -> f0 a -> H f0’ Where: ‘f0’ is an ambiguous type variable - ‘b’, ‘a’ are rigid type variables bound by - the inferred type of h2 :: (a -> b) -> f0 a -> H f0 + ‘a1’, ‘a’ are rigid type variables bound by + the inferred type of h2 :: (a -> a1) -> f0 a -> H f0 at T10403.hs:22:1-41 • In the type signature: h2 :: _ @@ -26,7 +26,7 @@ T10403.hs:22:15: warning: [-Wdeferred-type-errors (in -Wdefault)] prevents the constraint ‘(Functor f0)’ from being solved. Relevant bindings include b :: f0 a (bound at T10403.hs:22:6) - h2 :: (a -> b) -> f0 a -> H f0 (bound at T10403.hs:22:1) + h2 :: (a -> a1) -> f0 a -> H f0 (bound at T10403.hs:22:1) Probable fix: use a type annotation to specify what ‘f0’ should be. These potential instances exist: instance Functor IO -- Defined in ‘GHC.Base’ @@ -41,13 +41,13 @@ T10403.hs:22:15: warning: [-Wdeferred-type-errors (in -Wdefault)] T10403.hs:28:8: warning: [-Wdeferred-type-errors (in -Wdefault)] • Couldn't match type ‘f0’ with ‘B t’ + Expected: H (B t) + Actual: H f0 because type variable ‘t’ would escape its scope This (rigid, skolem) type variable is bound by the type signature for: app2 :: forall t. H (B t) at T10403.hs:27:1-15 - Expected type: H (B t) - Actual type: H f0 • In the expression: h2 (H . I) (B ()) In an equation for ‘app2’: app2 = h2 (H . I) (B ()) • Relevant bindings include diff --git a/testsuite/tests/partial-sigs/should_compile/T11670.stderr b/testsuite/tests/partial-sigs/should_compile/T11670.stderr index 1a0e7df6ef..87e36e5fc5 100644 --- a/testsuite/tests/partial-sigs/should_compile/T11670.stderr +++ b/testsuite/tests/partial-sigs/should_compile/T11670.stderr @@ -9,9 +9,9 @@ T11670.hs:10:42: warning: [-Wpartial-type-signatures (in -Wdefault)] peek :: Ptr a -> IO CLong (bound at T11670.hs:10:1) T11670.hs:13:40: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘Storable _’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of <expression> :: Storable _ => IO _ + • Found type wildcard ‘_’ standing for ‘Storable w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of <expression> :: Storable w => IO w at T11670.hs:13:40-48 • In an expression type signature: _ => IO _ In the expression: peekElemOff undefined 0 :: _ => IO _ @@ -22,9 +22,9 @@ T11670.hs:13:40: warning: [-Wpartial-type-signatures (in -Wdefault)] peek2 :: Ptr a -> IO CLong (bound at T11670.hs:13:1) T11670.hs:13:48: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of <expression> :: Storable _ => IO _ + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of <expression> :: Storable w => IO w at T11670.hs:13:40-48 • In the first argument of ‘IO’, namely ‘_’ In the type ‘IO _’ diff --git a/testsuite/tests/partial-sigs/should_compile/T14643.stderr b/testsuite/tests/partial-sigs/should_compile/T14643.stderr index c5f204e799..60288670fb 100644 --- a/testsuite/tests/partial-sigs/should_compile/T14643.stderr +++ b/testsuite/tests/partial-sigs/should_compile/T14643.stderr @@ -1,8 +1,8 @@ T14643.hs:5:18: warning: [-Wpartial-type-signatures (in -Wdefault)] • Found type wildcard ‘_’ standing for ‘()’ - • In the type signature: af :: (Num a, _) => a -> a + • In the type signature: ag :: (Num a, _) => a -> a T14643.hs:5:18: warning: [-Wpartial-type-signatures (in -Wdefault)] • Found type wildcard ‘_’ standing for ‘()’ - • In the type signature: ag :: (Num a, _) => a -> a + • In the type signature: af :: (Num a, _) => a -> a diff --git a/testsuite/tests/partial-sigs/should_compile/T16728a.stderr b/testsuite/tests/partial-sigs/should_compile/T16728a.stderr index 50785ebc1c..a23c189c4b 100644 --- a/testsuite/tests/partial-sigs/should_compile/T16728a.stderr +++ b/testsuite/tests/partial-sigs/should_compile/T16728a.stderr @@ -1,20 +1,20 @@ T16728a.hs:4:22: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by the inferred types of - g :: a -> _ - h :: a -> _ + g :: a -> w + h :: a -> w at T16728a.hs:(5,1)-(7,9) • In the type ‘a -> _’ - In the type signature: g :: forall a. a -> _ + In the type signature: h :: forall a. a -> _ T16728a.hs:4:22: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by the inferred types of - g :: a -> _ - h :: a -> _ + g :: a -> w + h :: a -> w at T16728a.hs:(5,1)-(7,9) • In the type ‘a -> _’ - In the type signature: h :: forall a. a -> _ + In the type signature: g :: forall a. a -> _ diff --git a/testsuite/tests/partial-sigs/should_compile/TypeFamilyInstanceLHS.stderr b/testsuite/tests/partial-sigs/should_compile/TypeFamilyInstanceLHS.stderr index a079ea0342..2010018e05 100644 --- a/testsuite/tests/partial-sigs/should_compile/TypeFamilyInstanceLHS.stderr +++ b/testsuite/tests/partial-sigs/should_compile/TypeFamilyInstanceLHS.stderr @@ -12,5 +12,5 @@ FAMILY INSTANCES type instance F Bool _ = Bool -- Defined at TypeFamilyInstanceLHS.hs:8:15 Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/Uncurry.stderr b/testsuite/tests/partial-sigs/should_compile/Uncurry.stderr index 0499a2eb93..f83b50d0e7 100644 --- a/testsuite/tests/partial-sigs/should_compile/Uncurry.stderr +++ b/testsuite/tests/partial-sigs/should_compile/Uncurry.stderr @@ -1,5 +1,5 @@ TYPE SIGNATURES - unc :: forall {_1} {_2} {_3}. (_1 -> _2 -> _3) -> (_1, _2) -> _3 + unc :: forall {w1} {w2} {w3}. (w1 -> w2 -> w3) -> (w1, w2) -> w3 Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/UncurryNamed.stderr b/testsuite/tests/partial-sigs/should_compile/UncurryNamed.stderr index 62ae68aef0..f83b50d0e7 100644 --- a/testsuite/tests/partial-sigs/should_compile/UncurryNamed.stderr +++ b/testsuite/tests/partial-sigs/should_compile/UncurryNamed.stderr @@ -1,5 +1,5 @@ TYPE SIGNATURES - unc :: forall {a} {b} {_}. (a -> b -> _) -> (a, b) -> _ + unc :: forall {w1} {w2} {w3}. (w1 -> w2 -> w3) -> (w1, w2) -> w3 Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] diff --git a/testsuite/tests/partial-sigs/should_compile/WarningWildcardInstantiations.stderr b/testsuite/tests/partial-sigs/should_compile/WarningWildcardInstantiations.stderr index 8cfb1f2fe0..fcefb13b71 100644 --- a/testsuite/tests/partial-sigs/should_compile/WarningWildcardInstantiations.stderr +++ b/testsuite/tests/partial-sigs/should_compile/WarningWildcardInstantiations.stderr @@ -1,9 +1,9 @@ TYPE SIGNATURES - bar :: forall {t} {_}. t -> (t -> _) -> _ + bar :: forall {t} {w}. t -> (t -> w) -> w foo :: forall {a}. (Show a, Enum a) => a -> String Dependent modules: [] -Dependent packages: [base-4.13.0.0, ghc-prim-0.6.1, - integer-gmp-1.0.2.0] +Dependent packages: [base-4.14.0.0, ghc-prim-0.6.1, + integer-gmp-1.0.3.0] WarningWildcardInstantiations.hs:5:14: warning: [-Wpartial-type-signatures (in -Wdefault)] • Found type wildcard ‘_a’ standing for ‘a’ @@ -27,23 +27,23 @@ WarningWildcardInstantiations.hs:5:30: warning: [-Wpartial-type-signatures (in - WarningWildcardInstantiations.hs:8:8: warning: [-Wpartial-type-signatures (in -Wdefault)] • Found type wildcard ‘_’ standing for ‘t’ Where: ‘t’ is a rigid type variable bound by - the inferred type of bar :: t -> (t -> _) -> _ + the inferred type of bar :: t -> (t -> w) -> w at WarningWildcardInstantiations.hs:9:1-13 • In the type ‘_ -> _ -> _’ In the type signature: bar :: _ -> _ -> _ WarningWildcardInstantiations.hs:8:13: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘t -> _’ - Where: ‘t’, ‘_’ are rigid type variables bound by - the inferred type of bar :: t -> (t -> _) -> _ + • Found type wildcard ‘_’ standing for ‘t -> w’ + Where: ‘t’, ‘w’ are rigid type variables bound by + the inferred type of bar :: t -> (t -> w) -> w at WarningWildcardInstantiations.hs:9:1-13 • In the type ‘_ -> _ -> _’ In the type signature: bar :: _ -> _ -> _ WarningWildcardInstantiations.hs:8:18: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: t -> (t -> _) -> _ + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: t -> (t -> w) -> w at WarningWildcardInstantiations.hs:9:1-13 • In the type ‘_ -> _ -> _’ In the type signature: bar :: _ -> _ -> _ diff --git a/testsuite/tests/partial-sigs/should_fail/ExtraConstraintsWildcardInPatternSplice.stderr b/testsuite/tests/partial-sigs/should_fail/ExtraConstraintsWildcardInPatternSplice.stderr index 2a83a36cc2..e42e098ef3 100644 --- a/testsuite/tests/partial-sigs/should_fail/ExtraConstraintsWildcardInPatternSplice.stderr +++ b/testsuite/tests/partial-sigs/should_fail/ExtraConstraintsWildcardInPatternSplice.stderr @@ -1,13 +1,13 @@ ExtraConstraintsWildcardInPatternSplice.hs:5:6: error: - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of foo :: _ -> () + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of foo :: w -> () at ExtraConstraintsWildcardInPatternSplice.hs:5:1-29 To use the inferred type, enable PartialTypeSignatures • In a pattern type signature: _ In the pattern: _ :: _ In an equation for ‘foo’: foo (_ :: _) = () • Relevant bindings include - foo :: _ -> () + foo :: w -> () (bound at ExtraConstraintsWildcardInPatternSplice.hs:5:1) diff --git a/testsuite/tests/partial-sigs/should_fail/NamedExtraConstraintsWildcard.stderr b/testsuite/tests/partial-sigs/should_fail/NamedExtraConstraintsWildcard.stderr index 84d61eda91..146b0146eb 100644 --- a/testsuite/tests/partial-sigs/should_fail/NamedExtraConstraintsWildcard.stderr +++ b/testsuite/tests/partial-sigs/should_fail/NamedExtraConstraintsWildcard.stderr @@ -1,11 +1,11 @@ NamedExtraConstraintsWildcard.hs:5:1: error: - • Could not deduce: _0 - from the context: (Eq a, _) + • Could not deduce: w0 + from the context: (Eq a, w) bound by the inferred type for ‘foo’: - forall a {_ :: Constraint}. (Eq a, _) => a -> a + forall a {w :: Constraint}. (Eq a, w) => a -> a at NamedExtraConstraintsWildcard.hs:5:1-15 • In the ambiguity check for the inferred type for ‘foo’ To defer the ambiguity check to use sites, enable AllowAmbiguousTypes When checking the inferred type - foo :: forall a {_ :: Constraint}. (Eq a, _) => a -> a + foo :: forall a {w :: Constraint}. (Eq a, w) => a -> a diff --git a/testsuite/tests/partial-sigs/should_fail/NamedWildcardExplicitForall.stderr b/testsuite/tests/partial-sigs/should_fail/NamedWildcardExplicitForall.stderr index 4c22dc62b9..e366651f7d 100644 --- a/testsuite/tests/partial-sigs/should_fail/NamedWildcardExplicitForall.stderr +++ b/testsuite/tests/partial-sigs/should_fail/NamedWildcardExplicitForall.stderr @@ -1,12 +1,12 @@ NamedWildcardExplicitForall.hs:8:7: error: • Couldn't match type ‘_a’ with ‘Bool’ + Expected: _a -> _a + Actual: Bool -> Bool ‘_a’ is a rigid type variable bound by the type signature for: foo :: forall _a. _a -> _a at NamedWildcardExplicitForall.hs:7:1-27 - Expected type: _a -> _a - Actual type: Bool -> Bool • In the expression: not In an equation for ‘foo’: foo = not • Relevant bindings include diff --git a/testsuite/tests/partial-sigs/should_fail/NamedWildcardsNotInMonotype.stderr b/testsuite/tests/partial-sigs/should_fail/NamedWildcardsNotInMonotype.stderr index 6a1d0edbb4..423fe1b040 100644 --- a/testsuite/tests/partial-sigs/should_fail/NamedWildcardsNotInMonotype.stderr +++ b/testsuite/tests/partial-sigs/should_fail/NamedWildcardsNotInMonotype.stderr @@ -1,12 +1,12 @@ NamedWildcardsNotInMonotype.hs:5:1: error: - • Could not deduce (Eq _0) - from the context: (Show a, Eq _, Eq a) + • Could not deduce (Eq w0) + from the context: (Show a, Eq w, Eq a) bound by the inferred type for ‘foo’: - forall {a} {_}. (Show a, Eq _, Eq a) => a -> a -> String + forall {a} {w}. (Show a, Eq w, Eq a) => a -> a -> String at NamedWildcardsNotInMonotype.hs:5:1-33 - The type variable ‘_0’ is ambiguous + The type variable ‘w0’ is ambiguous • In the ambiguity check for the inferred type for ‘foo’ To defer the ambiguity check to use sites, enable AllowAmbiguousTypes When checking the inferred type - foo :: forall {a} {_}. (Show a, Eq _, Eq a) => a -> a -> String + foo :: forall {a} {w}. (Show a, Eq w, Eq a) => a -> a -> String diff --git a/testsuite/tests/partial-sigs/should_fail/PatBind3.stderr b/testsuite/tests/partial-sigs/should_fail/PatBind3.stderr index 8ca3dcd540..e4c368c6e1 100644 --- a/testsuite/tests/partial-sigs/should_fail/PatBind3.stderr +++ b/testsuite/tests/partial-sigs/should_fail/PatBind3.stderr @@ -1,9 +1,9 @@ PatBind3.hs:6:12: error: - • Couldn't match type ‘(Bool, _)’ with ‘Char’ - Expected type: Maybe ((Bool, _) -> Char) - Actual type: Maybe ((Bool, _) -> (Bool, _)) + • Couldn't match type ‘(Bool, w)’ with ‘Char’ + Expected: Maybe ((Bool, w) -> Char) + Actual: Maybe ((Bool, w) -> (Bool, w)) • In the expression: Just id In a pattern binding: Just foo = Just id • Relevant bindings include - foo :: (Bool, _) -> Char (bound at PatBind3.hs:6:6) + foo :: (Bool, w) -> Char (bound at PatBind3.hs:6:6) diff --git a/testsuite/tests/partial-sigs/should_fail/T10615.stderr b/testsuite/tests/partial-sigs/should_fail/T10615.stderr index b474e3dda7..9cd93c24a7 100644 --- a/testsuite/tests/partial-sigs/should_fail/T10615.stderr +++ b/testsuite/tests/partial-sigs/should_fail/T10615.stderr @@ -1,36 +1,36 @@ T10615.hs:4:7: error: - • Found type wildcard ‘_’ standing for ‘a1’ - Where: ‘a1’ is an ambiguous type variable + • Found type wildcard ‘_’ standing for ‘w1’ + Where: ‘w1’ is an ambiguous type variable To use the inferred type, enable PartialTypeSignatures • In the type ‘_ -> f’ In the type signature: f1 :: _ -> f T10615.hs:5:6: error: - • Couldn't match type ‘f’ with ‘b1 -> a1’ + • Couldn't match type ‘f’ with ‘b1 -> w1’ + Expected: w1 -> f + Actual: w1 -> b1 -> w1 ‘f’ is a rigid type variable bound by - the inferred type of f1 :: a1 -> f + the inferred type of f1 :: w1 -> f at T10615.hs:4:1-12 - Expected type: a1 -> f - Actual type: a1 -> b1 -> a1 • In the expression: const In an equation for ‘f1’: f1 = const - • Relevant bindings include f1 :: a1 -> f (bound at T10615.hs:5:1) + • Relevant bindings include f1 :: w1 -> f (bound at T10615.hs:5:1) T10615.hs:7:7: error: - • Found type wildcard ‘_’ standing for ‘a0’ - Where: ‘a0’ is an ambiguous type variable + • Found type wildcard ‘_’ standing for ‘w0’ + Where: ‘w0’ is an ambiguous type variable To use the inferred type, enable PartialTypeSignatures • In the type ‘_ -> _f’ In the type signature: f2 :: _ -> _f T10615.hs:8:6: error: - • Couldn't match type ‘_f’ with ‘b0 -> a0’ + • Couldn't match type ‘_f’ with ‘b0 -> w0’ + Expected: w0 -> _f + Actual: w0 -> b0 -> w0 ‘_f’ is a rigid type variable bound by - the inferred type of f2 :: a0 -> _f + the inferred type of f2 :: w0 -> _f at T10615.hs:7:1-13 - Expected type: a0 -> _f - Actual type: a0 -> b0 -> a0 • In the expression: const In an equation for ‘f2’: f2 = const - • Relevant bindings include f2 :: a0 -> _f (bound at T10615.hs:8:1) + • Relevant bindings include f2 :: w0 -> _f (bound at T10615.hs:8:1) diff --git a/testsuite/tests/partial-sigs/should_fail/T14040a.stderr b/testsuite/tests/partial-sigs/should_fail/T14040a.stderr index 1d122cf590..be667ec3a6 100644 --- a/testsuite/tests/partial-sigs/should_fail/T14040a.stderr +++ b/testsuite/tests/partial-sigs/should_fail/T14040a.stderr @@ -1,20 +1,45 @@ -T14040a.hs:21:18: error: - • Cannot generalise type; skolem ‘z’ would escape its scope - if I tried to quantify (_1 :: WeirdList z) in this type: - forall a1 (wl :: WeirdList a1) - (p :: forall x. x -> WeirdList x -> *). - Sing @(WeirdList a1) wl - -> (forall y. p @x0 _0 ('WeirdNil @x0)) - -> (forall z (x :: z) (xs :: WeirdList (WeirdList z)). - Sing @z x - -> Sing @(WeirdList (WeirdList z)) xs - -> p @(WeirdList z) _1 xs - -> p @z _2 ('WeirdCons @z x xs)) - -> p @a1 _3 wl - (Indeed, I sometimes struggle even printing this correctly, - due to its ill-scoped nature.) - • In the type signature: +T14040a.hs:26:46: error: + • Couldn't match kind ‘k1’ with ‘WeirdList z’ + Expected kind ‘WeirdList k1’, + but ‘xs’ has kind ‘WeirdList (WeirdList z)’ + because kind variable ‘z’ would escape its scope + This (rigid, skolem) kind variable is bound by + ‘forall (z :: Type) (x :: z) (xs :: WeirdList (WeirdList z)). + Sing x -> Sing xs -> p _ xs -> p _ (WeirdCons x xs)’ + at T14040a.hs:(25,19)-(27,41) + • In the second argument of ‘p’, namely ‘xs’ + In the type ‘Sing wl + -> (forall (y :: Type). p _ WeirdNil) + -> (forall (z :: Type) (x :: z) (xs :: WeirdList (WeirdList z)). + Sing x -> Sing xs -> p _ xs -> p _ (WeirdCons x xs)) + -> p _ wl’ + In the type signature: + elimWeirdList :: forall (a :: Type) + (wl :: WeirdList a) + (p :: forall (x :: Type). x -> WeirdList x -> Type). + Sing wl + -> (forall (y :: Type). p _ WeirdNil) + -> (forall (z :: Type) (x :: z) (xs :: WeirdList (WeirdList z)). + Sing x -> Sing xs -> p _ xs -> p _ (WeirdCons x xs)) + -> p _ wl + +T14040a.hs:27:27: error: + • Couldn't match kind ‘k0’ with ‘z’ + Expected kind ‘WeirdList k0’, + but ‘WeirdCons x xs’ has kind ‘WeirdList z’ + because kind variable ‘z’ would escape its scope + This (rigid, skolem) kind variable is bound by + ‘forall (z :: Type) (x :: z) (xs :: WeirdList (WeirdList z)). + Sing x -> Sing xs -> p _ xs -> p _ (WeirdCons x xs)’ + at T14040a.hs:(25,19)-(27,41) + • In the second argument of ‘p’, namely ‘(WeirdCons x xs)’ + In the type ‘Sing wl + -> (forall (y :: Type). p _ WeirdNil) + -> (forall (z :: Type) (x :: z) (xs :: WeirdList (WeirdList z)). + Sing x -> Sing xs -> p _ xs -> p _ (WeirdCons x xs)) + -> p _ wl’ + In the type signature: elimWeirdList :: forall (a :: Type) (wl :: WeirdList a) (p :: forall (x :: Type). x -> WeirdList x -> Type). diff --git a/testsuite/tests/partial-sigs/should_fail/T14584.stderr b/testsuite/tests/partial-sigs/should_fail/T14584.stderr index 372ca3fba2..ced11e50a2 100644 --- a/testsuite/tests/partial-sigs/should_fail/T14584.stderr +++ b/testsuite/tests/partial-sigs/should_fail/T14584.stderr @@ -11,7 +11,12 @@ T14584.hs:56:41: warning: [-Wdeferred-type-errors (in -Wdefault)] act @_ @_ @act (fromSing @m (sing @m @a :: Sing _)) T14584.hs:56:50: warning: [-Wdeferred-type-errors (in -Wdefault)] - • Expected kind ‘m1’, but ‘a’ has kind ‘*’ + • Could not deduce: m1 ~ * + from the context: (Action act, Monoid a, Good m1) + bound by the instance declaration at T14584.hs:54:10-89 + ‘m1’ is a rigid type variable bound by + the instance declaration + at T14584.hs:54:10-89 • In the type ‘a’ In the second argument of ‘fromSing’, namely ‘(sing @m @a :: Sing _)’ diff --git a/testsuite/tests/partial-sigs/should_fail/T14584a.stderr b/testsuite/tests/partial-sigs/should_fail/T14584a.stderr index 8c98b76ae2..9d7ab35dd5 100644 --- a/testsuite/tests/partial-sigs/should_fail/T14584a.stderr +++ b/testsuite/tests/partial-sigs/should_fail/T14584a.stderr @@ -6,6 +6,10 @@ T14584a.hs:12:5: warning: [-Wdeferred-type-errors (in -Wdefault)] T14584a.hs:12:9: warning: [-Wdeferred-type-errors (in -Wdefault)] • Expected a type, but ‘m’ has kind ‘k2’ + ‘k2’ is a rigid type variable bound by + the type signature for: + f :: forall {k2} (m :: k2). () + at T14584a.hs:11:1-17 • In the type ‘m’ In the expression: id @m :: _ In an equation for ‘f’: f = id @m :: _ @@ -23,6 +27,10 @@ T14584a.hs:12:14: warning: [-Wpartial-type-signatures (in -Wdefault)] T14584a.hs:15:17: warning: [-Wdeferred-type-errors (in -Wdefault)] • Expected a type, but ‘m’ has kind ‘k2’ + ‘k2’ is a rigid type variable bound by + the type signature for: + g :: forall {k2} (m :: k2). () + at T14584a.hs:14:1-17 • In the type ‘m’ In the expression: id @m In an equation for ‘h’: h = id @m diff --git a/testsuite/tests/partial-sigs/should_fail/TidyClash.stderr b/testsuite/tests/partial-sigs/should_fail/TidyClash.stderr index 6ec4c440cc..fbbfc6e4c9 100644 --- a/testsuite/tests/partial-sigs/should_fail/TidyClash.stderr +++ b/testsuite/tests/partial-sigs/should_fail/TidyClash.stderr @@ -1,17 +1,17 @@ TidyClash.hs:8:19: error: - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: w_ -> (w_, _ -> _1) + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: w_ -> (w_, w -> w1) at TidyClash.hs:9:1-28 To use the inferred type, enable PartialTypeSignatures • In the type ‘w_ -> (w_, _ -> _)’ In the type signature: bar :: w_ -> (w_, _ -> _) TidyClash.hs:8:24: error: - • Found type wildcard ‘_’ standing for ‘_1’ - Where: ‘_1’ is a rigid type variable bound by - the inferred type of bar :: w_ -> (w_, _ -> _1) + • Found type wildcard ‘_’ standing for ‘w1’ + Where: ‘w1’ is a rigid type variable bound by + the inferred type of bar :: w_ -> (w_, w -> w1) at TidyClash.hs:9:1-28 To use the inferred type, enable PartialTypeSignatures • In the type ‘w_ -> (w_, _ -> _)’ diff --git a/testsuite/tests/partial-sigs/should_fail/TidyClash2.stderr b/testsuite/tests/partial-sigs/should_fail/TidyClash2.stderr index a2c63ecbbc..7e6b1da683 100644 --- a/testsuite/tests/partial-sigs/should_fail/TidyClash2.stderr +++ b/testsuite/tests/partial-sigs/should_fail/TidyClash2.stderr @@ -1,26 +1,26 @@ TidyClash2.hs:13:20: error: - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of barry :: _ -> _1 -> t + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of barry :: w -> w1 -> t at TidyClash2.hs:14:1-40 To use the inferred type, enable PartialTypeSignatures • In the type ‘_ -> _ -> t’ In the type signature: barry :: forall t. _ -> _ -> t TidyClash2.hs:13:25: error: - • Found type wildcard ‘_’ standing for ‘_1’ - Where: ‘_1’ is a rigid type variable bound by - the inferred type of barry :: _ -> _1 -> t + • Found type wildcard ‘_’ standing for ‘w1’ + Where: ‘w1’ is a rigid type variable bound by + the inferred type of barry :: w -> w1 -> t at TidyClash2.hs:14:1-40 To use the inferred type, enable PartialTypeSignatures • In the type ‘_ -> _ -> t’ In the type signature: barry :: forall t. _ -> _ -> t TidyClash2.hs:14:13: error: - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of barry :: _ -> _1 -> t + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of barry :: w -> w1 -> t at TidyClash2.hs:14:1-40 To use the inferred type, enable PartialTypeSignatures • In a pattern type signature: _ @@ -28,12 +28,12 @@ TidyClash2.hs:14:13: error: In an equation for ‘barry’: barry (x :: _) (y :: _) = undefined :: _ • Relevant bindings include - barry :: _ -> _1 -> t (bound at TidyClash2.hs:14:1) + barry :: w -> w1 -> t (bound at TidyClash2.hs:14:1) TidyClash2.hs:14:22: error: - • Found type wildcard ‘_’ standing for ‘_1’ - Where: ‘_1’ is a rigid type variable bound by - the inferred type of barry :: _ -> _1 -> t + • Found type wildcard ‘_’ standing for ‘w1’ + Where: ‘w1’ is a rigid type variable bound by + the inferred type of barry :: w -> w1 -> t at TidyClash2.hs:14:1-40 To use the inferred type, enable PartialTypeSignatures • In a pattern type signature: _ @@ -41,13 +41,13 @@ TidyClash2.hs:14:22: error: In an equation for ‘barry’: barry (x :: _) (y :: _) = undefined :: _ • Relevant bindings include - x :: _ (bound at TidyClash2.hs:14:8) - barry :: _ -> _1 -> t (bound at TidyClash2.hs:14:1) + x :: w (bound at TidyClash2.hs:14:8) + barry :: w -> w1 -> t (bound at TidyClash2.hs:14:1) TidyClash2.hs:14:40: error: - • Found type wildcard ‘_’ standing for ‘_2’ - Where: ‘_2’ is a rigid type variable bound by - the inferred type of <expression> :: _2 + • Found type wildcard ‘_’ standing for ‘w2’ + Where: ‘w2’ is a rigid type variable bound by + the inferred type of <expression> :: w2 at TidyClash2.hs:14:40 To use the inferred type, enable PartialTypeSignatures • In an expression type signature: _ @@ -55,6 +55,6 @@ TidyClash2.hs:14:40: error: In an equation for ‘barry’: barry (x :: _) (y :: _) = undefined :: _ • Relevant bindings include - y :: _1 (bound at TidyClash2.hs:14:17) - x :: _ (bound at TidyClash2.hs:14:8) - barry :: _ -> _1 -> t (bound at TidyClash2.hs:14:1) + y :: w1 (bound at TidyClash2.hs:14:17) + x :: w (bound at TidyClash2.hs:14:8) + barry :: w -> w1 -> t (bound at TidyClash2.hs:14:1) diff --git a/testsuite/tests/partial-sigs/should_fail/WildcardInstantiations.stderr b/testsuite/tests/partial-sigs/should_fail/WildcardInstantiations.stderr index a6c21368c2..a7e31fd8c9 100644 --- a/testsuite/tests/partial-sigs/should_fail/WildcardInstantiations.stderr +++ b/testsuite/tests/partial-sigs/should_fail/WildcardInstantiations.stderr @@ -24,25 +24,25 @@ WildcardInstantiations.hs:5:30: error: WildcardInstantiations.hs:8:8: error: • Found type wildcard ‘_’ standing for ‘t’ Where: ‘t’ is a rigid type variable bound by - the inferred type of bar :: t -> (t -> _) -> _ + the inferred type of bar :: t -> (t -> w) -> w at WildcardInstantiations.hs:9:1-13 To use the inferred type, enable PartialTypeSignatures • In the type ‘_ -> _ -> _’ In the type signature: bar :: _ -> _ -> _ WildcardInstantiations.hs:8:13: error: - • Found type wildcard ‘_’ standing for ‘t -> _’ - Where: ‘t’, ‘_’ are rigid type variables bound by - the inferred type of bar :: t -> (t -> _) -> _ + • Found type wildcard ‘_’ standing for ‘t -> w’ + Where: ‘t’, ‘w’ are rigid type variables bound by + the inferred type of bar :: t -> (t -> w) -> w at WildcardInstantiations.hs:9:1-13 To use the inferred type, enable PartialTypeSignatures • In the type ‘_ -> _ -> _’ In the type signature: bar :: _ -> _ -> _ WildcardInstantiations.hs:8:18: error: - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: t -> (t -> _) -> _ + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: t -> (t -> w) -> w at WildcardInstantiations.hs:9:1-13 To use the inferred type, enable PartialTypeSignatures • In the type ‘_ -> _ -> _’ diff --git a/testsuite/tests/partial-sigs/should_fail/WildcardsInPatternAndExprSig.stderr b/testsuite/tests/partial-sigs/should_fail/WildcardsInPatternAndExprSig.stderr index d75a630d04..726b43898e 100644 --- a/testsuite/tests/partial-sigs/should_fail/WildcardsInPatternAndExprSig.stderr +++ b/testsuite/tests/partial-sigs/should_fail/WildcardsInPatternAndExprSig.stderr @@ -1,34 +1,34 @@ WildcardsInPatternAndExprSig.hs:4:18: error: - • Found type wildcard ‘_a’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: Maybe [_] -> _ -> [_] + • Found type wildcard ‘_a’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: Maybe [w] -> w -> [w] at WildcardsInPatternAndExprSig.hs:4:1-68 To use the inferred type, enable PartialTypeSignatures • In a pattern type signature: _a In the pattern: x :: _a In the pattern: [x :: _a] • Relevant bindings include - bar :: Maybe [_] -> _ -> [_] + bar :: Maybe [w] -> w -> [w] (bound at WildcardsInPatternAndExprSig.hs:4:1) WildcardsInPatternAndExprSig.hs:4:25: error: - • Found type wildcard ‘_’ standing for ‘[_]’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: Maybe [_] -> _ -> [_] + • Found type wildcard ‘_’ standing for ‘[w]’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: Maybe [w] -> w -> [w] at WildcardsInPatternAndExprSig.hs:4:1-68 To use the inferred type, enable PartialTypeSignatures • In a pattern type signature: _ In the pattern: [x :: _a] :: _ In the pattern: Just ([x :: _a] :: _) • Relevant bindings include - bar :: Maybe [_] -> _ -> [_] + bar :: Maybe [w] -> w -> [w] (bound at WildcardsInPatternAndExprSig.hs:4:1) WildcardsInPatternAndExprSig.hs:4:38: error: - • Found type wildcard ‘_b’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: Maybe [_] -> _ -> [_] + • Found type wildcard ‘_b’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: Maybe [w] -> w -> [w] at WildcardsInPatternAndExprSig.hs:4:1-68 To use the inferred type, enable PartialTypeSignatures • In a pattern type signature: Maybe [_b] @@ -37,13 +37,13 @@ WildcardsInPatternAndExprSig.hs:4:38: error: bar (Just ([x :: _a] :: _) :: Maybe [_b]) (z :: _c) = [x, z] :: [_d] • Relevant bindings include - bar :: Maybe [_] -> _ -> [_] + bar :: Maybe [w] -> w -> [w] (bound at WildcardsInPatternAndExprSig.hs:4:1) WildcardsInPatternAndExprSig.hs:4:49: error: - • Found type wildcard ‘_c’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: Maybe [_] -> _ -> [_] + • Found type wildcard ‘_c’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: Maybe [w] -> w -> [w] at WildcardsInPatternAndExprSig.hs:4:1-68 To use the inferred type, enable PartialTypeSignatures • In a pattern type signature: _c @@ -52,14 +52,14 @@ WildcardsInPatternAndExprSig.hs:4:49: error: bar (Just ([x :: _a] :: _) :: Maybe [_b]) (z :: _c) = [x, z] :: [_d] • Relevant bindings include - x :: _ (bound at WildcardsInPatternAndExprSig.hs:4:13) - bar :: Maybe [_] -> _ -> [_] + x :: w (bound at WildcardsInPatternAndExprSig.hs:4:13) + bar :: Maybe [w] -> w -> [w] (bound at WildcardsInPatternAndExprSig.hs:4:1) WildcardsInPatternAndExprSig.hs:4:66: error: - • Found type wildcard ‘_d’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of bar :: Maybe [_] -> _ -> [_] + • Found type wildcard ‘_d’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of bar :: Maybe [w] -> w -> [w] at WildcardsInPatternAndExprSig.hs:4:1-68 To use the inferred type, enable PartialTypeSignatures • In an expression type signature: [_d] @@ -68,7 +68,7 @@ WildcardsInPatternAndExprSig.hs:4:66: error: bar (Just ([x :: _a] :: _) :: Maybe [_b]) (z :: _c) = [x, z] :: [_d] • Relevant bindings include - z :: _ (bound at WildcardsInPatternAndExprSig.hs:4:44) - x :: _ (bound at WildcardsInPatternAndExprSig.hs:4:13) - bar :: Maybe [_] -> _ -> [_] + z :: w (bound at WildcardsInPatternAndExprSig.hs:4:44) + x :: w (bound at WildcardsInPatternAndExprSig.hs:4:13) + bar :: Maybe [w] -> w -> [w] (bound at WildcardsInPatternAndExprSig.hs:4:1) diff --git a/testsuite/tests/partial-sigs/should_run/T15415.stderr b/testsuite/tests/partial-sigs/should_run/T15415.stderr index a43f80e6bd..1070a07ca8 100644 --- a/testsuite/tests/partial-sigs/should_run/T15415.stderr +++ b/testsuite/tests/partial-sigs/should_run/T15415.stderr @@ -1,8 +1,8 @@ <interactive>:1:7: error: - • Found type wildcard ‘_’ standing for ‘_0 :: k0’ + • Found type wildcard ‘_’ standing for ‘w0 :: k0’ Where: ‘k0’ is an ambiguous type variable - ‘_0’ is an ambiguous type variable + ‘w0’ is an ambiguous type variable To use the inferred type, enable PartialTypeSignatures • In the first argument of ‘Proxy’, namely ‘_’ In the type ‘Proxy _’ @@ -15,16 +15,16 @@ In the type ‘Proxy (Maybe :: _)’ <interactive>:1:11: error: - • Found type wildcard ‘_’ standing for ‘_0’ - Where: ‘_0’ is an ambiguous type variable + • Found type wildcard ‘_’ standing for ‘w0’ + Where: ‘w0’ is an ambiguous type variable To use the inferred type, enable PartialTypeSignatures • In the first argument of ‘Dependent’, namely ‘_’ In the type ‘Dependent _’ <interactive>:1:7: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘_0 :: k0’ + • Found type wildcard ‘_’ standing for ‘w0 :: k0’ Where: ‘k0’ is an ambiguous type variable - ‘_0’ is an ambiguous type variable + ‘w0’ is an ambiguous type variable • In the first argument of ‘Proxy’, namely ‘_’ In the type ‘Proxy _’ @@ -35,7 +35,7 @@ In the type ‘Proxy (Maybe :: _)’ <interactive>:1:11: warning: [-Wpartial-type-signatures (in -Wdefault)] - • Found type wildcard ‘_’ standing for ‘_0’ - Where: ‘_0’ is an ambiguous type variable + • Found type wildcard ‘_’ standing for ‘w0’ + Where: ‘w0’ is an ambiguous type variable • In the first argument of ‘Dependent’, namely ‘_’ In the type ‘Dependent _’ diff --git a/testsuite/tests/partial-sigs/should_run/T15415.stdout b/testsuite/tests/partial-sigs/should_run/T15415.stdout index 17af08faea..709da2f17c 100644 --- a/testsuite/tests/partial-sigs/should_run/T15415.stdout +++ b/testsuite/tests/partial-sigs/should_run/T15415.stdout @@ -1,6 +1,6 @@ Proxy _ :: * Proxy (Maybe :: _) :: * -Dependent _ :: _ -> * +Dependent _ :: w -> * Proxy _ :: * Proxy (Maybe :: _) :: * -Dependent _ :: _ -> * +Dependent _ :: w -> * diff --git a/testsuite/tests/patsyn/should_compile/T17775-singleton.hs b/testsuite/tests/patsyn/should_compile/T17775-singleton.hs new file mode 100644 index 0000000000..651dff583a --- /dev/null +++ b/testsuite/tests/patsyn/should_compile/T17775-singleton.hs @@ -0,0 +1,18 @@ +{-# LANGUAGE PatternSynonyms #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE RankNTypes #-} +{-# LANGUAGE ViewPatterns #-} +module Bug where + +-- Ryan Scott (on MR !2600) said this failed + +type T = forall a. a -> () + +toT :: () -> T +toT x _ = x + +pattern ToT :: T -> () +pattern ToT{x} <- (toT -> x) + +-- f (toT -> (x::T)) = True + diff --git a/testsuite/tests/patsyn/should_compile/all.T b/testsuite/tests/patsyn/should_compile/all.T index 6ef1928768..75be0c68b2 100644 --- a/testsuite/tests/patsyn/should_compile/all.T +++ b/testsuite/tests/patsyn/should_compile/all.T @@ -78,3 +78,4 @@ test('T14394', normal, ghci_script, ['T14394.script']) test('T14498', normal, compile, ['']) test('T16682', [extra_files(['T16682.hs', 'T16682a.hs'])], multimod_compile, ['T16682', '-v0 -fwarn-incomplete-patterns -fno-code']) +test('T17775-singleton', normal, compile, ['']) diff --git a/testsuite/tests/patsyn/should_fail/T11010.stderr b/testsuite/tests/patsyn/should_fail/T11010.stderr index 6e3aae58f5..28216760ee 100644 --- a/testsuite/tests/patsyn/should_fail/T11010.stderr +++ b/testsuite/tests/patsyn/should_fail/T11010.stderr @@ -1,13 +1,13 @@ T11010.hs:9:36: error: • Couldn't match type ‘a1’ with ‘Int’ + Expected: a -> b + Actual: a1 -> b ‘a1’ is a rigid type variable bound by a pattern with constructor: Fun :: forall a b. String -> (a -> b) -> Expr a -> Expr b, in a pattern synonym declaration at T11010.hs:9:26-36 - Expected type: a -> b - Actual type: a1 -> b • In the declaration for pattern synonym ‘IntFun’ • Relevant bindings include x :: Expr a1 (bound at T11010.hs:9:36) diff --git a/testsuite/tests/patsyn/should_fail/T11039.stderr b/testsuite/tests/patsyn/should_fail/T11039.stderr index 14d67a2bb2..f8f4d35768 100644 --- a/testsuite/tests/patsyn/should_fail/T11039.stderr +++ b/testsuite/tests/patsyn/should_fail/T11039.stderr @@ -1,10 +1,10 @@ T11039.hs:8:15: error: • Couldn't match type ‘f’ with ‘A’ + Expected: f a + Actual: A a ‘f’ is a rigid type variable bound by the signature for pattern synonym ‘Q’ at T11039.hs:7:1-38 - Expected type: f a - Actual type: A a • In the pattern: A a In the declaration for pattern synonym ‘Q’ diff --git a/testsuite/tests/patsyn/should_fail/T14552.stderr b/testsuite/tests/patsyn/should_fail/T14552.stderr index b9b6b8448b..34ee266cdd 100644 --- a/testsuite/tests/patsyn/should_fail/T14552.stderr +++ b/testsuite/tests/patsyn/should_fail/T14552.stderr @@ -1,8 +1,8 @@ T14552.hs:22:9: error: • Cannot generalise type; skolem ‘k’ would escape its scope - if I tried to quantify (aa0 :: k) in this type: - forall k (w :: k --> *). Exp a0 (F @k @(*) w aa0) + if I tried to quantify (t0 :: k) in this type: + forall k (w :: k --> *). Exp a0 (F @k @(*) w t0) (Indeed, I sometimes struggle even printing this correctly, due to its ill-scoped nature.) • In the declaration for pattern synonym ‘FOO’ diff --git a/testsuite/tests/patsyn/should_fail/T15685.stderr b/testsuite/tests/patsyn/should_fail/T15685.stderr index 7f01ebc479..37627b852b 100644 --- a/testsuite/tests/patsyn/should_fail/T15685.stderr +++ b/testsuite/tests/patsyn/should_fail/T15685.stderr @@ -1,6 +1,11 @@ T15685.hs:13:24: error: • Couldn't match kind ‘a1’ with ‘[k0]’ + When matching types + f :: a1 -> * + NP a0 :: [k0] -> * + Expected: f a2 + Actual: NP a0 b0 ‘a1’ is untouchable inside the constraints: as ~ (a2 : as1) bound by a pattern with constructor: @@ -12,11 +17,6 @@ T15685.hs:13:24: error: the inferred type of HereNil :: NS f as at T15685.hs:13:9-15 Possible fix: add a type signature for ‘HereNil’ - When matching types - f :: a1 -> * - NP a0 :: [k0] -> * - Expected type: f a2 - Actual type: NP a0 b0 • In the pattern: Nil In the pattern: Here Nil In the declaration for pattern synonym ‘HereNil’ diff --git a/testsuite/tests/patsyn/should_fail/T15695.stderr b/testsuite/tests/patsyn/should_fail/T15695.stderr index 6ef415ad9b..2e834c6d08 100644 --- a/testsuite/tests/patsyn/should_fail/T15695.stderr +++ b/testsuite/tests/patsyn/should_fail/T15695.stderr @@ -13,6 +13,8 @@ T15695.hs:39:14: warning: [-Wdeferred-type-errors (in -Wdefault)] a3 -> ApplyT kind a b, in an equation for ‘from'’ at T15695.hs:39:8-21 + Expected: a4 + Actual: Either (NA 'VO) a3 ‘a2’ is a rigid type variable bound by a pattern with pattern synonym: ASSO :: forall kind (a :: kind) (b :: Ctx kind). @@ -24,8 +26,6 @@ T15695.hs:39:14: warning: [-Wdeferred-type-errors (in -Wdefault)] a3 -> ApplyT kind a b, in an equation for ‘from'’ at T15695.hs:39:8-21 - Expected type: a4 - Actual type: Either (NA 'VO) a3 • In the pattern: Left a In the pattern: ASSO (Left a) In an equation for ‘from'’: from' (ASSO (Left a)) = Here (a :* Nil) @@ -34,9 +34,10 @@ T15695.hs:39:14: warning: [-Wdeferred-type-errors (in -Wdefault)] (bound at T15695.hs:39:1) T15695.hs:40:26: warning: [-Wdeferred-type-errors (in -Wdefault)] - • Couldn't match type ‘a0 : as0’ with ‘'[]’ - Expected type: NS (NP NA) '[ '[ 'VO]] - Actual type: NS (NP NA) ('[ 'VO] : a0 : as0) + • Couldn't match type: a0 : as0 + with: '[] + Expected: NS (NP NA) '[ '[ 'VO]] + Actual: NS (NP NA) ('[ 'VO] : a0 : as0) • In the expression: There (Here undefined) In an equation for ‘from'’: from' (ASSO (Right b)) = There (Here undefined) diff --git a/testsuite/tests/patsyn/should_fail/mono.stderr b/testsuite/tests/patsyn/should_fail/mono.stderr index 8f370ce2f0..264579f91b 100644 --- a/testsuite/tests/patsyn/should_fail/mono.stderr +++ b/testsuite/tests/patsyn/should_fail/mono.stderr @@ -1,8 +1,8 @@ mono.hs:7:4: error: • Couldn't match type ‘Bool’ with ‘Int’ - Expected type: [Bool] - Actual type: [Int] + Expected: [Bool] + Actual: [Int] • In the pattern: Single x In an equation for ‘f’: f (Single x) = x diff --git a/testsuite/tests/perf/compiler/T10547.stderr b/testsuite/tests/perf/compiler/T10547.stderr index f0935d55f0..bd07bc120e 100644 --- a/testsuite/tests/perf/compiler/T10547.stderr +++ b/testsuite/tests/perf/compiler/T10547.stderr @@ -1,11 +1,11 @@ -T10547.hs:35:25: - Couldn't match type ‘Bool’ with ‘Char’ - Expected type: (T12, Char) - Actual type: (S12, Bool) +T10547.hs:35:25: error: + • Couldn't match type ‘Bool’ with ‘Char’ + Expected: (T12, Char) + Actual: (S12, Bool) Type synonyms expanded: Expected type: (Int, Char) Actual type: (Int, Bool) - In the second argument of ‘f’, namely ‘b’ + • In the second argument of ‘f’, namely ‘b’ In the second argument of ‘const’, namely ‘(f a b)’ In the expression: const 1 (f a b) diff --git a/testsuite/tests/perf/compiler/T16473.hs b/testsuite/tests/perf/compiler/T16473.hs index 8a9751e306..14dc7412f2 100644 --- a/testsuite/tests/perf/compiler/T16473.hs +++ b/testsuite/tests/perf/compiler/T16473.hs @@ -48,7 +48,7 @@ instance Functor (Semantic f) where {-# INLINE fmap #-} instance Applicative (Semantic f) where - pure a = Semantic $ const $ pure a + pure a = Semantic (\x -> const (pure a) x) {-# INLINE pure #-} Semantic f <*> Semantic a = Semantic $ \k -> f k <*> a k {-# INLINE (<*>) #-} diff --git a/testsuite/tests/polykinds/KindVType.stderr b/testsuite/tests/polykinds/KindVType.stderr index feb1417675..bf8c99c03b 100644 --- a/testsuite/tests/polykinds/KindVType.stderr +++ b/testsuite/tests/polykinds/KindVType.stderr @@ -1,7 +1,7 @@ KindVType.hs:8:8: error: • Couldn't match type ‘Int’ with ‘Maybe’ - Expected type: Proxy Maybe - Actual type: Proxy Int + Expected: Proxy Maybe + Actual: Proxy Int • In the expression: Proxy :: Proxy Int In an equation for ‘foo’: foo = (Proxy :: Proxy Int) diff --git a/testsuite/tests/polykinds/T10503.hs b/testsuite/tests/polykinds/T10503.hs index 2b9900652f..d352ce720f 100644 --- a/testsuite/tests/polykinds/T10503.hs +++ b/testsuite/tests/polykinds/T10503.hs @@ -1,9 +1,10 @@ {-# LANGUAGE RankNTypes, PolyKinds, DataKinds, TypeFamilies #-} module GHCBug where +import Data.Kind data Proxy p = Proxy -data KProxy (a :: *) = KProxy +data KProxy (a :: Type) = KProxy -h :: forall k r . (Proxy ('KProxy :: KProxy k) ~ Proxy ('KProxy :: KProxy *) => r) -> r -h = undefined +h :: forall k r . (Proxy ('KProxy :: KProxy k) ~ Proxy ('KProxy :: KProxy Type) => r) -> r +h x = undefined diff --git a/testsuite/tests/polykinds/T10503.stderr b/testsuite/tests/polykinds/T10503.stderr deleted file mode 100644 index 0895bdba26..0000000000 --- a/testsuite/tests/polykinds/T10503.stderr +++ /dev/null @@ -1,17 +0,0 @@ - -T10503.hs:8:6: error: - • Could not deduce: k ~ * - from the context: Proxy 'KProxy ~ Proxy 'KProxy - bound by a type expected by the context: - (Proxy 'KProxy ~ Proxy 'KProxy) => r - at T10503.hs:8:6-87 - ‘k’ is a rigid type variable bound by - the type signature for: - h :: forall k r. ((Proxy 'KProxy ~ Proxy 'KProxy) => r) -> r - at T10503.hs:8:6-87 - • In the ambiguity check for ‘h’ - To defer the ambiguity check to use sites, enable AllowAmbiguousTypes - In the type signature: - h :: forall k r. - (Proxy ('KProxy :: KProxy k) ~ Proxy ('KProxy :: KProxy (*)) => r) - -> r diff --git a/testsuite/tests/polykinds/T11142.stderr b/testsuite/tests/polykinds/T11142.stderr index 4f5c5fcf29..780bbdc63f 100644 --- a/testsuite/tests/polykinds/T11142.stderr +++ b/testsuite/tests/polykinds/T11142.stderr @@ -1,17 +1,10 @@ T11142.hs:9:49: error: - • Expected kind ‘k1’, but ‘b’ has kind ‘k0’ + • Expected kind ‘k’, but ‘b’ has kind ‘k0’ + because kind variable ‘k’ would escape its scope + This (rigid, skolem) kind variable is bound by + ‘forall k (a :: k). SameKind a b’ + at T11142.hs:9:19-49 • In the second argument of ‘SameKind’, namely ‘b’ In the type signature: foo :: forall b. (forall k (a :: k). SameKind a b) -> () - -T11142.hs:10:7: error: - • Cannot instantiate unification variable ‘a0’ - with a type involving polytypes: - (forall k1 (a :: k1). SameKind a b) -> () - GHC doesn't yet support impredicative polymorphism - • In the expression: undefined - In an equation for ‘foo’: foo = undefined - • Relevant bindings include - foo :: (forall k1 (a :: k1). SameKind a b) -> () - (bound at T11142.hs:10:1) diff --git a/testsuite/tests/polykinds/T12444.stderr b/testsuite/tests/polykinds/T12444.stderr index 0ebd2986cf..0a75b049ec 100644 --- a/testsuite/tests/polykinds/T12444.stderr +++ b/testsuite/tests/polykinds/T12444.stderr @@ -1,13 +1,13 @@ T12444.hs:19:11: error: • Couldn't match type ‘b’ with ‘'Succ (c :+: b)’ + Expected: SNat ('Succ (c :+: b)) + Actual: SNat b ‘b’ is a rigid type variable bound by the type signature for: foo :: forall (c :: Nat) (b :: Nat). SNat ('Succ c) -> SNat b -> SNat ('Succ (c :+: b)) at T12444.hs:18:1-55 - Expected type: SNat ('Succ (c :+: b)) - Actual type: SNat b • In the expression: x In an equation for ‘foo’: foo _ x = x • Relevant bindings include diff --git a/testsuite/tests/polykinds/T12593.stderr b/testsuite/tests/polykinds/T12593.stderr index fcf194ba50..5ce7b07187 100644 --- a/testsuite/tests/polykinds/T12593.stderr +++ b/testsuite/tests/polykinds/T12593.stderr @@ -1,9 +1,16 @@ +T12593.hs:11:16: error: + • Expected kind ‘k0 -> k1 -> *’, but ‘Free k k1 k2 p’ has kind ‘*’ + • In the type signature: + run :: k2 q => + Free k k1 k2 p a b + -> (forall (c :: k) (d :: k1). p c d -> q c d) -> q a b + T12593.hs:12:31: error: • Expecting one more argument to ‘k’ Expected a type, but ‘k’ has kind - ‘((k0 -> Constraint) -> k1 -> *) -> Constraint’ + ‘((k2 -> Constraint) -> k3 -> *) -> Constraint’ • In the kind ‘k’ In the type signature: run :: k2 q => diff --git a/testsuite/tests/polykinds/T14172.stderr b/testsuite/tests/polykinds/T14172.stderr index 6a0d3927eb..d27f45bb9c 100644 --- a/testsuite/tests/polykinds/T14172.stderr +++ b/testsuite/tests/polykinds/T14172.stderr @@ -11,12 +11,10 @@ T14172.hs:6:46: error: In the type ‘(a -> f b) -> g a -> f (h _)’ T14172.hs:7:19: error: - • Occurs check: cannot construct the infinite type: a ~ g'0 a - Expected type: (f'0 a -> f (f'0 b)) - -> Compose f'0 g'0 a -> f (h a') - Actual type: (Unwrapped (Compose f'0 g'0 a) - -> f (Unwrapped (h a'))) - -> Compose f'0 g'0 a -> f (h a') + • Couldn't match type ‘a’ with ‘g'0 a’ + Expected: (f'0 a -> f (f'0 b)) -> Compose f'0 g'0 a -> f (h a') + Actual: (Unwrapped (Compose f'0 g'0 a) -> f (Unwrapped (h a'))) + -> Compose f'0 g'0 a -> f (h a') • In the first argument of ‘(.)’, namely ‘_Wrapping Compose’ In the expression: _Wrapping Compose . traverse In an equation for ‘traverseCompose’: diff --git a/testsuite/tests/polykinds/T14265.stderr b/testsuite/tests/polykinds/T14265.stderr index fa951ad920..cf3ab9acf3 100644 --- a/testsuite/tests/polykinds/T14265.stderr +++ b/testsuite/tests/polykinds/T14265.stderr @@ -1,8 +1,8 @@ T14265.hs:7:12: error: - • Found type wildcard ‘_’ standing for ‘_ :: k’ - Where: ‘k’, ‘_’ are rigid type variables bound by - the inferred type of f :: proxy _ -> () + • Found type wildcard ‘_’ standing for ‘w :: k’ + Where: ‘k’, ‘w’ are rigid type variables bound by + the inferred type of f :: proxy w -> () at T14265.hs:8:1-8 To use the inferred type, enable PartialTypeSignatures • In the first argument of ‘proxy’, namely ‘_’ @@ -10,9 +10,9 @@ T14265.hs:7:12: error: In the type signature: f :: proxy _ -> () T14265.hs:10:15: error: - • Found type wildcard ‘_’ standing for ‘_’ - Where: ‘_’ is a rigid type variable bound by - the inferred type of foo :: StateT _ _1 () + • Found type wildcard ‘_’ standing for ‘w’ + Where: ‘w’ is a rigid type variable bound by + the inferred type of foo :: StateT w w1 () at T14265.hs:11:1-15 To use the inferred type, enable PartialTypeSignatures • In the first argument of ‘StateT’, namely ‘_’ @@ -20,9 +20,9 @@ T14265.hs:10:15: error: In the type signature: foo :: StateT _ _ () T14265.hs:10:17: error: - • Found type wildcard ‘_’ standing for ‘_1 :: * -> *’ - Where: ‘_1’ is a rigid type variable bound by - the inferred type of foo :: StateT _ _1 () + • Found type wildcard ‘_’ standing for ‘w1 :: * -> *’ + Where: ‘w1’ is a rigid type variable bound by + the inferred type of foo :: StateT w w1 () at T14265.hs:11:1-15 To use the inferred type, enable PartialTypeSignatures • In the second argument of ‘StateT’, namely ‘_’ diff --git a/testsuite/tests/polykinds/T14520.stderr b/testsuite/tests/polykinds/T14520.stderr index b8a1ed1bf0..20e1b5cf33 100644 --- a/testsuite/tests/polykinds/T14520.stderr +++ b/testsuite/tests/polykinds/T14520.stderr @@ -2,5 +2,6 @@ T14520.hs:15:24: error: • Expected kind ‘bat w w’, but ‘Id’ has kind ‘XXX @a0 @(*) (XXX @a0 @(a0 ~>> *) kat0 b0) b0’ + The type variables ‘kat0’, ‘b0’ are ambiguous • In the first argument of ‘Sing’, namely ‘(Id :: bat w w)’ In the type signature: sId :: Sing w -> Sing (Id :: bat w w) diff --git a/testsuite/tests/polykinds/T14555.stderr b/testsuite/tests/polykinds/T14555.stderr index 66fb55ae4f..3861872124 100644 --- a/testsuite/tests/polykinds/T14555.stderr +++ b/testsuite/tests/polykinds/T14555.stderr @@ -1,6 +1,7 @@ T14555.hs:12:34: error: - • Expected kind ‘TYPE rep’, but ‘a -> b’ has kind ‘*’ + • Couldn't match kind ‘rep’ with ‘'GHC.Types.LiftedRep’ + Expected kind ‘TYPE rep’, but ‘a -> b’ has kind ‘*’ • In the second argument of ‘Exp’, namely ‘(a -> b)’ In the type ‘Exp xs (a -> b)’ In the definition of data constructor ‘Lam’ diff --git a/testsuite/tests/polykinds/T14563.stderr b/testsuite/tests/polykinds/T14563.stderr index 1265ec0e3a..2d81507659 100644 --- a/testsuite/tests/polykinds/T14563.stderr +++ b/testsuite/tests/polykinds/T14563.stderr @@ -1,6 +1,7 @@ T14563.hs:9:39: error: - • Expected kind ‘TYPE rep -> TYPE rep''’, + • Couldn't match kind ‘rep''’ with ‘'GHC.Types.LiftedRep’ + Expected kind ‘TYPE rep -> TYPE rep''’, but ‘h’ has kind ‘TYPE rep -> *’ • In the second argument of ‘Lan’, namely ‘h’ In the type ‘Lan g h a’ diff --git a/testsuite/tests/polykinds/T14580.stderr b/testsuite/tests/polykinds/T14580.stderr index 8658a8484a..154e191f7e 100644 --- a/testsuite/tests/polykinds/T14580.stderr +++ b/testsuite/tests/polykinds/T14580.stderr @@ -1,6 +1,7 @@ T14580.hs:8:32: error: - • Expected kind ‘Cat a’, but ‘iso :: cat a b’ has kind ‘cat a b’ + • Couldn't match kind ‘b’ with ‘a -> *’ + Expected kind ‘Cat a’, but ‘iso :: cat a b’ has kind ‘cat a b’ • In the first argument of ‘ISO’, namely ‘(iso :: cat a b)’ In the type ‘ISO (iso :: cat a b)’ In the type declaration for ‘<-->’ diff --git a/testsuite/tests/polykinds/T14846.stderr b/testsuite/tests/polykinds/T14846.stderr index edb19408b2..2d49b819a0 100644 --- a/testsuite/tests/polykinds/T14846.stderr +++ b/testsuite/tests/polykinds/T14846.stderr @@ -1,6 +1,8 @@ T14846.hs:38:8: error: • Couldn't match type ‘ríki’ with ‘Hom riki’ + Expected: ríki a a + Actual: Hom riki a a ‘ríki’ is a rigid type variable bound by the type signature for: i :: forall {k5} {k6} {cls3 :: k6 -> Constraint} (xx :: k5) @@ -8,8 +10,6 @@ T14846.hs:38:8: error: StructI xx a => ríki a a at T14846.hs:38:8-48 - Expected type: ríki a a - Actual type: Hom riki a a • When checking that instance signature for ‘i’ is more general than its signature in the class Instance sig: forall {k1} {k2} {cls :: k2 -> Constraint} (xx :: k1) @@ -22,35 +22,13 @@ T14846.hs:38:8: error: ríki a a In the instance declaration for ‘Category (Hom riki)’ -T14846.hs:39:12: error: - • Could not deduce (StructI xx1 structured0) - arising from a use of ‘struct’ - from the context: Category riki - bound by the instance declaration at T14846.hs:37:10-65 - or from: StructI xx a - bound by the type signature for: - i :: forall {k5} {k6} {cls3 :: k6 -> Constraint} (xx :: k5) - (a :: Struct cls3). - StructI xx a => - Hom riki a a - at T14846.hs:38:8-48 - The type variables ‘xx1’, ‘structured0’ are ambiguous - Relevant bindings include - i :: Hom riki a a (bound at T14846.hs:39:3) - These potential instance exist: - instance forall k (xx :: k) (cls :: k -> Constraint) - (structured :: Struct cls). - (Structured xx cls ~ structured, cls xx) => - StructI xx structured - -- Defined at T14846.hs:28:10 - • In the expression: struct :: AStruct (Structured a cls) - In the expression: case struct :: AStruct (Structured a cls) of - In an equation for ‘i’: - i = case struct :: AStruct (Structured a cls) of - T14846.hs:39:44: error: - • Expected kind ‘Struct cls3 -> Constraint’, + • Couldn't match kind ‘k4’ with ‘Struct cls3’ + Expected kind ‘Struct cls3 -> Constraint’, but ‘cls’ has kind ‘k4 -> Constraint’ + ‘k4’ is a rigid type variable bound by + the instance declaration + at T14846.hs:37:10-65 • In the second argument of ‘Structured’, namely ‘cls’ In the first argument of ‘AStruct’, namely ‘(Structured a cls)’ In an expression type signature: AStruct (Structured a cls) diff --git a/testsuite/tests/polykinds/T15881.stderr b/testsuite/tests/polykinds/T15881.stderr index 8f395735db..47cc5abf5c 100644 --- a/testsuite/tests/polykinds/T15881.stderr +++ b/testsuite/tests/polykinds/T15881.stderr @@ -1,6 +1,6 @@ T15881.hs:8:18: error: - • Occurs check: cannot construct the infinite kind: k0 ~ k0 -> * + • Expected kind ‘k0’, but ‘n’ has kind ‘k0 -> *’ • In the first argument of ‘n’, namely ‘n’ In the kind ‘n n’ In the data type declaration for ‘A’ diff --git a/testsuite/tests/polykinds/T16244.stderr b/testsuite/tests/polykinds/T16244.stderr index d261a70ba3..6b932ad285 100644 --- a/testsuite/tests/polykinds/T16244.stderr +++ b/testsuite/tests/polykinds/T16244.stderr @@ -1,6 +1,6 @@ T16244.hs:11:18: error: - • Couldn't match kind ‘k1’ with ‘k’ + • Expected kind ‘k’, but ‘b’ has kind ‘k1’ ‘k1’ is a rigid type variable bound by the class declaration for ‘C’ at T16244.hs:11:26 diff --git a/testsuite/tests/polykinds/T16245.stderr b/testsuite/tests/polykinds/T16245.stderr index e478fe4e5f..4f7cc415c2 100644 --- a/testsuite/tests/polykinds/T16245.stderr +++ b/testsuite/tests/polykinds/T16245.stderr @@ -1,6 +1,6 @@ T16245.hs:11:36: error: - • Couldn't match kind ‘k1’ with ‘k’ + • Expected kind ‘k’, but ‘b’ has kind ‘k1’ ‘k1’ is a rigid type variable bound by the class declaration for ‘C’ at T16245.hs:11:45 diff --git a/testsuite/tests/polykinds/T17841.stderr b/testsuite/tests/polykinds/T17841.stderr index 6157f55399..11243a4322 100644 --- a/testsuite/tests/polykinds/T17841.stderr +++ b/testsuite/tests/polykinds/T17841.stderr @@ -1,6 +1,9 @@ T17841.hs:7:45: error: • Expected a type, but ‘t’ has kind ‘k2’ + ‘k2’ is a rigid type variable bound by + the class declaration for ‘Foo’ + at T17841.hs:7:17 • In the kind ‘t’ In the first argument of ‘Proxy’, namely ‘(a :: t)’ In the type signature: foo :: Proxy (a :: t) diff --git a/testsuite/tests/polykinds/T17963.stderr b/testsuite/tests/polykinds/T17963.stderr index 84201e0de4..5cade1ded2 100644 --- a/testsuite/tests/polykinds/T17963.stderr +++ b/testsuite/tests/polykinds/T17963.stderr @@ -1,13 +1,12 @@ T17963.hs:15:23: error: - • Couldn't match a lifted type with an unlifted type - ‘rep1’ is a rigid type variable bound by - the class declaration for ‘Category'’ - at T17963.hs:13:27-29 + • Couldn't match kind ‘rep1’ with ‘'LiftedRep’ When matching kinds k0 :: * ob :: TYPE rep1 - Expected kind ‘ob’, but ‘a’ has kind ‘k0’ + ‘rep1’ is a rigid type variable bound by + the class declaration for ‘Category'’ + at T17963.hs:13:27-29 • In the first argument of ‘cat’, namely ‘a’ In the type signature: id' :: forall a. cat a a In the class declaration for ‘Category'’ diff --git a/testsuite/tests/polykinds/T7224.stderr b/testsuite/tests/polykinds/T7224.stderr index 774a4bce69..c9d2236206 100644 --- a/testsuite/tests/polykinds/T7224.stderr +++ b/testsuite/tests/polykinds/T7224.stderr @@ -1,12 +1,18 @@ T7224.hs:6:19: error: • Expected kind ‘i’, but ‘i’ has kind ‘*’ + ‘i’ is a rigid type variable bound by + the class declaration for ‘PMonad'’ + at T7224.hs:5:21 • In the first argument of ‘m’, namely ‘i’ In the type signature: ret' :: a -> m i i a In the class declaration for ‘PMonad'’ T7224.hs:7:14: error: • Expected kind ‘i’, but ‘i’ has kind ‘*’ + ‘i’ is a rigid type variable bound by + the class declaration for ‘PMonad'’ + at T7224.hs:5:21 • In the first argument of ‘m’, namely ‘i’ In the type signature: bind' :: m i j a -> (a -> m j k b) -> m i k b diff --git a/testsuite/tests/polykinds/T7230.stderr b/testsuite/tests/polykinds/T7230.stderr index 5c5055ea2a..f59e44d5cd 100644 --- a/testsuite/tests/polykinds/T7230.stderr +++ b/testsuite/tests/polykinds/T7230.stderr @@ -19,8 +19,8 @@ T7230.hs:48:32: error: Sing x -> Sing xs -> Sing (x : xs), in an equation for ‘crash’ at T7230.hs:48:17-26 - Expected type: SBool (Increasing xs) - Actual type: SBool (x :<<= x1) + Expected: SBool (Increasing xs) + Actual: SBool (x :<<= x1) • In the expression: x %:<<= y In an equation for ‘crash’: crash (SCons x (SCons y xs)) = x %:<<= y diff --git a/testsuite/tests/polykinds/T7278.stderr b/testsuite/tests/polykinds/T7278.stderr index 37b00a7a70..5f4ff6d18f 100644 --- a/testsuite/tests/polykinds/T7278.stderr +++ b/testsuite/tests/polykinds/T7278.stderr @@ -1,5 +1,8 @@ T7278.hs:9:43: error: - • Expected kind ‘* -> * -> *’, but ‘t’ has kind ‘k1’ + • Expected kind ‘* -> * -> *’, but ‘t’ has kind ‘k’ + ‘k’ is a rigid type variable bound by + the type signature for ‘f’ + at T7278.hs:9:1-49 • In the type signature: f :: (C (t :: k) (TF t)) => TF t p1 p0 -> t p1 p0 diff --git a/testsuite/tests/polykinds/T7328.stderr b/testsuite/tests/polykinds/T7328.stderr index 76f81555dd..d1ba591512 100644 --- a/testsuite/tests/polykinds/T7328.stderr +++ b/testsuite/tests/polykinds/T7328.stderr @@ -1,6 +1,6 @@ T7328.hs:8:34: error: - • Occurs check: cannot construct the infinite kind: k1 ~ k0 -> k1 + • Expected kind ‘k1’, but ‘f’ has kind ‘k0 -> k1’ • In the first argument of ‘Foo’, namely ‘f’ In the first argument of ‘Proxy’, namely ‘(Foo f)’ In the type signature: foo :: a ~ f i => Proxy (Foo f) diff --git a/testsuite/tests/polykinds/T7594.stderr b/testsuite/tests/polykinds/T7594.stderr index 5632e97707..ea5484d464 100644 --- a/testsuite/tests/polykinds/T7594.stderr +++ b/testsuite/tests/polykinds/T7594.stderr @@ -1,6 +1,8 @@ T7594.hs:37:12: error: • Couldn't match type ‘b’ with ‘IO ()’ + Expected: a -> b + Actual: a -> IO () ‘b’ is untouchable inside the constraints: (:&:) c0 Real a bound by a type expected by the context: @@ -10,8 +12,6 @@ T7594.hs:37:12: error: the inferred type of bar2 :: b at T7594.hs:37:1-19 Possible fix: add a type signature for ‘bar2’ - Expected type: a -> b - Actual type: a -> IO () • In the first argument of ‘app’, namely ‘print’ In the expression: app print q2 In an equation for ‘bar2’: bar2 = app print q2 diff --git a/testsuite/tests/polykinds/T7805.stderr b/testsuite/tests/polykinds/T7805.stderr index 9ca48645be..869ecc9200 100644 --- a/testsuite/tests/polykinds/T7805.stderr +++ b/testsuite/tests/polykinds/T7805.stderr @@ -1,6 +1,8 @@ T7805.hs:7:21: error: - Expected kind ‘forall a. a -> a’, but ‘x’ has kind ‘k0’ - In the first argument of ‘HR’, namely ‘x’ - In the first argument of ‘F’, namely ‘(HR x)’ - In the type instance declaration for ‘F’ + • Expected kind ‘forall a. a -> a’, but ‘x’ has kind ‘k0’ + Cannot instantiate unification variable ‘k0’ + with a kind involving polytypes: forall a. a -> a + • In the first argument of ‘HR’, namely ‘x’ + In the first argument of ‘F’, namely ‘(HR x)’ + In the type instance declaration for ‘F’ diff --git a/testsuite/tests/polykinds/T8616.stderr b/testsuite/tests/polykinds/T8616.stderr index 2a8b6482aa..653f3beb1a 100644 --- a/testsuite/tests/polykinds/T8616.stderr +++ b/testsuite/tests/polykinds/T8616.stderr @@ -1,24 +1,15 @@ T8616.hs:8:16: error: • Couldn't match kind ‘k1’ with ‘*’ + When matching types + Any :: k1 + Proxy kproxy :: * ‘k1’ is a rigid type variable bound by the type signature for: withSomeSing :: forall k1 (kproxy :: k1). Proxy kproxy at T8616.hs:7:1-52 - When matching types - a0 :: * - Any :: k1 • In the expression: undefined :: (Any :: k) In an equation for ‘withSomeSing’: withSomeSing = undefined :: (Any :: k) • Relevant bindings include withSomeSing :: Proxy kproxy (bound at T8616.hs:8:1) - -T8616.hs:8:30: error: - • Expected a type, but ‘Any :: k’ has kind ‘k1’ - • In an expression type signature: (Any :: k) - In the expression: undefined :: (Any :: k) - In an equation for ‘withSomeSing’: - withSomeSing = undefined :: (Any :: k) - • Relevant bindings include - withSomeSing :: Proxy kproxy (bound at T8616.hs:8:1) diff --git a/testsuite/tests/polykinds/T9017.stderr b/testsuite/tests/polykinds/T9017.stderr index 8acf58c9b5..2fc5bb1792 100644 --- a/testsuite/tests/polykinds/T9017.stderr +++ b/testsuite/tests/polykinds/T9017.stderr @@ -1,17 +1,17 @@ T9017.hs:8:7: error: • Couldn't match kind ‘k2’ with ‘*’ + When matching types + a0 :: * -> * -> * + a :: k2 -> k3 -> * + Expected: a b (m b) + Actual: a0 b0 (m0 b0) ‘k2’ is a rigid type variable bound by the type signature for: foo :: forall {k2} {k3} (a :: k2 -> k3 -> *) (b :: k2) (m :: k2 -> k3). a b (m b) at T9017.hs:7:1-16 - When matching types - a0 :: * -> * -> * - a :: k2 -> k3 -> * - Expected type: a b (m b) - Actual type: a0 a1 (m0 a1) • In the expression: arr return In an equation for ‘foo’: foo = arr return • Relevant bindings include diff --git a/testsuite/tests/polykinds/T9144.stderr b/testsuite/tests/polykinds/T9144.stderr index f58a57254b..dc3e13ed11 100644 --- a/testsuite/tests/polykinds/T9144.stderr +++ b/testsuite/tests/polykinds/T9144.stderr @@ -1,8 +1,8 @@ T9144.hs:34:26: error: • Couldn't match type ‘Integer’ with ‘FooTerm’ - Expected type: DemoteRep @Nat ('KProxy @Nat) - Actual type: DemoteRep @Foo ('KProxy @Foo) + Expected: DemoteRep @Nat ('KProxy @Nat) + Actual: DemoteRep @Foo ('KProxy @Foo) • In the first argument of ‘toSing’, namely ‘n’ In the expression: toSing n In the expression: diff --git a/testsuite/tests/polykinds/T9222.hs b/testsuite/tests/polykinds/T9222.hs index 3af1458427..d033b4016f 100644 --- a/testsuite/tests/polykinds/T9222.hs +++ b/testsuite/tests/polykinds/T9222.hs @@ -10,5 +10,8 @@ import Data.Proxy -- So this program is erroneous. (But the original ticket was -- a crash, and that's still fixed!) +-- Apr 2020: with simple subsumption (#17775), the type isn't +-- ambiguous any more + data Want :: (i,j) -> Type where Want :: (a ~ '(b,c) => Proxy b) -> Want a diff --git a/testsuite/tests/polykinds/T9222.stderr b/testsuite/tests/polykinds/T9222.stderr deleted file mode 100644 index c8e98be09a..0000000000 --- a/testsuite/tests/polykinds/T9222.stderr +++ /dev/null @@ -1,17 +0,0 @@ - -T9222.hs:14:3: error: - • Couldn't match type ‘c0’ with ‘c’ - ‘c0’ is untouchable - inside the constraints: a ~ '(b0, c0) - bound by a type expected by the context: - (a ~ '(b0, c0)) => Proxy b0 - at T9222.hs:14:3-43 - ‘c’ is a rigid type variable bound by - the type of the constructor ‘Want’: - forall {k1} {j1} (a :: (k1, j1)) (b :: k1) (c :: j1). - ((a ~ '(b, c)) => Proxy b) -> Want a - at T9222.hs:14:3-43 - • In the ambiguity check for ‘Want’ - To defer the ambiguity check to use sites, enable AllowAmbiguousTypes - In the definition of data constructor ‘Want’ - In the data type declaration for ‘Want’ diff --git a/testsuite/tests/polykinds/T9569.hs b/testsuite/tests/polykinds/T9569.hs index 634d742803..112037461a 100644 --- a/testsuite/tests/polykinds/T9569.hs +++ b/testsuite/tests/polykinds/T9569.hs @@ -9,18 +9,42 @@ data Proxy (c :: Constraint) class Deferrable (c :: Constraint) where defer :: Proxy c -> (c => a) -> a -deferPair :: (Deferrable c1, Deferrable c2) => - Proxy (c1,c2) -> ((c1,c2) => a) -> a +deferPair :: (Deferrable c1, Deferrable c2) + => Proxy (c1,c2) -> (((c1,c2) :: Constraint) => a) -> a + -- NB: ((c1,c2) :: Constraint) => blah + -- is different form + -- (c1,c2) => blah + -- The former has dict, the latter has two deferPair _ _ = undefined instance (Deferrable c1, Deferrable c2) => Deferrable (c1,c2) where -- defer p f = deferPair p f -- Succeeds defer = deferPair -- Fails +{- Notes Apr 2020. +~~~~~~~~~~~~~~~~~ +Note the careful type for deferPair! You can also say + +deferPair :: (Deferrable c1, Deferrable c2, d ~ (c1,c2)) + => Proxy (c1,c2) -> (d => a) -> a + +but NOT + +deferPair :: (Deferrable c1, Deferrable c2) + => Proxy (c1,c2) -> ((c1,c2) => a) -> a + +The point is that + (c1,c2) => a +is short for + c1 => c2 => a +-} + {- [G] Deferrable c1, Deferrable c2 - [W] Proxy (c1,c2) -> ((c1,c2) => a) -> a ~ Proxy (c1x,c2x) -> ((c1x,c2x) => ax) -> ax + [W] Proxy (c1,c2) -> ((c1,c2) => a) -> a + ~ + Proxy (c1x,c2x) -> ((c1x,c2x) => ax) -> ax [w] Deferrable c1x [w] Deferrable c2x -} diff --git a/testsuite/tests/polykinds/all.T b/testsuite/tests/polykinds/all.T index 87ee448e32..592c6b2fec 100644 --- a/testsuite/tests/polykinds/all.T +++ b/testsuite/tests/polykinds/all.T @@ -97,7 +97,7 @@ test('T8705', normal, compile, ['']) test('T8985', normal, compile, ['']) test('T9106', normal, compile_fail, ['']) test('T9144', normal, compile_fail, ['']) -test('T9222', normal, compile_fail, ['']) +test('T9222', normal, compile, ['']) test('T9264', normal, compile, ['']) test('T9263', normal, makefile_test, []) test('T9063', normal, compile, ['']) @@ -114,7 +114,7 @@ test('PolyInstances', normal, compile, ['']) test('T10041', normal, compile, ['']) test('T10451', normal, compile_fail, ['']) test('T10516', normal, compile_fail, ['']) -test('T10503', normal, compile_fail, ['']) +test('T10503', normal, compile, ['']) test('T10570', normal, compile_fail, ['']) test('T10670', normal, compile, ['']) test('T10670a', normal, compile, ['']) diff --git a/testsuite/tests/quantified-constraints/T15290a.stderr b/testsuite/tests/quantified-constraints/T15290a.stderr index 2efd784f31..7513fa4f9b 100644 --- a/testsuite/tests/quantified-constraints/T15290a.stderr +++ b/testsuite/tests/quantified-constraints/T15290a.stderr @@ -1,21 +1,19 @@ T15290a.hs:25:12: error: - • Couldn't match representation of type ‘m (Int, IntStateT m a1)’ - with that of ‘m (Int, StateT Int m a1)’ + • Couldn't match representation of type: m (Int, IntStateT m a1) + with that of: m (Int, StateT Int m a1) arising from a use of ‘coerce’ NB: We cannot know what roles the parameters to ‘m’ have; we must assume that the role is nominal • In the expression: coerce @(forall a. StateT Int m (StateT Int m a) -> StateT Int m a) - @(forall a. IntStateT m (IntStateT m a) -> IntStateT m a) - join + @(forall a. IntStateT m (IntStateT m a) -> IntStateT m a) join In an equation for ‘join’: join = coerce @(forall a. StateT Int m (StateT Int m a) -> StateT Int m a) - @(forall a. IntStateT m (IntStateT m a) -> IntStateT m a) - join + @(forall a. IntStateT m (IntStateT m a) -> IntStateT m a) join In the instance declaration for ‘Monad (IntStateT m)’ • Relevant bindings include join :: IntStateT m (IntStateT m a) -> IntStateT m a diff --git a/testsuite/tests/quantified-constraints/T15290b.stderr b/testsuite/tests/quantified-constraints/T15290b.stderr index 7dc1852c6d..1c96359d96 100644 --- a/testsuite/tests/quantified-constraints/T15290b.stderr +++ b/testsuite/tests/quantified-constraints/T15290b.stderr @@ -1,7 +1,7 @@ T15290b.hs:28:49: error: - • Couldn't match representation of type ‘f (m b)’ - with that of ‘f (T1 m b)’ + • Couldn't match representation of type: f (m b) + with that of: f (T1 m b) arising from the coercion of the method ‘traverse'’ from type ‘forall (f :: * -> *) a b. Applicative' f => diff --git a/testsuite/tests/quantified-constraints/T15918.stderr b/testsuite/tests/quantified-constraints/T15918.stderr index fa06b0e3f4..4ee54563c5 100644 --- a/testsuite/tests/quantified-constraints/T15918.stderr +++ b/testsuite/tests/quantified-constraints/T15918.stderr @@ -1,7 +1,7 @@ T15918.hs:19:19: error: - • Expected kind ‘(k0 -> *) -> Constraint’, - but ‘[]’ has kind ‘* -> *’ + • Couldn't match kind ‘*’ with ‘k0 -> *’ + Expected kind ‘(k0 -> *) -> Constraint’, but ‘[]’ has kind ‘* -> *’ • In the first argument of ‘Build’, namely ‘[]’ In an expression type signature: Build [] a In the expression: rev :: Build [] a diff --git a/testsuite/tests/rebindable/DoParamM.stderr b/testsuite/tests/rebindable/DoParamM.stderr index 8d3764067e..41b56ecb07 100644 --- a/testsuite/tests/rebindable/DoParamM.stderr +++ b/testsuite/tests/rebindable/DoParamM.stderr @@ -7,8 +7,8 @@ DoParamM.hs:146:25: error: DoParamM.hs:286:28: error: • Couldn't match type ‘Unlocked’ with ‘Locked’ - Expected type: LIO Locked Locked () - Actual type: LIO Unlocked Locked () + Expected: LIO Locked Locked () + Actual: LIO Unlocked Locked () • In a stmt of a 'do' block: tlock2_do In the expression: do tlock2_do @@ -20,8 +20,8 @@ DoParamM.hs:286:28: error: DoParamM.hs:302:37: error: • Couldn't match type ‘Locked’ with ‘Unlocked’ - Expected type: LIO Unlocked Unlocked () - Actual type: LIO Locked Unlocked () + Expected: LIO Unlocked Unlocked () + Actual: LIO Locked Unlocked () • In a stmt of a 'do' block: unlock In the expression: do tlock2_do diff --git a/testsuite/tests/rename/should_fail/T2993.stderr b/testsuite/tests/rename/should_fail/T2993.stderr index 4cae65ae88..4542ffeaf0 100644 --- a/testsuite/tests/rename/should_fail/T2993.stderr +++ b/testsuite/tests/rename/should_fail/T2993.stderr @@ -1,4 +1,4 @@ T2993.hs:7:13: error: - • Variable not in scope: (<**>) :: t -> (b -> b) -> t1 + • Variable not in scope: (<**>) :: t -> (a -> a) -> t1 • Perhaps you meant ‘<*>’ (imported from Prelude) diff --git a/testsuite/tests/saks/should_fail/saks007_fail.stderr b/testsuite/tests/saks/should_fail/saks007_fail.stderr index 431b5dede9..367cb8e022 100644 --- a/testsuite/tests/saks/should_fail/saks007_fail.stderr +++ b/testsuite/tests/saks/should_fail/saks007_fail.stderr @@ -1,8 +1,8 @@ saks007_fail.hs:15:10: error: • Couldn't match kind ‘'True’ with ‘'False’ - Expected kind: G (*) - Actual kind: F (*) + Expected: G (*) + Actual: F (*) • In the type ‘X Integer String’ In the definition of data constructor ‘MkX’ In the data declaration for ‘X’ diff --git a/testsuite/tests/saks/should_fail/saks_fail019.stderr b/testsuite/tests/saks/should_fail/saks_fail019.stderr index 5bdb26a933..30882c15ec 100644 --- a/testsuite/tests/saks/should_fail/saks_fail019.stderr +++ b/testsuite/tests/saks/should_fail/saks_fail019.stderr @@ -1,6 +1,6 @@ saks_fail019.hs:9:1: error: • Couldn't match kind ‘a’ with ‘*’ - Expected kind: a -> * - Actual kind: * -> * + Expected: a -> * + Actual: * -> * • In the data type declaration for ‘T’ diff --git a/testsuite/tests/saks/should_fail/saks_fail020.stderr b/testsuite/tests/saks/should_fail/saks_fail020.stderr index 7f4f33f631..c71b772786 100644 --- a/testsuite/tests/saks/should_fail/saks_fail020.stderr +++ b/testsuite/tests/saks/should_fail/saks_fail020.stderr @@ -1,6 +1,10 @@ saks_fail020.hs:9:49: error: • Expected kind ‘k’, but ‘a’ has kind ‘k0’ + because kind variable ‘k’ would escape its scope + This (rigid, skolem) kind variable is bound by + ‘forall (k :: Type) -> Proxy (a :: k)’ + at saks_fail020.hs:9:20-55 • In the first argument of ‘Proxy’, namely ‘(a :: k)’ In a standalone kind signature for ‘Foo2’: () -> forall (k :: Type) -> Proxy (a :: k) diff --git a/testsuite/tests/simplCore/should_compile/T17930.stderr b/testsuite/tests/simplCore/should_compile/T17930.stderr index 7b24d169f2..a9fe475265 100644 --- a/testsuite/tests/simplCore/should_compile/T17930.stderr +++ b/testsuite/tests/simplCore/should_compile/T17930.stderr @@ -1,2 +1,2 @@ -$sfoo :: (?b::Bool) => [Char] -> [Char] +$sfoo :: (?b::Bool) => String -> [Char] $sfoo diff --git a/testsuite/tests/simplCore/should_compile/rule2.stderr b/testsuite/tests/simplCore/should_compile/rule2.stderr index 35bcec7835..7a27514454 100644 --- a/testsuite/tests/simplCore/should_compile/rule2.stderr +++ b/testsuite/tests/simplCore/should_compile/rule2.stderr @@ -10,13 +10,12 @@ ==================== Grand total simplifier statistics ==================== -Total ticks: 11 +Total ticks: 10 1 PreInlineUnconditionally 1 f 1 UnfoldingDone 1 Roman.bar 1 RuleFired 1 foo/bar 1 LetFloatFromLet 1 -1 EtaReduction 1 ds 6 BetaReduction 1 f 1 a diff --git a/testsuite/tests/simplCore/should_compile/simpl017.stderr b/testsuite/tests/simplCore/should_compile/simpl017.stderr index 5a82506164..96c8e1ea2d 100644 --- a/testsuite/tests/simplCore/should_compile/simpl017.stderr +++ b/testsuite/tests/simplCore/should_compile/simpl017.stderr @@ -1,9 +1,9 @@ simpl017.hs:50:15: error: - • Couldn't match type ‘[E m i] -> E' v0 m a’ - with ‘forall v. [E m i] -> E' v m a’ - Expected type: E m (forall v. [E m i] -> E' v m a) - Actual type: E' RValue m ([E m i] -> E' v0 m a) + • Couldn't match type: [E m i] -> E' v0 m a + with: forall v. [E m i] -> E' v m a + Expected: E m (forall v. [E m i] -> E' v m a) + Actual: E' RValue m ([E m i] -> E' v0 m a) • In the expression: E (do let ix :: [E m i] -> m i ix [i] = runE i diff --git a/testsuite/tests/simplCore/should_compile/spec004.stderr b/testsuite/tests/simplCore/should_compile/spec004.stderr index f140da9977..825319bcb6 100644 --- a/testsuite/tests/simplCore/should_compile/spec004.stderr +++ b/testsuite/tests/simplCore/should_compile/spec004.stderr @@ -5,7 +5,7 @@ Result size of Specialise -- RHS size: {terms: 14, types: 12, coercions: 0, joins: 0/0} $sfoo [InlPrag=NOINLINE[0]] :: Int -> [Char] -[LclId] +[LclId, Arity=1] $sfoo = \ (y :: Int) -> GHC.Base.build @@ -25,7 +25,7 @@ foo [InlPrag=NOINLINE[0]] :: forall a. () -> Show a => a -> String Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True, WorkFree=True, Expandable=True, Guidance=IF_ARGS [0 30 0] 150 40}, RULES: "SPEC foo @Int" [0] - forall (dk :: ()) ($dShow :: Show Int). foo @Int dk $dShow = $sfoo] + forall (ds :: ()) ($dShow :: Show Int). foo @Int ds $dShow = $sfoo] foo = \ (@a) _ [Occ=Dead] ($dShow :: Show a) (y :: a) -> GHC.Base.build diff --git a/testsuite/tests/th/T10945.stderr b/testsuite/tests/th/T10945.stderr index 765be1fa80..09e1afa877 100644 --- a/testsuite/tests/th/T10945.stderr +++ b/testsuite/tests/th/T10945.stderr @@ -1,8 +1,9 @@ T10945.hs:7:4: error: - • Couldn't match type ‘[Dec]’ with ‘TExp DecsQ’ - Expected type: Q (TExp DecsQ) - Actual type: Q [Dec] + • Couldn't match type: [Dec] + with: TExp DecsQ + Expected: Q (TExp DecsQ) + Actual: Q [Dec] • In the expression: return [SigD diff --git a/testsuite/tests/th/T11452.stderr b/testsuite/tests/th/T11452.stderr index 0649997ff1..88e9af57fc 100644 --- a/testsuite/tests/th/T11452.stderr +++ b/testsuite/tests/th/T11452.stderr @@ -7,9 +7,13 @@ T11452.hs:6:12: error: In an equation for ‘impred’: impred = $$([|| \ _ -> () ||]) T11452.hs:6:14: error: - • Cannot instantiate unification variable ‘p0’ + • Couldn't match type ‘p0’ with ‘forall a. a -> a’ + Expected: Language.Haskell.TH.Syntax.Q + (Language.Haskell.TH.Syntax.TExp ((forall a. a -> a) -> ())) + Actual: Language.Haskell.TH.Syntax.Q + (Language.Haskell.TH.Syntax.TExp (p0 -> ())) + Cannot instantiate unification variable ‘p0’ with a type involving polytypes: forall a. a -> a - GHC doesn't yet support impredicative polymorphism • In the Template Haskell quotation [|| \ _ -> () ||] In the expression: [|| \ _ -> () ||] In the Template Haskell splice $$([|| \ _ -> () ||]) diff --git a/testsuite/tests/th/T15321.stderr b/testsuite/tests/th/T15321.stderr index 825e01b0f4..3054f02afc 100644 --- a/testsuite/tests/th/T15321.stderr +++ b/testsuite/tests/th/T15321.stderr @@ -1,6 +1,6 @@ T15321.hs:9:9: error: - • Found hole: _ :: [Char] -> Language.Haskell.TH.Lib.Internal.ExpQ + • Found hole: _ :: String -> Language.Haskell.TH.Lib.Internal.ExpQ • In the expression: _ In the expression: _ "baz" In the untyped splice: $(_ "baz") diff --git a/testsuite/tests/th/T16976.stderr b/testsuite/tests/th/T16976.stderr index 7fe46fb5eb..19584153c0 100644 --- a/testsuite/tests/th/T16976.stderr +++ b/testsuite/tests/th/T16976.stderr @@ -1,5 +1,5 @@ T16976.aNumber :: forall {p_0 :: *} . GHC.Num.Num p_0 => p_0 -T16976.aString :: [GHC.Types.Char] +T16976.aString :: GHC.Base.String T16976.MkT1 :: forall (s_0 :: *) . T16976.T s_0 T16976.MkT2 :: forall (s_0 :: *) . T16976.T s_0 T16976.T :: * -> * diff --git a/testsuite/tests/th/T17380.stderr b/testsuite/tests/th/T17380.stderr index 358e7f34f2..3773c76400 100644 --- a/testsuite/tests/th/T17380.stderr +++ b/testsuite/tests/th/T17380.stderr @@ -1,39 +1,41 @@ T17380.hs:9:7: error: - • Couldn't match expected type ‘Solo (Maybe String)’ - with actual type ‘Maybe [Char]’ + • Couldn't match expected type: Solo (Maybe String) + with actual type: Maybe String • In the expression: Just "wat" In an equation for ‘foo’: foo = Just "wat" T17380.hs:12:8: error: - • Couldn't match expected type ‘Maybe String’ - with actual type ‘Solo (Maybe [Char])’ + • Couldn't match expected type: Maybe String + with actual type: Solo (Maybe String) • In the expression: Solo Just "wat" In an equation for ‘bar’: bar = (Solo Just "wat") T17380.hs:15:6: error: - • Couldn't match expected type ‘Solo (Maybe String)’ - with actual type ‘Maybe [Char]’ + • Couldn't match expected type: Solo (Maybe String) + with actual type: Maybe String • In the pattern: Just "wat" In an equation for ‘baz’: baz (Just "wat") = Just "frerf" T17380.hs:18:7: error: - • Couldn't match expected type ‘Maybe String’ - with actual type ‘Solo (Maybe [Char])’ + • Couldn't match expected type: Maybe String + with actual type: Solo (Maybe String) • In the pattern: Solo(Just "wat") In an equation for ‘quux’: quux (Solo(Just "wat")) = Just "frerf" T17380.hs:21:8: error: - • Couldn't match type ‘Maybe String’ with ‘'Solo (Maybe String)’ - Expected type: Proxy ('Solo (Maybe String)) - Actual type: Proxy (Maybe String) + • Couldn't match type: Maybe String + with: 'Solo (Maybe String) + Expected: Proxy ('Solo (Maybe String)) + Actual: Proxy (Maybe String) • In the expression: Proxy :: Proxy (Maybe String) In an equation for ‘quuz’: quuz = Proxy :: Proxy (Maybe String) T17380.hs:24:8: error: - • Couldn't match type ‘'Solo (Maybe String)’ with ‘Maybe String’ - Expected type: Proxy (Maybe String) - Actual type: Proxy ('Solo (Maybe String)) + • Couldn't match type: 'Solo (Maybe String) + with: Maybe String + Expected: Proxy (Maybe String) + Actual: Proxy ('Solo (Maybe String)) • In the expression: Proxy :: Proxy ('Solo Maybe String) In an equation for ‘fred’: fred = Proxy :: Proxy ('Solo Maybe String) diff --git a/testsuite/tests/th/T7276.stderr b/testsuite/tests/th/T7276.stderr index 10a592f4a5..9ab73ad4cd 100644 --- a/testsuite/tests/th/T7276.stderr +++ b/testsuite/tests/th/T7276.stderr @@ -2,8 +2,8 @@ T7276.hs:6:8: error: • Couldn't match type ‘[Language.Haskell.TH.Syntax.Dec]’ with ‘Language.Haskell.TH.Syntax.Exp’ - Expected type: Language.Haskell.TH.Lib.Internal.ExpQ - Actual type: Language.Haskell.TH.Syntax.Q - Language.Haskell.TH.Lib.Internal.Decs + Expected: Language.Haskell.TH.Lib.Internal.ExpQ + Actual: Language.Haskell.TH.Syntax.Q + Language.Haskell.TH.Lib.Internal.Decs • In the expression: [d| y = 3 |] In the untyped splice: $([d| y = 3 |]) diff --git a/testsuite/tests/th/T7276a.stdout b/testsuite/tests/th/T7276a.stdout index 048d305562..33b418477a 100644 --- a/testsuite/tests/th/T7276a.stdout +++ b/testsuite/tests/th/T7276a.stdout @@ -1,8 +1,8 @@ <interactive>:3:9: warning: [-Wdeferred-type-errors (in -Wdefault)] • Couldn't match type ‘[Dec]’ with ‘Exp’ - Expected type: Q Exp - Actual type: Q Language.Haskell.TH.Lib.Internal.Decs + Expected: Q Exp + Actual: Q Language.Haskell.TH.Lib.Internal.Decs • In the expression: [d| a = () |] :: Q Exp In an equation for ‘x’: x = [d| a = () |] :: Q Exp @@ -10,8 +10,8 @@ • Exception when trying to run compile-time code: <interactive>:3:9: error: • Couldn't match type ‘[Dec]’ with ‘Exp’ - Expected type: Q Exp - Actual type: Q Language.Haskell.TH.Lib.Internal.Decs + Expected: Q Exp + Actual: Q Language.Haskell.TH.Lib.Internal.Decs • In the expression: [d| a = () |] :: Q Exp In an equation for ‘x’: x = [d| a = () |] :: Q Exp (deferred type error) diff --git a/testsuite/tests/th/T8577.stderr b/testsuite/tests/th/T8577.stderr index b6ff05a0a4..595338e07e 100644 --- a/testsuite/tests/th/T8577.stderr +++ b/testsuite/tests/th/T8577.stderr @@ -1,8 +1,8 @@ T8577.hs:9:11: error: • Couldn't match type ‘Int’ with ‘Bool’ - Expected type: Q (TExp (A Bool)) - Actual type: Q (TExp (A Int)) + Expected: Q (TExp (A Bool)) + Actual: Q (TExp (A Int)) • In the expression: y In the Template Haskell splice $$(y) In the expression: $$(y) diff --git a/testsuite/tests/th/overloaded/TH_overloaded_constraints_fail.stderr b/testsuite/tests/th/overloaded/TH_overloaded_constraints_fail.stderr index d76db558c6..965b441735 100644 --- a/testsuite/tests/th/overloaded/TH_overloaded_constraints_fail.stderr +++ b/testsuite/tests/th/overloaded/TH_overloaded_constraints_fail.stderr @@ -1,8 +1,8 @@ TH_overloaded_constraints_fail.hs:20:14: error: • Couldn't match type ‘Identity’ with ‘Q’ - Expected type: Q Exp - Actual type: Identity Exp + Expected: Q Exp + Actual: Identity Exp • In the expression: idQ In the expression: [| $(idQ) $(qq) |] diff --git a/testsuite/tests/typecheck/bug1465/bug1465.stderr b/testsuite/tests/typecheck/bug1465/bug1465.stderr index 4e31c7f195..e4f5b10732 100644 --- a/testsuite/tests/typecheck/bug1465/bug1465.stderr +++ b/testsuite/tests/typecheck/bug1465/bug1465.stderr @@ -1,9 +1,9 @@ C.hs:6:11: error: - Couldn't match expected type ‘bug1465-1.0:A.T’ - with actual type ‘A.T’ - NB: ‘A.T’ is defined in ‘A’ in package ‘bug1465-2.0’ - ‘bug1465-1.0:A.T’ is defined in ‘A’ in package ‘bug1465-1.0’ - In the expression: B2.f - In the expression: [B1.f, B2.f] - In an equation for ‘x’: x = [B1.f, B2.f] + • Couldn't match expected type ‘bug1465-1.0:A.T’ + with actual type ‘A.T’ + NB: ‘bug1465-1.0:A.T’ is defined in ‘A’ in package ‘bug1465-1.0’ + ‘A.T’ is defined in ‘A’ in package ‘bug1465-2.0’ + • In the expression: B2.f + In the expression: [B1.f, B2.f] + In an equation for ‘x’: x = [B1.f, B2.f] diff --git a/testsuite/tests/typecheck/should_compile/FD3.stderr b/testsuite/tests/typecheck/should_compile/FD3.stderr index 85728da0a6..d7ac728b6c 100644 --- a/testsuite/tests/typecheck/should_compile/FD3.stderr +++ b/testsuite/tests/typecheck/should_compile/FD3.stderr @@ -1,9 +1,13 @@ FD3.hs:15:15: error: - • Occurs check: cannot construct the infinite type: a ~ (String, a) + • Couldn't match type ‘a’ with ‘(String, a)’ arising from a functional dependency between: constraint ‘MkA (String, a) a’ arising from a use of ‘mkA’ instance ‘MkA a1 a1’ at FD3.hs:12:10-16 + ‘a’ is a rigid type variable bound by + the type signature for: + translate :: forall a. (String, a) -> A a + at FD3.hs:14:1-31 • In the expression: mkA a In an equation for ‘translate’: translate a = mkA a • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_compile/T10072.stderr b/testsuite/tests/typecheck/should_compile/T10072.stderr index ad7fe2602a..71a93c9573 100644 --- a/testsuite/tests/typecheck/should_compile/T10072.stderr +++ b/testsuite/tests/typecheck/should_compile/T10072.stderr @@ -6,5 +6,5 @@ T10072.hs:3:31: error: at T10072.hs:3:1-47 To use the inferred type, enable PartialTypeSignatures • In the type ‘a -> _’ - In a RULE for ‘f’: a -> _ + In the type signature for ‘f’: a -> _ When checking the transformation rule "map/empty" diff --git a/testsuite/tests/typecheck/should_compile/T10283.hs b/testsuite/tests/typecheck/should_compile/T10283.hs index e623b1cb0a..8c5b8e2f5a 100644 --- a/testsuite/tests/typecheck/should_compile/T10283.hs +++ b/testsuite/tests/typecheck/should_compile/T10283.hs @@ -20,4 +20,4 @@ wrapIdComp f = runIdComp . f . liftOuter class Applicative p => ApplicativeFix p where afix :: (forall q. Applicative q => (Comp p q) a -> (Comp p q) a) -> p a - afix = wrapIdComp + afix f = wrapIdComp f diff --git a/testsuite/tests/typecheck/should_compile/T10390.hs b/testsuite/tests/typecheck/should_compile/T10390.hs index e0648c9554..facb26a26d 100644 --- a/testsuite/tests/typecheck/should_compile/T10390.hs +++ b/testsuite/tests/typecheck/should_compile/T10390.hs @@ -6,7 +6,7 @@ class ApPair r where apPair :: (forall a . (ApPair a, Num a) => Maybe a) -> Maybe r instance (ApPair a, ApPair b) => ApPair (a,b) where - apPair = apPair' + apPair x = apPair' x apPair' :: (ApPair b, ApPair c) => (forall a . (Num a, ApPair a) => Maybe a) -> Maybe (b,c) diff --git a/testsuite/tests/typecheck/should_compile/T11254.stderr b/testsuite/tests/typecheck/should_compile/T11254.stderr index a7466b78b9..10132d2cb8 100644 --- a/testsuite/tests/typecheck/should_compile/T11254.stderr +++ b/testsuite/tests/typecheck/should_compile/T11254.stderr @@ -6,8 +6,8 @@ T11254.hs:16:10: warning: [-Wdeferred-type-errors (in -Wdefault)] T11254.hs:18:12: warning: [-Wdeferred-type-errors (in -Wdefault)] • Couldn't match type ‘GHC.Real.Ratio Integer’ with ‘Int’ - Expected type: Rational -> Frac Rational - Actual type: Rational -> Rational + Expected: Rational -> Frac Rational + Actual: Rational -> Rational • When checking that instance signature for ‘embed’ is more general than its signature in the class Instance sig: Rational -> Rational diff --git a/testsuite/tests/typecheck/should_compile/T11305.hs b/testsuite/tests/typecheck/should_compile/T11305.hs index 14cb955ed5..ee138a017c 100644 --- a/testsuite/tests/typecheck/should_compile/T11305.hs +++ b/testsuite/tests/typecheck/should_compile/T11305.hs @@ -54,4 +54,5 @@ instance ProfunctorComonad Tambara where yon ~(x,~(y,z)) = ((x,y),z) instance Profunctor p => Strong (Tambara p) where - first' = runTambara . produplicate + first' = (\x -> runTambara x) . produplicate + -- Simple subsumption (#17775) requires eta expansion here diff --git a/testsuite/tests/typecheck/should_compile/T12082.hs b/testsuite/tests/typecheck/should_compile/T12082.hs index 7aa4196737..0f001beabb 100644 --- a/testsuite/tests/typecheck/should_compile/T12082.hs +++ b/testsuite/tests/typecheck/should_compile/T12082.hs @@ -6,4 +6,5 @@ import Data.Typeable (Typeable) import Control.Monad.ST (RealWorld) f :: forall a. (forall b. Typeable b => b -> a) -> a -f = undefined :: (RealWorld -> a) -> a +f x = (undefined :: (RealWorld -> a) -> a) x + -- Simple subsumption (#17775) requires eta expansion here diff --git a/testsuite/tests/typecheck/should_compile/T12427a.hs b/testsuite/tests/typecheck/should_compile/T12427a.hs index cffab89749..56c7513012 100644 --- a/testsuite/tests/typecheck/should_compile/T12427a.hs +++ b/testsuite/tests/typecheck/should_compile/T12427a.hs @@ -36,5 +36,6 @@ h2 y = case y of T1 _ v -> v -- Fails in 7.10 (head exploded) -- Fails in 8.0.1 (ditto) -- Succeeds in 8.2 +-- Fails in 8.12 (simple subsumption) x3 :: (forall a. a->a) -> Int T1 _ x3 = undefined diff --git a/testsuite/tests/typecheck/should_compile/T12427a.stderr b/testsuite/tests/typecheck/should_compile/T12427a.stderr index efc87a1fc3..b9c3969bf0 100644 --- a/testsuite/tests/typecheck/should_compile/T12427a.stderr +++ b/testsuite/tests/typecheck/should_compile/T12427a.stderr @@ -12,8 +12,19 @@ T12427a.hs:17:29: error: h11 :: T -> p (bound at T12427a.hs:17:1) T12427a.hs:28:6: error: - • Cannot instantiate unification variable ‘p0’ + • Couldn't match expected type ‘p0’ + with actual type ‘(forall b. [b] -> [b]) -> Int’ + Cannot instantiate unification variable ‘p0’ with a type involving polytypes: (forall b. [b] -> [b]) -> Int - GHC doesn't yet support impredicative polymorphism • In the pattern: T1 _ x1 In a pattern binding: T1 _ x1 = undefined + +T12427a.hs:41:6: error: + • Couldn't match type ‘b’ with ‘[b]’ + Expected: (forall b. [b] -> [b]) -> Int + Actual: (forall a. a -> a) -> Int + ‘b’ is a rigid type variable bound by + the type [b] -> [b] + at T12427a.hs:41:1-19 + • In the pattern: T1 _ x3 + In a pattern binding: T1 _ x3 = undefined diff --git a/testsuite/tests/typecheck/should_compile/T13381.stderr b/testsuite/tests/typecheck/should_compile/T13381.stderr index 9c8eab6e67..7f250eaec1 100644 --- a/testsuite/tests/typecheck/should_compile/T13381.stderr +++ b/testsuite/tests/typecheck/should_compile/T13381.stderr @@ -1,14 +1,8 @@ T13381.hs:21:23: error: • Couldn't match type ‘Exp Int’ with ‘Int’ - Expected type: Exp Int -> Iter (Exp Int) (Exp Char) - Actual type: Int -> Iter (Exp Int) (Exp Char) + Expected: Int -> Iter Int (Exp Char) + Actual: Int -> Iter (Exp Int) (Exp Char) • In the first argument of ‘iterLoop’, namely ‘f’ In the first argument of ‘fromExp’, namely ‘(iterLoop f init)’ In the expression: fromExp (iterLoop f init) - -T13381.hs:21:25: error: - • Couldn't match expected type ‘Exp Int’ with actual type ‘Int’ - • In the second argument of ‘iterLoop’, namely ‘init’ - In the first argument of ‘fromExp’, namely ‘(iterLoop f init)’ - In the expression: fromExp (iterLoop f init) diff --git a/testsuite/tests/typecheck/should_compile/T13585a.hs b/testsuite/tests/typecheck/should_compile/T13585a.hs index 0652ece370..3f72a45ea3 100644 --- a/testsuite/tests/typecheck/should_compile/T13585a.hs +++ b/testsuite/tests/typecheck/should_compile/T13585a.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE KindSignatures, RankNTypes, TypeFamilies, MultiParamTypeClasses, FlexibleInstances,UndecidableInstances #-} +{-# LANGUAGE ScopedTypeVariables, KindSignatures, RankNTypes, TypeFamilies, MultiParamTypeClasses, FlexibleInstances,UndecidableInstances #-} module T13585a where @@ -78,5 +78,6 @@ au k = withIso k $ \ sa bt f -> fmap sa (f bt) {-# INLINE au #-} ala :: (Functor f, Rewrapping s t) => (Unwrapped s -> s) -> ((Unwrapped t -> t) -> f s) -> f (Unwrapped s) -ala = au . _Wrapping +ala = au . (\x -> _Wrapping x) + -- Simple subsumption (#17775) requires eta expansion here {-# INLINE ala #-} diff --git a/testsuite/tests/typecheck/should_compile/T13651.stderr b/testsuite/tests/typecheck/should_compile/T13651.stderr index 6b6c64302f..150291c210 100644 --- a/testsuite/tests/typecheck/should_compile/T13651.stderr +++ b/testsuite/tests/typecheck/should_compile/T13651.stderr @@ -8,6 +8,12 @@ T13651.hs:11:8: error: (F cr cu ~ Bar h (Bar r u), F cu cs ~ Bar (Foo h) (Bar u s)) => Bar h (Bar r u) -> Bar (Foo h) (Bar u s) -> Foo (cr -> cs) at T13651.hs:(11,8)-(13,65) + Expected: forall cr cu h r u cs s. + (F cr cu ~ Bar h (Bar r u), F cu cs ~ Bar (Foo h) (Bar u s)) => + Bar h (Bar r u) -> Bar (Foo h) (Bar u s) -> Foo (cr -> cs) + Actual: forall cr cu h r u cs s. + (F cr cu ~ Bar h (Bar r u), F cu cs ~ Bar (Foo h) (Bar u s)) => + Bar h (Bar r u) -> Bar (Foo h) (Bar u s) -> Foo (cr -> cs) • In the ambiguity check for ‘foo’ To defer the ambiguity check to use sites, enable AllowAmbiguousTypes In the type signature: diff --git a/testsuite/tests/typecheck/should_compile/T14488.hs b/testsuite/tests/typecheck/should_compile/T14488.hs index a4a12841b7..04c295b706 100644 --- a/testsuite/tests/typecheck/should_compile/T14488.hs +++ b/testsuite/tests/typecheck/should_compile/T14488.hs @@ -7,4 +7,4 @@ type Lens' s a = forall f. Functor f => (a -> f a) -> s -> f s data T a = MkT { _tfield :: Eq a => a } tfield :: Eq a => Lens' (T a) a -tfield f t = MkT <$> f (_tfield t) +tfield f t = (\x -> MkT x) <$> f (_tfield t) diff --git a/testsuite/tests/typecheck/should_compile/T15368.stderr b/testsuite/tests/typecheck/should_compile/T15368.stderr index 693779e1f5..7f022744c4 100644 --- a/testsuite/tests/typecheck/should_compile/T15368.stderr +++ b/testsuite/tests/typecheck/should_compile/T15368.stderr @@ -15,9 +15,10 @@ T15368.hs:11:15: warning: [-Wtyped-holes (in -Wdefault)] trigger :: a -> b -> (F a b, F b a) (bound at T15368.hs:11:1) T15368.hs:11:15: warning: [-Wdeferred-type-errors (in -Wdefault)] - • Couldn't match type ‘F b a’ with ‘F b0 a0’ - Expected type: (F a b, F b a) - Actual type: (F a b, F b0 a0) + • Couldn't match type: F b a + with: F b0 a0 + Expected: (F a b, F b a) + Actual: (F a b, F b0 a0) NB: ‘F’ is a non-injective type family The type variables ‘b0’, ‘a0’ are ambiguous • In the expression: _ `transitive` trigger _ _ diff --git a/testsuite/tests/typecheck/should_compile/T15370.stderr b/testsuite/tests/typecheck/should_compile/T15370.stderr index ec0ff67482..f359155dbd 100644 --- a/testsuite/tests/typecheck/should_compile/T15370.stderr +++ b/testsuite/tests/typecheck/should_compile/T15370.stderr @@ -1,6 +1,8 @@ T15370.hs:14:10: warning: [-Wdeferred-type-errors (in -Wdefault)] • Couldn't match type ‘n’ with ‘j’ + Expected: n :~: j + Actual: n :~: n ‘n’ is a rigid type variable bound by the type signature for: mkRefl :: forall {k} (n :: k) (j :: k). n :~: j @@ -9,8 +11,6 @@ T15370.hs:14:10: warning: [-Wdeferred-type-errors (in -Wdefault)] the type signature for: mkRefl :: forall {k} (n :: k) (j :: k). n :~: j at T15370.hs:13:1-17 - Expected type: n :~: j - Actual type: n :~: n • In the expression: Refl In an equation for ‘mkRefl’: mkRefl = Refl • Relevant bindings include @@ -18,8 +18,8 @@ T15370.hs:14:10: warning: [-Wdeferred-type-errors (in -Wdefault)] T15370.hs:20:13: warning: [-Wdeferred-type-errors (in -Wdefault)] • Couldn't match type ‘S r’ with ‘()’ - Expected type: () - Actual type: S r + Expected: () + Actual: S r • In the expression: no + _ In a case alternative: Refl -> no + _ In the expression: case mkRefl @x @y of { Refl -> no + _ } diff --git a/testsuite/tests/typecheck/should_compile/T1634.hs b/testsuite/tests/typecheck/should_compile/T1634.hs index b4c6f2b561..a8fdd9f8eb 100644 --- a/testsuite/tests/typecheck/should_compile/T1634.hs +++ b/testsuite/tests/typecheck/should_compile/T1634.hs @@ -3,4 +3,4 @@ module T1634 where t1 :: a -> (forall b. b -> (a,b)) -t1 = (,) +t1 x = (,) x diff --git a/testsuite/tests/typecheck/should_compile/T17007.hs b/testsuite/tests/typecheck/should_compile/T17007.hs index 21b7639dd0..0b2b0f28a2 100644 --- a/testsuite/tests/typecheck/should_compile/T17007.hs +++ b/testsuite/tests/typecheck/should_compile/T17007.hs @@ -10,4 +10,4 @@ get (x :: ItemColID a b) = x :: ItemColID a b type family ItemColID' a b where ItemColID' a b = Int -- Discards a,b get' :: ItemColID' a b -> ItemColID' a b -get' (x :: ItemColID' a b) = x :: ItemColID' a b +get' (x :: ItemColID' p q) = x :: ItemColID' a b diff --git a/testsuite/tests/typecheck/should_compile/T17775-view-pats.hs b/testsuite/tests/typecheck/should_compile/T17775-view-pats.hs new file mode 100644 index 0000000000..8ffd704d9c --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T17775-view-pats.hs @@ -0,0 +1,52 @@ +{-# LANGUAGE RankNTypes, ViewPatterns #-} + +module ViewPats where + +ex1 :: forall a. a -> a -> Int -> Eq a => Bool +-- Accept; we skolemise over three args +ex1 x ((== x) -> result) _ = result + +{- +ex2 :: forall a. a -> a -> Int -> Eq a => Bool +-- Reject: only skolemise over two args +ex2 x ((== x) -> result) = \ _ -> result + +ex3 :: forall a. a -> a -> Int -> Eq a => Bool +-- Reject: only skolemise over two args +-- const (result :: Bool) :: b -> Eq a => Bool +ex3 x ((== x) -> result) = const result +-} + +ex4 :: forall a. a -> a -> Int -> Eq a => Bool +-- Accept +ex4 x y _ = x == y + +ex5 :: forall a. a -> a -> Int -> Eq a => Bool +-- Accept +ex5 x y = \ _ -> x == y + +{- +ex6 :: forall a. a -> a -> Int -> Eq a => Bool +-- Reject. Needs (const (bla :: Bool)) :: Int -> Eq a => Bool +ex6 x y = const (x == y) +-} + +ex7 :: forall a. a -> a -> Eq a => Bool +-- Accept +ex7 x ((== x) -> result) = result + +ex8 :: forall a. a -> a -> Eq a => Bool +-- Accept +ex8 x y = x == y + +ex9 :: forall a. a -> Eq a => a -> Bool +-- Accept +ex9 x ((== x) -> result) = result + +ex10 :: forall a. a -> Eq a => a -> Bool +-- Accept +ex10 x y = x == y + +ex11 :: forall a. a -> Eq a => a -> Bool +-- Accept +ex11 x = (== x) diff --git a/testsuite/tests/typecheck/should_compile/T17775-viewpats-a.hs b/testsuite/tests/typecheck/should_compile/T17775-viewpats-a.hs new file mode 100644 index 0000000000..96deb25631 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T17775-viewpats-a.hs @@ -0,0 +1,35 @@ +{-# LANGUAGE RankNTypes, ViewPatterns #-} + +module ViewPats where + +ex1 :: forall a. a -> a -> Int -> Eq a => Bool +-- Accept; we skolemise over three args +ex1 x ((== x) -> result) _ = result + +ex4 :: forall a. a -> a -> Int -> Eq a => Bool +-- Accept +ex4 x y _ = x == y + +ex5 :: forall a. a -> a -> Int -> Eq a => Bool +-- Accept +ex5 x y = \ _ -> x == y + +ex7 :: forall a. a -> a -> Eq a => Bool +-- Accept +ex7 x ((== x) -> result) = result + +ex8 :: forall a. a -> a -> Eq a => Bool +-- Accept +ex8 x y = x == y + +ex9 :: forall a. a -> Eq a => a -> Bool +-- Accept +ex9 x ((== x) -> result) = result + +ex10 :: forall a. a -> Eq a => a -> Bool +-- Accept +ex10 x y = x == y + +ex11 :: forall a. a -> Eq a => a -> Bool +-- Accept +ex11 x = (== x) diff --git a/testsuite/tests/typecheck/should_compile/T17775-viewpats-b.hs b/testsuite/tests/typecheck/should_compile/T17775-viewpats-b.hs new file mode 100644 index 0000000000..18a6ec8da6 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T17775-viewpats-b.hs @@ -0,0 +1,7 @@ +{-# LANGUAGE RankNTypes, ViewPatterns #-} + +module ViewPats where + +ex2 :: forall a. a -> a -> Int -> Eq a => Bool +-- Reject: only skolemise over two args +ex2 x ((== x) -> result) = \ _ -> result diff --git a/testsuite/tests/typecheck/should_compile/T17775-viewpats-b.stderr b/testsuite/tests/typecheck/should_compile/T17775-viewpats-b.stderr new file mode 100644 index 0000000000..e631106dd0 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T17775-viewpats-b.stderr @@ -0,0 +1,10 @@ + +T17775-viewpats-b.hs:7:9: error: + • No instance for (Eq a) arising from a use of ‘==’ + Possible fix: + add (Eq a) to the context of + the type signature for: + ex2 :: forall a. a -> a -> Int -> Eq a => Bool + • In the expression: == x + In the pattern: (== x) -> result + In an equation for ‘ex2’: ex2 x ((== x) -> result) = \ _ -> result diff --git a/testsuite/tests/typecheck/should_compile/T17775-viewpats-c.hs b/testsuite/tests/typecheck/should_compile/T17775-viewpats-c.hs new file mode 100644 index 0000000000..78b4e9d0b5 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T17775-viewpats-c.hs @@ -0,0 +1,8 @@ +{-# LANGUAGE RankNTypes, ViewPatterns #-} + +module ViewPats where + +ex3 :: forall a. a -> a -> Int -> Eq a => Bool +-- Reject: only skolemise over two args +-- const (result :: Bool) :: b -> Eq a => Bool +ex3 x ((== x) -> result) = const result diff --git a/testsuite/tests/typecheck/should_compile/T17775-viewpats-c.stderr b/testsuite/tests/typecheck/should_compile/T17775-viewpats-c.stderr new file mode 100644 index 0000000000..a0456c5a70 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T17775-viewpats-c.stderr @@ -0,0 +1,11 @@ + +T17775-viewpats-c.hs:8:28: error: + • Couldn't match type ‘Bool’ with ‘Eq a => Bool’ + Expected: Int -> Eq a => Bool + Actual: Int -> Bool + • In the expression: const result + In an equation for ‘ex3’: ex3 x ((== x) -> result) = const result + • Relevant bindings include + x :: a (bound at T17775-viewpats-c.hs:8:5) + ex3 :: a -> a -> Int -> Eq a => Bool + (bound at T17775-viewpats-c.hs:8:1) diff --git a/testsuite/tests/typecheck/should_compile/T17775-viewpats-d.hs b/testsuite/tests/typecheck/should_compile/T17775-viewpats-d.hs new file mode 100644 index 0000000000..3a133d7930 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T17775-viewpats-d.hs @@ -0,0 +1,7 @@ +{-# LANGUAGE RankNTypes, ViewPatterns #-} + +module ViewPats where + +ex6 :: forall a. a -> a -> Int -> Eq a => Bool +-- Reject. Needs (const (bla :: Bool)) :: Int -> Eq a => Bool +ex6 x y = const (x == y) diff --git a/testsuite/tests/typecheck/should_compile/T17775-viewpats-d.stderr b/testsuite/tests/typecheck/should_compile/T17775-viewpats-d.stderr new file mode 100644 index 0000000000..e270cecc25 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T17775-viewpats-d.stderr @@ -0,0 +1,12 @@ + +T17775-viewpats-d.hs:7:11: error: + • Couldn't match type ‘Bool’ with ‘Eq a => Bool’ + Expected: Int -> Eq a => Bool + Actual: Int -> Bool + • In the expression: const (x == y) + In an equation for ‘ex6’: ex6 x y = const (x == y) + • Relevant bindings include + y :: a (bound at T17775-viewpats-d.hs:7:7) + x :: a (bound at T17775-viewpats-d.hs:7:5) + ex6 :: a -> a -> Int -> Eq a => Bool + (bound at T17775-viewpats-d.hs:7:1) diff --git a/testsuite/tests/typecheck/should_compile/T2494.stderr b/testsuite/tests/typecheck/should_compile/T2494.stderr index 5cf4fde746..8e427c5ac8 100644 --- a/testsuite/tests/typecheck/should_compile/T2494.stderr +++ b/testsuite/tests/typecheck/should_compile/T2494.stderr @@ -1,14 +1,14 @@ T2494.hs:15:14: error: • Couldn't match type ‘b’ with ‘a’ + Expected: Maybe (m a) -> Maybe (m a) + Actual: Maybe (m b) -> Maybe (m b) ‘b’ is a rigid type variable bound by the RULE "foo/foo" at T2494.hs:(12,1)-(15,33) ‘a’ is a rigid type variable bound by the RULE "foo/foo" at T2494.hs:(12,1)-(15,33) - Expected type: Maybe (m a) -> Maybe (m a) - Actual type: Maybe (m b) -> Maybe (m b) • In the first argument of ‘foo’, namely ‘g’ In the second argument of ‘foo’, namely ‘(foo g x)’ In the expression: foo f (foo g x) @@ -21,14 +21,14 @@ T2494.hs:15:14: error: T2494.hs:15:30: error: • Couldn't match type ‘b’ with ‘a’ + Expected: Maybe (m b) -> Maybe (m a) + Actual: Maybe (m b) -> Maybe (m b) ‘b’ is a rigid type variable bound by the RULE "foo/foo" at T2494.hs:(12,1)-(15,33) ‘a’ is a rigid type variable bound by the RULE "foo/foo" at T2494.hs:(12,1)-(15,33) - Expected type: Maybe (m b) -> Maybe (m a) - Actual type: Maybe (m b) -> Maybe (m b) • In the second argument of ‘(.)’, namely ‘g’ In the first argument of ‘foo’, namely ‘(f . g)’ In the expression: foo (f . g) x diff --git a/testsuite/tests/typecheck/should_compile/T3692.hs b/testsuite/tests/typecheck/should_compile/T3692.hs index 5be093f55f..4d5a61074f 100644 --- a/testsuite/tests/typecheck/should_compile/T3692.hs +++ b/testsuite/tests/typecheck/should_compile/T3692.hs @@ -7,5 +7,8 @@ type Foo a b = () -> (Bar a => a) class Bar a where {} +boo :: Foo p q +boo x = undefined + foo :: Foo a b -foo = id (undefined :: Foo p q) +foo y = id (\x -> boo x) y diff --git a/testsuite/tests/typecheck/should_compile/T4284.hs b/testsuite/tests/typecheck/should_compile/T4284.hs index 2d5164a487..5e1b9ceb5f 100644 --- a/testsuite/tests/typecheck/should_compile/T4284.hs +++ b/testsuite/tests/typecheck/should_compile/T4284.hs @@ -2,11 +2,11 @@ module Test where foo :: () -> forall b. b -foo = undefined +foo x = undefined -works = id foo +works = id (\x -> foo x) -fails = (id) foo +fails = (id) (\x -> foo x) -- works type checks, but fails fails with the following error -- message: diff --git a/testsuite/tests/typecheck/should_compile/T7220a.hs b/testsuite/tests/typecheck/should_compile/T7220a.hs index 4739626fa5..2ea0150f29 100644 --- a/testsuite/tests/typecheck/should_compile/T7220a.hs +++ b/testsuite/tests/typecheck/should_compile/T7220a.hs @@ -23,5 +23,7 @@ f :: (forall b. (C a b, TF b ~ Y) => b) -> X -- g = f -- Now we fail in all ways! -f _ = undefined +-- But with simple subsumption (#17775) we +-- no longer get an ambiguity check here +f _ = undefined diff --git a/testsuite/tests/typecheck/should_compile/T7220a.stderr b/testsuite/tests/typecheck/should_compile/T7220a.stderr deleted file mode 100644 index 2b311c1111..0000000000 --- a/testsuite/tests/typecheck/should_compile/T7220a.stderr +++ /dev/null @@ -1,14 +0,0 @@ - -T7220a.hs:17:6: error: - • Could not deduce (C a b) - from the context: (C a0 b, TF b ~ Y) - bound by a type expected by the context: - forall b. (C a0 b, TF b ~ Y) => b - at T7220a.hs:17:6-44 - Possible fix: - add (C a b) to the context of - a type expected by the context: - forall b. (C a0 b, TF b ~ Y) => b - • In the ambiguity check for ‘f’ - To defer the ambiguity check to use sites, enable AllowAmbiguousTypes - In the type signature: f :: (forall b. (C a b, TF b ~ Y) => b) -> X diff --git a/testsuite/tests/typecheck/should_compile/T9569a.hs b/testsuite/tests/typecheck/should_compile/T9569a.hs index 3205cb1b4e..0eeb4c40a7 100644 --- a/testsuite/tests/typecheck/should_compile/T9569a.hs +++ b/testsuite/tests/typecheck/should_compile/T9569a.hs @@ -5,7 +5,7 @@ g :: (Int -> Int) -> Int g f = f 4 f1 :: (forall a. a -> a) -> Int +-- Fails; needs eta-expansion +-- cf T9569b f1 = g -f2 :: (forall a. a -> a) -> Int -f2 x = g x diff --git a/testsuite/tests/typecheck/should_compile/T9569a.stderr b/testsuite/tests/typecheck/should_compile/T9569a.stderr new file mode 100644 index 0000000000..57d44a0f2a --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T9569a.stderr @@ -0,0 +1,8 @@ + +T9569a.hs:10:6: error: + • Couldn't match type: Int -> Int + with: forall a. a -> a + Expected: (forall a. a -> a) -> Int + Actual: (Int -> Int) -> Int + • In the expression: g + In an equation for ‘f1’: f1 = g diff --git a/testsuite/tests/typecheck/should_compile/T9569b.hs b/testsuite/tests/typecheck/should_compile/T9569b.hs new file mode 100644 index 0000000000..67ddf21d73 --- /dev/null +++ b/testsuite/tests/typecheck/should_compile/T9569b.hs @@ -0,0 +1,8 @@ +{-# LANGUAGE RankNTypes #-} +module T9569a where + +g :: (Int -> Int) -> Int +g f = f 4 + +f2 :: (forall a. a -> a) -> Int +f2 f = g f diff --git a/testsuite/tests/typecheck/should_compile/T9834.hs b/testsuite/tests/typecheck/should_compile/T9834.hs index c16e395f8c..728de2b8ed 100644 --- a/testsuite/tests/typecheck/should_compile/T9834.hs +++ b/testsuite/tests/typecheck/should_compile/T9834.hs @@ -20,4 +20,4 @@ wrapIdComp f = runIdComp . f . liftOuter class Applicative p => ApplicativeFix p where afix :: (forall q. Applicative q => (Comp p q) a -> (Comp p q) a) -> p a - afix = wrapIdComp
\ No newline at end of file + afix f = wrapIdComp f diff --git a/testsuite/tests/typecheck/should_compile/T9834.stderr b/testsuite/tests/typecheck/should_compile/T9834.stderr index 52f207d511..5963781325 100644 --- a/testsuite/tests/typecheck/should_compile/T9834.stderr +++ b/testsuite/tests/typecheck/should_compile/T9834.stderr @@ -1,40 +1,46 @@ -T9834.hs:23:10: warning: [-Wdeferred-type-errors (in -Wdefault)] - • Occurs check: cannot construct the infinite type: p ~ (->) (p a0) - Expected type: (forall (q :: * -> *). - Applicative q => - Comp p q a -> Comp p q a) - -> p a - Actual type: (forall (q :: * -> *). - Applicative q => - Nat (Comp p q) (Comp p q)) - -> p a0 -> p a0 - • In the expression: wrapIdComp - In an equation for ‘afix’: afix = wrapIdComp +T9834.hs:23:12: warning: [-Wdeferred-type-errors (in -Wdefault)] + • Couldn't match type ‘p’ with ‘(->) (p a0)’ + Expected: p a + Actual: p a0 -> p a0 + ‘p’ is a rigid type variable bound by + the class declaration for ‘ApplicativeFix’ + at T9834.hs:21:39 + • In the expression: wrapIdComp f + In an equation for ‘afix’: afix f = wrapIdComp f • Relevant bindings include + f :: forall (q :: * -> *). + Applicative q => + Comp p q a -> Comp p q a + (bound at T9834.hs:23:8) afix :: (forall (q :: * -> *). Applicative q => Comp p q a -> Comp p q a) -> p a (bound at T9834.hs:23:3) -T9834.hs:23:10: warning: [-Wdeferred-type-errors (in -Wdefault)] +T9834.hs:23:23: warning: [-Wdeferred-type-errors (in -Wdefault)] • Couldn't match type ‘a1’ with ‘a’ + Expected: Comp p q a1 -> Comp p q a1 + Actual: Comp p q a -> Comp p q a ‘a1’ is a rigid type variable bound by a type expected by the context: forall (q :: * -> *). Applicative q => Nat (Comp p q) (Comp p q) - at T9834.hs:23:10-19 + at T9834.hs:23:23 ‘a’ is a rigid type variable bound by the type signature for: afix :: forall a. (forall (q :: * -> *). Applicative q => Comp p q a -> Comp p q a) -> p a at T9834.hs:22:11-74 - Expected type: Comp p q a1 -> Comp p q a1 - Actual type: Comp p q a -> Comp p q a - • In the expression: wrapIdComp - In an equation for ‘afix’: afix = wrapIdComp + • In the first argument of ‘wrapIdComp’, namely ‘f’ + In the expression: wrapIdComp f + In an equation for ‘afix’: afix f = wrapIdComp f • Relevant bindings include + f :: forall (q :: * -> *). + Applicative q => + Comp p q a -> Comp p q a + (bound at T9834.hs:23:8) afix :: (forall (q :: * -> *). Applicative q => Comp p q a -> Comp p q a) diff --git a/testsuite/tests/typecheck/should_compile/UnliftedNewtypesUnifySig.hs b/testsuite/tests/typecheck/should_compile/UnliftedNewtypesUnifySig.hs index 9f5b984025..a7645a0b3e 100644 --- a/testsuite/tests/typecheck/should_compile/UnliftedNewtypesUnifySig.hs +++ b/testsuite/tests/typecheck/should_compile/UnliftedNewtypesUnifySig.hs @@ -14,7 +14,10 @@ import GHC.Exts (Int#,Word#,RuntimeRep(IntRep)) import GHC.Exts (TYPE) type KindOf (a :: TYPE k) = k + data family D (a :: TYPE r) :: TYPE r + newtype instance D a = MkWordD Word# + newtype instance D a :: TYPE (KindOf a) where MkIntD :: forall (a :: TYPE 'IntRep). Int# -> D a diff --git a/testsuite/tests/typecheck/should_compile/abstract_refinement_hole_fits.stderr b/testsuite/tests/typecheck/should_compile/abstract_refinement_hole_fits.stderr index e422b8629e..119c6b91e5 100644 --- a/testsuite/tests/typecheck/should_compile/abstract_refinement_hole_fits.stderr +++ b/testsuite/tests/typecheck/should_compile/abstract_refinement_hole_fits.stderr @@ -42,29 +42,29 @@ abstract_refinement_hole_fits.hs:4:5: warning: [-Wtyped-holes (in -Wdefault)] where pure :: forall (f :: * -> *) a. Applicative f => a -> f a ($!) (_ :: [Integer] -> Integer) where ($!) :: forall a b. (a -> b) -> a -> b - curry (_ :: (a2, [Integer]) -> Integer) (_ :: a2) + curry (_ :: (t0, [Integer]) -> Integer) (_ :: t0) where curry :: forall a b c. ((a, b) -> c) -> a -> b -> c (.) (_ :: b1 -> Integer) (_ :: [Integer] -> b1) where (.) :: forall b c a. (b -> c) -> (a -> b) -> a -> c - flip (_ :: [Integer] -> b7 -> Integer) (_ :: b7) + flip (_ :: [Integer] -> t0 -> Integer) (_ :: t0) where flip :: forall a b c. (a -> b -> c) -> b -> a -> c - (>>=) (_ :: [Integer] -> a11) (_ :: a11 -> [Integer] -> Integer) + (>>=) (_ :: [Integer] -> a8) (_ :: a8 -> [Integer] -> Integer) where (>>=) :: forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b - (>>) (_ :: [Integer] -> a10) (_ :: [Integer] -> Integer) + (>>) (_ :: [Integer] -> a7) (_ :: [Integer] -> Integer) where (>>) :: forall (m :: * -> *) a b. Monad m => m a -> m b -> m b - fmap (_ :: a12 -> Integer) (_ :: [Integer] -> a12) + fmap (_ :: a9 -> Integer) (_ :: [Integer] -> a9) where fmap :: forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b - (<*>) (_ :: [Integer] -> a8 -> Integer) (_ :: [Integer] -> a8) + (<*>) (_ :: [Integer] -> a5 -> Integer) (_ :: [Integer] -> a5) where (<*>) :: forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b - (*>) (_ :: [Integer] -> a7) (_ :: [Integer] -> Integer) + (*>) (_ :: [Integer] -> a4) (_ :: [Integer] -> Integer) where (*>) :: forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b @@ -72,7 +72,7 @@ abstract_refinement_hole_fits.hs:4:5: warning: [-Wtyped-holes (in -Wdefault)] where (<$>) :: forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b - (=<<) (_ :: a9 -> [Integer] -> Integer) (_ :: [Integer] -> a9) + (=<<) (_ :: a6 -> [Integer] -> Integer) (_ :: [Integer] -> a6) where (=<<) :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b @@ -84,15 +84,15 @@ abstract_refinement_hole_fits.hs:4:5: warning: [-Wtyped-holes (in -Wdefault)] where (<$) :: forall (f :: * -> *) a b. Functor f => a -> f b -> f a - id (_ :: t1 -> [Integer] -> Integer) (_ :: t1) + id (_ :: t0 -> [Integer] -> Integer) (_ :: t0) where id :: forall a. a -> a - head (_ :: [t1 -> [Integer] -> Integer]) (_ :: t1) + head (_ :: [t0 -> [Integer] -> Integer]) (_ :: t0) where head :: forall a. [a] -> a - last (_ :: [t1 -> [Integer] -> Integer]) (_ :: t1) + last (_ :: [t0 -> [Integer] -> Integer]) (_ :: t0) where last :: forall a. [a] -> a - fst (_ :: (t1 -> [Integer] -> Integer, b2)) (_ :: t1) + fst (_ :: (t0 -> [Integer] -> Integer, b2)) (_ :: t0) where fst :: forall a b. (a, b) -> a - snd (_ :: (a3, t1 -> [Integer] -> Integer)) (_ :: t1) + snd (_ :: (a2, t0 -> [Integer] -> Integer)) (_ :: t0) where snd :: forall a b. (a, b) -> b id (_ :: [Integer] -> Integer) where id :: forall a. a -> a @@ -108,19 +108,19 @@ abstract_refinement_hole_fits.hs:4:5: warning: [-Wtyped-holes (in -Wdefault)] where fst :: forall a b. (a, b) -> a snd (_ :: (a0, [Integer] -> Integer)) where snd :: forall a b. (a, b) -> b - const (_ :: [Integer] -> Integer) (_ :: b6) + const (_ :: [Integer] -> Integer) (_ :: t0) where const :: forall a b. a -> b -> a - seq (_ :: a13) (_ :: [Integer] -> Integer) + seq (_ :: t2) (_ :: [Integer] -> Integer) where seq :: forall a b. a -> b -> b - ($) (_ :: a5 -> [Integer] -> Integer) (_ :: a5) + ($) (_ :: t0 -> [Integer] -> Integer) (_ :: t0) where ($) :: forall a b. (a -> b) -> a -> b - return (_ :: [Integer] -> Integer) (_ :: t1) + return (_ :: [Integer] -> Integer) (_ :: t0) where return :: forall (m :: * -> *) a. Monad m => a -> m a - pure (_ :: [Integer] -> Integer) (_ :: t1) + pure (_ :: [Integer] -> Integer) (_ :: t0) where pure :: forall (f :: * -> *) a. Applicative f => a -> f a - uncurry (_ :: a4 -> b3 -> [Integer] -> Integer) (_ :: (a4, b3)) + uncurry (_ :: a3 -> b3 -> [Integer] -> Integer) (_ :: (a3, b3)) where uncurry :: forall a b c. (a -> b -> c) -> (a, b) -> c - ($!) (_ :: a6 -> [Integer] -> Integer) (_ :: a6) + ($!) (_ :: t0 -> [Integer] -> Integer) (_ :: t0) where ($!) :: forall a b. (a -> b) -> a -> b abstract_refinement_hole_fits.hs:7:5: warning: [-Wtyped-holes (in -Wdefault)] @@ -158,31 +158,31 @@ abstract_refinement_hole_fits.hs:7:5: warning: [-Wtyped-holes (in -Wdefault)] where pure :: forall (f :: * -> *) a. Applicative f => a -> f a ($!) (_ :: Integer -> [Integer] -> Integer) where ($!) :: forall a b. (a -> b) -> a -> b - curry (_ :: (a2, Integer) -> [Integer] -> Integer) (_ :: a2) + curry (_ :: (t0, Integer) -> [Integer] -> Integer) (_ :: t0) where curry :: forall a b c. ((a, b) -> c) -> a -> b -> c (.) (_ :: b1 -> [Integer] -> Integer) (_ :: Integer -> b1) where (.) :: forall b c a. (b -> c) -> (a -> b) -> a -> c - flip (_ :: Integer -> b7 -> [Integer] -> Integer) (_ :: b7) + flip (_ :: Integer -> t0 -> [Integer] -> Integer) (_ :: t0) where flip :: forall a b c. (a -> b -> c) -> b -> a -> c - (>>=) (_ :: Integer -> a11) - (_ :: a11 -> Integer -> [Integer] -> Integer) + (>>=) (_ :: Integer -> a8) + (_ :: a8 -> Integer -> [Integer] -> Integer) where (>>=) :: forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b - (>>) (_ :: Integer -> a10) (_ :: Integer -> [Integer] -> Integer) + (>>) (_ :: Integer -> a7) (_ :: Integer -> [Integer] -> Integer) where (>>) :: forall (m :: * -> *) a b. Monad m => m a -> m b -> m b - fmap (_ :: a12 -> [Integer] -> Integer) (_ :: Integer -> a12) + fmap (_ :: a9 -> [Integer] -> Integer) (_ :: Integer -> a9) where fmap :: forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b - (<*>) (_ :: Integer -> a8 -> [Integer] -> Integer) - (_ :: Integer -> a8) + (<*>) (_ :: Integer -> a5 -> [Integer] -> Integer) + (_ :: Integer -> a5) where (<*>) :: forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b - (*>) (_ :: Integer -> a7) (_ :: Integer -> [Integer] -> Integer) + (*>) (_ :: Integer -> a4) (_ :: Integer -> [Integer] -> Integer) where (*>) :: forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b @@ -190,8 +190,8 @@ abstract_refinement_hole_fits.hs:7:5: warning: [-Wtyped-holes (in -Wdefault)] where (<$>) :: forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b - (=<<) (_ :: a9 -> Integer -> [Integer] -> Integer) - (_ :: Integer -> a9) + (=<<) (_ :: a6 -> Integer -> [Integer] -> Integer) + (_ :: Integer -> a6) where (=<<) :: forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b @@ -203,15 +203,15 @@ abstract_refinement_hole_fits.hs:7:5: warning: [-Wtyped-holes (in -Wdefault)] where (<$) :: forall (f :: * -> *) a b. Functor f => a -> f b -> f a - id (_ :: t1 -> Integer -> [Integer] -> Integer) (_ :: t1) + id (_ :: t0 -> Integer -> [Integer] -> Integer) (_ :: t0) where id :: forall a. a -> a - head (_ :: [t1 -> Integer -> [Integer] -> Integer]) (_ :: t1) + head (_ :: [t0 -> Integer -> [Integer] -> Integer]) (_ :: t0) where head :: forall a. [a] -> a - last (_ :: [t1 -> Integer -> [Integer] -> Integer]) (_ :: t1) + last (_ :: [t0 -> Integer -> [Integer] -> Integer]) (_ :: t0) where last :: forall a. [a] -> a - fst (_ :: (t1 -> Integer -> [Integer] -> Integer, b2)) (_ :: t1) + fst (_ :: (t0 -> Integer -> [Integer] -> Integer, b2)) (_ :: t0) where fst :: forall a b. (a, b) -> a - snd (_ :: (a3, t1 -> Integer -> [Integer] -> Integer)) (_ :: t1) + snd (_ :: (a2, t0 -> Integer -> [Integer] -> Integer)) (_ :: t0) where snd :: forall a b. (a, b) -> b id (_ :: Integer -> [Integer] -> Integer) where id :: forall a. a -> a @@ -228,18 +228,18 @@ abstract_refinement_hole_fits.hs:7:5: warning: [-Wtyped-holes (in -Wdefault)] where fst :: forall a b. (a, b) -> a snd (_ :: (a0, Integer -> [Integer] -> Integer)) where snd :: forall a b. (a, b) -> b - const (_ :: Integer -> [Integer] -> Integer) (_ :: b6) + const (_ :: Integer -> [Integer] -> Integer) (_ :: t0) where const :: forall a b. a -> b -> a - seq (_ :: a13) (_ :: Integer -> [Integer] -> Integer) + seq (_ :: t2) (_ :: Integer -> [Integer] -> Integer) where seq :: forall a b. a -> b -> b - ($) (_ :: a5 -> Integer -> [Integer] -> Integer) (_ :: a5) + ($) (_ :: t0 -> Integer -> [Integer] -> Integer) (_ :: t0) where ($) :: forall a b. (a -> b) -> a -> b - return (_ :: Integer -> [Integer] -> Integer) (_ :: t1) + return (_ :: Integer -> [Integer] -> Integer) (_ :: t0) where return :: forall (m :: * -> *) a. Monad m => a -> m a - pure (_ :: Integer -> [Integer] -> Integer) (_ :: t1) + pure (_ :: Integer -> [Integer] -> Integer) (_ :: t0) where pure :: forall (f :: * -> *) a. Applicative f => a -> f a - uncurry (_ :: a4 -> b3 -> Integer -> [Integer] -> Integer) - (_ :: (a4, b3)) + uncurry (_ :: a3 -> b3 -> Integer -> [Integer] -> Integer) + (_ :: (a3, b3)) where uncurry :: forall a b c. (a -> b -> c) -> (a, b) -> c - ($!) (_ :: a6 -> Integer -> [Integer] -> Integer) (_ :: a6) + ($!) (_ :: t0 -> Integer -> [Integer] -> Integer) (_ :: t0) where ($!) :: forall a b. (a -> b) -> a -> b diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T index 3189595fc3..b4ac6c9916 100644 --- a/testsuite/tests/typecheck/should_compile/all.T +++ b/testsuite/tests/typecheck/should_compile/all.T @@ -422,7 +422,8 @@ test('TcStaticPointers02', normal, compile, ['']) test('T8762', normal, compile, ['']) test('MutRec', normal, compile, ['']) test('T8856', normal, compile, ['']) -test('T9569a', normal, compile, ['']) +test('T9569a', normal, compile_fail, ['']) +test('T9569b', normal, compile, ['']) test('T9117', normal, compile, ['']) test('T9117_2', normal, compile, ['']) test('T9117_3', normal, compile, ['']) @@ -430,7 +431,7 @@ test('T9708', expect_broken(9708), compile, ['']) test('T9404', normal, compile, ['']) test('T9404b', normal, compile, ['']) test('T7220', normal, compile, ['']) -test('T7220a', normal, compile_fail, ['']) +test('T7220a', normal, compile, ['']) test('T9151', normal, compile, ['']) test('T9497a', normal, compile, ['-fdefer-typed-holes']) test('T9497b', normal, compile, ['-fdefer-typed-holes -fno-warn-typed-holes']) @@ -684,7 +685,7 @@ test('UnliftedNewtypesUnifySig', normal, compile, ['']) test('UnliftedNewtypesForall', normal, compile, ['']) test('UnlifNewUnify', normal, compile, ['']) test('UnliftedNewtypesLPFamily', normal, compile, ['']) -test('UnliftedNewtypesDifficultUnification', normal, compile, ['']) +test('UnliftedNewtypesDifficultUnification', when(compiler_debugged(), expect_broken(18300)), compile, ['']) test('T16832', normal, ghci_script, ['T16832.script']) test('T16995', normal, compile, ['']) test('T17007', normal, compile, ['']) @@ -711,3 +712,7 @@ test('T18129', expect_broken(18129), compile, ['']) test('T18185', normal, compile, ['']) test('ExplicitSpecificityA1', normal, compile, ['']) test('ExplicitSpecificityA2', normal, compile, ['']) +test('T17775-viewpats-a', normal, compile, ['']) +test('T17775-viewpats-b', normal, compile_fail, ['']) +test('T17775-viewpats-c', normal, compile_fail, ['']) +test('T17775-viewpats-d', normal, compile_fail, ['']) diff --git a/testsuite/tests/typecheck/should_compile/subsumption_sort_hole_fits.stderr b/testsuite/tests/typecheck/should_compile/subsumption_sort_hole_fits.stderr index eb4b02f34e..8ea32fcde6 100644 --- a/testsuite/tests/typecheck/should_compile/subsumption_sort_hole_fits.stderr +++ b/testsuite/tests/typecheck/should_compile/subsumption_sort_hole_fits.stderr @@ -1,6 +1,6 @@ subsumption_sort_hole_fits.hs:2:5: warning: [-Wtyped-holes (in -Wdefault)] - • Found hole: _ :: [Char] -> [String] + • Found hole: _ :: String -> [String] • In the expression: _ In the expression: _ "hello, world" In an equation for ‘f’: f = _ "hello, world" @@ -22,7 +22,7 @@ subsumption_sort_hole_fits.hs:2:5: warning: [-Wtyped-holes (in -Wdefault)] (imported from ‘Prelude’ at subsumption_sort_hole_fits.hs:1:1 (and originally defined in ‘GHC.List’)) mempty :: forall a. Monoid a => a - with mempty @([Char] -> [String]) + with mempty @(String -> [String]) (imported from ‘Prelude’ at subsumption_sort_hole_fits.hs:1:1 (and originally defined in ‘GHC.Base’)) fail :: forall (m :: * -> *) a. MonadFail m => String -> m a diff --git a/testsuite/tests/typecheck/should_compile/tc145.hs b/testsuite/tests/typecheck/should_compile/tc145.hs index 8ab4a56321..9d1ada71a6 100644 --- a/testsuite/tests/typecheck/should_compile/tc145.hs +++ b/testsuite/tests/typecheck/should_compile/tc145.hs @@ -9,7 +9,7 @@ module ShouldCompile where -- implicit parameter to give -- r :: (?param::a) => a r :: Int -> ((?param :: a) => a) - r = error "urk" + r _ = error "urk" -- The unboxed tuple is OK because it is -- used on the right hand end of an arrow diff --git a/testsuite/tests/typecheck/should_compile/tc160.hs b/testsuite/tests/typecheck/should_compile/tc160.hs index 2425221aee..28e1b9e76b 100644 --- a/testsuite/tests/typecheck/should_compile/tc160.hs +++ b/testsuite/tests/typecheck/should_compile/tc160.hs @@ -7,8 +7,8 @@ module ShouldCompile where type Foo x = forall a. a -> x foo :: Foo (Foo ()) --- foo :: forall a b. a -> b -> () +-- foo :: forall a. a -> forall b. b -> () -- NOT forall a. a -> a -> () -foo = undefined +foo x = undefined baz = foo 'c' True diff --git a/testsuite/tests/typecheck/should_compile/tc208.hs b/testsuite/tests/typecheck/should_compile/tc208.hs index 8d9bb3636e..254eb82264 100644 --- a/testsuite/tests/typecheck/should_compile/tc208.hs +++ b/testsuite/tests/typecheck/should_compile/tc208.hs @@ -11,4 +11,4 @@ module ShouldCompile where type PPDoc = (?env :: Int) => Char f :: Char -> PPDoc -f = succ +f x = succ x diff --git a/testsuite/tests/typecheck/should_compile/tc210.hs b/testsuite/tests/typecheck/should_compile/tc210.hs index b4a377f761..9a0de89d4e 100644 --- a/testsuite/tests/typecheck/should_compile/tc210.hs +++ b/testsuite/tests/typecheck/should_compile/tc210.hs @@ -3,10 +3,10 @@ module ShouldCompile where f :: forall a. a -> forall b. b -> Int -f = error "urk" +f x = error "urk" -- Both these should be ok, but an early GHC 6.6 failed -g1 = [ (+) :: Int -> Int -> Int, f ] -g2 = [ f, (+) :: Int -> Int -> Int ] +g1 = [ (+) :: Int -> Int -> Int, \x -> f x ] +g2 = [ \x -> f x, (+) :: Int -> Int -> Int ] diff --git a/testsuite/tests/typecheck/should_compile/tc211.stderr b/testsuite/tests/typecheck/should_compile/tc211.stderr index ccc3da6fb0..bbffa16943 100644 --- a/testsuite/tests/typecheck/should_compile/tc211.stderr +++ b/testsuite/tests/typecheck/should_compile/tc211.stderr @@ -1,10 +1,11 @@ -tc211.hs:20:8: error: - • Couldn't match expected type ‘forall a. a -> a’ - with actual type ‘a9 -> a9’ - • In the expression: - (:) :: - (forall a. a -> a) -> [forall a. a -> a] -> [forall a. a -> a] +tc211.hs:21:17: error: + • Couldn't match expected type: a -> a + with actual type: forall a. a -> a + • In the first argument of ‘(:) :: + (forall a. a -> a) + -> [forall a. a -> a] -> [forall a. a -> a]’, namely + ‘(head foo)’ In the expression: ((:) :: (forall a. a -> a) -> [forall a. a -> a] -> [forall a. a -> a]) @@ -14,77 +15,3 @@ tc211.hs:20:8: error: = ((:) :: (forall a. a -> a) -> [forall a. a -> a] -> [forall a. a -> a]) (head foo) foo - -tc211.hs:25:8: error: - • Couldn't match type ‘a1 -> a1’ with ‘forall a. a -> a’ - Expected type: [forall a. a -> a] - Actual type: [a1 -> a1] - • In the expression: (head foo) : (tail foo) - In an equation for ‘barr’: barr = (head foo) : (tail foo) - -tc211.hs:25:20: error: - • Couldn't match type ‘forall a. a -> a’ with ‘a1 -> a1’ - Expected type: [a1 -> a1] - Actual type: [forall a. a -> a] - • In the second argument of ‘(:)’, namely ‘(tail foo)’ - In the expression: (head foo) : (tail foo) - In an equation for ‘barr’: barr = (head foo) : (tail foo) - -tc211.hs:62:18: error: - • Couldn't match expected type ‘forall a. a -> a’ - with actual type ‘a6 -> a6’ - • In the expression: - Cons :: - (forall a. a -> a) - -> List (forall a. a -> a) -> List (forall a. a -> a) - In an equation for ‘cons’: - cons - = Cons :: - (forall a. a -> a) - -> List (forall a. a -> a) -> List (forall a. a -> a) - In the expression: - let - cons - = Cons :: - (forall a. a -> a) - -> List (forall a. a -> a) -> List (forall a. a -> a) - in cons (\ x -> x) Nil - -tc211.hs:68:8: error: - • Couldn't match expected type ‘forall a. a -> a’ - with actual type ‘a0 -> a0’ - • In the expression: - Cons :: - ((forall a. a -> a) - -> List (forall a. a -> a) -> List (forall a. a -> a)) - In the expression: - (Cons :: - ((forall a. a -> a) - -> List (forall a. a -> a) -> List (forall a. a -> a))) - (\ x -> x) Nil - In an equation for ‘xs2’: - xs2 - = (Cons :: - ((forall a. a -> a) - -> List (forall a. a -> a) -> List (forall a. a -> a))) - (\ x -> x) Nil - -tc211.hs:76:9: error: - • Couldn't match type ‘forall a11. a11 -> a11’ with ‘a10 -> a10’ - Expected type: List (forall a. a -> a) - -> (forall a. a -> a) -> a10 -> a10 - Actual type: List (a10 -> a10) -> (a10 -> a10) -> a10 -> a10 - • In the expression: - foo2 :: - List (forall a. a -> a) -> (forall a. a -> a) -> (forall a. a -> a) - In the expression: - (foo2 :: - List (forall a. a -> a) - -> (forall a. a -> a) -> (forall a. a -> a)) - xs1 (\ x -> x) - In an equation for ‘bar4’: - bar4 - = (foo2 :: - List (forall a. a -> a) - -> (forall a. a -> a) -> (forall a. a -> a)) - xs1 (\ x -> x) diff --git a/testsuite/tests/typecheck/should_compile/twins.hs b/testsuite/tests/typecheck/should_compile/twins.hs index 99c77aa796..31d967aa59 100644 --- a/testsuite/tests/typecheck/should_compile/twins.hs +++ b/testsuite/tests/typecheck/should_compile/twins.hs @@ -22,7 +22,7 @@ gzip f x y else Nothing gzipWithM :: Monad m => GenericQ (GenericM m) -> GenericQ (GenericM m) -gzipWithM _ = error "urk" +gzipWithM _ _ = error "urk" orElse :: Maybe a -> Maybe a -> Maybe a orElse = error "urk" diff --git a/testsuite/tests/typecheck/should_compile/valid_hole_fits.stderr b/testsuite/tests/typecheck/should_compile/valid_hole_fits.stderr index 1c108f719b..116a18f42f 100644 --- a/testsuite/tests/typecheck/should_compile/valid_hole_fits.stderr +++ b/testsuite/tests/typecheck/should_compile/valid_hole_fits.stderr @@ -225,7 +225,7 @@ valid_hole_fits.hs:38:10: warning: [-Wtyped-holes (in -Wdefault)] (and originally defined in ‘GHC.Base’)) valid_hole_fits.hs:41:8: warning: [-Wtyped-holes (in -Wdefault)] - • Found hole: _ :: [Char] -> IO () + • Found hole: _ :: String -> IO () • In the expression: _ In the expression: _ "hello, world" In an equation for ‘main’: main = _ "hello, world" @@ -242,7 +242,7 @@ valid_hole_fits.hs:41:8: warning: [-Wtyped-holes (in -Wdefault)] (imported from ‘Prelude’ at valid_hole_fits.hs:3:1-40 (and originally defined in ‘System.IO’)) print :: forall a. Show a => a -> IO () - with print @[Char] + with print @String (imported from ‘Prelude’ at valid_hole_fits.hs:3:1-40 (and originally defined in ‘System.IO’)) fail :: forall (m :: * -> *) a. MonadFail m => String -> m a @@ -250,6 +250,6 @@ valid_hole_fits.hs:41:8: warning: [-Wtyped-holes (in -Wdefault)] (imported from ‘Prelude’ at valid_hole_fits.hs:3:1-40 (and originally defined in ‘Control.Monad.Fail’)) mempty :: forall a. Monoid a => a - with mempty @([Char] -> IO ()) + with mempty @(String -> IO ()) (imported from ‘Prelude’ at valid_hole_fits.hs:3:1-40 (and originally defined in ‘GHC.Base’)) diff --git a/testsuite/tests/typecheck/should_fail/ExpandSynsFail1.stderr b/testsuite/tests/typecheck/should_fail/ExpandSynsFail1.stderr index 0d5a9109a4..f592741d6f 100644 --- a/testsuite/tests/typecheck/should_fail/ExpandSynsFail1.stderr +++ b/testsuite/tests/typecheck/should_fail/ExpandSynsFail1.stderr @@ -1,11 +1,12 @@ + ExpandSynsFail1.hs:4:31: error: - Couldn't match type ‘Bool’ with ‘Int’ - Expected type: Foo - Actual type: Bar - Type synonyms expanded: - Expected type: Int - Actual type: Bool - In the second argument of ‘(==)’, namely ‘(False :: Bar)’ - In the second argument of ‘($)’, namely - ‘(1 :: Foo) == (False :: Bar)’ - In the expression: print $ (1 :: Foo) == (False :: Bar) + • Couldn't match type ‘Bool’ with ‘Int’ + Expected: Foo + Actual: Bar + Type synonyms expanded: + Expected type: Int + Actual type: Bool + • In the second argument of ‘(==)’, namely ‘(False :: Bar)’ + In the second argument of ‘($)’, namely + ‘(1 :: Foo) == (False :: Bar)’ + In the expression: print $ (1 :: Foo) == (False :: Bar) diff --git a/testsuite/tests/typecheck/should_fail/ExpandSynsFail2.stderr b/testsuite/tests/typecheck/should_fail/ExpandSynsFail2.stderr index 49e262cd3c..24aca978e3 100644 --- a/testsuite/tests/typecheck/should_fail/ExpandSynsFail2.stderr +++ b/testsuite/tests/typecheck/should_fail/ExpandSynsFail2.stderr @@ -1,8 +1,8 @@ ExpandSynsFail2.hs:19:37: error: • Couldn't match type ‘Int’ with ‘Bool’ - Expected type: ST s Foo - Actual type: MyBarST s + Expected: ST s Foo + Actual: MyBarST s Type synonyms expanded: Expected type: ST s Int Actual type: ST s Bool diff --git a/testsuite/tests/typecheck/should_fail/ExpandSynsFail3.stderr b/testsuite/tests/typecheck/should_fail/ExpandSynsFail3.stderr index 65d91351f5..5179c4ddc1 100644 --- a/testsuite/tests/typecheck/should_fail/ExpandSynsFail3.stderr +++ b/testsuite/tests/typecheck/should_fail/ExpandSynsFail3.stderr @@ -1,11 +1,12 @@ + ExpandSynsFail3.hs:21:8: error: - Couldn't match type ‘Int’ with ‘Bool’ - Expected type: T (T3, T5, Int) - Actual type: T (T5, T3, Bool) - Type synonyms expanded: - Expected type: T (T3, T3, Int) - Actual type: T (T3, T3, Bool) - In the first argument of ‘f’, namely - ‘(undefined :: T (T5, T3, Bool))’ - In the expression: f (undefined :: T (T5, T3, Bool)) - In an equation for ‘a’: a = f (undefined :: T (T5, T3, Bool)) + • Couldn't match type ‘Bool’ with ‘Int’ + Expected: T (T3, T5, Int) + Actual: T (T5, T3, Bool) + Type synonyms expanded: + Expected type: T (T3, T3, Int) + Actual type: T (T3, T3, Bool) + • In the first argument of ‘f’, namely + ‘(undefined :: T (T5, T3, Bool))’ + In the expression: f (undefined :: T (T5, T3, Bool)) + In an equation for ‘a’: a = f (undefined :: T (T5, T3, Bool)) diff --git a/testsuite/tests/typecheck/should_fail/ExpandSynsFail4.stderr b/testsuite/tests/typecheck/should_fail/ExpandSynsFail4.stderr index bae53ce104..d11f72a758 100644 --- a/testsuite/tests/typecheck/should_fail/ExpandSynsFail4.stderr +++ b/testsuite/tests/typecheck/should_fail/ExpandSynsFail4.stderr @@ -1,7 +1,8 @@ + ExpandSynsFail4.hs:11:22: error: - Couldn't match type ‘Bool’ with ‘Int’ - Expected type: T Int - Actual type: T Bool - In the first argument of ‘f’, namely ‘(undefined :: T Bool)’ - In the second argument of ‘($)’, namely ‘f (undefined :: T Bool)’ - In the expression: putStrLn $ f (undefined :: T Bool) + • Couldn't match type ‘Bool’ with ‘Int’ + Expected: T Int + Actual: T Bool + • In the first argument of ‘f’, namely ‘(undefined :: T Bool)’ + In the second argument of ‘($)’, namely ‘f (undefined :: T Bool)’ + In the expression: putStrLn $ f (undefined :: T Bool) diff --git a/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr b/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr index 613d92b837..255b3ad702 100644 --- a/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr +++ b/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr @@ -1,7 +1,6 @@ FrozenErrorTests.hs:26:9: error: - • Occurs check: cannot construct the infinite type: a ~ [a] - arising from a use of ‘goo1’ + • Couldn't match type ‘a’ with ‘[a]’ arising from a use of ‘goo1’ • In the expression: goo1 False undefined In an equation for ‘test1’: test1 = goo1 False undefined • Relevant bindings include @@ -21,7 +20,8 @@ FrozenErrorTests.hs:30:9: error: In an equation for ‘test3’: test3 = goo1 False (goo2 undefined) FrozenErrorTests.hs:45:15: error: - • Couldn't match type ‘T2 c c’ with ‘M (T2 (T2 c c) c)’ + • Couldn't match type: T2 c c + with: M (T2 (T2 c c) c) arising from a use of ‘goo3’ • In the first argument of ‘goo4’, namely ‘(goo3 False undefined)’ In the expression: goo4 (goo3 False undefined) @@ -30,7 +30,8 @@ FrozenErrorTests.hs:45:15: error: test4 :: T2 (T2 c c) c (bound at FrozenErrorTests.hs:45:1) FrozenErrorTests.hs:46:9: error: - • Couldn't match type ‘T2 c c’ with ‘M (T2 (T2 c c) c)’ + • Couldn't match type: T2 c c + with: M (T2 (T2 c c) c) arising from a use of ‘goo3’ • In the expression: goo3 False (goo4 undefined) In an equation for ‘test5’: test5 = goo3 False (goo4 undefined) diff --git a/testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr b/testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr index afa8330765..114d3e962d 100644 --- a/testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr +++ b/testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr @@ -1,10 +1,16 @@ LevPolyBounded.hs:10:15: error: • Expected a type, but ‘a’ has kind ‘TYPE r’ + ‘r’ is a rigid type variable bound by + the class declaration for ‘XBounded’ + at LevPolyBounded.hs:9:27 • In the type signature: LevPolyBounded.minBound :: a In the class declaration for ‘XBounded’ LevPolyBounded.hs:11:15: error: • Expected a type, but ‘a’ has kind ‘TYPE r’ + ‘r’ is a rigid type variable bound by + the class declaration for ‘XBounded’ + at LevPolyBounded.hs:9:27 • In the type signature: LevPolyBounded.maxBound :: a In the class declaration for ‘XBounded’ diff --git a/testsuite/tests/typecheck/should_fail/T10194.stderr b/testsuite/tests/typecheck/should_fail/T10194.stderr index aeaad79440..60374ffe16 100644 --- a/testsuite/tests/typecheck/should_fail/T10194.stderr +++ b/testsuite/tests/typecheck/should_fail/T10194.stderr @@ -1,7 +1,9 @@ T10194.hs:7:8: error: - • Cannot instantiate unification variable ‘b0’ + • Couldn't match type ‘b0’ with ‘X’ + Expected: (X -> c) -> (a -> X) -> a -> c + Actual: (b0 -> c) -> (a -> b0) -> a -> c + Cannot instantiate unification variable ‘b0’ with a type involving polytypes: X - GHC doesn't yet support impredicative polymorphism • In the expression: (.) In an equation for ‘comp’: comp = (.) diff --git a/testsuite/tests/typecheck/should_fail/T10619.stderr b/testsuite/tests/typecheck/should_fail/T10619.stderr index 9d34750675..481a08a20c 100644 --- a/testsuite/tests/typecheck/should_fail/T10619.stderr +++ b/testsuite/tests/typecheck/should_fail/T10619.stderr @@ -1,8 +1,11 @@ T10619.hs:9:15: error: - • Couldn't match type ‘forall a. a -> a’ with ‘b -> b’ - Expected type: (b -> b) -> b -> b - Actual type: (forall a. a -> a) -> b -> b + • Couldn't match type ‘p’ with ‘forall b. b -> b’ + Expected: p -> p + Actual: (forall a. a -> a) -> forall b. b -> b + ‘p’ is a rigid type variable bound by + the inferred type of foo :: p1 -> p -> p + at T10619.hs:(8,1)-(10,20) • In the expression: (\ x -> x) :: (forall a. a -> a) -> forall b. b -> b In the expression: @@ -17,12 +20,15 @@ T10619.hs:9:15: error: else \ y -> y • Relevant bindings include - foo :: p -> (b -> b) -> b -> b (bound at T10619.hs:8:1) + foo :: p1 -> p -> p (bound at T10619.hs:8:1) T10619.hs:14:15: error: - • Couldn't match type ‘forall a. a -> a’ with ‘b -> b’ - Expected type: (b -> b) -> b -> b - Actual type: (forall a. a -> a) -> b -> b + • Couldn't match type ‘p’ with ‘forall a. a -> a’ + Expected: p -> p + Actual: (forall a. a -> a) -> forall b. b -> b + ‘p’ is a rigid type variable bound by + the inferred type of bar :: p1 -> p -> p + at T10619.hs:(12,1)-(14,66) • In the expression: (\ x -> x) :: (forall a. a -> a) -> forall b. b -> b In the expression: @@ -37,26 +43,32 @@ T10619.hs:14:15: error: else ((\ x -> x) :: (forall a. a -> a) -> forall b. b -> b) • Relevant bindings include - bar :: p -> (b -> b) -> b -> b (bound at T10619.hs:12:1) + bar :: p1 -> p -> p (bound at T10619.hs:12:1) T10619.hs:16:13: error: - • Couldn't match type ‘forall a. a -> a’ with ‘b -> b’ - Expected type: (b -> b) -> b -> b - Actual type: (forall a. a -> a) -> b -> b + • Couldn't match type ‘p’ with ‘forall b. b -> b’ + Expected: p -> p + Actual: (forall a. a -> a) -> forall b. b -> b + ‘p’ is a rigid type variable bound by + the inferred type of baz :: Bool -> p -> p + at T10619.hs:(16,1)-(17,19) • In the expression: (\ x -> x) :: (forall a. a -> a) -> forall b. b -> b In an equation for ‘baz’: baz True = (\ x -> x) :: (forall a. a -> a) -> forall b. b -> b • Relevant bindings include - baz :: Bool -> (b -> b) -> b -> b (bound at T10619.hs:16:1) + baz :: Bool -> p -> p (bound at T10619.hs:16:1) T10619.hs:20:14: error: - • Couldn't match type ‘forall a. a -> a’ with ‘b -> b’ - Expected type: (b -> b) -> b -> b - Actual type: (forall a. a -> a) -> b -> b + • Couldn't match type ‘p’ with ‘forall a. a -> a’ + Expected: p -> p + Actual: (forall a. a -> a) -> forall b. b -> b + ‘p’ is a rigid type variable bound by + the inferred type of quux :: Bool -> p -> p + at T10619.hs:(19,1)-(20,64) • In the expression: (\ x -> x) :: (forall a. a -> a) -> forall b. b -> b In an equation for ‘quux’: quux True = (\ x -> x) :: (forall a. a -> a) -> forall b. b -> b • Relevant bindings include - quux :: Bool -> (b -> b) -> b -> b (bound at T10619.hs:19:1) + quux :: Bool -> p -> p (bound at T10619.hs:19:1) diff --git a/testsuite/tests/typecheck/should_fail/T10715b.stderr b/testsuite/tests/typecheck/should_fail/T10715b.stderr index 8c7f370273..99875bbcf5 100644 --- a/testsuite/tests/typecheck/should_fail/T10715b.stderr +++ b/testsuite/tests/typecheck/should_fail/T10715b.stderr @@ -1,8 +1,12 @@ T10715b.hs:7:7: error: - Occurs check: cannot construct the infinite type: b ~ [b] - arising from a use of ‘coerce’ - In the first argument of ‘asTypeOf’, namely ‘coerce’ - In the expression: coerce `asTypeOf` head - In an equation for ‘foo’: foo = coerce `asTypeOf` head - Relevant bindings include foo :: [b] -> b (bound at T10715b.hs:7:1) + • Couldn't match representation of type ‘b’ with that of ‘[b]’ + arising from a use of ‘coerce’ + ‘b’ is a rigid type variable bound by + the inferred type of foo :: [b] -> b + at T10715b.hs:7:1-28 + • In the first argument of ‘asTypeOf’, namely ‘coerce’ + In the expression: coerce `asTypeOf` head + In an equation for ‘foo’: foo = coerce `asTypeOf` head + • Relevant bindings include + foo :: [b] -> b (bound at T10715b.hs:7:1) diff --git a/testsuite/tests/typecheck/should_fail/T10971d.stderr b/testsuite/tests/typecheck/should_fail/T10971d.stderr index 5cf339bd8d..93dce724d0 100644 --- a/testsuite/tests/typecheck/should_fail/T10971d.stderr +++ b/testsuite/tests/typecheck/should_fail/T10971d.stderr @@ -1,18 +1,21 @@ T10971d.hs:4:14: error: - • Couldn't match expected type ‘[a0]’ with actual type ‘Maybe a2’ + • Couldn't match expected type: [a0] + with actual type: Maybe a3 • In the first argument of ‘f’, namely ‘(Just 1)’ In the second argument of ‘($)’, namely ‘f (Just 1)’ In a stmt of a 'do' block: print $ f (Just 1) T10971d.hs:5:19: error: - • Couldn't match expected type ‘[b1]’ with actual type ‘Maybe a3’ + • Couldn't match expected type: [b0] + with actual type: Maybe a4 • In the second argument of ‘g’, namely ‘(Just 5)’ In the second argument of ‘($)’, namely ‘g (+ 1) (Just 5)’ In a stmt of a 'do' block: print $ g (+ 1) (Just 5) T10971d.hs:6:23: error: - • Couldn't match expected type ‘[b0]’ with actual type ‘Maybe a1’ + • Couldn't match expected type: [a2] + with actual type: Maybe a1 • In the second argument of ‘h’, namely ‘Nothing’ In the second argument of ‘($)’, namely ‘h (const 5) Nothing’ In a stmt of a 'do' block: print $ h (const 5) Nothing diff --git a/testsuite/tests/typecheck/should_fail/T11514.stderr b/testsuite/tests/typecheck/should_fail/T11514.stderr index 62acf15b73..dd940a36b1 100644 --- a/testsuite/tests/typecheck/should_fail/T11514.stderr +++ b/testsuite/tests/typecheck/should_fail/T11514.stderr @@ -1,8 +1,9 @@ T11514.hs:6:7: error: - • Cannot instantiate unification variable ‘a0’ + • Couldn't match expected type ‘(Show a => a -> a) -> ()’ + with actual type ‘a0’ + Cannot instantiate unification variable ‘a0’ with a type involving polytypes: (Show a => a -> a) -> () - GHC doesn't yet support impredicative polymorphism • In the expression: undefined In an equation for ‘foo’: foo = undefined • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/T11672.stderr b/testsuite/tests/typecheck/should_fail/T11672.stderr index 16eb31042f..a0f8d7e36c 100644 --- a/testsuite/tests/typecheck/should_fail/T11672.stderr +++ b/testsuite/tests/typecheck/should_fail/T11672.stderr @@ -4,8 +4,8 @@ T11672.hs:9:10: error: When matching types a0 :: Symbol Int -> Bool :: * - Expected type: Proxy a0 - Actual type: Proxy (Int -> Bool) + Expected: Proxy a0 + Actual: Proxy (Int -> Bool) • In the first argument of ‘f’, namely ‘(Proxy :: Proxy (Int -> Bool))’ In the expression: f (Proxy :: Proxy (Int -> Bool)) diff --git a/testsuite/tests/typecheck/should_fail/T12170a.stderr b/testsuite/tests/typecheck/should_fail/T12170a.stderr index c1e4bdcecb..a8f349df43 100644 --- a/testsuite/tests/typecheck/should_fail/T12170a.stderr +++ b/testsuite/tests/typecheck/should_fail/T12170a.stderr @@ -1,9 +1,9 @@ -T12170a.hs:20:7: error: +T12170a.hs:20:35: error: • Couldn't match type ‘Ref m0’ with ‘IORef’ - Expected type: IO (Ref m0 (f0 ())) - Actual type: IO (Ref IO (f0 ())) + Expected: IORef (f0 ()) -> m0 (f0 ()) + Actual: Ref m0 (f0 ()) -> m0 (f0 ()) The type variable ‘m0’ is ambiguous - • In the first argument of ‘(>>=)’, namely ‘newRef (pure ())’ + • In the second argument of ‘(.)’, namely ‘readRef’ + In the second argument of ‘(>>=)’, namely ‘join . readRef’ In the expression: newRef (pure ()) >>= join . readRef - In an equation for ‘foo’: foo = newRef (pure ()) >>= join . readRef
\ No newline at end of file diff --git a/testsuite/tests/typecheck/should_fail/T12373.stderr b/testsuite/tests/typecheck/should_fail/T12373.stderr index a2568d75f9..20137fbdad 100644 --- a/testsuite/tests/typecheck/should_fail/T12373.stderr +++ b/testsuite/tests/typecheck/should_fail/T12373.stderr @@ -4,8 +4,8 @@ T12373.hs:10:19: error: When matching types a0 :: * MVar# RealWorld a1 :: TYPE 'UnliftedRep - Expected type: (# State# RealWorld, a0 #) - Actual type: (# State# RealWorld, MVar# RealWorld a1 #) + Expected: (# State# RealWorld, a0 #) + Actual: (# State# RealWorld, MVar# RealWorld a1 #) • In the expression: newMVar# rw In the first argument of ‘IO’, namely ‘(\ rw -> newMVar# rw)’ In the first argument of ‘(>>)’, namely ‘IO (\ rw -> newMVar# rw)’ diff --git a/testsuite/tests/typecheck/should_fail/T12563.stderr b/testsuite/tests/typecheck/should_fail/T12563.stderr index e6619aa1da..f141a23e96 100644 --- a/testsuite/tests/typecheck/should_fail/T12563.stderr +++ b/testsuite/tests/typecheck/should_fail/T12563.stderr @@ -1,8 +1,9 @@ T12563.hs:7:15: error: - • Cannot instantiate unification variable ‘p0’ + • Couldn't match expected type ‘(forall a. f0 a) -> f0 r0’ + with actual type ‘p0’ + Cannot instantiate unification variable ‘p0’ with a type involving polytypes: (forall a. f0 a) -> f0 r0 - GHC doesn't yet support impredicative polymorphism • In the first argument of ‘foo’, namely ‘g’ In the expression: foo g In the expression: \ g -> foo g diff --git a/testsuite/tests/typecheck/should_fail/T12589.stderr b/testsuite/tests/typecheck/should_fail/T12589.stderr index 80ea5edb80..5f359090d9 100644 --- a/testsuite/tests/typecheck/should_fail/T12589.stderr +++ b/testsuite/tests/typecheck/should_fail/T12589.stderr @@ -2,10 +2,11 @@ T12589.hs:13:3: error: Variable not in scope: (&) :: t0 -> t1 -> t T12589.hs:13:5: error: - • Cannot instantiate unification variable ‘t1’ + • Couldn't match expected type ‘t1’ + with actual type ‘(forall a. Bounded a => f0 a) -> h0 f0 xs0’ + Cannot instantiate unification variable ‘t1’ with a type involving polytypes: (forall a. Bounded a => f0 a) -> h0 f0 xs0 - GHC doesn't yet support impredicative polymorphism • In the second argument of ‘(&)’, namely ‘hcpure (Proxy @Bounded)’ In the expression: minBound & hcpure (Proxy @Bounded) In an equation for ‘a’: a = minBound & hcpure (Proxy @Bounded) diff --git a/testsuite/tests/typecheck/should_fail/T12648.stderr b/testsuite/tests/typecheck/should_fail/T12648.stderr index 227bc6773e..f13b6c1cd0 100644 --- a/testsuite/tests/typecheck/should_fail/T12648.stderr +++ b/testsuite/tests/typecheck/should_fail/T12648.stderr @@ -1,12 +1,12 @@ T12648.hs:76:2: error: • Couldn't match type ‘a’ with ‘()’ + Expected: m a + Actual: m () ‘a’ is a rigid type variable bound by the type signature for: f :: forall (m :: * -> *) a. MonadBaseUnlift m IO => m a at T12648.hs:71:1-34 - Expected type: m a - Actual type: m () • In a stmt of a 'do' block: return () In the expression: do _ <- askUnliftBase diff --git a/testsuite/tests/typecheck/should_fail/T12906.stderr b/testsuite/tests/typecheck/should_fail/T12906.stderr index c74fd97bbc..f1f245c912 100644 --- a/testsuite/tests/typecheck/should_fail/T12906.stderr +++ b/testsuite/tests/typecheck/should_fail/T12906.stderr @@ -3,8 +3,9 @@ T12906.hs:1:1: error: The IO action ‘main’ is not defined in module ‘Main’ T12906.hs:2:7: error: - • Couldn't match type ‘IO ()’ with ‘[Char]’ - Expected type: String - Actual type: IO () + • Couldn't match type: IO () + with: [Char] + Expected: String + Actual: IO () • In the expression: print (reverse s + 1) In an equation for ‘x’: x s = print (reverse s + 1) diff --git a/testsuite/tests/typecheck/should_fail/T12921.stderr b/testsuite/tests/typecheck/should_fail/T12921.stderr index d38ccf22b9..f10faf2751 100644 --- a/testsuite/tests/typecheck/should_fail/T12921.stderr +++ b/testsuite/tests/typecheck/should_fail/T12921.stderr @@ -10,7 +10,7 @@ T12921.hs:4:1: error: instance Data.Data.Data Ordering -- Defined in ‘Data.Data’ instance Data.Data.Data Integer -- Defined in ‘Data.Data’ ...plus 15 others - ...plus 47 instances involving out-of-scope types + ...plus 50 instances involving out-of-scope types (use -fprint-potential-instances to see them all) • In the annotation: {-# ANN module "HLint: ignore Reduce duplication" #-} diff --git a/testsuite/tests/typecheck/should_fail/T13292.stderr b/testsuite/tests/typecheck/should_fail/T13292.stderr index adb2738e69..217c5d4a39 100644 --- a/testsuite/tests/typecheck/should_fail/T13292.stderr +++ b/testsuite/tests/typecheck/should_fail/T13292.stderr @@ -17,7 +17,7 @@ T13292a.hs:4:12: warning: [-Wdeferred-type-errors (in -Wdefault)] T13292.hs:6:1: warning: [-Wdeferred-type-errors (in -Wdefault)] • Couldn't match type ‘GHC.Types.Any’ with ‘IO’ - Expected type: IO () - Actual type: GHC.Types.Any () + Expected: IO () + Actual: GHC.Types.Any () • In the expression: main When checking the type of the IO action ‘main’ diff --git a/testsuite/tests/typecheck/should_fail/T13311.stderr b/testsuite/tests/typecheck/should_fail/T13311.stderr index d739d2173c..e858a6037e 100644 --- a/testsuite/tests/typecheck/should_fail/T13311.stderr +++ b/testsuite/tests/typecheck/should_fail/T13311.stderr @@ -1,7 +1,7 @@ T13311.hs:9:3: error: - • Couldn't match expected type ‘IO a0’ - with actual type ‘Maybe a1 -> Maybe b0’ + • Couldn't match expected type: IO a0 + with actual type: Maybe a1 -> Maybe b0 • Probable cause: ‘f’ is applied to too few arguments In a stmt of a 'do' block: f In the expression: diff --git a/testsuite/tests/typecheck/should_fail/T13320.stderr b/testsuite/tests/typecheck/should_fail/T13320.stderr index afafdb3074..4442069d15 100644 --- a/testsuite/tests/typecheck/should_fail/T13320.stderr +++ b/testsuite/tests/typecheck/should_fail/T13320.stderr @@ -1,6 +1,7 @@ T13320.hs:32:21: error: - • Couldn't match type ‘X_Var ξ’ with ‘TermX ξ’ + • Couldn't match type: X_Var ξ + with: TermX ξ arising from a use of ‘genTerm’ • In the first argument of ‘sized’, namely ‘genTerm’ In the expression: sized genTerm diff --git a/testsuite/tests/typecheck/should_fail/T13530.stderr b/testsuite/tests/typecheck/should_fail/T13530.stderr index 139c1b0f34..4b540f297c 100644 --- a/testsuite/tests/typecheck/should_fail/T13530.stderr +++ b/testsuite/tests/typecheck/should_fail/T13530.stderr @@ -4,7 +4,7 @@ T13530.hs:11:7: error: When matching types a0 :: * Int# :: TYPE 'IntRep - Expected type: (# Int#, Int# #) - Actual type: (# Int#, a0 #) + Expected: (# Int#, Int# #) + Actual: (# Int#, a0 #) • In the expression: g x In an equation for ‘f’: f x = g x diff --git a/testsuite/tests/typecheck/should_fail/T13610.stderr b/testsuite/tests/typecheck/should_fail/T13610.stderr index 0755ce9371..c04687988c 100644 --- a/testsuite/tests/typecheck/should_fail/T13610.stderr +++ b/testsuite/tests/typecheck/should_fail/T13610.stderr @@ -4,8 +4,8 @@ T13610.hs:11:15: error: When matching types a :: * Weak# () :: TYPE 'UnliftedRep - Expected type: (# State# RealWorld, a #) - Actual type: (# State# RealWorld, Weak# () #) + Expected: (# State# RealWorld, a #) + Actual: (# State# RealWorld, Weak# () #) • In the expression: mkWeakNoFinalizer# double () s In the first argument of ‘IO’, namely ‘(\ s -> mkWeakNoFinalizer# double () s)’ diff --git a/testsuite/tests/typecheck/should_fail/T13909.stderr b/testsuite/tests/typecheck/should_fail/T13909.stderr index 599be5a445..0cbae70733 100644 --- a/testsuite/tests/typecheck/should_fail/T13909.stderr +++ b/testsuite/tests/typecheck/should_fail/T13909.stderr @@ -1,5 +1,7 @@ T13909.hs:11:18: error: • Expected kind ‘k0’, but ‘Hm’ has kind ‘forall k -> k -> *’ + Cannot instantiate unification variable ‘k0’ + with a kind involving polytypes: forall k -> k -> * • In the first argument of ‘HasName’, namely ‘Hm’ In the instance declaration for ‘HasName Hm’ diff --git a/testsuite/tests/typecheck/should_fail/T14605.stderr b/testsuite/tests/typecheck/should_fail/T14605.stderr index 09181c6ee8..04d8b5a67d 100644 --- a/testsuite/tests/typecheck/should_fail/T14605.stderr +++ b/testsuite/tests/typecheck/should_fail/T14605.stderr @@ -1,8 +1,8 @@ T14605.hs:14:13: error: - • Couldn't match representation of type ‘x1’ with that of ‘()’ + • Couldn't match representation of type ‘x’ with that of ‘()’ arising from a use of ‘coerce’ - ‘x1’ is a rigid type variable bound by + ‘x’ is a rigid type variable bound by the type () at T14605.hs:14:1-49 • In the expression: coerce @(forall x. ()) @(forall x. x) diff --git a/testsuite/tests/typecheck/should_fail/T14618.stderr b/testsuite/tests/typecheck/should_fail/T14618.stderr index 8faa64c25e..2faf4a925b 100644 --- a/testsuite/tests/typecheck/should_fail/T14618.stderr +++ b/testsuite/tests/typecheck/should_fail/T14618.stderr @@ -1,16 +1,12 @@ T14618.hs:6:14: error: - • Couldn't match type ‘a’ with ‘b’ - ‘a’ is a rigid type variable bound by - the type signature for: - safeCoerce :: forall a b. a -> b - at T14618.hs:5:1-20 + • Couldn't match type ‘b’ with ‘forall c. a’ + Expected: a -> b + Actual: a -> forall c. a ‘b’ is a rigid type variable bound by the type signature for: safeCoerce :: forall a b. a -> b at T14618.hs:5:1-20 - Expected type: a -> b - Actual type: b -> b • In the expression: f' In an equation for ‘safeCoerce’: safeCoerce diff --git a/testsuite/tests/typecheck/should_fail/T14884.stderr b/testsuite/tests/typecheck/should_fail/T14884.stderr index cb85da14a5..f454bb5625 100644 --- a/testsuite/tests/typecheck/should_fail/T14884.stderr +++ b/testsuite/tests/typecheck/should_fail/T14884.stderr @@ -1,6 +1,6 @@ T14884.hs:4:5: error: - • Found hole: _ :: (a0 -> IO ()) -> [Char] -> IO () + • Found hole: _ :: (a0 -> IO ()) -> String -> IO () Where: ‘a0’ is an ambiguous type variable • In the expression: _ In the expression: _ print "abc" @@ -20,15 +20,15 @@ T14884.hs:4:5: error: (imported from ‘Prelude’ at T14884.hs:1:8-13 (and originally defined in ‘Data.Foldable’)) ($) :: forall a b. (a -> b) -> a -> b - with ($) @'GHC.Types.LiftedRep @[Char] @(IO ()) + with ($) @'GHC.Types.LiftedRep @String @(IO ()) (imported from ‘Prelude’ at T14884.hs:1:8-13 (and originally defined in ‘GHC.Base’)) ($!) :: forall a b. (a -> b) -> a -> b - with ($!) @'GHC.Types.LiftedRep @[Char] @(IO ()) + with ($!) @'GHC.Types.LiftedRep @String @(IO ()) (imported from ‘Prelude’ at T14884.hs:1:8-13 (and originally defined in ‘GHC.Base’)) id :: forall a. a -> a - with id @([Char] -> IO ()) + with id @(String -> IO ()) (imported from ‘Prelude’ at T14884.hs:1:8-13 (and originally defined in ‘GHC.Base’)) diff --git a/testsuite/tests/typecheck/should_fail/T14904a.stderr b/testsuite/tests/typecheck/should_fail/T14904a.stderr index ea92de3465..c0e2b84a80 100644 --- a/testsuite/tests/typecheck/should_fail/T14904a.stderr +++ b/testsuite/tests/typecheck/should_fail/T14904a.stderr @@ -1,5 +1,7 @@ T14904a.hs:9:6: error: • Expected kind ‘forall (a :: k1). g a’, but ‘f’ has kind ‘k0’ + Cannot instantiate unification variable ‘k0’ + with a kind involving polytypes: forall (a :: k1). g a • In the first argument of ‘F’, namely ‘(f :: forall a. g a)’ In the type family declaration for ‘F’ diff --git a/testsuite/tests/typecheck/should_fail/T14904b.stderr b/testsuite/tests/typecheck/should_fail/T14904b.stderr index fff6942af1..83a9ec15fa 100644 --- a/testsuite/tests/typecheck/should_fail/T14904b.stderr +++ b/testsuite/tests/typecheck/should_fail/T14904b.stderr @@ -1,6 +1,8 @@ T14904b.hs:9:7: error: • Expected kind ‘forall (a :: k1). g a’, but ‘f’ has kind ‘k0’ + Cannot instantiate unification variable ‘k0’ + with a kind involving polytypes: forall (a :: k1). g a • In the first argument of ‘F’, namely ‘((f :: forall a. g a) :: forall a. g a)’ In the type family declaration for ‘F’ diff --git a/testsuite/tests/typecheck/should_fail/T15330.stderr b/testsuite/tests/typecheck/should_fail/T15330.stderr index cef80452a1..c2bf2447cc 100644 --- a/testsuite/tests/typecheck/should_fail/T15330.stderr +++ b/testsuite/tests/typecheck/should_fail/T15330.stderr @@ -1,13 +1,17 @@ T15330.hs:11:6: error: - • Couldn't match expected type ‘Proxy (T 'True)’ - with actual type ‘[Char]’ + • Couldn't match type: [Char] + with: Proxy (T 'True) + Expected: Proxy (T 'True) + Actual: String • In the expression: "foo" In an equation for ‘f1’: f1 = "foo" T15330.hs:15:6: error: - • Couldn't match expected type ‘Proxy (t 'True)’ - with actual type ‘[Char]’ + • Couldn't match type: [Char] + with: Proxy (t 'True) + Expected: Proxy (t 'True) + Actual: String • In the expression: "foo" In an equation for ‘f2’: f2 = "foo" • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/T15361.stderr b/testsuite/tests/typecheck/should_fail/T15361.stderr index 4b8c23ebf2..1520bc3982 100644 --- a/testsuite/tests/typecheck/should_fail/T15361.stderr +++ b/testsuite/tests/typecheck/should_fail/T15361.stderr @@ -6,6 +6,8 @@ T15361.hs:13:13: error: HRefl :: forall {k1} (a :: k1). a :~~: a, in an equation for ‘foo’ at T15361.hs:13:5-9 + Expected: a :~~: c + Actual: a :~~: a ‘a’ is a rigid type variable bound by the type signature for: foo :: forall a b c. (a :~~: b) -> a :~~: c @@ -14,8 +16,6 @@ T15361.hs:13:13: error: the type signature for: foo :: forall a b c. (a :~~: b) -> a :~~: c at T15361.hs:(11,1)-(12,27) - Expected type: a :~~: c - Actual type: a :~~: a • In the expression: HRefl In an equation for ‘foo’: foo HRefl = HRefl • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/T15438.hs b/testsuite/tests/typecheck/should_fail/T15438.hs index 0f995389a0..975afa3e9e 100644 --- a/testsuite/tests/typecheck/should_fail/T15438.hs +++ b/testsuite/tests/typecheck/should_fail/T15438.hs @@ -4,5 +4,7 @@ module T15438 where class C a b +-- With simple subsumption (#17775) we +-- no longer get an ambiguity check here foo :: (forall a b. C a b => b -> b) -> Int -foo = error "urk" +foo x = error "urk" diff --git a/testsuite/tests/typecheck/should_fail/T15438.stderr b/testsuite/tests/typecheck/should_fail/T15438.stderr deleted file mode 100644 index 473d5dcc98..0000000000 --- a/testsuite/tests/typecheck/should_fail/T15438.stderr +++ /dev/null @@ -1,11 +0,0 @@ - -T15438.hs:7:8: error: - • Could not deduce (C a0 b) - from the context: C a b - bound by a type expected by the context: - forall a b. C a b => b -> b - at T15438.hs:7:8-43 - The type variable ‘a0’ is ambiguous - • In the ambiguity check for ‘foo’ - To defer the ambiguity check to use sites, enable AllowAmbiguousTypes - In the type signature: foo :: (forall a b. C a b => b -> b) -> Int diff --git a/testsuite/tests/typecheck/should_fail/T15629.stderr b/testsuite/tests/typecheck/should_fail/T15629.stderr index ac307ed9d5..09d59fdf62 100644 --- a/testsuite/tests/typecheck/should_fail/T15629.stderr +++ b/testsuite/tests/typecheck/should_fail/T15629.stderr @@ -1,39 +1,19 @@ T15629.hs:26:37: error: - • Expected kind ‘x1 ~> F x1 ab1’, - but ‘F1Sym :: x ~> F x z’ has kind ‘x1 ~> F x1 z1’ + • Couldn't match kind ‘z’ with ‘ab’ + Expected kind ‘x ~> F x ab’, + but ‘F1Sym :: x ~> F x z’ has kind ‘x ~> F x z’ + ‘z’ is a rigid type variable bound by + ‘forall z ab. + Proxy ((Comp (F1Sym :: x ~> F x z) F2Sym) :: F x ab ~> F x ab)’ + at T15629.hs:26:17 + ‘ab’ is a rigid type variable bound by + ‘forall z ab. + Proxy ((Comp (F1Sym :: x ~> F x z) F2Sym) :: F x ab ~> F x ab)’ + at T15629.hs:26:19-20 • In the first argument of ‘Comp’, namely ‘(F1Sym :: x ~> F x z)’ In the first argument of ‘Proxy’, namely ‘((Comp (F1Sym :: x ~> F x z) F2Sym) :: F x ab ~> F x ab)’ In the type signature: g :: forall z ab. Proxy ((Comp (F1Sym :: x ~> F x z) F2Sym) :: F x ab ~> F x ab) - -T15629.hs:27:9: error: - • Couldn't match kind ‘z1’ with ‘ab1’ - ‘z1’ is a rigid type variable bound by - the type signature for: - g :: forall z1 ab1. Proxy (Comp F1Sym F2Sym) - at T15629.hs:26:5-84 - ‘ab1’ is a rigid type variable bound by - the type signature for: - g :: forall z1 ab1. Proxy (Comp F1Sym F2Sym) - at T15629.hs:26:5-84 - When matching types - f0 :: x ~> F x ab - F1Sym :: TyFun x1 (F x1 z1) -> * - Expected type: Proxy (Comp F1Sym F2Sym) - Actual type: Proxy (Comp f0 F2Sym) - • In the expression: sg Proxy Proxy - In an equation for ‘g’: g = sg Proxy Proxy - In an equation for ‘f’: - f _ - = () - where - g :: - forall z ab. - Proxy ((Comp (F1Sym :: x ~> F x z) F2Sym) :: F x ab ~> F x ab) - g = sg Proxy Proxy - • Relevant bindings include - g :: Proxy (Comp F1Sym F2Sym) (bound at T15629.hs:27:5) - f :: Proxy x1 -> () (bound at T15629.hs:24:1) diff --git a/testsuite/tests/typecheck/should_fail/T15648.stderr b/testsuite/tests/typecheck/should_fail/T15648.stderr index 192d8d15e8..7de4bc9e18 100644 --- a/testsuite/tests/typecheck/should_fail/T15648.stderr +++ b/testsuite/tests/typecheck/should_fail/T15648.stderr @@ -1,9 +1,9 @@ T15648.hs:23:21: error: - • Couldn't match type ‘(a0 GHC.Prim.~# b0) -> JankyEquality a0 b0’ - with ‘JankyEquality a a’ - Expected type: JankyEquality a b - Actual type: (a0 GHC.Prim.~# b0) -> JankyEquality a0 b0 + • Couldn't match type: (a0 GHC.Prim.~# b0) -> JankyEquality a0 b0 + with: JankyEquality a a + Expected: JankyEquality a b + Actual: (a0 GHC.Prim.~# b0) -> JankyEquality a0 b0 • Probable cause: ‘Jank’ is applied to too few arguments In the expression: Jank In an equation for ‘legitToJank’: legitToJank Legit = Jank @@ -12,9 +12,9 @@ T15648.hs:23:21: error: (bound at T15648.hs:23:1) T15648.hs:30:10: error: - • Couldn't match expected type ‘(a GHC.Prim.~# b) - -> b GHC.Prim.~# a’ - with actual type ‘b GHC.Prim.~# a’ + • Couldn't match expected type: (a GHC.Prim.~# b) + -> b GHC.Prim.~# a + with actual type: b GHC.Prim.~# a • In the expression: unJank $ legitToJank $ mkLegit @b @a In an equation for ‘ueqSym’: ueqSym = unJank $ legitToJank $ mkLegit @b @a diff --git a/testsuite/tests/typecheck/should_fail/T15801.stderr b/testsuite/tests/typecheck/should_fail/T15801.stderr index e74972332c..2209d72ab8 100644 --- a/testsuite/tests/typecheck/should_fail/T15801.stderr +++ b/testsuite/tests/typecheck/should_fail/T15801.stderr @@ -1,6 +1,6 @@ T15801.hs:52:10: error: - • Couldn't match representation of type ‘UnOp op_a -> UnOp b’ - with that of ‘op_a --> b’ + • Couldn't match representation of type: UnOp op_a -> UnOp b + with that of: op_a --> b arising from the superclasses of an instance declaration • In the instance declaration for ‘OpRíki (Op (*))’ diff --git a/testsuite/tests/typecheck/should_fail/T16074.stderr b/testsuite/tests/typecheck/should_fail/T16074.stderr index cd04542641..10b263efcb 100644 --- a/testsuite/tests/typecheck/should_fail/T16074.stderr +++ b/testsuite/tests/typecheck/should_fail/T16074.stderr @@ -1,6 +1,8 @@ T16074.hs:10:7: error: • Couldn't match type ‘a’ with ‘b’ + Expected: TYPE a :~: TYPE b + Actual: TYPE a :~: TYPE a ‘a’ is a rigid type variable bound by the type signature for: foo :: * :~: * @@ -9,8 +11,6 @@ T16074.hs:10:7: error: the type signature for: foo :: * :~: * at T16074.hs:9:1-24 - Expected type: TYPE a :~: TYPE b - Actual type: TYPE a :~: TYPE a • In the expression: Refl In an equation for ‘foo’: foo = Refl • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/T16204c.stderr b/testsuite/tests/typecheck/should_fail/T16204c.stderr index 48d63785ad..6ad532a4ea 100644 --- a/testsuite/tests/typecheck/should_fail/T16204c.stderr +++ b/testsuite/tests/typecheck/should_fail/T16204c.stderr @@ -4,8 +4,8 @@ T16204c.hs:16:8: error: When matching types a0 :: Rep a :: * - Expected type: Sing a - Actual type: Sing a0 + Expected: Sing a + Actual: Sing a0 • In the first argument of ‘id’, namely ‘sTo’ In the expression: id sTo In an equation for ‘x’: x = id sTo diff --git a/testsuite/tests/typecheck/should_fail/T16517.stderr b/testsuite/tests/typecheck/should_fail/T16517.stderr index 8d20665afc..1e17286cff 100644 --- a/testsuite/tests/typecheck/should_fail/T16517.stderr +++ b/testsuite/tests/typecheck/should_fail/T16517.stderr @@ -1,6 +1,10 @@ T16517.hs:5:29: error: • Expected kind ‘k’, but ‘a’ has kind ‘k0’ + because kind variable ‘k’ would escape its scope + This (rigid, skolem) kind variable is bound by + the class declaration for ‘C’ + at T16517.hs:5:22-35 • In the first argument of ‘Proxy’, namely ‘(a :: k)’ In the type signature: m :: Proxy (a :: k) In the class declaration for ‘C’ diff --git a/testsuite/tests/typecheck/should_fail/T17077.stderr b/testsuite/tests/typecheck/should_fail/T17077.stderr index 3d05adc3c3..3f27d19c70 100644 --- a/testsuite/tests/typecheck/should_fail/T17077.stderr +++ b/testsuite/tests/typecheck/should_fail/T17077.stderr @@ -1,5 +1,7 @@ T17077.hs:7:13: error: • Expected kind ‘forall (k :: k1). a’, but ‘z’ has kind ‘k0’ + Cannot instantiate unification variable ‘k0’ + with a kind involving polytypes: forall (k2 :: k1). a • In the first argument of ‘Proxy’, namely ‘(z :: forall k. a)’ In the type signature: t :: Proxy (z :: forall k. a) diff --git a/testsuite/tests/typecheck/should_fail/T17775.hs b/testsuite/tests/typecheck/should_fail/T17775.hs new file mode 100644 index 0000000000..b10f0725f5 --- /dev/null +++ b/testsuite/tests/typecheck/should_fail/T17775.hs @@ -0,0 +1,15 @@ +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE RankNTypes #-} + +module T1 where + + + +g :: Int -> Char + +g _ = 'a' + + + +f :: Int -> Show Int => () +f = g diff --git a/testsuite/tests/typecheck/should_fail/T17775.stderr b/testsuite/tests/typecheck/should_fail/T17775.stderr new file mode 100644 index 0000000000..2dc0448ab8 --- /dev/null +++ b/testsuite/tests/typecheck/should_fail/T17775.stderr @@ -0,0 +1,7 @@ + +T17775.hs:15:5: error: + • Couldn't match type ‘Char’ with ‘Show Int => ()’ + Expected: Int -> Show Int => () + Actual: Int -> Char + • In the expression: g + In an equation for ‘f’: f = g diff --git a/testsuite/tests/typecheck/should_fail/T18127a.stderr b/testsuite/tests/typecheck/should_fail/T18127a.stderr index ee354f7467..60dcb3e121 100644 --- a/testsuite/tests/typecheck/should_fail/T18127a.stderr +++ b/testsuite/tests/typecheck/should_fail/T18127a.stderr @@ -1,31 +1,33 @@ T18127a.hs:5:5: error: - • Cannot instantiate unification variable ‘a1’ + • Couldn't match expected type ‘(forall a. a) -> ()’ + with actual type ‘a1’ + Cannot instantiate unification variable ‘a1’ with a type involving polytypes: (forall a. a) -> () - GHC doesn't yet support impredicative polymorphism • In the expression: undefined In an equation for ‘a’: a = undefined T18127a.hs:8:5: error: - • Cannot instantiate unification variable ‘a3’ + • Couldn't match expected type ‘(Show a => a) -> ()’ + with actual type ‘a3’ + Cannot instantiate unification variable ‘a3’ with a type involving polytypes: (Show a => a) -> () - GHC doesn't yet support impredicative polymorphism • In the expression: undefined In an equation for ‘b’: b = undefined • Relevant bindings include b :: (Show a => a) -> () (bound at T18127a.hs:8:1) T18127a.hs:12:5: error: - • Cannot instantiate unification variable ‘a0’ + • Couldn't match expected type ‘C -> ()’ with actual type ‘a0’ + Cannot instantiate unification variable ‘a0’ with a type involving polytypes: C -> () - GHC doesn't yet support impredicative polymorphism • In the expression: undefined In an equation for ‘c’: c = undefined T18127a.hs:16:5: error: - • Cannot instantiate unification variable ‘a2’ + • Couldn't match expected type ‘D a -> ()’ with actual type ‘a2’ + Cannot instantiate unification variable ‘a2’ with a type involving polytypes: D a -> () - GHC doesn't yet support impredicative polymorphism • In the expression: undefined In an equation for ‘d’: d = undefined • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/T1899.stderr b/testsuite/tests/typecheck/should_fail/T1899.stderr index 9fe71027c0..eb84cba7b4 100644 --- a/testsuite/tests/typecheck/should_fail/T1899.stderr +++ b/testsuite/tests/typecheck/should_fail/T1899.stderr @@ -1,12 +1,12 @@ T1899.hs:14:36: error: • Couldn't match type ‘a’ with ‘Proposition a0’ + Expected: [Proposition a0] + Actual: [a] ‘a’ is a rigid type variable bound by the type signature for: transRHS :: forall a. [a] -> Int -> Constraint a at T1899.hs:9:2-39 - Expected type: [Proposition a0] - Actual type: [a] • In the first argument of ‘Auxiliary’, namely ‘varSet’ In the first argument of ‘Prop’, namely ‘(Auxiliary varSet)’ In the expression: Prop (Auxiliary varSet) diff --git a/testsuite/tests/typecheck/should_fail/T2414.stderr b/testsuite/tests/typecheck/should_fail/T2414.stderr index bbbf5fce6a..1d89247489 100644 --- a/testsuite/tests/typecheck/should_fail/T2414.stderr +++ b/testsuite/tests/typecheck/should_fail/T2414.stderr @@ -1,8 +1,8 @@ T2414.hs:9:13: error: - • Occurs check: cannot construct the infinite type: b0 ~ (Bool, b0) - Expected type: b0 -> Maybe (Bool, b0) - Actual type: (Bool, b0) -> Maybe (Bool, b0) + • Couldn't match type ‘b0’ with ‘(Bool, b0)’ + Expected: b0 -> Maybe (Bool, b0) + Actual: b0 -> Maybe b0 • In the first argument of ‘unfoldr’, namely ‘Just’ In the expression: unfoldr Just In an equation for ‘f’: f = unfoldr Just diff --git a/testsuite/tests/typecheck/should_fail/T2534.stderr b/testsuite/tests/typecheck/should_fail/T2534.stderr index 4e469f3cfd..24cee873c8 100644 --- a/testsuite/tests/typecheck/should_fail/T2534.stderr +++ b/testsuite/tests/typecheck/should_fail/T2534.stderr @@ -1,9 +1,9 @@ -T2534.hs:3:13: error: - • Couldn't match type ‘[b]’ with ‘a0 -> [b]’ - Expected type: [a0] -> [b] -> [b] - Actual type: [a0] -> (a0 -> [b]) -> [b] - • In the first argument of ‘foldr’, namely ‘(>>=)’ +T2534.hs:3:19: error: + • Couldn't match expected type: a -> a -> b + with actual type: [a0] + • In the second argument of ‘foldr’, namely ‘[]’ In the expression: foldr (>>=) [] [] In an equation for ‘foo’: foo = foldr (>>=) [] [] - • Relevant bindings include foo :: [b] (bound at T2534.hs:3:1) + • Relevant bindings include + foo :: a -> a -> b (bound at T2534.hs:3:1) diff --git a/testsuite/tests/typecheck/should_fail/T2714.hs b/testsuite/tests/typecheck/should_fail/T2714.hs index 52d67e38ec..7f6a12fb2c 100644 --- a/testsuite/tests/typecheck/should_fail/T2714.hs +++ b/testsuite/tests/typecheck/should_fail/T2714.hs @@ -5,7 +5,7 @@ module T2714 where f :: ((a -> b) -> b) -> (forall c. c -> a) -f = ffmap +f x = ffmap x ffmap :: Functor f => (p->q) -> f p -> f q ffmap = error "urk" diff --git a/testsuite/tests/typecheck/should_fail/T2714.stderr b/testsuite/tests/typecheck/should_fail/T2714.stderr index 9b3fc34c52..215ad495cf 100644 --- a/testsuite/tests/typecheck/should_fail/T2714.stderr +++ b/testsuite/tests/typecheck/should_fail/T2714.stderr @@ -1,13 +1,14 @@ -T2714.hs:8:5: error: +T2714.hs:8:7: error: • Couldn't match type ‘c’ with ‘f0 (a -> b)’ + Expected: c -> a + Actual: f0 (a -> b) -> f0 b ‘c’ is a rigid type variable bound by - the type signature for: - f :: ((a -> b) -> b) -> forall c. c -> a - at T2714.hs:8:1-9 - Expected type: ((a -> b) -> b) -> c -> a - Actual type: ((a -> b) -> b) -> f0 (a -> b) -> f0 b - • In the expression: ffmap - In an equation for ‘f’: f = ffmap + a type expected by the context: + forall c. c -> a + at T2714.hs:8:1-13 + • In the expression: ffmap x + In an equation for ‘f’: f x = ffmap x • Relevant bindings include + x :: (a -> b) -> b (bound at T2714.hs:8:3) f :: ((a -> b) -> b) -> forall c. c -> a (bound at T2714.hs:8:1) diff --git a/testsuite/tests/typecheck/should_fail/T3102.hs b/testsuite/tests/typecheck/should_fail/T3102.hs index 910ac06ee9..f7d9dad344 100644 --- a/testsuite/tests/typecheck/should_fail/T3102.hs +++ b/testsuite/tests/typecheck/should_fail/T3102.hs @@ -8,8 +8,8 @@ f :: (forall a. a -> String) -> Int f _ = 3 result :: Int -result = f t - +result = f (\x -> t x) + -- Simple subsumption (#17775) requires eta expansion here -- This should work. -- Elaborated result = f (/\a. \x:a. t @a (\p::Int. x)) diff --git a/testsuite/tests/typecheck/should_fail/T3406.stderr b/testsuite/tests/typecheck/should_fail/T3406.stderr index 69834d15f6..70fffee3ac 100644 --- a/testsuite/tests/typecheck/should_fail/T3406.stderr +++ b/testsuite/tests/typecheck/should_fail/T3406.stderr @@ -1,8 +1,8 @@ T3406.hs:11:28: error: • Couldn't match type ‘Int’ with ‘a -> ItemColID a b’ - Expected type: a -> ItemColID a b - Actual type: ItemColID a1 b1 + Expected: a -> ItemColID a b + Actual: ItemColID a1 b1 • In the expression: x :: ItemColID a b In an equation for ‘get’: get (x :: ItemColID a b) = x :: ItemColID a b diff --git a/testsuite/tests/typecheck/should_fail/T3592.stderr b/testsuite/tests/typecheck/should_fail/T3592.stderr index ab03985faa..bc3f774ecc 100644 --- a/testsuite/tests/typecheck/should_fail/T3592.stderr +++ b/testsuite/tests/typecheck/should_fail/T3592.stderr @@ -1,12 +1,14 @@ T3592.hs:8:5: error: - • No instance for (Show a) arising from a use of ‘show’ - Possible fix: - add (Show a) to the context of - the type signature for: - f :: forall a. T a -> String + • Couldn't match type ‘a0’ with ‘T a’ + Expected: T a -> String + Actual: a0 -> String + Cannot instantiate unification variable ‘a0’ + with a type involving polytypes: T a • In the expression: show In an equation for ‘f’: f = show + • Relevant bindings include + f :: T a -> String (bound at T3592.hs:8:1) T3592.hs:11:7: error: • No instance for (Show a) arising from a use of ‘show’ diff --git a/testsuite/tests/typecheck/should_fail/T3613.stderr b/testsuite/tests/typecheck/should_fail/T3613.stderr index a221a95c17..8183ff981e 100644 --- a/testsuite/tests/typecheck/should_fail/T3613.stderr +++ b/testsuite/tests/typecheck/should_fail/T3613.stderr @@ -1,8 +1,8 @@ T3613.hs:14:20: error: • Couldn't match type ‘IO’ with ‘Maybe’ - Expected type: Maybe b - Actual type: IO b + Expected: Maybe b + Actual: IO b • In the first argument of ‘fooThen’, namely ‘(bar >> undefined)’ In the expression: fooThen (bar >> undefined) In the expression: @@ -10,8 +10,8 @@ T3613.hs:14:20: error: T3613.hs:17:24: error: • Couldn't match type ‘IO’ with ‘Maybe’ - Expected type: Maybe () - Actual type: IO () + Expected: Maybe () + Actual: IO () • In a stmt of a 'do' block: bar In the first argument of ‘fooThen’, namely ‘(do bar diff --git a/testsuite/tests/typecheck/should_fail/T3950.stderr b/testsuite/tests/typecheck/should_fail/T3950.stderr index e0a3526000..f71fd5d501 100644 --- a/testsuite/tests/typecheck/should_fail/T3950.stderr +++ b/testsuite/tests/typecheck/should_fail/T3950.stderr @@ -4,8 +4,8 @@ T3950.hs:15:8: error: When matching types w :: (* -> * -> *) -> * Sealed :: (* -> *) -> * - Expected type: Maybe (w (Id p)) - Actual type: Maybe (Sealed (Id p0 x0)) + Expected: Maybe (w (Id p)) + Actual: Maybe (Sealed (Id p0 x0)) • In the expression: Just rp' In an equation for ‘rp’: rp _ diff --git a/testsuite/tests/typecheck/should_fail/T502.stderr b/testsuite/tests/typecheck/should_fail/T502.stderr index ba5f6d157a..dd6b97d132 100644 --- a/testsuite/tests/typecheck/should_fail/T502.stderr +++ b/testsuite/tests/typecheck/should_fail/T502.stderr @@ -1,7 +1,7 @@ T502.hs:8:11: error: - • Couldn't match expected type ‘(a0, Int)’ - with actual type ‘(# Int, Int #)’ + • Couldn't match expected type: (a0, Int) + with actual type: (# Int, Int #) • In the first argument of ‘snd’, namely ‘foo’ In the expression: snd foo In an equation for ‘bar’: diff --git a/testsuite/tests/typecheck/should_fail/T5246.stderr b/testsuite/tests/typecheck/should_fail/T5246.stderr index 54d340cc5e..ea4185af33 100644 --- a/testsuite/tests/typecheck/should_fail/T5246.stderr +++ b/testsuite/tests/typecheck/should_fail/T5246.stderr @@ -1,11 +1,10 @@ T5246.hs:11:10: error: - Couldn't match type ‘[Char]’ with ‘Int’ - arising from a functional dependency between constraints: - ‘?x::Int’ arising from a use of ‘foo’ at T5246.hs:11:10-12 - ‘?x::[Char]’ - arising from the implicit-parameter binding for ?x - at T5246.hs:(10,7)-(11,12) - In the expression: foo - In the expression: let ?x = "hello" in foo - In an equation for ‘bar’: bar = let ?x = "hello" in foo + • Couldn't match type ‘[Char]’ with ‘Int’ + arising from a functional dependency between constraints: + ‘?x::Int’ arising from a use of ‘foo’ at T5246.hs:11:10-12 + ‘?x::String’ + arising from the implicit-parameter binding for ?x at T5246.hs:(10,7)-(11,12) + • In the expression: foo + In the expression: let ?x = "hello" in foo + In an equation for ‘bar’: bar = let ?x = "hello" in foo diff --git a/testsuite/tests/typecheck/should_fail/T6001.stderr b/testsuite/tests/typecheck/should_fail/T6001.stderr index 57d55dc336..a7a8274923 100644 --- a/testsuite/tests/typecheck/should_fail/T6001.stderr +++ b/testsuite/tests/typecheck/should_fail/T6001.stderr @@ -1,10 +1,10 @@ -T6001.hs:8:18: - Couldn't match type ‘Integer’ with ‘Int’ - Expected type: Integer -> DayKind - Actual type: Int -> DayKind - When checking that instance signature for ‘fromInteger’ - is more general than its signature in the class - Instance sig: Int -> DayKind - Class sig: Integer -> DayKind - In the instance declaration for ‘Num DayKind’ +T6001.hs:8:18: error: + • Couldn't match type ‘Int’ with ‘Integer’ + Expected: Integer -> DayKind + Actual: Int -> DayKind + • When checking that instance signature for ‘fromInteger’ + is more general than its signature in the class + Instance sig: Int -> DayKind + Class sig: Integer -> DayKind + In the instance declaration for ‘Num DayKind’ diff --git a/testsuite/tests/typecheck/should_fail/T6069.stderr b/testsuite/tests/typecheck/should_fail/T6069.stderr index e2d3ef4d91..c70939fee5 100644 --- a/testsuite/tests/typecheck/should_fail/T6069.stderr +++ b/testsuite/tests/typecheck/should_fail/T6069.stderr @@ -1,24 +1,27 @@ T6069.hs:13:15: error: - • Couldn't match type ‘ST s0 Int’ with ‘forall s. ST s a0’ - Expected type: ST s0 Int -> a0 - Actual type: (forall s. ST s a0) -> a0 + • Couldn't match type: forall s. ST s b0 + with: ST s0 Int + Expected: ST s0 Int -> b0 + Actual: (forall s. ST s b0) -> b0 • In the second argument of ‘(.)’, namely ‘runST’ In the expression: print . runST In the expression: (print . runST) fourty_two T6069.hs:14:15: error: - • Couldn't match type ‘ST s1 Int’ with ‘forall s. ST s a1’ - Expected type: ST s1 Int -> a1 - Actual type: (forall s. ST s a1) -> a1 + • Couldn't match type: forall s. ST s b1 + with: ST s1 Int + Expected: ST s1 Int -> b1 + Actual: (forall s. ST s b1) -> b1 • In the second argument of ‘(.)’, namely ‘runST’ In the first argument of ‘($)’, namely ‘(print . runST)’ In the expression: (print . runST) $ fourty_two T6069.hs:15:16: error: - • Couldn't match type ‘ST s2 Int’ with ‘forall s. ST s a2’ - Expected type: ST s2 Int -> a2 - Actual type: (forall s. ST s a2) -> a2 + • Couldn't match type: forall s. ST s b2 + with: ST s2 Int + Expected: ST s2 Int -> b2 + Actual: (forall s. ST s b2) -> b2 • In the second argument of ‘(.)’, namely ‘runST’ In the first argument of ‘($)’, namely ‘(print . runST)’ In the expression: (print . runST) $ diff --git a/testsuite/tests/typecheck/should_fail/T7264.stderr b/testsuite/tests/typecheck/should_fail/T7264.stderr index 71c99c5614..4d2a153306 100644 --- a/testsuite/tests/typecheck/should_fail/T7264.stderr +++ b/testsuite/tests/typecheck/should_fail/T7264.stderr @@ -1,10 +1,11 @@ T7264.hs:13:19: error: • Couldn't match type ‘a’ with ‘forall r. r -> String’ + Expected: a -> Foo + Actual: (forall r. r -> String) -> Foo ‘a’ is a rigid type variable bound by - the inferred type of mkFoo2 :: a -> Maybe Foo at T7264.hs:13:1-32 - Expected type: a -> Foo - Actual type: (forall r. r -> String) -> Foo + the inferred type of mkFoo2 :: a -> Maybe Foo + at T7264.hs:13:1-32 • In the first argument of ‘mmap’, namely ‘Foo’ In the expression: mmap Foo (Just val) In an equation for ‘mkFoo2’: mkFoo2 val = mmap Foo (Just val) diff --git a/testsuite/tests/typecheck/should_fail/T7368.stderr b/testsuite/tests/typecheck/should_fail/T7368.stderr index 54c12f76f7..ef100b1fa4 100644 --- a/testsuite/tests/typecheck/should_fail/T7368.stderr +++ b/testsuite/tests/typecheck/should_fail/T7368.stderr @@ -4,8 +4,8 @@ T7368.hs:3:10: error: When matching types b0 :: * Maybe :: * -> * - Expected type: a0 -> b0 - Actual type: c0 Maybe + Expected: a0 -> b0 + Actual: c0 Maybe • In the first argument of ‘b’, namely ‘(l Nothing)’ In the expression: b (l Nothing) In an equation for ‘f’: f = b (l Nothing) diff --git a/testsuite/tests/typecheck/should_fail/T7368a.stderr b/testsuite/tests/typecheck/should_fail/T7368a.stderr index 93b8b04378..2fcb92f209 100644 --- a/testsuite/tests/typecheck/should_fail/T7368a.stderr +++ b/testsuite/tests/typecheck/should_fail/T7368a.stderr @@ -4,8 +4,8 @@ T7368a.hs:8:6: error: When matching types f :: * -> * Bad :: (* -> *) -> * - Expected type: f (Bad f) - Actual type: Bad w0 + Expected: f (Bad f) + Actual: Bad w0 • In the pattern: Bad x In an equation for ‘fun’: fun (Bad x) = True • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/T7696.stderr b/testsuite/tests/typecheck/should_fail/T7696.stderr index 41f2296797..945312094d 100644 --- a/testsuite/tests/typecheck/should_fail/T7696.stderr +++ b/testsuite/tests/typecheck/should_fail/T7696.stderr @@ -1,7 +1,7 @@ T7696.hs:7:6: error: • Couldn't match type ‘m0 a0’ with ‘()’ - Expected type: ((), w ()) - Actual type: (m0 a0, t0 m0) + Expected: ((), w ()) + Actual: (m0 a0, t0 m0) • In the expression: f1 In an equation for ‘f2’: f2 = f1 diff --git a/testsuite/tests/typecheck/should_fail/T7734.stderr b/testsuite/tests/typecheck/should_fail/T7734.stderr index 05002109ab..bf199cb4c2 100644 --- a/testsuite/tests/typecheck/should_fail/T7734.stderr +++ b/testsuite/tests/typecheck/should_fail/T7734.stderr @@ -1,6 +1,6 @@ T7734.hs:4:13: error: - • Occurs check: cannot construct the infinite type: t ~ t -> t1 + • Couldn't match expected type ‘t’ with actual type ‘t -> t1’ • In the first argument of ‘x’, namely ‘x’ In the expression: x x In an equation for ‘f’: x `f` y = x x @@ -9,7 +9,7 @@ T7734.hs:4:13: error: f :: (t -> t1) -> p -> t1 (bound at T7734.hs:4:3) T7734.hs:5:13: error: - • Occurs check: cannot construct the infinite type: t ~ t -> t1 + • Couldn't match expected type ‘t’ with actual type ‘t -> t1’ • 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/T7851.stderr b/testsuite/tests/typecheck/should_fail/T7851.stderr index 0e1964e35c..289df8ad40 100644 --- a/testsuite/tests/typecheck/should_fail/T7851.stderr +++ b/testsuite/tests/typecheck/should_fail/T7851.stderr @@ -1,7 +1,7 @@ T7851.hs:5:10: error: - • Couldn't match expected type ‘IO a0’ - with actual type ‘a1 -> IO ()’ + • Couldn't match expected type: IO a0 + with actual type: a1 -> IO () • Probable cause: ‘print’ is applied to too few arguments In a stmt of a 'do' block: print In the expression: diff --git a/testsuite/tests/typecheck/should_fail/T7856.stderr b/testsuite/tests/typecheck/should_fail/T7856.stderr index e6fe2bd42f..a5a3a4bff1 100644 --- a/testsuite/tests/typecheck/should_fail/T7856.stderr +++ b/testsuite/tests/typecheck/should_fail/T7856.stderr @@ -1,11 +1,11 @@ -T7856.hs:4:7: - Couldn't match expected type ‘String -> IO ()’ - with actual type ‘IO ()’ - Possible cause: ‘sequence_’ is applied to too many arguments - In the expression: sequence_ lst - In an equation for ‘tmp’: - tmp - = sequence_ lst - where - lst = [putStrLn "hi"] +T7856.hs:4:7: error: + • Couldn't match expected type: String -> IO () + with actual type: IO () + • Possible cause: ‘sequence_’ is applied to too many arguments + In the expression: sequence_ lst + In an equation for ‘tmp’: + tmp + = sequence_ lst + where + lst = [putStrLn "hi"] diff --git a/testsuite/tests/typecheck/should_fail/T7869.stderr b/testsuite/tests/typecheck/should_fail/T7869.stderr index 7e01868526..15e9cc4658 100644 --- a/testsuite/tests/typecheck/should_fail/T7869.stderr +++ b/testsuite/tests/typecheck/should_fail/T7869.stderr @@ -1,6 +1,8 @@ T7869.hs:3:12: error: • Couldn't match type ‘b1’ with ‘b’ + Expected: [a1] -> b1 + Actual: [a] -> b ‘b1’ is a rigid type variable bound by an expression type signature: forall a1 b1. [a1] -> b1 @@ -8,8 +10,6 @@ T7869.hs:3:12: error: ‘b’ is a rigid type variable bound by the inferred type of f :: [a] -> b at T7869.hs:3:1-27 - Expected type: [a1] -> b1 - Actual type: [a] -> b • In the expression: f x In the expression: (\ x -> f x) :: [a] -> b In an equation for ‘f’: f = (\ x -> f x) :: [a] -> b diff --git a/testsuite/tests/typecheck/should_fail/T8030.stderr b/testsuite/tests/typecheck/should_fail/T8030.stderr index c1ff38b685..623eabbdbc 100644 --- a/testsuite/tests/typecheck/should_fail/T8030.stderr +++ b/testsuite/tests/typecheck/should_fail/T8030.stderr @@ -1,6 +1,7 @@ T8030.hs:9:3: error: - • Couldn't match expected type ‘Pr a’ with actual type ‘Pr a0’ + • Couldn't match expected type: Pr a + with actual type: Pr a0 NB: ‘Pr’ is a non-injective type family The type variable ‘a0’ is ambiguous • In the ambiguity check for ‘op1’ @@ -10,9 +11,10 @@ T8030.hs:9:3: error: In the class declaration for ‘C’ T8030.hs:10:3: error: - • Couldn't match type ‘Pr a0’ with ‘Pr a’ - Expected type: Pr a -> Pr a -> Pr a - Actual type: Pr a0 -> Pr a0 -> Pr a0 + • Couldn't match type: Pr a0 + with: Pr a + Expected: Pr a -> Pr a -> Pr a + Actual: Pr a0 -> Pr a0 -> Pr a0 NB: ‘Pr’ is a non-injective type family The type variable ‘a0’ is ambiguous • In the ambiguity check for ‘op2’ diff --git a/testsuite/tests/typecheck/should_fail/T8034.stderr b/testsuite/tests/typecheck/should_fail/T8034.stderr index cce73f355a..8f64538554 100644 --- a/testsuite/tests/typecheck/should_fail/T8034.stderr +++ b/testsuite/tests/typecheck/should_fail/T8034.stderr @@ -1,8 +1,9 @@ T8034.hs:6:3: error: - • Couldn't match type ‘F a0’ with ‘F a’ - Expected type: F a -> F a - Actual type: F a0 -> F a0 + • Couldn't match type: F a0 + with: F a + Expected: F a -> F a + Actual: F a0 -> F a0 NB: ‘F’ is a non-injective type family The type variable ‘a0’ is ambiguous • In the ambiguity check for ‘foo’ diff --git a/testsuite/tests/typecheck/should_fail/T8044.stderr b/testsuite/tests/typecheck/should_fail/T8044.stderr index 78ef035af8..2069f5f281 100644 --- a/testsuite/tests/typecheck/should_fail/T8044.stderr +++ b/testsuite/tests/typecheck/should_fail/T8044.stderr @@ -1,9 +1,9 @@ -T8044.hs:16:13: - Couldn't match type ‘Frob a’ with ‘Char’ - Expected type: X (Frob a) - Actual type: X Char - In the expression: XChar - In an equation for ‘frob’: frob _ = XChar - Relevant bindings include - frob :: X a -> X (Frob a) (bound at T8044.hs:15:1) +T8044.hs:16:13: error: + • Couldn't match type ‘Frob a’ with ‘Char’ + Expected: X (Frob a) + Actual: X Char + • In the expression: XChar + In an equation for ‘frob’: frob _ = XChar + • Relevant bindings include + frob :: X a -> X (Frob a) (bound at T8044.hs:15:1) diff --git a/testsuite/tests/typecheck/should_fail/T8142.stderr b/testsuite/tests/typecheck/should_fail/T8142.stderr index 25d60d1aff..a9f4590e44 100644 --- a/testsuite/tests/typecheck/should_fail/T8142.stderr +++ b/testsuite/tests/typecheck/should_fail/T8142.stderr @@ -1,8 +1,9 @@ T8142.hs:6:10: error: - • Couldn't match type ‘Nu ((,) a0)’ with ‘c -> f c’ - Expected type: (c -> f c) -> c -> f c - Actual type: Nu ((,) a0) -> Nu g0 + • Couldn't match type: Nu ((,) a0) + with: c -> f c + Expected: (c -> f c) -> c -> f c + Actual: Nu ((,) a0) -> Nu f0 The type variable ‘a0’ is ambiguous • In the expression: h In an equation for ‘tracer’: @@ -14,11 +15,12 @@ T8142.hs:6:10: error: tracer :: (c -> f c) -> c -> f c (bound at T8142.hs:6:1) T8142.hs:6:57: error: - • Couldn't match type ‘Nu ((,) a)’ with ‘g (Nu ((,) a))’ - Expected type: Nu ((,) a) -> (a, g (Nu ((,) a))) - Actual type: Nu ((,) a) -> (a, Nu ((,) a)) + • Couldn't match type: Nu ((,) a) + with: f1 (Nu ((,) a)) + Expected: Nu ((,) a) -> (a, f1 (Nu ((,) a))) + Actual: Nu ((,) a) -> (a, Nu ((,) a)) • In the second argument of ‘(.)’, namely ‘out’ In the expression: (\ (_, b) -> ((outI . fmap h) b)) . out In an equation for ‘h’: h = (\ (_, b) -> ((outI . fmap h) b)) . out • Relevant bindings include - h :: Nu ((,) a) -> Nu g (bound at T8142.hs:6:18) + h :: Nu ((,) a) -> Nu f1 (bound at T8142.hs:6:18) diff --git a/testsuite/tests/typecheck/should_fail/T8428.stderr b/testsuite/tests/typecheck/should_fail/T8428.stderr index ce83c3efe5..2668bb45fd 100644 --- a/testsuite/tests/typecheck/should_fail/T8428.stderr +++ b/testsuite/tests/typecheck/should_fail/T8428.stderr @@ -1,8 +1,9 @@ T8428.hs:11:19: error: - • Couldn't match type ‘(forall s. ST s) a’ with ‘forall s. ST s a’ - Expected type: IdentityT (forall s. ST s) a -> forall s. ST s a - Actual type: IdentityT (forall s. ST s) a -> (forall s. ST s) a + • Couldn't match type: (forall s. ST s) a + with: forall s. ST s a + Expected: IdentityT (forall s. ST s) a -> forall s. ST s a + Actual: IdentityT (forall s. ST s) a -> (forall s. ST s) a • In the second argument of ‘(.)’, namely ‘runIdentityT’ In the expression: runST . runIdentityT In an equation for ‘runIdST’: runIdST = runST . runIdentityT diff --git a/testsuite/tests/typecheck/should_fail/T8450.stderr b/testsuite/tests/typecheck/should_fail/T8450.stderr index 7503f4d37e..a75d0703c6 100644 --- a/testsuite/tests/typecheck/should_fail/T8450.stderr +++ b/testsuite/tests/typecheck/should_fail/T8450.stderr @@ -1,12 +1,12 @@ T8450.hs:8:20: error: • Couldn't match type ‘a’ with ‘Bool’ + Expected: Either Bool () + Actual: Either a () ‘a’ is a rigid type variable bound by the type signature for: run :: forall a. a at T8450.hs:7:1-18 - Expected type: Either Bool () - Actual type: Either a () • In the second argument of ‘($)’, namely ‘(undefined :: Either a ())’ In the expression: runEffect $ (undefined :: Either a ()) diff --git a/testsuite/tests/typecheck/should_fail/T8603.stderr b/testsuite/tests/typecheck/should_fail/T8603.stderr index 29c5d9df12..4776253f52 100644 --- a/testsuite/tests/typecheck/should_fail/T8603.stderr +++ b/testsuite/tests/typecheck/should_fail/T8603.stderr @@ -1,8 +1,9 @@ T8603.hs:33:17: error: - • Couldn't match type ‘RV a1’ with ‘StateT s RV a0’ - Expected type: [a2] -> StateT s RV a0 - Actual type: t0 ((->) [a1]) (RV a1) + • Couldn't match type: RV a1 + with: StateT s RV a0 + Expected: [a2] -> StateT s RV a0 + Actual: t0 ((->) [a1]) (RV a1) • The function ‘lift’ is applied to two value arguments, but its type ‘([a1] -> RV a1) -> t0 ((->) [a1]) (RV a1)’ has only one diff --git a/testsuite/tests/typecheck/should_fail/T9201.stderr b/testsuite/tests/typecheck/should_fail/T9201.stderr index 5e8f0173c5..16a183bef0 100644 --- a/testsuite/tests/typecheck/should_fail/T9201.stderr +++ b/testsuite/tests/typecheck/should_fail/T9201.stderr @@ -1,6 +1,12 @@ T9201.hs:6:17: error: • Expected kind ‘x’, but ‘a’ has kind ‘y’ + ‘y’ is a rigid type variable bound by + the class declaration for ‘MonoidalCCC’ + at T9201.hs:5:30 + ‘x’ is a rigid type variable bound by + the class declaration for ‘MonoidalCCC’ + at T9201.hs:5:25 • In the first argument of ‘f’, namely ‘a’ In the second argument of ‘d’, namely ‘(f a)’ In the type signature: ret :: d a (f a) diff --git a/testsuite/tests/typecheck/should_fail/T9260.stderr b/testsuite/tests/typecheck/should_fail/T9260.stderr index f55f474904..2a6c0ac16c 100644 --- a/testsuite/tests/typecheck/should_fail/T9260.stderr +++ b/testsuite/tests/typecheck/should_fail/T9260.stderr @@ -1,8 +1,8 @@ T9260.hs:12:14: error: • Couldn't match type ‘1’ with ‘0’ - Expected type: Fin 0 - Actual type: Fin (0 + 1) + Expected: Fin 0 + Actual: Fin (0 + 1) • In the first argument of ‘Fsucc’, namely ‘Fzero’ In the expression: Fsucc Fzero In an equation for ‘test’: test = Fsucc Fzero diff --git a/testsuite/tests/typecheck/should_fail/T9318.stderr b/testsuite/tests/typecheck/should_fail/T9318.stderr index c637788a7e..0a87c4a1e2 100644 --- a/testsuite/tests/typecheck/should_fail/T9318.stderr +++ b/testsuite/tests/typecheck/should_fail/T9318.stderr @@ -1,7 +1,7 @@ T9318.hs:12:5: error: • Couldn't match type ‘Bool’ with ‘Char’ - Expected type: F Int - Actual type: Char + Expected: F Int + Actual: Char • In the pattern: 'x' In an equation for ‘bar’: bar 'x' = () diff --git a/testsuite/tests/typecheck/should_fail/T9605.stderr b/testsuite/tests/typecheck/should_fail/T9605.stderr index 683265c26b..6132c9538e 100644 --- a/testsuite/tests/typecheck/should_fail/T9605.stderr +++ b/testsuite/tests/typecheck/should_fail/T9605.stderr @@ -1,8 +1,8 @@ T9605.hs:7:6: error: • Couldn't match type ‘Bool’ with ‘m Bool’ - Expected type: t0 -> m Bool - Actual type: t0 -> Bool + Expected: t0 -> m Bool + Actual: t0 -> Bool • In the result of a function call In the expression: f1 undefined In an equation for ‘f2’: f2 = f1 undefined diff --git a/testsuite/tests/typecheck/should_fail/T9612.stderr b/testsuite/tests/typecheck/should_fail/T9612.stderr index 462edc3e2d..26cea79487 100644 --- a/testsuite/tests/typecheck/should_fail/T9612.stderr +++ b/testsuite/tests/typecheck/should_fail/T9612.stderr @@ -1,20 +1,21 @@ T9612.hs:16:9: error: - Couldn't match type ‘[(Int, a)]’ with ‘(Int, a)’ - arising from a functional dependency between: - constraint ‘MonadWriter (Int, a) (WriterT [(Int, a)] Identity)’ - arising from a use of ‘tell’ - instance ‘MonadWriter w (WriterT w m)’ at T9612.hs:20:10-59 - In a stmt of a 'do' block: tell (n, x) - In the expression: - do tell (n, x) - return (1, y) - In an equation for ‘f’: - f y (n, x) - = do tell (n, x) - return (1, y) - Relevant bindings include - x :: a (bound at T9612.hs:14:8) - y :: a (bound at T9612.hs:14:3) - f :: a -> (Int, a) -> Writer [(Int, a)] (Int, a) - (bound at T9612.hs:14:1) + • Couldn't match type: [(Int, a)] + with: (Int, a) + arising from a functional dependency between: + constraint ‘MonadWriter (Int, a) (WriterT [(Int, a)] Identity)’ + arising from a use of ‘tell’ + instance ‘MonadWriter w (WriterT w m)’ at T9612.hs:20:10-59 + • In a stmt of a 'do' block: tell (n, x) + In the expression: + do tell (n, x) + return (1, y) + In an equation for ‘f’: + f y (n, x) + = do tell (n, x) + return (1, y) + • Relevant bindings include + x :: a (bound at T9612.hs:14:8) + y :: a (bound at T9612.hs:14:3) + f :: a -> (Int, a) -> Writer [(Int, a)] (Int, a) + (bound at T9612.hs:14:1) diff --git a/testsuite/tests/typecheck/should_fail/T9774.stderr b/testsuite/tests/typecheck/should_fail/T9774.stderr index 28b1b58c4c..da75c339b8 100644 --- a/testsuite/tests/typecheck/should_fail/T9774.stderr +++ b/testsuite/tests/typecheck/should_fail/T9774.stderr @@ -1,8 +1,8 @@ T9774.hs:5:17: error: • Couldn't match type ‘Char’ with ‘[Char]’ - Expected type: String - Actual type: Char + Expected: String + Actual: Char • In the first argument of ‘putStrLn’, namely ‘(assert True 'a')’ In the expression: putStrLn (assert True 'a') In an equation for ‘foo’: foo = putStrLn (assert True 'a') diff --git a/testsuite/tests/typecheck/should_fail/T9858e.stderr b/testsuite/tests/typecheck/should_fail/T9858e.stderr index 04e08000ca..f397723a02 100644 --- a/testsuite/tests/typecheck/should_fail/T9858e.stderr +++ b/testsuite/tests/typecheck/should_fail/T9858e.stderr @@ -1,9 +1,10 @@ T9858e.hs:9:8: error: - Couldn't match type ‘Eq Int => Int’ with ‘a0 b0’ - Expected type: Proxy (a0 b0) - Actual type: Proxy (Eq Int => Int) - In the first argument of ‘i’, namely - ‘(Proxy :: Proxy (Eq Int => Int))’ - In the expression: i (Proxy :: Proxy (Eq Int => Int)) - In an equation for ‘j’: j = i (Proxy :: Proxy (Eq Int => Int)) + • Couldn't match type: Eq Int => Int + with: a0 b0 + Expected: Proxy (a0 b0) + Actual: Proxy (Eq Int => Int) + • In the first argument of ‘i’, namely + ‘(Proxy :: Proxy (Eq Int => Int))’ + In the expression: i (Proxy :: Proxy (Eq Int => Int)) + In an equation for ‘j’: j = i (Proxy :: Proxy (Eq Int => Int)) diff --git a/testsuite/tests/typecheck/should_fail/TcCoercibleFail.stderr b/testsuite/tests/typecheck/should_fail/TcCoercibleFail.stderr index f4e1d02eee..4370b606ca 100644 --- a/testsuite/tests/typecheck/should_fail/TcCoercibleFail.stderr +++ b/testsuite/tests/typecheck/should_fail/TcCoercibleFail.stderr @@ -7,8 +7,8 @@ TcCoercibleFail.hs:11:8: error: In an equation for ‘foo1’: foo1 = coerce $ one :: () TcCoercibleFail.hs:14:8: error: - • Couldn't match representation of type ‘m Int’ - with that of ‘m Age’ + • Couldn't match representation of type: m Int + with that of: m Age arising from a use of ‘coerce’ NB: We cannot know what roles the parameters to ‘m’ have; we must assume that the role is nominal diff --git a/testsuite/tests/typecheck/should_fail/TcMultiWayIfFail.stderr b/testsuite/tests/typecheck/should_fail/TcMultiWayIfFail.stderr index 70ac94f060..487cfee88f 100644 --- a/testsuite/tests/typecheck/should_fail/TcMultiWayIfFail.stderr +++ b/testsuite/tests/typecheck/should_fail/TcMultiWayIfFail.stderr @@ -1,16 +1,28 @@ -TcMultiWayIfFail.hs:6:24: - Couldn't match expected type ‘Int’ with actual type ‘[Char]’ - In the expression: "2" - In the expression: - if | True -> 1 :: Int | False -> "2" | otherwise -> [3 :: Int] - In an equation for ‘x1’: - x1 = if | True -> 1 :: Int | False -> "2" | otherwise -> [3 :: Int] +TcMultiWayIfFail.hs:6:24: error: + • Couldn't match type ‘[Char]’ with ‘Int’ + Expected: Int + Actual: String + • In the expression: "2" + In the expression: + if | True -> 1 :: Int + | False -> "2" + | otherwise -> [3 :: Int] + In an equation for ‘x1’: + x1 + = if | True -> 1 :: Int + | False -> "2" + | otherwise -> [3 :: Int] -TcMultiWayIfFail.hs:7:24: - Couldn't match expected type ‘Int’ with actual type ‘[Int]’ - In the expression: [3 :: Int] - In the expression: - if | True -> 1 :: Int | False -> "2" | otherwise -> [3 :: Int] - In an equation for ‘x1’: - x1 = if | True -> 1 :: Int | False -> "2" | otherwise -> [3 :: Int] +TcMultiWayIfFail.hs:7:24: error: + • Couldn't match expected type ‘Int’ with actual type ‘[Int]’ + • In the expression: [3 :: Int] + In the expression: + if | True -> 1 :: Int + | False -> "2" + | otherwise -> [3 :: Int] + In an equation for ‘x1’: + x1 + = if | True -> 1 :: Int + | False -> "2" + | otherwise -> [3 :: Int] diff --git a/testsuite/tests/typecheck/should_fail/UnliftedNewtypesInfinite.stderr b/testsuite/tests/typecheck/should_fail/UnliftedNewtypesInfinite.stderr index bf50beed5e..9725a779e7 100644 --- a/testsuite/tests/typecheck/should_fail/UnliftedNewtypesInfinite.stderr +++ b/testsuite/tests/typecheck/should_fail/UnliftedNewtypesInfinite.stderr @@ -1,7 +1,10 @@ UnliftedNewtypesInfinite.hs:9:20: error: - • Occurs check: cannot construct the infinite kind: - t0 ~ 'GHC.Types.TupleRep '[ 'GHC.Types.IntRep, t0] + • Couldn't match kind ‘t0’ + with ‘'GHC.Types.TupleRep '[ 'GHC.Types.IntRep, t0]’ + Expected kind ‘TYPE t0’, + but ‘(# Int#, Foo #)’ has kind ‘TYPE + ('GHC.Types.TupleRep '[ 'GHC.Types.IntRep, t0])’ • In the type ‘(# Int#, Foo #)’ In the definition of data constructor ‘FooC’ In the newtype declaration for ‘Foo’ diff --git a/testsuite/tests/typecheck/should_fail/UnliftedNewtypesInstanceFail.stderr b/testsuite/tests/typecheck/should_fail/UnliftedNewtypesInstanceFail.stderr index 3fb2814dab..0a49414c33 100644 --- a/testsuite/tests/typecheck/should_fail/UnliftedNewtypesInstanceFail.stderr +++ b/testsuite/tests/typecheck/should_fail/UnliftedNewtypesInstanceFail.stderr @@ -1,5 +1,7 @@ -UnliftedNewtypesInstanceFail.hs:13:3: - Expected kind ‘TYPE 'WordRep’, + +UnliftedNewtypesInstanceFail.hs:13:3: error: + • Couldn't match kind ‘'IntRep’ with ‘'WordRep’ + Expected kind ‘TYPE 'WordRep’, but ‘Bar Bool’ has kind ‘TYPE 'IntRep’ - In the newtype instance declaration for ‘Bar’ + • In the newtype instance declaration for ‘Bar’ In the instance declaration for ‘Foo Bool’ diff --git a/testsuite/tests/typecheck/should_fail/UnliftedNewtypesMismatchedKindRecord.stderr b/testsuite/tests/typecheck/should_fail/UnliftedNewtypesMismatchedKindRecord.stderr index c8386e663f..f30d8b8fe8 100644 --- a/testsuite/tests/typecheck/should_fail/UnliftedNewtypesMismatchedKindRecord.stderr +++ b/testsuite/tests/typecheck/should_fail/UnliftedNewtypesMismatchedKindRecord.stderr @@ -1,7 +1,7 @@ UnliftedNewtypesMismatchedKindRecord.hs:11:23: error: - • Expected kind ‘TYPE 'IntRep’, - but ‘Word#’ has kind ‘TYPE 'WordRep’ + • Couldn't match kind ‘'WordRep’ with ‘'IntRep’ + Expected kind ‘TYPE 'IntRep’, but ‘Word#’ has kind ‘TYPE 'WordRep’ • In the type ‘Word#’ In the definition of data constructor ‘FooC’ In the newtype declaration for ‘Foo’ diff --git a/testsuite/tests/typecheck/should_fail/VtaFail.hs b/testsuite/tests/typecheck/should_fail/VtaFail.hs index 250f9e273e..42e584ce0a 100644 --- a/testsuite/tests/typecheck/should_fail/VtaFail.hs +++ b/testsuite/tests/typecheck/should_fail/VtaFail.hs @@ -14,7 +14,9 @@ answer_constraint_fail = addOne @Bool 5 answer_lambda = (\x -> x) @Int 12 pair :: forall a. a -> forall b. b -> (a, b) -pair = (,) +pair x = (,) x +-- Without this eta-expansion, the two have +-- different types under simple subsumption (#17775) a = pair 3 @Int @Bool True diff --git a/testsuite/tests/typecheck/should_fail/VtaFail.stderr b/testsuite/tests/typecheck/should_fail/VtaFail.stderr index a9958016ce..87a2bea3fe 100644 --- a/testsuite/tests/typecheck/should_fail/VtaFail.stderr +++ b/testsuite/tests/typecheck/should_fail/VtaFail.stderr @@ -13,66 +13,67 @@ VtaFail.hs:14:17: error: In an equation for ‘answer_lambda’: answer_lambda = (\ x -> x) @Int 12 -VtaFail.hs:19:5: error: +VtaFail.hs:21:5: error: • Cannot apply expression of type ‘Int -> (a0, Int)’ to a visible type argument ‘Bool’ • In the expression: pair 3 @Int @Bool True In an equation for ‘a’: a = pair 3 @Int @Bool True -VtaFail.hs:26:15: error: +VtaFail.hs:28:15: error: • Expected kind ‘* -> *’, but ‘Int’ has kind ‘*’ • In the type ‘Int’ In the expression: first @Int F In an equation for ‘fInt’: fInt = first @Int F -VtaFail.hs:33:18: error: +VtaFail.hs:35:18: error: • Couldn't match type ‘Int’ with ‘Bool’ - Expected type: Proxy Bool - Actual type: Proxy Int + Expected: Proxy Bool + Actual: Proxy Int • In the second argument of ‘foo’, namely ‘(P :: Proxy Int)’ In the expression: foo @Bool (P :: Proxy Int) In an equation for ‘baz’: baz = foo @Bool (P :: Proxy Int) -VtaFail.hs:40:17: error: - • Expected kind ‘* -> k0 -> *’, but ‘Maybe’ has kind ‘* -> *’ +VtaFail.hs:42:17: error: + • Couldn't match kind ‘*’ with ‘k0 -> *’ + Expected kind ‘* -> k0 -> *’, but ‘Maybe’ has kind ‘* -> *’ • In the type ‘Maybe’ In the expression: too @Maybe T In an equation for ‘threeBad’: threeBad = too @Maybe T -VtaFail.hs:41:27: error: +VtaFail.hs:43:27: error: • Couldn't match type ‘Either’ with ‘(->)’ - Expected type: Three (->) - Actual type: Three Either + Expected: Three (->) + Actual: Three Either • In the second argument of ‘too’, namely ‘(T :: Three Either)’ In the expression: too @(->) (T :: Three Either) In an equation for ‘threeWorse’: threeWorse = too @(->) (T :: Three Either) -VtaFail.hs:46:5: error: +VtaFail.hs:48:5: error: • Cannot apply expression of type ‘Int -> Int -> Int’ to a visible type argument ‘Int’ • In the expression: plus @Int 5 7 In an equation for ‘b’: b = plus @Int 5 7 -VtaFail.hs:47:5: error: +VtaFail.hs:49:5: error: • Cannot apply expression of type ‘Int -> Int -> Int’ to a visible type argument ‘Rational’ • In the expression: plus @Rational 5 10 In an equation for ‘c’: c = plus @Rational 5 10 -VtaFail.hs:48:5: error: +VtaFail.hs:50:5: error: • Cannot apply expression of type ‘Int -> Int -> Int’ to a visible type argument ‘Int’ • In the expression: (+) @Int @Int @Int 12 14 In an equation for ‘d’: d = (+) @Int @Int @Int 12 14 -VtaFail.hs:51:5: error: +VtaFail.hs:53:5: error: • Cannot apply expression of type ‘Int -> String’ to a visible type argument ‘Float’ • In the expression: show @Int @Float (read "5") In an equation for ‘e’: e = show @Int @Float (read "5") -VtaFail.hs:52:11: error: +VtaFail.hs:54:11: error: • Cannot apply expression of type ‘String -> Int’ to a visible type argument ‘Bool’ • In the first argument of ‘show’, namely @@ -80,7 +81,7 @@ VtaFail.hs:52:11: error: In the expression: show (read @Int @Bool @Float "3") In an equation for ‘f’: f = show (read @Int @Bool @Float "3") -VtaFail.hs:57:12: error: +VtaFail.hs:59:12: error: • Expecting one more argument to ‘Maybe’ Expected a type, but ‘Maybe’ has kind ‘* -> *’ • In the type ‘Maybe’ diff --git a/testsuite/tests/typecheck/should_fail/all.T b/testsuite/tests/typecheck/should_fail/all.T index d97c6f96e1..0b4e6b70d7 100644 --- a/testsuite/tests/typecheck/should_fail/all.T +++ b/testsuite/tests/typecheck/should_fail/all.T @@ -483,7 +483,7 @@ test('T14904b', normal, compile_fail, ['']) test('T15067', normal, compile_fail, ['']) test('T15330', normal, compile_fail, ['']) test('T15361', normal, compile_fail, ['']) -test('T15438', normal, compile_fail, ['']) +test('T15438', normal, compile, ['']) test('T15515', normal, compile_fail, ['']) test('T15523', normal, compile_fail, ['-O']) test('T15527', normal, compile_fail, ['']) @@ -561,6 +561,7 @@ test('T17566c', normal, compile_fail, ['']) test('T17773', normal, compile_fail, ['']) test('T17021', normal, compile_fail, ['']) test('T17021b', normal, compile_fail, ['']) +test('T17775', normal, compile_fail, ['']) test('T17955', normal, compile_fail, ['']) test('T17173', normal, compile_fail, ['']) test('T18127a', normal, compile_fail, ['']) diff --git a/testsuite/tests/typecheck/should_fail/mc19.stderr b/testsuite/tests/typecheck/should_fail/mc19.stderr index 1b9682e6c8..5d19a388af 100644 --- a/testsuite/tests/typecheck/should_fail/mc19.stderr +++ b/testsuite/tests/typecheck/should_fail/mc19.stderr @@ -1,8 +1,12 @@ mc19.hs:10:31: error: - • Occurs check: cannot construct the infinite type: a ~ [a] - Expected type: [a] -> [a] - Actual type: [a] -> [[a]] + • Couldn't match type ‘a’ with ‘[a]’ + Expected: [a] -> [a] + Actual: [a] -> [[a]] + ‘a’ is a rigid type variable bound by + a type expected by the context: + forall {a}. [a] -> [a] + at mc19.hs:10:31-35 • In the expression: inits In a stmt of a monad comprehension: then inits In the expression: [x | x <- [3, 2, 1], then inits] diff --git a/testsuite/tests/typecheck/should_fail/mc21.stderr b/testsuite/tests/typecheck/should_fail/mc21.stderr index 014628f94a..abad9f6a20 100644 --- a/testsuite/tests/typecheck/should_fail/mc21.stderr +++ b/testsuite/tests/typecheck/should_fail/mc21.stderr @@ -1,8 +1,12 @@ mc21.hs:12:26: error: - • Occurs check: cannot construct the infinite type: a ~ [a] - Expected type: [a] -> [[a]] - Actual type: [[a]] -> [[a]] + • Couldn't match type ‘a’ with ‘[a]’ + Expected: [a] -> [[a]] + Actual: [a] -> [a] + ‘a’ is a rigid type variable bound by + a type expected by the context: + forall {a}. [a] -> [[a]] + at mc21.hs:12:26-31 • In the expression: take 5 In a stmt of a monad comprehension: then group using take 5 In the expression: diff --git a/testsuite/tests/typecheck/should_fail/mc22.stderr b/testsuite/tests/typecheck/should_fail/mc22.stderr index 40a754a9c5..50dbf5425b 100644 --- a/testsuite/tests/typecheck/should_fail/mc22.stderr +++ b/testsuite/tests/typecheck/should_fail/mc22.stderr @@ -1,11 +1,15 @@ mc22.hs:10:26: error: - • Occurs check: cannot construct the infinite type: a ~ t a - Expected type: [a] -> [t a] - Actual type: [t a] -> [t a] + • Couldn't match type ‘a’ with ‘t a’ + Expected: [a] -> [t a] + Actual: [a] -> [a] + ‘a’ is a rigid type variable bound by + a type expected by the context: + forall {a}. [a] -> [t a] + at mc22.hs:10:26-31 • In the expression: take 5 In a stmt of a monad comprehension: then group using take 5 In the expression: [x + 1 | x <- ["Hello", "World"], then group using take 5] • Relevant bindings include - foo :: [t [Char]] (bound at mc22.hs:8:1) + foo :: [t String] (bound at mc22.hs:8:1) diff --git a/testsuite/tests/typecheck/should_fail/mc23.stderr b/testsuite/tests/typecheck/should_fail/mc23.stderr index 2f3ae27a98..b9029f1635 100644 --- a/testsuite/tests/typecheck/should_fail/mc23.stderr +++ b/testsuite/tests/typecheck/should_fail/mc23.stderr @@ -1,8 +1,9 @@ mc23.hs:9:29: error: - • Couldn't match type ‘[a0]’ with ‘[a] -> m a’ - Expected type: (a -> b) -> [a] -> m a - Actual type: [a0] -> [a0] + • Couldn't match type: [a0] + with: a -> b + Expected: (a -> b) -> [a] -> m a + Actual: [a0] -> [a0] • Possible cause: ‘take’ is applied to too many arguments In the expression: take 5 In a stmt of a monad comprehension: then take 5 by x diff --git a/testsuite/tests/typecheck/should_fail/mc24.stderr b/testsuite/tests/typecheck/should_fail/mc24.stderr index 06a9c51690..e40a0c6e72 100644 --- a/testsuite/tests/typecheck/should_fail/mc24.stderr +++ b/testsuite/tests/typecheck/should_fail/mc24.stderr @@ -1,11 +1,11 @@ mc24.hs:10:31: error: - • Couldn't match type ‘[a1]’ with ‘[a] -> m [a]’ - Expected type: (a -> a0) -> [a] -> m [a] - Actual type: [a1] -> [a1] + • Couldn't match type: [a1] + with: a -> a0 + Expected: (a -> a0) -> [a] -> m [a] + Actual: [a1] -> [a1] • Possible cause: ‘take’ is applied to too many arguments In the expression: take 2 In a stmt of a monad comprehension: then group by x using take 2 In the expression: [GHC.List.length x | x <- [1 .. 10], then group by x using take 2] - • Relevant bindings include foo :: m Int (bound at mc24.hs:8:1) diff --git a/testsuite/tests/typecheck/should_fail/mc25.stderr b/testsuite/tests/typecheck/should_fail/mc25.stderr index 5c29197f04..f4e992f9e7 100644 --- a/testsuite/tests/typecheck/should_fail/mc25.stderr +++ b/testsuite/tests/typecheck/should_fail/mc25.stderr @@ -1,8 +1,8 @@ mc25.hs:9:46: error: - • Couldn't match type ‘a -> t1’ with ‘Int’ - Expected type: (a -> t1) -> [a] -> [t a] - Actual type: Int -> [t a] -> [t a] + • Couldn't match type ‘Int’ with ‘a -> t1’ + Expected: (a -> t1) -> [a] -> [t a] + Actual: Int -> [a] -> [a] • In the expression: take In a stmt of a monad comprehension: then group by x using take In the expression: [x | x <- [1 .. 10], then group by x using take] diff --git a/testsuite/tests/typecheck/should_fail/tcfail001.stderr b/testsuite/tests/typecheck/should_fail/tcfail001.stderr index 2d4caf2ac7..7f49c869ee 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail001.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail001.stderr @@ -1,7 +1,7 @@ tcfail001.hs:9:2: error: - • Couldn't match expected type ‘[a]’ - with actual type ‘[a0] -> [a1]’ + • Couldn't match expected type: [a] + with actual type: [a0] -> [a1] • The equation(s) for ‘op’ have one value argument, but its type ‘[a]’ has none In the instance declaration for ‘A [a]’ diff --git a/testsuite/tests/typecheck/should_fail/tcfail002.stderr b/testsuite/tests/typecheck/should_fail/tcfail002.stderr index d72a34065e..664c910533 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail002.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail002.stderr @@ -1,6 +1,6 @@ tcfail002.hs:4:7: error: - • Occurs check: cannot construct the infinite type: p ~ [p] + • Couldn't match expected type ‘p’ with actual type ‘[p]’ • In the expression: z In an equation for ‘c’: c z = z • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/tcfail004.stderr b/testsuite/tests/typecheck/should_fail/tcfail004.stderr index 9d6657e651..0d4f700910 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail004.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail004.stderr @@ -1,7 +1,7 @@ tcfail004.hs:3:9: error: - • Couldn't match expected type ‘(a, b)’ - with actual type ‘(a0, b0, c0)’ + • Couldn't match expected type: (a, b) + with actual type: (a0, b0, c0) • In the expression: (1, 2, 3) In a pattern binding: (f, g) = (1, 2, 3) • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/tcfail005.stderr b/testsuite/tests/typecheck/should_fail/tcfail005.stderr index d206505cdc..8da93af1e2 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail005.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail005.stderr @@ -1,6 +1,7 @@ tcfail005.hs:3:9: error: - • Couldn't match expected type ‘[a]’ with actual type ‘(a0, Char)’ + • Couldn't match expected type: [a] + with actual type: (a0, Char) • In the expression: (1, 'a') In a pattern binding: (h : i) = (1, 'a') • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/tcfail014.stderr b/testsuite/tests/typecheck/should_fail/tcfail014.stderr index f506bff6f8..65b217ef1f 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail014.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail014.stderr @@ -1,6 +1,6 @@ tcfail014.hs:5:33: error: - • Occurs check: cannot construct the infinite type: t4 ~ t4 -> t5 + • Couldn't match expected type ‘t4’ with actual type ‘t4 -> t5’ • In the first argument of ‘z’, namely ‘z’ In the expression: z z In an equation for ‘h’: h z = z z diff --git a/testsuite/tests/typecheck/should_fail/tcfail016.stderr b/testsuite/tests/typecheck/should_fail/tcfail016.stderr index 20b9e0fa36..9f38cd6461 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail016.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail016.stderr @@ -1,7 +1,8 @@ tcfail016.hs:8:1: error: - • Couldn't match type ‘Expr a’ with ‘(a, Expr a)’ - Expected type: AnnExpr a -> [[Char]] - Actual type: Expr a -> [[Char]] + • Couldn't match type: Expr a + with: (a, Expr a) + Expected: AnnExpr a -> [[Char]] + Actual: Expr a -> [[Char]] • Relevant bindings include g :: AnnExpr a -> [[Char]] (bound at tcfail016.hs:8:1) diff --git a/testsuite/tests/typecheck/should_fail/tcfail033.stderr b/testsuite/tests/typecheck/should_fail/tcfail033.stderr index bc346c2aac..a1c5e7d7d0 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail033.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail033.stderr @@ -1,6 +1,6 @@ tcfail033.hs:4:12: error: - • Occurs check: cannot construct the infinite type: a ~ (a, b) + • Couldn't match expected type ‘(a, b)’ with actual type ‘a’ • In the expression: x In the expression: [x | (x, y) <- buglet] In an equation for ‘buglet’: buglet = [x | (x, y) <- buglet] diff --git a/testsuite/tests/typecheck/should_fail/tcfail065.stderr b/testsuite/tests/typecheck/should_fail/tcfail065.stderr index c1f3283daa..9be21918cb 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail065.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail065.stderr @@ -1,14 +1,15 @@ tcfail065.hs:29:18: error: • Couldn't match type ‘x1’ with ‘x’ + Expected: X x + Actual: X x1 ‘x1’ is a rigid type variable bound by the type signature for: setX :: forall x1. x1 -> X x -> X x at tcfail065.hs:29:3-6 ‘x’ is a rigid type variable bound by - the instance declaration at tcfail065.hs:28:10-19 - Expected type: X x - Actual type: X x1 + the instance declaration + at tcfail065.hs:28:10-19 • In the expression: X x In an equation for ‘setX’: setX x (X _) = X x In the instance declaration for ‘HasX (X x)’ diff --git a/testsuite/tests/typecheck/should_fail/tcfail068.stderr b/testsuite/tests/typecheck/should_fail/tcfail068.stderr index 299fc7b8a7..c7b7630e04 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail068.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail068.stderr @@ -1,6 +1,8 @@ tcfail068.hs:14:9: error: • Couldn't match type ‘s1’ with ‘s’ + Expected: GHC.ST.ST s1 (IndTree s a) + Actual: GHC.ST.ST s1 (STArray s1 (Int, Int) a) ‘s1’ is a rigid type variable bound by a type expected by the context: forall s1. GHC.ST.ST s1 (IndTree s a) @@ -11,8 +13,6 @@ tcfail068.hs:14:9: error: Constructed a => (Int, Int) -> a -> IndTree s a at tcfail068.hs:11:1-55 - Expected type: GHC.ST.ST s1 (IndTree s a) - Actual type: GHC.ST.ST s1 (STArray s1 (Int, Int) a) • In the first argument of ‘runST’, namely ‘(newSTArray ((1, 1), n) x)’ In the expression: runST (newSTArray ((1, 1), n) x) @@ -24,6 +24,8 @@ tcfail068.hs:14:9: error: tcfail068.hs:19:9: error: • Couldn't match type ‘s1’ with ‘s’ + Expected: GHC.ST.ST s1 (IndTree s a) + Actual: GHC.ST.ST s (IndTree s a) ‘s1’ is a rigid type variable bound by a type expected by the context: forall s1. GHC.ST.ST s1 (IndTree s a) @@ -34,8 +36,6 @@ tcfail068.hs:19:9: error: Constructed a => (Int, Int) -> (a -> a) -> IndTree s a -> IndTree s a at tcfail068.hs:16:1-75 - Expected type: GHC.ST.ST s1 (IndTree s a) - Actual type: GHC.ST.ST s (IndTree s a) • In the first argument of ‘runST’, namely ‘(readSTArray arr i >>= \ val -> writeSTArray arr i (f val) >> return arr)’ @@ -55,6 +55,8 @@ tcfail068.hs:19:9: error: tcfail068.hs:24:36: error: • Couldn't match type ‘s1’ with ‘s’ + Expected: GHC.ST.ST s1 (IndTree s a) + Actual: GHC.ST.ST s (IndTree s a) ‘s1’ is a rigid type variable bound by a type expected by the context: forall s1. GHC.ST.ST s1 (IndTree s a) @@ -65,8 +67,6 @@ tcfail068.hs:24:36: error: Constructed a => ((Int, Int), (Int, Int)) -> (a -> a) -> IndTree s a -> IndTree s a at tcfail068.hs:23:1-87 - Expected type: GHC.ST.ST s1 (IndTree s a) - Actual type: GHC.ST.ST s (IndTree s a) • In the first argument of ‘runST’, namely ‘(itrap' i k)’ In the expression: runST (itrap' i k) In an equation for ‘itrap’: @@ -92,6 +92,8 @@ tcfail068.hs:24:36: error: tcfail068.hs:36:46: error: • Couldn't match type ‘s1’ with ‘s’ + Expected: GHC.ST.ST s1 (c, IndTree s b) + Actual: GHC.ST.ST s (c, IndTree s b) ‘s1’ is a rigid type variable bound by a type expected by the context: forall s1. GHC.ST.ST s1 (c, IndTree s b) @@ -108,8 +110,6 @@ tcfail068.hs:36:46: error: -> IndTree s b -> (c, IndTree s b) at tcfail068.hs:(34,1)-(35,62) - Expected type: GHC.ST.ST s1 (c, IndTree s b) - Actual type: GHC.ST.ST s (c, IndTree s b) • In the first argument of ‘runST’, namely ‘(itrapstate' i k s)’ In the expression: runST (itrapstate' i k s) In an equation for ‘itrapstate’: diff --git a/testsuite/tests/typecheck/should_fail/tcfail069.stderr b/testsuite/tests/typecheck/should_fail/tcfail069.stderr index fcaf3e9542..a7c996ce84 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail069.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail069.stderr @@ -1,7 +1,7 @@ tcfail069.hs:21:7: error: - • Couldn't match expected type ‘([Int], [Int])’ - with actual type ‘[a0]’ + • Couldn't match expected type: ([Int], [Int]) + with actual type: [a0] • In the pattern: [] In a case alternative: [] -> error "foo" In the expression: case (list1, list2) of { [] -> error "foo" } diff --git a/testsuite/tests/typecheck/should_fail/tcfail076.stderr b/testsuite/tests/typecheck/should_fail/tcfail076.stderr index 52fcebb927..47432ae851 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail076.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail076.stderr @@ -1,6 +1,8 @@ tcfail076.hs:18:82: error: • Couldn't match type ‘res1’ with ‘res’ + Expected: m res1 + Actual: m res ‘res1’ is a rigid type variable bound by a type expected by the context: forall res1. (b -> m res1) -> m res1 @@ -9,8 +11,6 @@ tcfail076.hs:18:82: error: a type expected by the context: forall res. (a -> m res) -> m res at tcfail076.hs:18:35-96 - Expected type: m res1 - Actual type: m res • In the expression: cont a In the first argument of ‘KContT’, namely ‘(\ cont' -> cont a)’ In the expression: KContT (\ cont' -> cont a) diff --git a/testsuite/tests/typecheck/should_fail/tcfail103.stderr b/testsuite/tests/typecheck/should_fail/tcfail103.stderr index 2192d8a7f6..84c9c8b0b6 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail103.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail103.stderr @@ -1,6 +1,8 @@ tcfail103.hs:15:13: error: • Couldn't match type ‘s’ with ‘t’ + Expected: ST s Int + Actual: ST t Int ‘s’ is a rigid type variable bound by the type signature for: g :: forall s. ST s Int @@ -9,8 +11,6 @@ tcfail103.hs:15:13: error: the type signature for: f :: forall t. ST t Int at tcfail103.hs:10:1-12 - Expected type: ST s Int - Actual type: ST t Int • In the expression: readSTRef v In an equation for ‘g’: g = readSTRef v In the expression: diff --git a/testsuite/tests/typecheck/should_fail/tcfail104.stderr b/testsuite/tests/typecheck/should_fail/tcfail104.stderr index 6516dcbd3a..9844b53268 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail104.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail104.stderr @@ -1,8 +1,9 @@ tcfail104.hs:14:12: error: - • Couldn't match type ‘forall a. a -> a’ with ‘Char -> Char’ - Expected type: (Char -> Char) -> Char -> Char - Actual type: (forall a. a -> a) -> Char -> Char + • Couldn't match type: forall a. a -> a + with: Char -> Char + Expected: (Char -> Char) -> Char -> Char + Actual: (forall a. a -> a) -> Char -> Char • In the expression: \ (x :: forall a. a -> a) -> x In the expression: if v then (\ (x :: forall a. a -> a) -> x) else (\ x -> x) @@ -10,8 +11,8 @@ tcfail104.hs:14:12: error: (if v then (\ (x :: forall a. a -> a) -> x) else (\ x -> x)) id 'c' tcfail104.hs:22:15: error: - • Couldn't match expected type ‘Char -> Char’ - with actual type ‘forall a. a -> a’ + • Couldn't match expected type: Char -> Char + with actual type: forall a. a -> a • When checking that the pattern signature: forall a. a -> a fits the type of its context: Char -> Char In the pattern: x :: forall a. a -> a diff --git a/testsuite/tests/typecheck/should_fail/tcfail119.stderr b/testsuite/tests/typecheck/should_fail/tcfail119.stderr index 5c22aefc4e..d23ab1f537 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail119.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail119.stderr @@ -1,5 +1,7 @@ -tcfail119.hs:11:8: - Couldn't match expected type ‘Bool’ with actual type ‘[Char]’ - In the pattern: "Foo" - In an equation for ‘b’: b x "Foo" = () +tcfail119.hs:11:8: error: + • Couldn't match type ‘Bool’ with ‘[Char]’ + Expected: Bool + Actual: String + • In the pattern: "Foo" + In an equation for ‘b’: b x "Foo" = () diff --git a/testsuite/tests/typecheck/should_fail/tcfail122.stderr b/testsuite/tests/typecheck/should_fail/tcfail122.stderr index 0ac1419e7d..39507bdbeb 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail122.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail122.stderr @@ -4,8 +4,8 @@ tcfail122.hs:8:9: error: When matching types c0 :: (* -> *) -> * a :: * -> * - Expected type: a b - Actual type: c0 d0 + Expected: a b + Actual: c0 d0 • In the expression: undefined :: forall (c :: (* -> *) -> *) (d :: * -> *). c d In the expression: diff --git a/testsuite/tests/typecheck/should_fail/tcfail132.stderr b/testsuite/tests/typecheck/should_fail/tcfail132.stderr index 2e0a13c844..92f7c2ab52 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail132.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail132.stderr @@ -1,13 +1,15 @@ tcfail132.hs:17:37: error: - • Expected kind ‘* -> * -> * -> *’, + • Couldn't match kind ‘*’ with ‘* -> *’ + Expected kind ‘* -> * -> * -> *’, but ‘Object f' f t’ has kind ‘* -> * -> *’ • In the first argument of ‘T’, namely ‘(Object f' f t)’ In the type ‘T (Object f' f t) (DUnit t)’ In the type declaration for ‘LiftObject’ tcfail132.hs:17:53: error: - • Expected kind ‘* -> * -> * -> *’, + • Couldn't match kind ‘*’ with ‘* -> *’ + Expected kind ‘* -> * -> * -> *’, but ‘DUnit t’ has kind ‘* -> * -> *’ • In the second argument of ‘T’, namely ‘(DUnit t)’ In the type ‘T (Object f' f t) (DUnit t)’ diff --git a/testsuite/tests/typecheck/should_fail/tcfail140.stderr b/testsuite/tests/typecheck/should_fail/tcfail140.stderr index c0049d0e19..8de86280e1 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail140.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail140.stderr @@ -17,14 +17,14 @@ tcfail140.hs:12:10: error: rot :: p -> t (bound at tcfail140.hs:12:1) tcfail140.hs:14:15: error: - • Couldn't match expected type ‘t -> b’ with actual type ‘Int’ + • Couldn't match expected type ‘a -> b’ with actual type ‘Int’ • The operator ‘f’ takes two value arguments, - but its type ‘Int -> Int’ has only one + but its type ‘Int -> Int’ has only one In the first argument of ‘map’, namely ‘(3 `f`)’ In the expression: map (3 `f`) xs • Relevant bindings include - xs :: [t] (bound at tcfail140.hs:14:5) - bot :: [t] -> [b] (bound at tcfail140.hs:14:1) + xs :: [a] (bound at tcfail140.hs:14:5) + bot :: [a] -> [b] (bound at tcfail140.hs:14:1) tcfail140.hs:16:8: error: • The constructor ‘Just’ should have 1 argument, but has been given none diff --git a/testsuite/tests/typecheck/should_fail/tcfail165.stderr b/testsuite/tests/typecheck/should_fail/tcfail165.stderr index 19fe79bb78..b1f173f447 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail165.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail165.stderr @@ -1,7 +1,7 @@ tcfail165.hs:19:23: error: - • Couldn't match expected type ‘forall a. Show a => a -> String’ - with actual type ‘b0 -> String’ + • Couldn't match expected type: forall a. Show a => a -> String + with actual type: b0 -> String • In the second argument of ‘putMVar’, namely ‘(show :: forall b. Show b => b -> String)’ In a stmt of a 'do' block: diff --git a/testsuite/tests/typecheck/should_fail/tcfail168.stderr b/testsuite/tests/typecheck/should_fail/tcfail168.stderr index 4ec71aaa1d..59972c2aa4 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail168.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail168.stderr @@ -1,7 +1,7 @@ tcfail168.hs:7:11: error: - • Couldn't match expected type ‘IO a0’ - with actual type ‘Char -> IO ()’ + • Couldn't match expected type: IO a0 + with actual type: Char -> IO () • Probable cause: ‘putChar’ is applied to too few arguments In a stmt of a 'do' block: putChar In the expression: diff --git a/testsuite/tests/typecheck/should_fail/tcfail174.stderr b/testsuite/tests/typecheck/should_fail/tcfail174.stderr index 724535145c..5747a270ef 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail174.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail174.stderr @@ -1,21 +1,22 @@ tcfail174.hs:9:5: error: - • Couldn't match type ‘a0 -> a0’ with ‘forall a. a -> a’ - Expected type: Capture (forall a. a -> a) - Actual type: Capture (a0 -> a0) + • Couldn't match type: a0 -> a0 + with: forall a. a -> a + Expected: Capture (forall a. a -> a) + Actual: Capture (a0 -> a0) • In the expression: Base id In an equation for ‘g’: g = Base id tcfail174.hs:16:14: error: • Couldn't match type ‘a1’ with ‘a’ + Expected: Capture (forall x. x -> a) + Actual: Capture (forall a. a -> a) ‘a1’ is a rigid type variable bound by the type a -> a at tcfail174.hs:16:1-14 ‘a’ is a rigid type variable bound by the inferred type of h1 :: Capture a at tcfail174.hs:16:1-14 - Expected type: Capture (forall x. x -> a) - Actual type: Capture (forall a. a -> a) • In the first argument of ‘Capture’, namely ‘g’ In the expression: Capture g In an equation for ‘h1’: h1 = Capture g @@ -24,6 +25,8 @@ tcfail174.hs:16:14: error: tcfail174.hs:19:14: error: • Couldn't match type ‘a’ with ‘b’ + Expected: Capture (forall x. x -> b) + Actual: Capture (forall a. a -> a) ‘a’ is a rigid type variable bound by the type a -> a at tcfail174.hs:1:1 @@ -31,8 +34,6 @@ tcfail174.hs:19:14: error: the type signature for: h2 :: forall b. Capture b at tcfail174.hs:18:1-15 - Expected type: Capture (forall x. x -> b) - Actual type: Capture (forall a. a -> a) • In the first argument of ‘Capture’, namely ‘g’ In the expression: Capture g In an equation for ‘h2’: h2 = Capture g diff --git a/testsuite/tests/typecheck/should_fail/tcfail178.stderr b/testsuite/tests/typecheck/should_fail/tcfail178.stderr index 98df425424..d9f1b455c0 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail178.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail178.stderr @@ -1,8 +1,8 @@ tcfail178.hs:15:7: error: • Couldn't match type ‘()’ with ‘[a]’ - Expected type: Bool -> [a] - Actual type: Bool -> () + Expected: Bool -> [a] + Actual: Bool -> () • In the first argument of ‘a’, namely ‘y’ In the expression: a y In an equation for ‘c’: c = a y diff --git a/testsuite/tests/typecheck/should_fail/tcfail179.stderr b/testsuite/tests/typecheck/should_fail/tcfail179.stderr index 7d16288b1f..a0c124590f 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail179.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail179.stderr @@ -1,6 +1,8 @@ tcfail179.hs:14:41: error: • Couldn't match type ‘x’ with ‘s’ + Expected: x -> s + Actual: x -> x ‘x’ is a rigid type variable bound by a pattern with constructor: T :: forall s x. (s -> (x -> s) -> (x, s, Int)) -> T s, @@ -10,8 +12,6 @@ tcfail179.hs:14:41: error: the type signature for: run :: forall s. T s -> Int at tcfail179.hs:12:1-17 - Expected type: x -> s - Actual type: s -> s • In the second argument of ‘g’, namely ‘id’ In the expression: g x id In a pattern binding: (x, _, b) = g x id diff --git a/testsuite/tests/typecheck/should_fail/tcfail182.stderr b/testsuite/tests/typecheck/should_fail/tcfail182.stderr index e57c3c1672..12dbb6efa8 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail182.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail182.stderr @@ -1,10 +1,10 @@ tcfail182.hs:9:3: error: - • Couldn't match expected type ‘Prelude.Maybe a’ - with actual type ‘Maybe a0’ - NB: ‘Maybe’ is defined at tcfail182.hs:6:1-18 - ‘Prelude.Maybe’ - is defined in ‘GHC.Maybe’ in package ‘base-4.13.0.0’ + • Couldn't match expected type: Prelude.Maybe a + with actual type: Maybe a0 + NB: ‘Prelude.Maybe’ + is defined in ‘GHC.Maybe’ in package ‘base-4.14.0.0’ + ‘Maybe’ is defined at tcfail182.hs:6:1-18 • In the pattern: Foo In an equation for ‘f’: f Foo = 3 • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/tcfail186.stderr b/testsuite/tests/typecheck/should_fail/tcfail186.stderr index 9b38bca915..5d931076f7 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail186.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail186.stderr @@ -1,8 +1,8 @@ tcfail186.hs:7:9: error: • Couldn't match type ‘[Char]’ with ‘Int’ - Expected type: PhantomSyn a0 - Actual type: [Char] + Expected: PhantomSyn a0 + Actual: String • In the first argument of ‘f’, namely ‘"hoo"’ In the expression: f "hoo" In an equation for ‘foo’: foo = f "hoo" diff --git a/testsuite/tests/typecheck/should_fail/tcfail189.stderr b/testsuite/tests/typecheck/should_fail/tcfail189.stderr index f33d1e37f6..108a7ad973 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail189.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail189.stderr @@ -1,8 +1,9 @@ tcfail189.hs:10:31: error: - • Couldn't match type ‘[a1]’ with ‘[a] -> [[a]]’ - Expected type: (a -> a0) -> [a] -> [[a]] - Actual type: [a1] -> [a1] + • Couldn't match type: [a1] + with: a -> a0 + Expected: (a -> a0) -> [a] -> [[a]] + Actual: [a1] -> [a1] • Possible cause: ‘take’ is applied to too many arguments In the expression: take 2 In a stmt of a list comprehension: then group by x using take 2 diff --git a/testsuite/tests/typecheck/should_fail/tcfail191.stderr b/testsuite/tests/typecheck/should_fail/tcfail191.stderr index 125c2d8393..fd874653b0 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail191.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail191.stderr @@ -1,8 +1,12 @@ tcfail191.hs:11:26: error: - • Occurs check: cannot construct the infinite type: a ~ [a] - Expected type: [a] -> [[a]] - Actual type: [[a]] -> [[a]] + • Couldn't match type ‘a’ with ‘[a]’ + Expected: [a] -> [[a]] + Actual: [a] -> [a] + ‘a’ is a rigid type variable bound by + a type expected by the context: + forall {a}. [a] -> [[a]] + at tcfail191.hs:11:26-31 • In the expression: take 5 In a stmt of a list comprehension: then group using take 5 In the expression: diff --git a/testsuite/tests/typecheck/should_fail/tcfail193.stderr b/testsuite/tests/typecheck/should_fail/tcfail193.stderr index 028e2f0232..cf4813c9f2 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail193.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail193.stderr @@ -1,8 +1,12 @@ tcfail193.hs:10:31: error: - • Occurs check: cannot construct the infinite type: a ~ [a] - Expected type: [a] -> [a] - Actual type: [a] -> [[a]] + • Couldn't match type ‘a’ with ‘[a]’ + Expected: [a] -> [a] + Actual: [a] -> [[a]] + ‘a’ is a rigid type variable bound by + a type expected by the context: + forall {a}. [a] -> [a] + at tcfail193.hs:10:31-35 • In the expression: inits In a stmt of a list comprehension: then inits In the expression: [x | x <- [3, 2, 1], then inits] diff --git a/testsuite/tests/typecheck/should_fail/tcfail199.stderr b/testsuite/tests/typecheck/should_fail/tcfail199.stderr index 4833c769f9..50fc8e5f44 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail199.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail199.stderr @@ -1,5 +1,8 @@ -tcfail199.hs:5:1: - Couldn't match expected type ‘IO t0’ with actual type ‘[Char]’ - In the expression: main - When checking the type of the IO action ‘main’ +tcfail199.hs:5:1: error: + • Couldn't match type: [Char] + with: IO t0 + Expected: IO t0 + Actual: String + • In the expression: main + When checking the type of the IO action ‘main’ diff --git a/testsuite/tests/typecheck/should_fail/tcfail201.stderr b/testsuite/tests/typecheck/should_fail/tcfail201.stderr index 77349e29f4..dd1385fc90 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail201.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail201.stderr @@ -1,14 +1,14 @@ tcfail201.hs:17:56: error: • Couldn't match type ‘a’ with ‘HsDoc id0’ + Expected: c a + Actual: c (HsDoc id0) ‘a’ is a rigid type variable bound by the type signature for: gfoldl' :: forall (c :: * -> *) a. (forall a1 b. c (a1 -> b) -> a1 -> c b) -> (forall g. g -> c g) -> a -> c a at tcfail201.hs:15:1-85 - Expected type: c a - Actual type: c (HsDoc id0) • In the expression: z DocEmpty In a case alternative: DocEmpty -> z DocEmpty In the expression: case hsDoc of { DocEmpty -> z DocEmpty } diff --git a/testsuite/tests/typecheck/should_fail/tcfail206.stderr b/testsuite/tests/typecheck/should_fail/tcfail206.stderr index 7c97fc02af..cfb5161100 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail206.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail206.stderr @@ -1,26 +1,27 @@ tcfail206.hs:5:5: error: • Couldn't match type ‘Bool’ with ‘Int’ - Expected type: Bool -> (Int, Bool) - Actual type: Int -> (Int, Bool) + Expected: Bool -> (Int, Bool) + Actual: Bool -> (Bool, Bool) • In the expression: (, True) In an equation for ‘a’: a = (, True) tcfail206.hs:8:5: error: - • Couldn't match type ‘(t1, Int)’ with ‘Bool -> (Int, Bool)’ - Expected type: Int -> Bool -> (Int, Bool) - Actual type: Int -> (t1, Int) + • Couldn't match type: (t1, Int) + with: Bool -> (Int, Bool) + Expected: Int -> Bool -> (Int, Bool) + Actual: Int -> (t1, Int) • In the expression: (1,) In an equation for ‘b’: b = (1,) tcfail206.hs:11:5: error: • Couldn't match type ‘a’ with ‘Bool’ + Expected: a -> (a, Bool) + Actual: a -> (Bool, a) ‘a’ is a rigid type variable bound by the type signature for: c :: forall a. a -> (a, Bool) at tcfail206.hs:10:1-19 - Expected type: a -> (a, Bool) - Actual type: Bool -> (a, Bool) • In the expression: (True || False,) In an equation for ‘c’: c = (True || False,) • Relevant bindings include @@ -28,27 +29,27 @@ tcfail206.hs:11:5: error: tcfail206.hs:14:5: error: • Couldn't match type ‘Bool’ with ‘Int’ - Expected type: Bool -> (# Int, Bool #) - Actual type: Int -> (# Int, Bool #) + Expected: Bool -> (# Int, Bool #) + Actual: Bool -> (# Bool, Bool #) • In the expression: (# , True #) In an equation for ‘d’: d = (# , True #) tcfail206.hs:17:5: error: - • Couldn't match type ‘(# t0, Int #)’ - with ‘Bool -> (# Int, Bool #)’ - Expected type: Int -> Bool -> (# Int, Bool #) - Actual type: Int -> (# t0, Int #) + • Couldn't match type: (# t0, Int #) + with: Bool -> (# Int, Bool #) + Expected: Int -> Bool -> (# Int, Bool #) + Actual: Int -> (# t0, Int #) • In the expression: (# 1, #) In an equation for ‘e’: e = (# 1, #) tcfail206.hs:20:5: error: • Couldn't match type ‘a’ with ‘Bool’ + Expected: a -> (# a, Bool #) + Actual: a -> (# Bool, a #) ‘a’ is a rigid type variable bound by the type signature for: f :: forall a. a -> (# a, Bool #) at tcfail206.hs:19:1-21 - Expected type: a -> (# a, Bool #) - Actual type: Bool -> (# a, Bool #) • In the expression: (# True || False, #) In an equation for ‘f’: f = (# True || False, #) • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_fail/tcfail207.stderr b/testsuite/tests/typecheck/should_fail/tcfail207.stderr index 986d7d5740..eb6fb1db15 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail207.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail207.stderr @@ -1,14 +1,14 @@ -tcfail207.hs:5:7: - Couldn't match expected type ‘[Int] -> [Int]’ - with actual type ‘[a1]’ - Possible cause: ‘take’ is applied to too many arguments - In the expression: take x [] - In an equation for ‘f’: f x = take x [] +tcfail207.hs:5:7: error: + • Couldn't match expected type: [Int] -> [Int] + with actual type: [a1] + • Possible cause: ‘take’ is applied to too many arguments + In the expression: take x [] + In an equation for ‘f’: f x = take x [] -tcfail207.hs:9:5: - Couldn't match expected type ‘[Int]’ - with actual type ‘[a0] -> [a0]’ - Probable cause: ‘take’ is applied to too few arguments - In the expression: take 3 - In an equation for ‘g’: g = take 3 +tcfail207.hs:9:5: error: + • Couldn't match expected type: [Int] + with actual type: [a0] -> [a0] + • Probable cause: ‘take’ is applied to too few arguments + In the expression: take 3 + In an equation for ‘g’: g = take 3 diff --git a/testsuite/tests/typecheck/should_fail/tcfail225.stderr b/testsuite/tests/typecheck/should_fail/tcfail225.stderr index 5a3ba3681f..8bfca4cb48 100644 --- a/testsuite/tests/typecheck/should_fail/tcfail225.stderr +++ b/testsuite/tests/typecheck/should_fail/tcfail225.stderr @@ -1,6 +1,7 @@ tcfail225.hs:9:19: error: - • Expected kind ‘k -> *’, but ‘Maybe’ has kind ‘* -> *’ + • Couldn't match kind ‘k’ with ‘*’ + Expected kind ‘k -> *’, but ‘Maybe’ has kind ‘* -> *’ • In the first argument of ‘T’, namely ‘Maybe’ In the type ‘T Maybe (m a)’ In the definition of data constructor ‘MkT’ diff --git a/testsuite/tests/typecheck/should_run/IPRun.hs b/testsuite/tests/typecheck/should_run/IPRun.hs index 0d2a8d76c6..6c3c88ff95 100644 --- a/testsuite/tests/typecheck/should_run/IPRun.hs +++ b/testsuite/tests/typecheck/should_run/IPRun.hs @@ -15,7 +15,7 @@ f2 () = let ?x = 5 in \() -> ?x -- should always return 5 f3 :: () -> ((?x :: Int) => Int) --- Deep skolemisation means that the local x=5 still wins +-- Simple subsumption means that the x=0 from main wins f3 = let ?x = 5 in \() -> ?x main = let ?x = 0 in diff --git a/testsuite/tests/typecheck/should_run/IPRun.stdout b/testsuite/tests/typecheck/should_run/IPRun.stdout index e558e3cc3a..978f5752d6 100644 --- a/testsuite/tests/typecheck/should_run/IPRun.stdout +++ b/testsuite/tests/typecheck/should_run/IPRun.stdout @@ -1,4 +1,4 @@ 5 5 5 -5 +0 diff --git a/testsuite/tests/typecheck/should_run/KindInvariant.stderr b/testsuite/tests/typecheck/should_run/KindInvariant.stderr index 4f6cfffb7f..9d404ae088 100644 --- a/testsuite/tests/typecheck/should_run/KindInvariant.stderr +++ b/testsuite/tests/typecheck/should_run/KindInvariant.stderr @@ -1,6 +1,7 @@ <interactive>:1:3: error: - • Expected kind ‘* -> *’, + • Couldn't match a lifted type with an unlifted type + Expected kind ‘* -> *’, but ‘State#’ has kind ‘* -> TYPE ('TupleRep '[])’ • In the first argument of ‘T’, namely ‘State#’ In the type ‘T State#’ diff --git a/testsuite/tests/typecheck/should_run/T13838.stderr b/testsuite/tests/typecheck/should_run/T13838.stderr index b2129f7d13..a8de8b16d3 100644 --- a/testsuite/tests/typecheck/should_run/T13838.stderr +++ b/testsuite/tests/typecheck/should_run/T13838.stderr @@ -1,5 +1,6 @@ -T13838.exe: T13838.hs:6:1: error: - • Couldn't match expected type ‘IO t0’ with actual type ‘() -> ()’ +T13838: T13838.hs:6:1: error: + • Couldn't match expected type: IO t0 + with actual type: () -> () • Probable cause: ‘main’ is applied to too few arguments In the expression: main When checking the type of the IO action ‘main’ diff --git a/testsuite/tests/typecheck/should_run/T7861.stderr b/testsuite/tests/typecheck/should_run/T7861.stderr index 4a1c030d7c..f65b01e217 100644 --- a/testsuite/tests/typecheck/should_run/T7861.stderr +++ b/testsuite/tests/typecheck/should_run/T7861.stderr @@ -1,7 +1,11 @@ T7861: T7861.hs:10:5: error: - • Occurs check: cannot construct the infinite type: a ~ [a] - Expected type: (forall b. a) -> a - Actual type: (forall b. a) -> [a] + • Couldn't match type ‘a’ with ‘[a]’ + Expected: (forall b. a) -> a + Actual: (forall b. a) -> [a] + ‘a’ is a rigid type variable bound by + the type signature for: + f :: forall a. (forall b. a) -> a + at T7861.hs:9:1-23 • In the expression: doA In an equation for ‘f’: f = doA • Relevant bindings include diff --git a/testsuite/tests/typecheck/should_run/Typeable1.stderr b/testsuite/tests/typecheck/should_run/Typeable1.stderr index ec16681592..3ded9c03ed 100644 --- a/testsuite/tests/typecheck/should_run/Typeable1.stderr +++ b/testsuite/tests/typecheck/should_run/Typeable1.stderr @@ -1,6 +1,7 @@ Typeable1.hs:22:5: error: [-Winaccessible-code (in -Wdefault), -Werror=inaccessible-code] - • Couldn't match type ‘ComposeK’ with ‘a3 b3’ + • Couldn't match type: ComposeK + with: a3 b3 Inaccessible code in a pattern with pattern synonym: App :: forall k2 (t :: k2). diff --git a/testsuite/tests/typecheck/should_run/all.T b/testsuite/tests/typecheck/should_run/all.T index 4cd7a1b73c..5afc7e3725 100755 --- a/testsuite/tests/typecheck/should_run/all.T +++ b/testsuite/tests/typecheck/should_run/all.T @@ -58,7 +58,7 @@ test('tcrun038', [extra_files(['TcRun038_B.hs'])], multimod_compile_and_run, ['t test('tcrun039', normal, compile_and_run, ['']) test('tcrun040', normal, compile_and_run, ['']) test('tcrun041', omit_ways(['ghci']), compile_and_run, ['']) -test('tcrun042', normal, compile_fail, ['']) +test('tcrun042', normal, compile, ['']) test('tcrun043', normal, compile_and_run, ['']) test('tcrun044', normal, compile_and_run, ['']) test('tcrun045', normal, compile_fail, ['']) diff --git a/testsuite/tests/typecheck/should_run/tcrun035.hs b/testsuite/tests/typecheck/should_run/tcrun035.hs index ee9f27bb7b..9106557ede 100644 --- a/testsuite/tests/typecheck/should_run/tcrun035.hs +++ b/testsuite/tests/typecheck/should_run/tcrun035.hs @@ -6,11 +6,15 @@ -- Now it breaks the impredicativity story -- (id {a}) . (id {a}) :: a -> a -- And (forall m. Monad m => m a) /~ IO a +-- +-- Apr 20: with simple subsumption this fails. So I +-- I eta-expanded foo, but leaving the (id . id) +-- composition. module Main(main) where foo :: (forall m. Monad m => m a) -> IO a -foo = id . id +foo x = (id . id) x main :: IO () main = foo (return ()) diff --git a/testsuite/tests/typecheck/should_run/tcrun042.hs b/testsuite/tests/typecheck/should_run/tcrun042.hs index 3b51d36c22..ba809a16ba 100644 --- a/testsuite/tests/typecheck/should_run/tcrun042.hs +++ b/testsuite/tests/typecheck/should_run/tcrun042.hs @@ -5,6 +5,8 @@ -- failing, which is OK. We don't really support impredicative -- polymorphism! -- +-- Apr 20: Works again. NB: the ImpredicativeTypes flag +-- -- The test was added by Max in 5e8ff849, apparently to test tuple sections module Main where diff --git a/testsuite/tests/typecheck/should_run/tcrun042.stderr b/testsuite/tests/typecheck/should_run/tcrun042.stderr deleted file mode 100644 index 52d9b29693..0000000000 --- a/testsuite/tests/typecheck/should_run/tcrun042.stderr +++ /dev/null @@ -1,6 +0,0 @@ - -tcrun042.hs:13:5: error: - • Couldn't match expected type ‘forall c. c -> c -> c’ - with actual type ‘b0 -> b0 -> b0’ - • In the expression: (, "Hello" ++ "World",) - In an equation for ‘e’: e = (, "Hello" ++ "World",) diff --git a/testsuite/tests/warnings/should_fail/CaretDiagnostics1.stderr b/testsuite/tests/warnings/should_fail/CaretDiagnostics1.stderr index 6d02807207..aa02b8655a 100644 --- a/testsuite/tests/warnings/should_fail/CaretDiagnostics1.stderr +++ b/testsuite/tests/warnings/should_fail/CaretDiagnostics1.stderr @@ -18,8 +18,8 @@ CaretDiagnostics1.hs:(5,3)-(7,16): error: CaretDiagnostics1.hs:8:3-45: error: • Couldn't match type ‘[Char]’ with ‘()’ - Expected type: IO () - Actual type: IO [Char] + Expected: IO () + Actual: IO String • In a stmt of a 'do' block: pure ("this is not an IO" + ()) In the expression: do 10000000000000000000000000000000000000 + 2 + (3 :: Int) @@ -35,7 +35,9 @@ CaretDiagnostics1.hs:8:3-45: error: | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ CaretDiagnostics1.hs:8:31-44: error: - • Couldn't match expected type ‘[Char]’ with actual type ‘()’ + • Couldn't match type ‘()’ with ‘[Char]’ + Expected: String + Actual: () • In the second argument of ‘(+)’, namely ‘()’ In the first argument of ‘pure’, namely ‘("this is not an IO" + ())’ @@ -45,7 +47,10 @@ CaretDiagnostics1.hs:8:31-44: error: | ^^^^^^^^^^^^^^ CaretDiagnostics1.hs:13:7-11: error: - • Couldn't match expected type ‘a1 -> a1’ with actual type ‘[Char]’ + • Couldn't match type: a1 -> a1 + with: [Char] + Expected: a1 -> a1 + Actual: String • In the pattern: "γηξ" In a case alternative: "γηξ" -> () '0' In the expression: case id of { "γηξ" -> () '0' } |