summaryrefslogtreecommitdiff
path: root/testsuite/tests/parser
diff options
context:
space:
mode:
authorAlec Theriault <alec.theriault@gmail.com>2018-10-04 18:10:21 -0400
committerRyan Scott <ryan.gl.scott@gmail.com>2018-10-04 18:10:21 -0400
commitbace26aadaafa4064e78f9ed088c1e2217221acc (patch)
tree6e70248df2b40fbebd9c4fe2742044df0c32792c /testsuite/tests/parser
parent85376570c5d34950b1bd8f6c575526e7ff789b84 (diff)
downloadhaskell-bace26aadaafa4064e78f9ed088c1e2217221acc.tar.gz
Allow (unparenthesized) kind signatures
Summary: This allows for things like `[t :: MyKind]`, `(a :: k, b)`, and so on. Test Plan: make TEST=T11622 && make TEST=T8708 Reviewers: RyanGlScott, bgamari, simonpj, goldfire, alanz Reviewed By: RyanGlScott, simonpj Subscribers: alanz, simonpj, rwbarton, mpickering, carter GHC Trac Issues: #11622, #8708 Differential Revision: https://phabricator.haskell.org/D5173
Diffstat (limited to 'testsuite/tests/parser')
-rw-r--r--testsuite/tests/parser/should_compile/DumpParsedAst.stderr2
-rw-r--r--testsuite/tests/parser/should_compile/DumpRenamedAst.stderr33
-rw-r--r--testsuite/tests/parser/should_compile/KindSigs.hs32
-rw-r--r--testsuite/tests/parser/should_compile/KindSigs.stderr577
-rw-r--r--testsuite/tests/parser/should_compile/T11622.hs7
-rw-r--r--testsuite/tests/parser/should_compile/T8708.hs7
-rw-r--r--testsuite/tests/parser/should_compile/all.T4
7 files changed, 646 insertions, 16 deletions
diff --git a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
index 231017322f..edc66e0a2d 100644
--- a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
@@ -158,7 +158,7 @@
{OccName: Length}))
(HsQTvs
(NoExt)
- [({ DumpParsedAst.hs:7:20-30 }
+ [({ DumpParsedAst.hs:7:21-29 }
(KindedTyVar
(NoExt)
({ DumpParsedAst.hs:7:21-22 }
diff --git a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
index 2c1a0ec7df..d27e6d96e0 100644
--- a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
@@ -205,7 +205,7 @@
[{Name: k}]
{NameSet:
[]})
- [({ DumpRenamedAst.hs:8:20-30 }
+ [({ DumpRenamedAst.hs:8:21-29 }
(KindedTyVar
(NoExt)
({ DumpRenamedAst.hs:8:21-22 }
@@ -288,27 +288,30 @@
({ DumpRenamedAst.hs:15:18-20 }
{Name: DumpRenamedAst.Nat})
[({ DumpRenamedAst.hs:15:22-34 }
- (HsKindSig
+ (HsParTy
(NoExt)
- ({ DumpRenamedAst.hs:15:23 }
- (HsTyVar
+ ({ DumpRenamedAst.hs:15:23-33 }
+ (HsKindSig
(NoExt)
- (NotPromoted)
({ DumpRenamedAst.hs:15:23 }
- {Name: a})))
- ({ DumpRenamedAst.hs:15:28-33 }
- (HsFunTy
- (NoExt)
- ({ DumpRenamedAst.hs:15:28 }
(HsTyVar
(NoExt)
(NotPromoted)
- ({ DumpRenamedAst.hs:15:28 }
- {Name: k})))
- ({ DumpRenamedAst.hs:15:33 }
- (HsStarTy
+ ({ DumpRenamedAst.hs:15:23 }
+ {Name: a})))
+ ({ DumpRenamedAst.hs:15:28-33 }
+ (HsFunTy
(NoExt)
- (False)))))))]
+ ({ DumpRenamedAst.hs:15:28 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ DumpRenamedAst.hs:15:28 }
+ {Name: k})))
+ ({ DumpRenamedAst.hs:15:33 }
+ (HsStarTy
+ (NoExt)
+ (False)))))))))]
(Prefix)
(HsDataDefn
(NoExt)
diff --git a/testsuite/tests/parser/should_compile/KindSigs.hs b/testsuite/tests/parser/should_compile/KindSigs.hs
new file mode 100644
index 0000000000..aafe1a1e2b
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/KindSigs.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE UnboxedSums #-}
+{-# LANGUAGE UnboxedTuples #-}
+{-# LANGUAGE TypeFamilies #-}
+module KindSigs where
+
+import Data.Kind
+
+-- Kind annotation on type family instance equation
+type family Foo a where
+ Foo a = Int :: Type
+
+-- Kind annotation on component of tuple type
+type Bar a = ( Int :: Type, Bool, Maybe a :: Type )
+type Bar' a = (# Int :: Type, Bool, Maybe a :: Type #)
+
+-- Kind annotation on type of list
+type Baz = [ Int :: Type ]
+
+-- Kind annotation inside paren type
+qux :: (Int :: Type) -> Bool -> (() :: Type)
+qux _ _ = ()
+
+-- Kind annotation on promoted lists and tuples
+type Quux = '[ True :: Bool ]
+type Quux' = [ True :: Bool, False :: Bool ]
+type Quuux b = '( [Int, Bool] :: [Type], b )
+
+-- Note that 'true :: Bool :: Type' won't parse - you need some parens
+true :: (Bool :: Type)
+true = True
diff --git a/testsuite/tests/parser/should_compile/KindSigs.stderr b/testsuite/tests/parser/should_compile/KindSigs.stderr
new file mode 100644
index 0000000000..10dbd0dbf0
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/KindSigs.stderr
@@ -0,0 +1,577 @@
+
+==================== Parser AST ====================
+
+({ KindSigs.hs:1:1 }
+ (HsModule
+ (Just
+ ({ KindSigs.hs:6:8-15 }
+ {ModuleName: KindSigs}))
+ (Nothing)
+ [({ KindSigs.hs:8:1-16 }
+ (ImportDecl
+ (NoExt)
+ (NoSourceText)
+ ({ KindSigs.hs:8:8-16 }
+ {ModuleName: Data.Kind})
+ (Nothing)
+ (False)
+ (False)
+ (False)
+ (False)
+ (Nothing)
+ (Nothing)))]
+ [({ KindSigs.hs:11:1-17 }
+ (TyClD
+ (NoExt)
+ (FamDecl
+ (NoExt)
+ (FamilyDecl
+ (NoExt)
+ (ClosedTypeFamily
+ (Just
+ [({ KindSigs.hs:12:3-21 }
+ (HsIB
+ (NoExt)
+ (FamEqn
+ (NoExt)
+ ({ KindSigs.hs:12:3-5 }
+ (Unqual
+ {OccName: Foo}))
+ [({ KindSigs.hs:12:7 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:12:7 }
+ (Unqual
+ {OccName: a}))))]
+ (Prefix)
+ ({ KindSigs.hs:12:11-21 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:12:11-13 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:12:11-13 }
+ (Unqual
+ {OccName: Int}))))
+ ({ KindSigs.hs:12:18-21 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:12:18-21 }
+ (Unqual
+ {OccName: Type})))))))))]))
+ ({ KindSigs.hs:11:13-15 }
+ (Unqual
+ {OccName: Foo}))
+ (HsQTvs
+ (NoExt)
+ [({ KindSigs.hs:11:17 }
+ (UserTyVar
+ (NoExt)
+ ({ KindSigs.hs:11:17 }
+ (Unqual
+ {OccName: a}))))])
+ (Prefix)
+ ({ <no location info> }
+ (NoSig
+ (NoExt)))
+ (Nothing)))))
+ ,({ KindSigs.hs:15:1-51 }
+ (TyClD
+ (NoExt)
+ (SynDecl
+ (NoExt)
+ ({ KindSigs.hs:15:6-8 }
+ (Unqual
+ {OccName: Bar}))
+ (HsQTvs
+ (NoExt)
+ [({ KindSigs.hs:15:10 }
+ (UserTyVar
+ (NoExt)
+ ({ KindSigs.hs:15:10 }
+ (Unqual
+ {OccName: a}))))])
+ (Prefix)
+ ({ KindSigs.hs:15:14-51 }
+ (HsTupleTy
+ (NoExt)
+ (HsBoxedOrConstraintTuple)
+ [({ KindSigs.hs:15:16-26 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:15:16-18 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:15:16-18 }
+ (Unqual
+ {OccName: Int}))))
+ ({ KindSigs.hs:15:23-26 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:15:23-26 }
+ (Unqual
+ {OccName: Type}))))))
+ ,({ KindSigs.hs:15:29-32 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:15:29-32 }
+ (Unqual
+ {OccName: Bool}))))
+ ,({ KindSigs.hs:15:35-49 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:15:35-41 }
+ (HsAppTy
+ (NoExt)
+ ({ KindSigs.hs:15:35-39 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:15:35-39 }
+ (Unqual
+ {OccName: Maybe}))))
+ ({ KindSigs.hs:15:41 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:15:41 }
+ (Unqual
+ {OccName: a}))))))
+ ({ KindSigs.hs:15:46-49 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:15:46-49 }
+ (Unqual
+ {OccName: Type}))))))])))))
+ ,({ KindSigs.hs:16:1-54 }
+ (TyClD
+ (NoExt)
+ (SynDecl
+ (NoExt)
+ ({ KindSigs.hs:16:6-9 }
+ (Unqual
+ {OccName: Bar'}))
+ (HsQTvs
+ (NoExt)
+ [({ KindSigs.hs:16:11 }
+ (UserTyVar
+ (NoExt)
+ ({ KindSigs.hs:16:11 }
+ (Unqual
+ {OccName: a}))))])
+ (Prefix)
+ ({ KindSigs.hs:16:15-54 }
+ (HsTupleTy
+ (NoExt)
+ (HsUnboxedTuple)
+ [({ KindSigs.hs:16:18-28 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:16:18-20 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:16:18-20 }
+ (Unqual
+ {OccName: Int}))))
+ ({ KindSigs.hs:16:25-28 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:16:25-28 }
+ (Unqual
+ {OccName: Type}))))))
+ ,({ KindSigs.hs:16:31-34 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:16:31-34 }
+ (Unqual
+ {OccName: Bool}))))
+ ,({ KindSigs.hs:16:37-51 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:16:37-43 }
+ (HsAppTy
+ (NoExt)
+ ({ KindSigs.hs:16:37-41 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:16:37-41 }
+ (Unqual
+ {OccName: Maybe}))))
+ ({ KindSigs.hs:16:43 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:16:43 }
+ (Unqual
+ {OccName: a}))))))
+ ({ KindSigs.hs:16:48-51 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:16:48-51 }
+ (Unqual
+ {OccName: Type}))))))])))))
+ ,({ KindSigs.hs:19:1-26 }
+ (TyClD
+ (NoExt)
+ (SynDecl
+ (NoExt)
+ ({ KindSigs.hs:19:6-8 }
+ (Unqual
+ {OccName: Baz}))
+ (HsQTvs
+ (NoExt)
+ [])
+ (Prefix)
+ ({ KindSigs.hs:19:12-26 }
+ (HsListTy
+ (NoExt)
+ ({ KindSigs.hs:19:14-24 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:19:14-16 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:19:14-16 }
+ (Unqual
+ {OccName: Int}))))
+ ({ KindSigs.hs:19:21-24 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:19:21-24 }
+ (Unqual
+ {OccName: Type})))))))))))
+ ,({ KindSigs.hs:22:1-44 }
+ (SigD
+ (NoExt)
+ (TypeSig
+ (NoExt)
+ [({ KindSigs.hs:22:1-3 }
+ (Unqual
+ {OccName: qux}))]
+ (HsWC
+ (NoExt)
+ (HsIB
+ (NoExt)
+ ({ KindSigs.hs:22:8-44 }
+ (HsFunTy
+ (NoExt)
+ ({ KindSigs.hs:22:8-20 }
+ (HsParTy
+ (NoExt)
+ ({ KindSigs.hs:22:9-19 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:22:9-11 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:22:9-11 }
+ (Unqual
+ {OccName: Int}))))
+ ({ KindSigs.hs:22:16-19 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:22:16-19 }
+ (Unqual
+ {OccName: Type}))))))))
+ ({ KindSigs.hs:22:25-44 }
+ (HsFunTy
+ (NoExt)
+ ({ KindSigs.hs:22:25-28 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:22:25-28 }
+ (Unqual
+ {OccName: Bool}))))
+ ({ KindSigs.hs:22:33-44 }
+ (HsParTy
+ (NoExt)
+ ({ KindSigs.hs:22:34-43 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:22:34-35 }
+ (HsTupleTy
+ (NoExt)
+ (HsBoxedOrConstraintTuple)
+ []))
+ ({ KindSigs.hs:22:40-43 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:22:40-43 }
+ (Unqual
+ {OccName: Type})))))))))))))))))
+ ,({ KindSigs.hs:23:1-12 }
+ (ValD
+ (NoExt)
+ (FunBind
+ (NoExt)
+ ({ KindSigs.hs:23:1-3 }
+ (Unqual
+ {OccName: qux}))
+ (MG
+ (NoExt)
+ ({ KindSigs.hs:23:1-12 }
+ [({ KindSigs.hs:23:1-12 }
+ (Match
+ (NoExt)
+ (FunRhs
+ ({ KindSigs.hs:23:1-3 }
+ (Unqual
+ {OccName: qux}))
+ (Prefix)
+ (NoSrcStrict))
+ [({ KindSigs.hs:23:5 }
+ (WildPat
+ (NoExt)))
+ ,({ KindSigs.hs:23:7 }
+ (WildPat
+ (NoExt)))]
+ (GRHSs
+ (NoExt)
+ [({ KindSigs.hs:23:9-12 }
+ (GRHS
+ (NoExt)
+ []
+ ({ KindSigs.hs:23:11-12 }
+ (HsVar
+ (NoExt)
+ ({ KindSigs.hs:23:11-12 }
+ (Exact
+ {Name: ()}))))))]
+ ({ <no location info> }
+ (EmptyLocalBinds
+ (NoExt))))))])
+ (FromSource))
+ (WpHole)
+ [])))
+ ,({ KindSigs.hs:26:1-29 }
+ (TyClD
+ (NoExt)
+ (SynDecl
+ (NoExt)
+ ({ KindSigs.hs:26:6-9 }
+ (Unqual
+ {OccName: Quux}))
+ (HsQTvs
+ (NoExt)
+ [])
+ (Prefix)
+ ({ KindSigs.hs:26:13-29 }
+ (HsExplicitListTy
+ (NoExt)
+ (Promoted)
+ [({ KindSigs.hs:26:16-27 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:26:16-19 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:26:16-19 }
+ (Unqual
+ {OccName: True}))))
+ ({ KindSigs.hs:26:24-27 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:26:24-27 }
+ (Unqual
+ {OccName: Bool}))))))])))))
+ ,({ KindSigs.hs:27:1-45 }
+ (TyClD
+ (NoExt)
+ (SynDecl
+ (NoExt)
+ ({ KindSigs.hs:27:6-10 }
+ (Unqual
+ {OccName: Quux'}))
+ (HsQTvs
+ (NoExt)
+ [])
+ (Prefix)
+ ({ KindSigs.hs:27:14-45 }
+ (HsExplicitListTy
+ (NoExt)
+ (NotPromoted)
+ [({ KindSigs.hs:27:16-27 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:27:16-19 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:27:16-19 }
+ (Unqual
+ {OccName: True}))))
+ ({ KindSigs.hs:27:24-27 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:27:24-27 }
+ (Unqual
+ {OccName: Bool}))))))
+ ,({ KindSigs.hs:27:30-42 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:27:30-34 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:27:30-34 }
+ (Unqual
+ {OccName: False}))))
+ ({ KindSigs.hs:27:39-42 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:27:39-42 }
+ (Unqual
+ {OccName: Bool}))))))])))))
+ ,({ KindSigs.hs:28:1-44 }
+ (TyClD
+ (NoExt)
+ (SynDecl
+ (NoExt)
+ ({ KindSigs.hs:28:6-10 }
+ (Unqual
+ {OccName: Quuux}))
+ (HsQTvs
+ (NoExt)
+ [({ KindSigs.hs:28:12 }
+ (UserTyVar
+ (NoExt)
+ ({ KindSigs.hs:28:12 }
+ (Unqual
+ {OccName: b}))))])
+ (Prefix)
+ ({ KindSigs.hs:28:16-44 }
+ (HsExplicitTupleTy
+ (NoExt)
+ [({ KindSigs.hs:28:19-39 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:28:19-29 }
+ (HsExplicitListTy
+ (NoExt)
+ (NotPromoted)
+ [({ KindSigs.hs:28:20-22 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:28:20-22 }
+ (Unqual
+ {OccName: Int}))))
+ ,({ KindSigs.hs:28:25-28 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:28:25-28 }
+ (Unqual
+ {OccName: Bool}))))]))
+ ({ KindSigs.hs:28:34-39 }
+ (HsListTy
+ (NoExt)
+ ({ KindSigs.hs:28:35-38 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:28:35-38 }
+ (Unqual
+ {OccName: Type}))))))))
+ ,({ KindSigs.hs:28:42 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:28:42 }
+ (Unqual
+ {OccName: b}))))])))))
+ ,({ KindSigs.hs:31:1-22 }
+ (SigD
+ (NoExt)
+ (TypeSig
+ (NoExt)
+ [({ KindSigs.hs:31:1-4 }
+ (Unqual
+ {OccName: true}))]
+ (HsWC
+ (NoExt)
+ (HsIB
+ (NoExt)
+ ({ KindSigs.hs:31:9-22 }
+ (HsParTy
+ (NoExt)
+ ({ KindSigs.hs:31:10-21 }
+ (HsKindSig
+ (NoExt)
+ ({ KindSigs.hs:31:10-13 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:31:10-13 }
+ (Unqual
+ {OccName: Bool}))))
+ ({ KindSigs.hs:31:18-21 }
+ (HsTyVar
+ (NoExt)
+ (NotPromoted)
+ ({ KindSigs.hs:31:18-21 }
+ (Unqual
+ {OccName: Type})))))))))))))
+ ,({ KindSigs.hs:32:1-11 }
+ (ValD
+ (NoExt)
+ (FunBind
+ (NoExt)
+ ({ KindSigs.hs:32:1-4 }
+ (Unqual
+ {OccName: true}))
+ (MG
+ (NoExt)
+ ({ KindSigs.hs:32:1-11 }
+ [({ KindSigs.hs:32:1-11 }
+ (Match
+ (NoExt)
+ (FunRhs
+ ({ KindSigs.hs:32:1-4 }
+ (Unqual
+ {OccName: true}))
+ (Prefix)
+ (NoSrcStrict))
+ []
+ (GRHSs
+ (NoExt)
+ [({ KindSigs.hs:32:6-11 }
+ (GRHS
+ (NoExt)
+ []
+ ({ KindSigs.hs:32:8-11 }
+ (HsVar
+ (NoExt)
+ ({ KindSigs.hs:32:8-11 }
+ (Unqual
+ {OccName: True}))))))]
+ ({ <no location info> }
+ (EmptyLocalBinds
+ (NoExt))))))])
+ (FromSource))
+ (WpHole)
+ [])))]
+ (Nothing)
+ (Nothing)))
diff --git a/testsuite/tests/parser/should_compile/T11622.hs b/testsuite/tests/parser/should_compile/T11622.hs
new file mode 100644
index 0000000000..e7a8ff88d0
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/T11622.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE TypeFamilies #-}
+module T11622 where
+
+import Data.Kind (Type)
+
+type family F a where
+ F _ = Int :: Type
diff --git a/testsuite/tests/parser/should_compile/T8708.hs b/testsuite/tests/parser/should_compile/T8708.hs
new file mode 100644
index 0000000000..17d5b090f9
--- /dev/null
+++ b/testsuite/tests/parser/should_compile/T8708.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE KindSignatures #-}
+module T808 where
+
+import Data.Kind (Type)
+
+foo :: (Int, Int :: Type)
+foo = undefined
diff --git a/testsuite/tests/parser/should_compile/all.T b/testsuite/tests/parser/should_compile/all.T
index 50fa1a71e7..a22d5d0e62 100644
--- a/testsuite/tests/parser/should_compile/all.T
+++ b/testsuite/tests/parser/should_compile/all.T
@@ -101,6 +101,7 @@ test('T7776', normal, compile, [''])
test('RdrNoStaticPointers01', [], compile, [''])
test('T5682', normal, compile, [''])
test('T8258', normal, compile, [''])
+test('T8708', normal, compile, [''])
test('T9723a', normal, compile, [''])
test('T9723b', normal, compile, [''])
test('T10188', normal, compile, [''])
@@ -108,6 +109,7 @@ test('VtaParse', normal, compile, [''])
test('T10196', normal, compile, [''])
test('T10379', normal, compile, [''])
test('T10582', expect_broken(10582), compile, [''])
+test('T11622', normal, compile, [''])
test('DumpParsedAst', normal, compile, ['-dsuppress-uniques -ddump-parsed-ast'])
test('DumpRenamedAst', normal, compile, ['-dsuppress-uniques -ddump-rn-ast'])
test('DumpTypecheckedAst', normal, compile, ['-dsuppress-uniques -ddump-tc-ast'])
@@ -117,6 +119,8 @@ test('T13986', normal, compile, [''])
test('T10855', normal, compile, [''])
test('T15139', normal, compile, ['-Wincomplete-patterns -fdiagnostics-show-caret'])
test('T15323', normal, compile, ['-dsuppress-uniques -ddump-parsed-ast'])
+test('KindSigs', normal, compile, ['-dsuppress-uniques -ddump-parsed-ast'])
+
def only_MG_loc(x):
"""