summaryrefslogtreecommitdiff
path: root/testsuite/tests/dependent/should_compile/all.T
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2019-02-21 15:27:17 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-03-09 02:07:53 -0500
commit1f5cc9dc8aeeafa439d6d12c3c4565ada524b926 (patch)
treea83c219447dc397524535f408368437422178cba /testsuite/tests/dependent/should_compile/all.T
parent2762f94dc27cc065dded7755f99c66cba26683dd (diff)
downloadhaskell-1f5cc9dc8aeeafa439d6d12c3c4565ada524b926.tar.gz
Stop inferring over-polymorphic kinds
Before this patch GHC was trying to be too clever (Trac #16344); it succeeded in kind-checking this polymorphic-recursive declaration data T ka (a::ka) b = MkT (T Type Int Bool) (T (Type -> Type) Maybe Bool) As Note [No polymorphic recursion] discusses, the "solution" was horribly fragile. So this patch deletes the key lines in TcHsType, and a wodge of supporting stuff in the renamer. There were two regressions, both the same: a closed type family decl like this (T12785b) does not have a CUSK: type family Payload (n :: Peano) (s :: HTree n x) where Payload Z (Point a) = a Payload (S n) (a `Branch` stru) = a To kind-check the equations we need a dependent kind for Payload, and we don't get that any more. Solution: make it a CUSK by giving the result kind -- probably a good thing anyway. The other case (T12442) was very similar: a close type family declaration without a CUSK.
Diffstat (limited to 'testsuite/tests/dependent/should_compile/all.T')
-rw-r--r--testsuite/tests/dependent/should_compile/all.T2
1 files changed, 2 insertions, 0 deletions
diff --git a/testsuite/tests/dependent/should_compile/all.T b/testsuite/tests/dependent/should_compile/all.T
index 4ba649ac9d..4e162aed69 100644
--- a/testsuite/tests/dependent/should_compile/all.T
+++ b/testsuite/tests/dependent/should_compile/all.T
@@ -68,3 +68,5 @@ test('T14729kind', normal, ghci_script, ['T14729kind.script'])
test('T16326_Compile1', normal, compile, [''])
test('T16326_Compile2', normal, compile, [''])
test('T16391a', normal, compile, [''])
+test('T16344b', normal, compile, [''])
+