summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2020-02-02 18:23:11 +0000
committerBen Gamari <ben@smart-cactus.org>2020-06-05 09:27:50 -0400
commit2b792facab46f7cdd09d12e79499f4e0dcd4293f (patch)
treef3bf2dffdd3c46744d3c1b0638948a1dfbd1b8f6 /testsuite
parentaf5e3a885ddd09dd5f550552c535af3661ff3dbf (diff)
downloadhaskell-2b792facab46f7cdd09d12e79499f4e0dcd4293f.tar.gz
Simple subsumptionwip/T17775
This patch simplifies GHC to use simple subsumption. Ticket #17775 Implements GHC proposal #287 https://github.com/ghc-proposals/ghc-proposals/blob/master/ proposals/0287-simplify-subsumption.rst All the motivation is described there; I will not repeat it here. The implementation payload: * tcSubType and friends become noticably simpler, because it no longer uses eta-expansion when checking subsumption. * No deeplyInstantiate or deeplySkolemise That in turn means that some tests fail, by design; they can all be fixed by eta expansion. There is a list of such changes below. Implementing the patch led me into a variety of sticky corners, so the patch includes several othe changes, some quite significant: * I made String wired-in, so that "foo" :: String rather than "foo" :: [Char] This improves error messages, and fixes #15679 * The pattern match checker relies on knowing about in-scope equality constraints, andd adds them to the desugarer's environment using addTyCsDs. But the co_fn in a FunBind was missed, and for some reason simple-subsumption ends up with dictionaries there. So I added a call to addTyCsDs. This is really part of #18049. * I moved the ic_telescope field out of Implication and into ForAllSkol instead. This is a nice win; just expresses the code much better. * There was a bug in GHC.Tc.TyCl.Instance.tcDataFamInstHeader. We called checkDataKindSig inside tc_kind_sig, /before/ solveEqualities and zonking. Obviously wrong, easily fixed. * solveLocalEqualitiesX: there was a whole mess in here, around failing fast enough. I discovered a bad latent bug where we could successfully kind-check a type signature, and use it, but have unsolved constraints that could fill in coercion holes in that signature -- aargh. It's all explained in Note [Failure in local type signatures] in GHC.Tc.Solver. Much better now. * I fixed a serious bug in anonymous type holes. IN f :: Int -> (forall a. a -> _) -> Int that "_" should be a unification variable at the /outer/ level; it cannot be instantiated to 'a'. This was plain wrong. New fields mode_lvl and mode_holes in TcTyMode, and auxiliary data type GHC.Tc.Gen.HsType.HoleMode. This fixes #16292, but makes no progress towards the more ambitious #16082 * I got sucked into an enormous refactoring of the reporting of equality errors in GHC.Tc.Errors, especially in mkEqErr1 mkTyVarEqErr misMatchMsg misMatchMsgOrCND In particular, the very tricky mkExpectedActualMsg function is gone. It took me a full day. But the result is far easier to understand. (Still not easy!) This led to various minor improvements in error output, and an enormous number of test-case error wibbles. One particular point: for occurs-check errors I now just say Can't match 'a' against '[a]' rather than using the intimidating language of "occurs check". * Pretty-printing AbsBinds Tests review * Eta expansions T11305: one eta expansion T12082: one eta expansion (undefined) T13585a: one eta expansion T3102: one eta expansion T3692: two eta expansions (tricky) T2239: two eta expansions T16473: one eta determ004: two eta expansions (undefined) annfail06: two eta (undefined) T17923: four eta expansions (a strange program indeed!) tcrun035: one eta expansion * Ambiguity check at higher rank. Now that we have simple subsumption, a type like f :: (forall a. Eq a => Int) -> Int is no longer ambiguous, because we could write g :: (forall a. Eq a => Int) -> Int g = f and it'd typecheck just fine. But f's type is a bit suspicious, and we might want to consider making the ambiguity check do a check on each sub-term. Meanwhile, these tests are accepted, whereas they were previously rejected as ambiguous: T7220a T15438 T10503 T9222 * Some more interesting error message wibbles T13381: Fine: one error (Int ~ Exp Int) rather than two (Int ~ Exp Int, Exp Int ~ Int) T9834: Small change in error (improvement) T10619: Improved T2414: Small change, due to order of unification, fine T2534: A very simple case in which a change of unification order means we get tow unsolved constraints instead of one tc211: bizarre impredicative tests; just accept this for now Updates Cabal and haddock submodules. Metric Increase: T12150 T12234 T5837 haddock.base Metric Decrease: haddock.compiler haddock.Cabal haddock.base Merge note: This appears to break the `UnliftedNewtypesDifficultUnification` test. It has been marked as broken in the interest of merging. (cherry picked from commit 66b7b195cb3dce93ed5078b80bf568efae904cc5)
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/tests/ado/T13242a.stderr3
-rw-r--r--testsuite/tests/ado/ado002.stderr12
-rw-r--r--testsuite/tests/ado/ado004.stderr10
-rw-r--r--testsuite/tests/annotations/should_fail/annfail06.hs6
-rw-r--r--testsuite/tests/arrows/should_fail/T5380.stderr4
-rw-r--r--testsuite/tests/backpack/should_fail/bkpfail24.stderr7
-rw-r--r--testsuite/tests/boxy/Base1.stderr14
-rw-r--r--testsuite/tests/deSugar/should_compile/T10662.stderr2
-rw-r--r--testsuite/tests/dependent/should_compile/dynamic-paper.stderr2
-rw-r--r--testsuite/tests/dependent/should_fail/BadTelescope5.stderr6
-rw-r--r--testsuite/tests/dependent/should_fail/T11407.stderr2
-rw-r--r--testsuite/tests/dependent/should_fail/T11471.stderr4
-rw-r--r--testsuite/tests/dependent/should_fail/T13780a.stderr3
-rw-r--r--testsuite/tests/dependent/should_fail/T14066.stderr10
-rw-r--r--testsuite/tests/dependent/should_fail/T14066d.stderr4
-rw-r--r--testsuite/tests/dependent/should_fail/T14066e.stderr5
-rw-r--r--testsuite/tests/dependent/should_fail/T16326_Fail10.stderr2
-rw-r--r--testsuite/tests/dependent/should_fail/T17131.stderr5
-rw-r--r--testsuite/tests/dependent/should_fail/T17541.stderr5
-rw-r--r--testsuite/tests/dependent/should_fail/TypeSkolEscape.stderr4
-rw-r--r--testsuite/tests/deriving/should_fail/T1496.stderr15
-rw-r--r--testsuite/tests/deriving/should_fail/T5498.stderr16
-rw-r--r--testsuite/tests/deriving/should_fail/T7148.stderr10
-rw-r--r--testsuite/tests/deriving/should_fail/T8984.stderr14
-rw-r--r--testsuite/tests/determinism/determ004/determ004.hs4
-rw-r--r--testsuite/tests/gadt/T3169.stderr10
-rw-r--r--testsuite/tests/gadt/T3651.stderr8
-rw-r--r--testsuite/tests/gadt/T7558.stderr6
-rw-r--r--testsuite/tests/gadt/gadt-escape1.stderr7
-rw-r--r--testsuite/tests/gadt/rw.stderr4
-rw-r--r--testsuite/tests/ghci.debugger/scripts/T14628.stderr11
-rw-r--r--testsuite/tests/ghci/scripts/Defer02.stderr20
-rw-r--r--testsuite/tests/ghci/scripts/T10508.stderr7
-rw-r--r--testsuite/tests/ghci/scripts/T12005.script4
-rw-r--r--testsuite/tests/ghci/scripts/T12447.stdout4
-rw-r--r--testsuite/tests/ghci/scripts/T16767.stdout4
-rw-r--r--testsuite/tests/ghci/scripts/T2976.stdout4
-rw-r--r--testsuite/tests/ghci/scripts/T8357.stdout6
-rw-r--r--testsuite/tests/ghci/scripts/T8649.stderr13
-rw-r--r--testsuite/tests/ghci/scripts/T8959b.stderr2
-rw-r--r--testsuite/tests/ghci/scripts/ghci012.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci051.stderr15
-rw-r--r--testsuite/tests/ghci/scripts/ghci052.stderr54
-rw-r--r--testsuite/tests/ghci/scripts/ghci053.stderr28
-rw-r--r--testsuite/tests/ghci/scripts/ghci061.stderr14
-rw-r--r--testsuite/tests/ghci/scripts/ghci064.stdout32
-rw-r--r--testsuite/tests/ghci/should_fail/T16287.stderr4
-rw-r--r--testsuite/tests/ghci/should_run/T13456.stdout4
-rw-r--r--testsuite/tests/hiefile/should_run/HieQueries.stdout4
-rw-r--r--testsuite/tests/indexed-types/should_compile/PushedInAsGivens.stderr3
-rw-r--r--testsuite/tests/indexed-types/should_compile/Simple14.hs10
-rw-r--r--testsuite/tests/indexed-types/should_compile/Simple14.stderr30
-rw-r--r--testsuite/tests/indexed-types/should_compile/T10806.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_compile/T12538.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_compile/T17923.hs6
-rw-r--r--testsuite/tests/indexed-types/should_fail/ExtraTcsUntch.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/Overlap6.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr15
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr12
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13674.stderr20
-rw-r--r--testsuite/tests/indexed-types/should_fail/T13784.stderr20
-rw-r--r--testsuite/tests/indexed-types/should_fail/T14246.stderr10
-rw-r--r--testsuite/tests/indexed-types/should_fail/T14369.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T14904.stderr2
-rw-r--r--testsuite/tests/indexed-types/should_fail/T15870.stderr3
-rw-r--r--testsuite/tests/indexed-types/should_fail/T1897b.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T1900.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2239.hs10
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2544.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2627b.stderr14
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2664.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2693.stderr19
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3330a.stderr9
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3330c.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4093a.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4093b.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4099.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4174.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4179.stderr14
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4272.stderr11
-rw-r--r--testsuite/tests/indexed-types/should_fail/T5439.stderr10
-rw-r--r--testsuite/tests/indexed-types/should_fail/T5934.stderr5
-rw-r--r--testsuite/tests/indexed-types/should_fail/T6123.stderr3
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7010.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7354.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7729a.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T7967.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/T8227.stderr10
-rw-r--r--testsuite/tests/indexed-types/should_fail/T8518.stderr11
-rw-r--r--testsuite/tests/indexed-types/should_fail/T9036.stderr9
-rw-r--r--testsuite/tests/indexed-types/should_fail/T9171.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/T9662.stderr16
-rw-r--r--testsuite/tests/module/mod180.stderr12
-rw-r--r--testsuite/tests/overloadedlists/should_fail/overloadedlistsfail03.stderr4
-rw-r--r--testsuite/tests/overloadedlists/should_fail/overloadedlistsfail05.stderr4
-rw-r--r--testsuite/tests/parser/should_compile/T2245.stderr6
-rw-r--r--testsuite/tests/parser/should_fail/T8501c.stderr2
-rw-r--r--testsuite/tests/parser/should_fail/readFail003.stderr4
-rw-r--r--testsuite/tests/parser/should_fail/readFail032.stderr13
-rw-r--r--testsuite/tests/parser/should_fail/readFail048.stderr13
-rw-r--r--testsuite/tests/partial-sigs/should_compile/DataFamilyInstanceLHS.stderr4
-rw-r--r--testsuite/tests/partial-sigs/should_compile/Defaulting2MROff.stderr6
-rw-r--r--testsuite/tests/partial-sigs/should_compile/Defaulting2MROn.stderr6
-rw-r--r--testsuite/tests/partial-sigs/should_compile/Either.stderr6
-rw-r--r--testsuite/tests/partial-sigs/should_compile/EveryNamed.stderr6
-rw-r--r--testsuite/tests/partial-sigs/should_compile/ExtraConstraints3.stderr8
-rw-r--r--testsuite/tests/partial-sigs/should_compile/SimpleGen.stderr6
-rw-r--r--testsuite/tests/partial-sigs/should_compile/SplicesUsed.stderr12
-rw-r--r--testsuite/tests/partial-sigs/should_compile/T10403.stderr20
-rw-r--r--testsuite/tests/partial-sigs/should_compile/T11670.stderr12
-rw-r--r--testsuite/tests/partial-sigs/should_compile/T14643.stderr4
-rw-r--r--testsuite/tests/partial-sigs/should_compile/T16728a.stderr20
-rw-r--r--testsuite/tests/partial-sigs/should_compile/TypeFamilyInstanceLHS.stderr4
-rw-r--r--testsuite/tests/partial-sigs/should_compile/Uncurry.stderr6
-rw-r--r--testsuite/tests/partial-sigs/should_compile/UncurryNamed.stderr6
-rw-r--r--testsuite/tests/partial-sigs/should_compile/WarningWildcardInstantiations.stderr20
-rw-r--r--testsuite/tests/partial-sigs/should_fail/ExtraConstraintsWildcardInPatternSplice.stderr8
-rw-r--r--testsuite/tests/partial-sigs/should_fail/NamedExtraConstraintsWildcard.stderr8
-rw-r--r--testsuite/tests/partial-sigs/should_fail/NamedWildcardExplicitForall.stderr4
-rw-r--r--testsuite/tests/partial-sigs/should_fail/NamedWildcardsNotInMonotype.stderr10
-rw-r--r--testsuite/tests/partial-sigs/should_fail/PatBind3.stderr8
-rw-r--r--testsuite/tests/partial-sigs/should_fail/T10615.stderr28
-rw-r--r--testsuite/tests/partial-sigs/should_fail/T14040a.stderr57
-rw-r--r--testsuite/tests/partial-sigs/should_fail/T14584.stderr7
-rw-r--r--testsuite/tests/partial-sigs/should_fail/T14584a.stderr8
-rw-r--r--testsuite/tests/partial-sigs/should_fail/TidyClash.stderr12
-rw-r--r--testsuite/tests/partial-sigs/should_fail/TidyClash2.stderr42
-rw-r--r--testsuite/tests/partial-sigs/should_fail/WildcardInstantiations.stderr14
-rw-r--r--testsuite/tests/partial-sigs/should_fail/WildcardsInPatternAndExprSig.stderr46
-rw-r--r--testsuite/tests/partial-sigs/should_run/T15415.stderr16
-rw-r--r--testsuite/tests/partial-sigs/should_run/T15415.stdout4
-rw-r--r--testsuite/tests/patsyn/should_compile/T17775-singleton.hs18
-rw-r--r--testsuite/tests/patsyn/should_compile/all.T1
-rw-r--r--testsuite/tests/patsyn/should_fail/T11010.stderr4
-rw-r--r--testsuite/tests/patsyn/should_fail/T11039.stderr4
-rw-r--r--testsuite/tests/patsyn/should_fail/T14552.stderr4
-rw-r--r--testsuite/tests/patsyn/should_fail/T15685.stderr10
-rw-r--r--testsuite/tests/patsyn/should_fail/T15695.stderr11
-rw-r--r--testsuite/tests/patsyn/should_fail/mono.stderr4
-rw-r--r--testsuite/tests/perf/compiler/T10547.stderr10
-rw-r--r--testsuite/tests/perf/compiler/T16473.hs2
-rw-r--r--testsuite/tests/polykinds/KindVType.stderr4
-rw-r--r--testsuite/tests/polykinds/T10503.hs7
-rw-r--r--testsuite/tests/polykinds/T10503.stderr17
-rw-r--r--testsuite/tests/polykinds/T11142.stderr17
-rw-r--r--testsuite/tests/polykinds/T12444.stderr4
-rw-r--r--testsuite/tests/polykinds/T12593.stderr9
-rw-r--r--testsuite/tests/polykinds/T14172.stderr10
-rw-r--r--testsuite/tests/polykinds/T14265.stderr18
-rw-r--r--testsuite/tests/polykinds/T14520.stderr1
-rw-r--r--testsuite/tests/polykinds/T14555.stderr3
-rw-r--r--testsuite/tests/polykinds/T14563.stderr3
-rw-r--r--testsuite/tests/polykinds/T14580.stderr3
-rw-r--r--testsuite/tests/polykinds/T14846.stderr36
-rw-r--r--testsuite/tests/polykinds/T15881.stderr2
-rw-r--r--testsuite/tests/polykinds/T16244.stderr2
-rw-r--r--testsuite/tests/polykinds/T16245.stderr2
-rw-r--r--testsuite/tests/polykinds/T17841.stderr3
-rw-r--r--testsuite/tests/polykinds/T17963.stderr9
-rw-r--r--testsuite/tests/polykinds/T7224.stderr6
-rw-r--r--testsuite/tests/polykinds/T7230.stderr4
-rw-r--r--testsuite/tests/polykinds/T7278.stderr5
-rw-r--r--testsuite/tests/polykinds/T7328.stderr2
-rw-r--r--testsuite/tests/polykinds/T7594.stderr4
-rw-r--r--testsuite/tests/polykinds/T7805.stderr10
-rw-r--r--testsuite/tests/polykinds/T8616.stderr15
-rw-r--r--testsuite/tests/polykinds/T9017.stderr10
-rw-r--r--testsuite/tests/polykinds/T9144.stderr4
-rw-r--r--testsuite/tests/polykinds/T9222.hs3
-rw-r--r--testsuite/tests/polykinds/T9222.stderr17
-rw-r--r--testsuite/tests/polykinds/T9569.hs30
-rw-r--r--testsuite/tests/polykinds/all.T4
-rw-r--r--testsuite/tests/quantified-constraints/T15290a.stderr10
-rw-r--r--testsuite/tests/quantified-constraints/T15290b.stderr4
-rw-r--r--testsuite/tests/quantified-constraints/T15918.stderr4
-rw-r--r--testsuite/tests/rebindable/DoParamM.stderr8
-rw-r--r--testsuite/tests/rename/should_fail/T2993.stderr2
-rw-r--r--testsuite/tests/saks/should_fail/saks007_fail.stderr4
-rw-r--r--testsuite/tests/saks/should_fail/saks_fail019.stderr4
-rw-r--r--testsuite/tests/saks/should_fail/saks_fail020.stderr4
-rw-r--r--testsuite/tests/simplCore/should_compile/T17930.stderr2
-rw-r--r--testsuite/tests/simplCore/should_compile/rule2.stderr3
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl017.stderr8
-rw-r--r--testsuite/tests/simplCore/should_compile/spec004.stderr4
-rw-r--r--testsuite/tests/th/T10945.stderr7
-rw-r--r--testsuite/tests/th/T11452.stderr8
-rw-r--r--testsuite/tests/th/T15321.stderr2
-rw-r--r--testsuite/tests/th/T16976.stderr2
-rw-r--r--testsuite/tests/th/T17380.stderr30
-rw-r--r--testsuite/tests/th/T7276.stderr6
-rw-r--r--testsuite/tests/th/T7276a.stdout8
-rw-r--r--testsuite/tests/th/T8577.stderr4
-rw-r--r--testsuite/tests/th/overloaded/TH_overloaded_constraints_fail.stderr4
-rw-r--r--testsuite/tests/typecheck/bug1465/bug1465.stderr14
-rw-r--r--testsuite/tests/typecheck/should_compile/FD3.stderr6
-rw-r--r--testsuite/tests/typecheck/should_compile/T10072.stderr2
-rw-r--r--testsuite/tests/typecheck/should_compile/T10283.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/T10390.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/T11254.stderr4
-rw-r--r--testsuite/tests/typecheck/should_compile/T11305.hs3
-rw-r--r--testsuite/tests/typecheck/should_compile/T12082.hs3
-rw-r--r--testsuite/tests/typecheck/should_compile/T12427a.hs1
-rw-r--r--testsuite/tests/typecheck/should_compile/T12427a.stderr15
-rw-r--r--testsuite/tests/typecheck/should_compile/T13381.stderr10
-rw-r--r--testsuite/tests/typecheck/should_compile/T13585a.hs5
-rw-r--r--testsuite/tests/typecheck/should_compile/T13651.stderr6
-rw-r--r--testsuite/tests/typecheck/should_compile/T14488.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/T15368.stderr7
-rw-r--r--testsuite/tests/typecheck/should_compile/T15370.stderr8
-rw-r--r--testsuite/tests/typecheck/should_compile/T1634.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/T17007.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/T17775-view-pats.hs52
-rw-r--r--testsuite/tests/typecheck/should_compile/T17775-viewpats-a.hs35
-rw-r--r--testsuite/tests/typecheck/should_compile/T17775-viewpats-b.hs7
-rw-r--r--testsuite/tests/typecheck/should_compile/T17775-viewpats-b.stderr10
-rw-r--r--testsuite/tests/typecheck/should_compile/T17775-viewpats-c.hs8
-rw-r--r--testsuite/tests/typecheck/should_compile/T17775-viewpats-c.stderr11
-rw-r--r--testsuite/tests/typecheck/should_compile/T17775-viewpats-d.hs7
-rw-r--r--testsuite/tests/typecheck/should_compile/T17775-viewpats-d.stderr12
-rw-r--r--testsuite/tests/typecheck/should_compile/T2494.stderr8
-rw-r--r--testsuite/tests/typecheck/should_compile/T3692.hs5
-rw-r--r--testsuite/tests/typecheck/should_compile/T4284.hs6
-rw-r--r--testsuite/tests/typecheck/should_compile/T7220a.hs4
-rw-r--r--testsuite/tests/typecheck/should_compile/T7220a.stderr14
-rw-r--r--testsuite/tests/typecheck/should_compile/T9569a.hs4
-rw-r--r--testsuite/tests/typecheck/should_compile/T9569a.stderr8
-rw-r--r--testsuite/tests/typecheck/should_compile/T9569b.hs8
-rw-r--r--testsuite/tests/typecheck/should_compile/T9834.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/T9834.stderr42
-rw-r--r--testsuite/tests/typecheck/should_compile/UnliftedNewtypesUnifySig.hs3
-rw-r--r--testsuite/tests/typecheck/should_compile/abstract_refinement_hole_fits.stderr88
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T11
-rw-r--r--testsuite/tests/typecheck/should_compile/subsumption_sort_hole_fits.stderr4
-rw-r--r--testsuite/tests/typecheck/should_compile/tc145.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc160.hs4
-rw-r--r--testsuite/tests/typecheck/should_compile/tc208.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc210.hs6
-rw-r--r--testsuite/tests/typecheck/should_compile/tc211.stderr87
-rw-r--r--testsuite/tests/typecheck/should_compile/twins.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/valid_hole_fits.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/ExpandSynsFail1.stderr21
-rw-r--r--testsuite/tests/typecheck/should_fail/ExpandSynsFail2.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/ExpandSynsFail3.stderr21
-rw-r--r--testsuite/tests/typecheck/should_fail/ExpandSynsFail4.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr9
-rw-r--r--testsuite/tests/typecheck/should_fail/LevPolyBounded.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/T10194.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/T10619.stderr44
-rw-r--r--testsuite/tests/typecheck/should_fail/T10715b.stderr16
-rw-r--r--testsuite/tests/typecheck/should_fail/T10971d.stderr9
-rw-r--r--testsuite/tests/typecheck/should_fail/T11514.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/T11672.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T12170a.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/T12373.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T12563.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/T12589.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/T12648.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T12906.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/T12921.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/T13292.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T13311.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T13320.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/T13530.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T13610.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T13909.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/T14605.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T14618.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/T14884.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/T14904a.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/T14904b.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/T15330.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/T15361.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T15438.hs4
-rw-r--r--testsuite/tests/typecheck/should_fail/T15438.stderr11
-rw-r--r--testsuite/tests/typecheck/should_fail/T15629.stderr42
-rw-r--r--testsuite/tests/typecheck/should_fail/T15648.stderr14
-rw-r--r--testsuite/tests/typecheck/should_fail/T15801.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T16074.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T16204c.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T16517.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T17077.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/T17775.hs15
-rw-r--r--testsuite/tests/typecheck/should_fail/T17775.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/T18127a.stderr18
-rw-r--r--testsuite/tests/typecheck/should_fail/T1899.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T2414.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/T2534.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/T2714.hs2
-rw-r--r--testsuite/tests/typecheck/should_fail/T2714.stderr17
-rw-r--r--testsuite/tests/typecheck/should_fail/T3102.hs4
-rw-r--r--testsuite/tests/typecheck/should_fail/T3406.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T3592.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/T3613.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/T3950.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T502.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T5246.stderr17
-rw-r--r--testsuite/tests/typecheck/should_fail/T6001.stderr18
-rw-r--r--testsuite/tests/typecheck/should_fail/T6069.stderr21
-rw-r--r--testsuite/tests/typecheck/should_fail/T7264.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/T7368.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T7368a.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T7696.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T7734.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T7851.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T7856.stderr20
-rw-r--r--testsuite/tests/typecheck/should_fail/T7869.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T8030.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/T8034.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/T8044.stderr16
-rw-r--r--testsuite/tests/typecheck/should_fail/T8142.stderr16
-rw-r--r--testsuite/tests/typecheck/should_fail/T8428.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/T8450.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T8603.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/T9201.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/T9260.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T9318.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T9605.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T9612.stderr37
-rw-r--r--testsuite/tests/typecheck/should_fail/T9774.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/T9858e.stderr15
-rw-r--r--testsuite/tests/typecheck/should_fail/TcCoercibleFail.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/TcMultiWayIfFail.stderr40
-rw-r--r--testsuite/tests/typecheck/should_fail/UnliftedNewtypesInfinite.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/UnliftedNewtypesInstanceFail.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/UnliftedNewtypesMismatchedKindRecord.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/VtaFail.hs4
-rw-r--r--testsuite/tests/typecheck/should_fail/VtaFail.stderr33
-rw-r--r--testsuite/tests/typecheck/should_fail/all.T3
-rw-r--r--testsuite/tests/typecheck/should_fail/mc19.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/mc21.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/mc22.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/mc23.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/mc24.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/mc25.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail001.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail002.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail004.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail005.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail014.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail016.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail033.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail065.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail068.stderr16
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail069.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail076.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail103.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail104.stderr11
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail119.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail122.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail132.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail140.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail165.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail168.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail174.stderr15
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail178.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail179.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail182.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail186.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail189.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail191.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail193.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail199.stderr11
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail201.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail206.stderr31
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail207.stderr24
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail225.stderr3
-rw-r--r--testsuite/tests/typecheck/should_run/IPRun.hs2
-rw-r--r--testsuite/tests/typecheck/should_run/IPRun.stdout2
-rw-r--r--testsuite/tests/typecheck/should_run/KindInvariant.stderr3
-rw-r--r--testsuite/tests/typecheck/should_run/T13838.stderr5
-rw-r--r--testsuite/tests/typecheck/should_run/T7861.stderr10
-rw-r--r--testsuite/tests/typecheck/should_run/Typeable1.stderr3
-rwxr-xr-xtestsuite/tests/typecheck/should_run/all.T2
-rw-r--r--testsuite/tests/typecheck/should_run/tcrun035.hs6
-rw-r--r--testsuite/tests/typecheck/should_run/tcrun042.hs2
-rw-r--r--testsuite/tests/typecheck/should_run/tcrun042.stderr6
-rw-r--r--testsuite/tests/warnings/should_fail/CaretDiagnostics1.stderr13
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' }